Помните недавний баг EFI на Samsung 530U3C, который приводил к тому, что ноутбук больше не работал после единоразовой загрузки ubuntu?
Встречайте EFI на Lenovo G580!
Итак, в канун нового года и праздничных распродаж, Adiost купил Lenovo G580 с FreeDOS, снес его и установил Ubuntu. Через какое-то время захотел установить-посмотреть Windows 8. В ходе этого обнаружил, что не может зайти в настройки EFI нажатием кнопки F2: просто-напросто ничего не происходило и начинала грузиться ОС. Плюнув на это, установил Windows 8, и начал чинить.
Сначала нагрузил гугл. Таких симптомов — полно. Даже на хабре было. К сожалению, ни один из целых двух способов не помог. Из-под Windows NVRAM не менялся, а все дистрибутивы линукса грузились в режиме эмуляции BIOS, т.к. в EFI она была выбрана первой.
Немного информации: EFI NVRAM нельзя ни прочитать, ни изменить из-под ОС, загруженной в BIOS-режиме. Поэтому нужно было как-то запустить ОС через EFI. Для этого был установлен ArchLinux на флешку с GPT и GRUB2 в качестве EFI-загрузчика. Итак, ArchLinux загружен в EFI, отлично, запускаем efibootmgr, иии… пусто. Нет ни единого EFI-пункта, хотя при выборе устройства загрузки есть некий пункт «ubuntu», и это должен быть именно пункт, добавленный в NVRAM. При попытке удаления «наугад» записи под номером 0000, пункт загрузки сменил имя с ubuntu на Linux.
Adiost добавил пустой пункт и перезагрузился. Ноутбук разучился показывать меню загрузки, перестал грузиться вообще с чего либо безо всяких ошибок. Просто POST и все, вечнопустой экран, sad but true.
Из-за чего efibootmgr выдавал пустой результат — непонятно, но могу предположить, почему так получилось с настройкой EFI. Дело в том, что, видимо, на многих ноутбуках Lenovo в NVRAM хранятся не только пункты загрузки ОС, но и вообще все пункты.
Вот что выдает efibootmgr на моем X220:
BootCurrent: 0009
Timeout: 0 seconds
BootOrder: 0019,0009,000A,0006,000C,0007,0008,000B,000D,000E,000F,0010,0011,0012,0013
Boot0000 Setup
Boot0001 Boot Menu
Boot0002 Diagnostic Splash Screen
Boot0003 Startup Interrupt Menu
Boot0004 ME Configuration Menu
Boot0005 Rescue and Recovery
Boot0006* USB CD
Boot0007* USB FDD
Boot0008* ATAPI CD0
Boot0009* ATA HDD2
Boot000A* ATA HDD0
Boot000B* ATA HDD1
Boot000C* USB HDD
Boot000D* PCI LAN
Boot000E* ATAPI CD1
Boot000F* ATAPI CD2
Boot0010 Other CD
Boot0011* ATA HDD3
Boot0012* ATA HDD4
Boot0013 Other HDD
Boot0014* IDER BOOT CDROM
Boot0015* IDER BOOT Floppy
Boot0016* ATA HDD
Boot0017* ATAPI CD:
Boot0018* PCI LAN
Boot0019* arch_grub
По всей вероятности, Ubuntu перезаписала пункт Boot0000, которым и является Setup. Я попробовал удалить его у себя, и, к счастью, он пересоздался при перезагрузке ноутбука, но перезаписывать его новым не пробовал.
Автор: ValdikSS