будущий человек с той же проблемой.
Я узнал, в чем проблема. Моя карта WIFI — MediaTek Wi-Fi 6 MT7921, которая в настоящее время поддерживается ядром Linux 5.16, плохо поддерживается ядром 5.13, которое поставляется с моей Ubuntu 21.10.На самом деле при первой загрузке он работает очень плохо, а при следующей загрузке вообще не будет работать.
Таким образом, решение состоит в том, чтобы перейти на новое ядро с помощью команд:
# скачать файлы ядра, заголовки, модули... и т.д.
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
теперь установите ядро в вашей системе:
sudo dpkg -i *.deb
исправить сломанные зависимости:
sudo подходящая установка -f
Вы можете перезагрузиться сейчас, и это может сработать, если вы не используете безопасную загрузку.
Однако если да, то вам нужно отключить его или подписать ядро самостоятельно.
я следил за этим гид.
Но базовый шаг подписи ядра таков:
сделать файл с именем mokconfig.cnf
с текстом:
# Это определение предотвращает сбой следующих строк, если HOME не
# определенный.
ГЛАВНАЯ = .
СЛУЧАЙНЫЙ ФАЙЛ = $ENV::HOME/.rnd
[требуется]
отличительное_имя = req_distinguished_name
x509_extensions = v3
string_mask = только utf8
подсказка = нет
[ req_distinguished_name ]
countryName = <ВАШ код страны>
stateOrProvinceName = <ВАШЕ состояние>
localityName = <ВАШ город>
0.organizationName = <ВАША организация>
commonName = Ключ подписи безопасной загрузки
emailAddress = <ВАШ адрес электронной почты>
[ v3 ]
subjectKeyIdentifier = хэш
authorKeyIdentifier = идентификатор ключа: всегда, эмитент
basicConstraints = критический,CA:FALSE
расширенное использование ключа = подписание кода, 1.3.6.1.4.1.311.10.3.6
nsComment = "Сгенерированный сертификат OpenSSL"
части файла <> с вашей информацией. Обязательно используйте только два символа для страны, штата и города, например: US CA LA.
Создайте открытый и закрытый ключи для подписи ядра:
openssl req -config ./mokconfig.cnf \
-новый -x509 -newkey rsa:2048 \
-узлы -дни 36500 -выход DER \
-keyout "MOK.priv" \
-выход "МОК.дер"
Преобразуйте ключ также в формат PEM (для mokutil требуется DER, для sbsign — PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
Зарегистрируйте ключ для установки прокладки:
sudo mokutil --import MOK.der
Перезагрузите систему. Вы столкнетесь с синим экраном инструмента под названием MOKManager. Выберите «Зарегистрировать MOK», а затем «Просмотреть ключ». Убедитесь, что это ваш ключ, который вы создали на шаге 2. После этого продолжите процесс, и вы должны ввести пароль, который вы указали на шаге 4. Продолжайте загрузку вашей системы.
Убедитесь, что ваш ключ зарегистрирован через:
sudo mokutil --list-enrolled
Подпишите установленное ядро (оно должно находиться в /boot/vmlinuz-[KERNEL-VERSION]:
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[ВЕРСИЯ ЯДРА]-поверхность-linux-surface --output /boot/vmlinuz-[ВЕРСИЯ ЯДРА]-поверхность-linux-поверхность. подписал
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
sudo update-grub
теперь можно перезагрузиться =)