người tương lai với cùng một vấn đề.
Tôi phát hiện ra vấn đề là gì. Thẻ WIFI của tôi là MediaTek Wi-Fi 6 MT7921, hiện được hỗ trợ bởi nhân linux 5.16, được hỗ trợ kém bởi nhân 5.13, loại được cung cấp cùng với Ubuntu 21.10 của tôi.Nó thực sự hoạt động rất kém trong lần khởi động đầu tiên và trong lần khởi động tiếp theo, nó hoàn toàn không hoạt động.
Do đó, giải pháp là nâng cấp lên kernel mới bằng các lệnh:
# tải xuống các tệp hạt nhân, tiêu đề, mô-đun, v.v.
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-headers-5.16.0-051600_5.16.0-051600.202201092355_all.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-headers-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-image-unsigned-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-modules-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
bây giờ hãy cài đặt kernel trong hệ thống của bạn:
sudo dpkg -i *.deb
sửa chữa các phụ thuộc bị hỏng:
Sudo apt cài đặt -f
Bạn có thể khởi động lại ngay bây giờ và nó có thể hoạt động nếu bạn không sử dụng khởi động an toàn.
Tuy nhiên, nếu đúng như vậy, thì bạn cần phải tắt nó hoặc tự ký tên vào kernel.
tôi đã theo dõi điều này hướng dẫn.
Nhưng bước cơ bản của ký kernel là:
tạo một tệp có tên mokconfig.cnf
với văn bản:
# Định nghĩa này dừng các dòng sau không thành công nếu HOME không
# được xác định.
NHÀ = .
RANDFILE = $ENV::HOME/.rnd
[ yêu cầu ]
tên_phân_biệt = req_tên_phân_biệt
x509_extensions = v3
string_mask = utf8only
nhắc nhở = không
[ req_distinguished_name ]
countryName = <MÃ quốc gia CỦA BẠN>
stateOrProvinceName = <BẠN CỦA BẠN>
tên địa phương = <Thành phố CỦA BẠN>
0.tên tổ chức = <tổ chức CỦA BẠN>
commonName = Khóa ký khởi động an toàn
emailAddress = <YOURemail>
[ v3 ]
chủ đềKeyIdentifier = hàm băm
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = quan trọng,CA:FALSE
ExtendedKeyUsage = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment = "Chứng chỉ được tạo OpenSSL"
tập tin <> phần với thông tin của bạn. Đảm bảo chỉ sử dụng hai ký tự cho Quốc gia, tiểu bang và thành phố, ví dụ: US CA LA
Tạo khóa chung và khóa riêng để ký kernel:
openssl req -config ./mokconfig.cnf \
-new -x509 -newkey rsa:2048 \
-nodes -days 36500 -outform DER \
-keyout "MOK.priv" \
-ra "MOK.der"
Chuyển đổi khóa cũng sang định dạng PEM (mokutil cần DER, sbsign cần PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
Đăng ký khóa để cài đặt shim của bạn:
sudo mokutil --nhập MOK.der
Khởi động lại hệ thống của bạn. Bạn sẽ gặp màn hình xanh của công cụ có tên MOKManager. Chọn "Đăng ký MOK" rồi chọn "Xem khóa". Đảm bảo rằng đó là khóa bạn đã tạo ở bước 2. Sau đó, hãy tiếp tục quy trình và bạn phải nhập mật khẩu mà bạn đã cung cấp ở bước 4. Tiếp tục khởi động hệ thống của bạn.
Xác minh khóa của bạn đã được đăng ký qua:
Sudo mokutil --list-enrolled
Ký kernel đã cài đặt của bạn (nó phải ở /boot/vmlinuz-[KERNEL-VERSION]:
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface. đã ký
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
cập nhật sudo-grub
bây giờ bạn có thể khởi động lại =)