Ubuntu 17.10 повреждает BIOS на некоторых ноутбуках Lenovo, Acer и Toshiba
Компания Canonical отозвала вышедший в октябре дистрибутив Ubuntu 17.10 и спрятала ссылку на сайте для скачиваний. Причиной стал критический баг с повреждением BIOS в некоторых моделях ноутбуков Lenovo и одной модели Acer. Полный список пострадавших моделей в данный момент уточняется и пополняется.
Повреждение BIOS проявляется в том, что новые настройки больше невозможно сохранить, а после перезагрузки ноутбук стартует со старыми настройками.
Что ещё хуже, ломается загрузка с USB-флешки, поскольку USB не распознаётся.
Судя по описанию бага, он как будто происходит после активации драйверов intel-spi-* в ядре. Судя по всему, эти драйверы ещё не доработаны до конца и не готовы для использования на пользовательских системах.
В качестве обхода можно попробовать деактивировать драйверы intel-spi-*. В описании бага отмечено, что последствия таких действий будут минимальными: «Маловероятно, что кто-то действительно делает что-нибудь такое, для чего требуется этот драйвер».
Список пострадавших моделей ноутбуков:
- Lenovo B40–70
- Lenovo B50–70
- Lenovo B50–80
- Lenovo Flex-3
- Lenovo Flex-10
- Lenovo G40–30
- Lenovo G50–70
- Lenovo G50–80
- Lenovo S20–30
- Lenovo U31–70
- Lenovo Y50–70
- Lenovo Y70–70
- Lenovo Yoga Thinkpad (20C0)
- Lenovo Yoga 2 11» — 20332
- Lenovo Z50–70
- Lenovo Z51–70
- Lenovo Ideapad 100–15IBY
- Acer Aspire E5–771G
Как уже отмечалось, список пополняется.
В комментариях к багу упоминается также модель Toshiba L50B-23G.
На многочисленных форумах пользователи жалуются на эту проблему, потому что у многих ноутбуков отсутствуют приводы CD-ROM — так что они не могут уже загрузиться с другого дистрибутива.
Особенно много жалоб на форумах Lenovo. Это особенно неприятно, потому что часто именно ноутбуки Lenovo ThinkPad часто рекомендуют для работы с Linux, а у компании Canonical на офсайте они включены в список официально поддерживаемого оборудования.
В предыдущих версиях Ubuntu баг не проявляется.
Теоретически, BIOS можно перепрошить и вернуть в исходное состояние (например, с помощью программатора), но это нетривиальная и немного рискованная процедура. К тому же, программатор есть не у каждого пользователя. Поэтому можно понять сильное недовольство тех, кто столкнулся с этой проблемой и не может загрузить ноутбук. «Это неприемлемо, прямо сейчас мой Lenovo G50–80 превратился в кирпич», — пишет один из пострадавших в комментариях к багу на сайте Canonical.
Canonical сейчас активно работает с Lenovo, чтобы найти истинную причину проблемы и выпустить патч. Готовятся новые образы Ubuntu 17.10 с обновленным ядром, которое не будет ломать BIOS на новых установках.
К сожалению, новые образы ничем не помогут тем, кто уже установил Ubuntu 17.10 и повредил прошивку BIOS. Крайний случай — нести ноутбук в ремонт на замену материнской платы. Если же ноутбук всё-таки загружается, то можно попробовать такой обходной манёвр, который предлагают на форумах техподдержки Lenovo.
У этого пользователя тоже сбилось сохранение новых настроек BIOS и пропала возможность загружаться с USB. Первым делом он проверил последовательность загрузки EFI. Это делается следующей командой:
efibootmgr -v
В его случае последовательность загрузки выглядела так:
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0002,2001,2002,2003
Boot0001* antergos_grub HD(1,GPT,f128f12b-fa3e-45b1-b5c9-f03c328498cb,0x800,0x64000)/File(\EFI\antergos_grub\grubx64.efi)
Boot0002* Windows Boot Manager HD(1,GPT,f128f12b-fa3e-45b1-b5c9-f03c328498cb,0x800,0x64000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)RC
Boot2001* EFI USB Device RC
Boot2002* EFI DVD/CDROM RC
Boot2003* EFI Network RC
Из этого следует, что первым по-любому будет загружаться grubx64.efi из директории antergos_grub и только с указанного диска.
Логично предположить, что мы можем управлять загрузкой, меняя содержимое папки antergos_grub. Он просто заменил содержимое этой папки на содержимое пакета менеджера загрузки rEFInd, переименовав при этом refind_x64.efi в grubx64.efi. Тогда после загрузки ноутбука появляется стандартное загрузочное меню rEFInd.