Компания Canonical отозвала вышедший в октябре дистрибутив Ubuntu 17.10 и спрятала ссылку на сайте для скачиваний. Причиной стал критический баг с повреждением BIOS в некоторых моделях ноутбуков Lenovo и одной модели Acer. Полный список пострадавших моделей в данный момент уточняется и пополняется.
Повреждение BIOS проявляется в том, что новые настройки больше невозможно сохранить, а после перезагрузки ноутбук стартует со старыми настройками.
Что ещё хуже, ломается загрузка с USB-флешки, поскольку USB не распознаётся.
Судя по описанию бага, он как будто происходит после активации драйверов intel-spi-* в ядре. Судя по всему, эти драйверы ещё не доработаны до конца и не готовы для использования на пользовательских системах.
В качестве обхода можно попробовать деактивировать драйверы intel-spi-*. В описании бага отмечено, что последствия таких действий будут минимальными: «Маловероятно, что кто-то действительно делает что-нибудь такое, для чего требуется этот драйвер».
Список пострадавших моделей ноутбуков:
Как уже отмечалось, список пополняется.
В комментариях к багу упоминается также модель 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. Это делается следующей командой:
В его случае последовательность загрузки выглядела так:
Из этого следует, что первым по-любому будет загружаться grubx64.efi из директории antergos_grub и только с указанного диска.
Логично предположить, что мы можем управлять загрузкой, меняя содержимое папки antergos_grub. Он просто заменил содержимое этой папки на содержимое пакета менеджера загрузки rEFInd, переименовав при этом refind_x64.efi в grubx64.efi. Тогда после загрузки ноутбука появляется стандартное загрузочное меню rEFInd.
Повреждение 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.
UPD. Примечание пользователя r0mik в комментариях к статье: «портится не БИОС» в прямом смысле — лочится на запись микросхема SPI Flash. По всей видимости, это происходит при посредстве вышеупомянутого модуля ядра, поскольку только он один и способен к таким действиям (для этого в т.ч. и был написан). Именно от того, что SPI Flash аппаратно залочен на запись, никакое средство отката к стандартным настройкам БИОСа не сработает, потому как настройки-то хранятся в SPI Flash. Программатор тоже не поможет. Поможет только физическая замена микросхемы…
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.