Sony VAIO із біосом Insyde H2O EFI не завантажуватиметься в GRUB EFI


12

Я купив новий ноутбук Sony Vaio S серії. Він використовує Insyde H2O BIOS EFI, а спроба встановити на ньому Linux зводить мене з розуму.

root@kubuntu:~# parted /dev/sda print
Model: ATA Hitachi HTS72756 (scsi)
Disk /dev/sda: 640GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End    Size    File system  Name                          Flags
 1      1049kB  274MB  273MB  fat32        EFI system partition          hidden
 2      274MB  20.8GB  20.6GB  ntfs        Basic data partition          hidden, diag
 3      20.8GB  21.1GB  273MB  fat32        EFI system partition          boot
 4      21.1GB  21.3GB  134MB                Microsoft reserved partition  msftres
 5      21.3GB  342GB  320GB  ntfs        Basic data partition
 6      342GB  358GB  16.1GB  ext4        Basic data partition
 7      358GB  374GB  16.1GB  ntfs        Basic data partition
 8      374GB  640GB  266GB  ntfs        Basic data partition

Дивно, що на диску є 2 системні розділи EFI. Розділ sda2 - розділ на відновлення 20 Гб, який завантажує вікна з базовим інтерфейсом відновлення. Доступ до цього можна натиснути кнопку "ASSIST" на відміну від звичайної кнопки живлення. Я припускаю, що sda1 EFI System Partition (ESP) завантажується у це відновлення.

Програма sda3 ESP має більше розроблених записів для Microsoft Windows, які фактично переходять у Windows 7 (як це підтверджено bcdedit.exe в Windows). Ubuntu встановлюється на sda6, і під час встановлення я вибрав sda3 як свій завантажувальний розділ. Установник правильно створив додаток sda3 / EFI / ubuntu / grubx64.efi.

Справжня проблема: за все життя я не можу встановити його за замовчуванням! Я спробував створити sda3 / startup.nsh, який викликав grubx64.efi, але це не допомогло - при перезавантаженні система все ще завантажується у windows. Я спробував використовувати efibootmgr, і це показує, як він працював:

root@kubuntu:~# efibootmgr 
BootCurrent: 0000
BootOrder: 0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
root@kubuntu:~# efibootmgr --create --gpt --disk /dev/sda --part 3 --write-signature --label "GRUB2" --loader "\\EFI\\ubuntu\\grubx64.efi" 
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2
root@kubuntu:~# efibootmgr
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2

Однак при перезавантаженні, як ви здогадалися, машина перезавантажилася безпосередньо назад у Windows.

Єдине, про що я можу придумати:

  1. Розділ sda1 якось використовується
  2. Перезапишіть /EFI/Boot/bootx64.efi та /EFI/Microsoft/Boot/bootmgfw.efi з grubx64.efi [але це здається справді радикальним].

Може хто-небудь, будь ласка, допомогти мені? Дякую - будь-яка допомога дуже вдячна, оскільки це питання зводить мене з розуму!


Я дотримувався того ж підходу в Sony Vaio S - замінивши файл MS .efi на файл GRUB, зберігаючи копію MS .efi в іншому каталозі, а потім завантажуючи ланцюг на копію для завантаження Windows. Це, як правило, спрацьовує, але неприємним побічним ефектом є те, що я не можу відновити Windows після сплячого режиму - його завантажувач вимикається і вимагає чистої перезавантаження.

Відповіді:


11

Зрештою, я зміг це вирішити. Я замінив EFI / Microsoft / boot / bootmgfw.efi на grub64.efi. Я перейменував попередній на bootmgfw.efi.old і використав grub, щоб додати в нього параметр меню для завантаження ланцюга.

Це означає, що мікропрограмне забезпечення жорстко кодирує завантажувач завантажувальних програм для Microsoft, і не поважає налаштування efibootmgr або startup.nsh. Це справді жахливо.

Я дізнався, як працює процес завантаження Sony EFI:

  1. Загляньте в /EFI/Microsoft/Boot/fwbootmgr.efi; якщо є, завантажте його.
  2. Подивіться у всіх підкаталогах / EFI / для grubx64.efi. Якщо є, завантажте його.
  3. Завантажте /EFI/Boot/bootx64.efi
  4. Відобразить повідомлення про помилку, наприклад "Операційна система не знайдена".

У Linux інструмент efibootmgr працює, але він відображає безліч авторизованих дурниць, включаючи останній USB-накопичувач, який ви використовували.

Ось як я все це дізнався:

  1. Я відкрив свою нову машину і згорнув розділ Windows, щоб встановити Linux і Mac поряд.
  2. Я встановив Ubuntu 12.10 і інсталятор замінив fwbootmgr.efi, створивши резервну копію старого завантажувача Windows.
  3. Я відновив старий завантажувач Windows, але не міг завантажувати нічого, крім Windows.
  4. Я перейменував завантажувач Windows на щось нечесне, і тоді Grub BL перейняв.
  5. Я перейменував каталог ubuntu на щось інше, і Grub все ще завантажився, хоча я встановив rEFInd.
  6. Єдиний спосіб, коли я міг отримати REFInd робити те, що я хотів, це це:

  7. Перемістіть fwbootmgr.efi у його батьківський каталог; rEFInd все одно знайде його, і Windows не поскаржиться, що ви його перейменували.

  8. Перейменуйте grubx64.efi на rfgrubx64.efi або щось інше, що впізнається.
  9. Скопіюйте rEFInd з / EFI / refind до / EFI / boot, перейменуйте /EFI/refind_x64.efi в * .bak і нарешті перейменуйте /Boot/refind_x64.efi у bootx64.efi. Тепер ви можете мати можливість завантажувати Windows BL або GRUB з rEFInd. Я планую оновити встановлення MacOS до Clover, а також завантажувати Clover з rEFInd.

(Можливо, для цього можна скористатися менеджером завантаження Windows, але підтримка EFI EeasyBCD все ще безлад в моєму досвіді. Я на деякий час відмовляюся торкатися цього.)


Зауважте, що я також спробував змінити налаштування BCD [за допомогою bcdedit.exe] з Windows, щоб менеджер завантаження Windows встановився на grub, і це все-таки не спрацювало - мені довелося фактично замінити файл .efi на .efi .
Рохан Друва

5

По-перше, у вас немає двох ESP. ESP - це розділ з кодом типу розділу C12A7328-F81F-11D2-BA4B-00A0C93EC93B, який розділений ідентифікує як розділ зі своїм набором "boot flag". Ваш вихід вказує на те, що лише / dev / sda3 має свій "прапор завантаження", тому у вас є лише один ESP - / dev / sda3. Під GPT розділи можуть мати імена, і у вас є два розділи з назвою "Системний розділ EFI", але ці імена використовуються лише для ідентифікації людини. Таким чином, я здогадуюсь, що ви (або якась автоматична утиліта) створили / dev / sda1 з наміром зробити його ESP, але або сталася помилка при встановленні коду типу розділу або інша утиліта неправильно змінила свій тип типу з C12A7328-F81F-11D2-BA4B-00A0C93EC93B до чогось іншого.

Існує кілька способів виправити це. Найпростіше - просто змінити ім’я / dev / sda1, щоб уникнути плутанини. Якщо ви вважаєте, що / dev / sda1 не має ніякої мети, ви можете створити резервну копію та видалити. Це позбавить вас від шляху і уникне плутанини, але, звичайно, тоді у вас буде 273 Мб невикористаного дискового простору. Крім того, ви можете присвятити простір якійсь іншій цілі, якщо потрібно, змінивши ім'я та код типу, щоб уникнути плутанини. EFI явно дозволяє кілька ESP, так що ви можете змінити код типу (встановивши, наприклад, "прапор завантаження", використовуючи, наприклад, розділений) і використовувати обидва ESP; але це може заплутати.

Цілком ймовірно, що ця проблема не пов’язана з вашою неможливістю завантажувати Linux, оскільки це здається, що всі відповідні файли є в / dev / sda3. У мене виникають кілька можливих причин цієї проблеми:

  • Можливо, ви щось помилково ввели у своїй команді efibootmgr. Я не бачу явних помилок, але якщо двійковий файл GRUB не знаходиться там, де ви вказали, команда не працюватиме. Параметри "--gpt" і "--write-signature" майже точно не потрібні, і, можливо, можуть викликати проблеми, але, швидше за все, це не так.
  • У вашій прошивці може виникнути помилка, що спричинює тимчасові ефекти команди efibootmgr. Спробуйте перезавантажити, а потім введіть "sudo efibootmgr -v", щоб побачити, чи збереглася створена вами запис.
  • У вашій прошивці може виникнути помилка, що спричиняє ігнорування змінної порядку завантаження. У мене така материнська плата; він завантажується в тому порядку, в якому створюються записи завантаження, а не в порядку, в якому вони вказані змінною BootOrder. Щоб обійти цю помилку, вам доведеться видалити всі записи та заново створити їх у порядку завантаження, який ви хочете використовувати.
  • Ваш біткойн grubx64.efi може бути пошкоджений таким чином, що прошивка відмовиться запускати його, і тому він перейде до наступного пункту в порядку завантаження.

Ви можете спробувати налаштувати команду efibootmgr, знайти новий бінарний файл чи інше, щоб перевірити ці можливості. Якщо все інше не вдається, рекомендую вам зробити наступне:

  1. Видаліть усі записи завантаження за допомогою efibootmgr або вашої мікропрограми (якщо для цього потрібен інтерфейс).
  2. Скопіюйте grubx64.efi в EFI / Boot / bootx64.efi на ESP.
  3. Якщо при перезавантаженні ви все ще отримуєте Windows, перейменуйте EFI / Microsoft / Boot / bootmgfw.efi у EFI / Microsoft / bootmgfw.efi.

Це повинно отримати завантаження GRUB, використовуючи за замовчуванням ім'я завантажувача (EFI / Boot / bootx64.efi). Одна з проблем полягає в тому, що GRUB може не мати робочого запису для Windows. Можливо, ви можете створити його вручну; такий запис повинен працювати:

menuentry "Windows 7" {
    set root='(hd0,gpt3)'
    chainloader /EFI/Microsoft/bootmgfw.efi
}

Як альтернативи, ви можете встановити Загорніть або rEFInd , як EFI / черевик / BOOTX64.EFI. Зауважте, що бінарні файли rEFIt, доступні на його веб-сайті, не працюватимуть на ПК на базі UEFI; вам потрібно буде використовувати версію в сховищах Ubuntu. rEFInd - це вилка rEFIt з численними виправленнями помилок та оновленнями, включаючи кращу підтримку UEFI. (rEFI, здається, було відмовлено близько двох років тому.) Таким чином, я рекомендую використовувати rEFInd, а не rEFIt - але я підтримую rEFInd, тому я не є незалежним спостерігачем за цим показником. На жаль, AFAIK rEFInd ще не включений до сховищ Ubuntu, тому вам доведеться завантажити та встановити його вручну.


Дякую тобі, Роде! Однак sda1 сам по собі є ESP [можливо, не завантажується за замовчуванням], який використовується для завантаження в рятувальний розділ (20Gb SONSYS). Я знаю, що це дивні налаштування, але Sony чомусь вирішила зробити це саме так. Натискання кнопки "ASSIST" на відміну від кнопки живлення викликає цей завантажувач.
Рохан Друва

Дякую за інформацію Род, у мене була та сама проблема, і слідуючи вашим крокам, частково виправте її. GRUB спрацював нормально, і тоді я спробував додати запис для Win7, і тепер GRUB не показує, просто завантажуючи прямо на Ubuntu. Будь-які ідеї, чому і як виправити? Також мій розділ EFI - sda1, а Win - sda3, якщо X у цьому рядку "встановити root =" (hd0, gptX) '"дорівнює 1 або 3? Я пробував обидва!
barro32

@Rod, Де мені додати меню (Windows 7)? в \ etc \ default \ grub?
алехінь

4

Таке ж вихідне положення у новій серії sony vaio e. Дякую Роду за вашу відповідь.

На всякий випадок, коли комусь потрібна покрокова інструкція, це для мене спрацювало:

Встановлено ubuntu 12.04 з USB поряд з win7.

монтаж / dev / sda3 з живого сеансу

  • скопіюйте EFI / ubuntu / grubx64.efi в EFI / Boot /
  • перейменуйте EFI / Boot / bootx64.efi на bootx64.efi.old
  • перейменуйте EFI / Boot / grubx64.efi у bootx64.efi

тепер він завантажився безпосередньо в grub2, але без запису win7

після завантаження ubuntu я відредагував

/etc/grub.d/40_custom

додавання

menuentry "Windows 7" {
    set root='(hd0,gpt3)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

і після

sudo update-grub

все працює добре


1

Я пропоную дві різні альтернативи:

  1. Не перезаписуйте Windows mbr, а використовуйте його для запуску grub

  2. змінити налаштування біографії ( f2або f3при запуску) в параметрах завантаження з UEFI на LEGACY, тоді зазвичай буде запущено останню систему, встановлену як ніколи


MBR не застосовується до комп'ютерів EFI
Ben Voigt

0
  1. Запустіть Boot-Repair з liveCD / liveUSB
  2. Натисніть Recommended Repairкнопку. (це автоматично встановить правильні параметри для grub-efi, включаючи параметри SecureBoot, якщо потрібно, та перейменуючи файли EFI у випадку, якщо вбудована програма UEFI заблокована у файлах Windows). Укажіть URL-адресу, яка з’явиться у разі виникнення проблеми.

Ремонт завантаження

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.