Я купил новый ноутбук серии 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», в отличие от обычной кнопки питания. Я предполагаю, что системный раздел EFI (ESP) sda1 загружается в это восстановление.
В 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.
Единственное, о чем я могу думать, это:
Может кто-нибудь помочь мне? Спасибо - любая помощь очень ценится, так как эта проблема сводит меня с ума!
Это означает, что микропрограмма жестко задана для поиска загрузчика Microsoft Windows и не учитывает настройки efibootmgr или startup.nsh. Это действительно ужасно.
Я узнал, как работает процесс загрузки Sony EFI:
Под Linux инструмент efibootmgr работает, но он отображает много автоматически сгенерированной ерунды, включая последний использованный USB-накопитель.
Вот как я научился всему этому:
Единственный способ, с помощью которого я мог заставить REFInd делать то, что я хотел, был так:
Переместить fwbootmgr.efi в его родительский каталог; rEFInd все равно найдет его, и Windows не будет жаловаться, что вы переименовали его.
(Возможно, можно использовать Windows Boot Manager, чтобы сделать все это, но поддержка EFI EeasyBCD до сих пор мешает мне. Я отказываюсь касаться его снова некоторое время.)
Та же стартовая позиция здесь на новой Sony Vaio e ряд. Спасибо Стержень для Вашего ответа.
На всякий случай кому-то нужна пошаговая демонстрация, это - то, что работало на меня:
Установленная человечность 12.04 от USB вместе с win7.
монтирование/dev/sda3 от живой сессии
теперь это загрузилось непосредственно в grub2, но без win7 записи
после того, как загружающаяся ubuntu I отредактирована
/etc/grub.d/40_custom
добавление
menuentry "Windows 7" {
set root='(hd0,gpt3)'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
и после
sudo update-grub
все хорошо работает
Я предлагаю две различных альтернативы:
Не перезаписывайте окна mbr, но используйте его для запуска личинки
измените настройки BIOS (f2 или f3 при запуске) в параметрах загрузки от UEFI до НАСЛЕДИЯ, затем это будет обычно запускать последнюю систему, установленную как всегда
Recommended Repair
. (это автоматически установит правильные параметры для grub-efi, включая параметры SecureBoot, если необходимо, и переименование файлов EFI в случае, если прошивка UEFI заблокирована для файлов Windows). Укажите URL, который будет отображаться при возникновении проблем.
Во-первых, у вас нет двух ESP. ESP - это раздел с кодом типа раздела C12A7328-F81F-11D2-BA4B-00A0C93EC93B, который parted идентифицирует как раздел с его установленным «флагом загрузки». Ваш вывод показывает, что только / dev / sda3 имеет свой «флаг загрузки», поэтому у вас есть только один ESP - / dev / sda3. В GPT разделы могут иметь имена, и у вас есть два раздела с именем «системный раздел EFI», но эти имена используются только для идентификации людей. Таким образом, я предполагаю, что вы (или какая-то автоматическая утилита) создали / dev / sda1 с намерением сделать его ESP, но либо произошла ошибка при установке кода типа его раздела, либо какая-то другая утилита неправильно изменила код типа C12A7328-F81F-11D2-BA4B-00A0C93EC93B на что-то другое.
Есть несколько способов исправить это. Самое простое - просто изменить имя / dev / sda1, чтобы избежать путаницы. Если вы считаете, что / dev / sda1 не имеет смысла, вы можете создать резервную копию и удалить ее. Это поможет избежать путаницы, но, конечно, у вас будет 273 МБ неиспользуемого дискового пространства. В качестве альтернативы вы можете выделить место для какой-либо другой цели, при необходимости изменив имя и код типа, чтобы избежать путаницы. EFI явно разрешает несколько ESP, так что вы можете изменить код типа (например, установив «флаг загрузки» с помощью parted) и использовать оба ESP; но это может сбить с толку.
Скорее всего, эта проблема не связана с вашей неспособностью загрузить Linux, поскольку похоже, что все соответствующие файлы находятся в / dev / sda3. Несколько возможных причин этой проблемы возникают у меня:
Вы можете попробовать настроить команду efibootmgr, найти новый двоичный файл или еще что-нибудь, чтобы проверить эти возможности. Если ничего не помогает, я рекомендую вам сделать следующее:
Это должно привести к загрузке GRUB с использованием имени по умолчанию для загрузчика (EFI / Boot / bootx64.efi). Одна из проблем заключается в том, что GRUB может не иметь рабочей записи для Windows. Вы можете создать его вручную; такая запись должна работать:
menuentry "Windows 7" {
set root='(hd0,gpt3)'
chainloader /EFI/Microsoft/bootmgfw.efi
}
В качестве альтернативы вы можете установить rEFIt или rEFInd как EFI / Boot / bootx64.efi. Обратите внимание, что бинарные файлы rEFIt, доступные на его сайте, не будут работать на ПК на основе UEFI; вам нужно будет использовать версию в репозиториях Ubuntu. rEFInd - это ветка rEFIt с многочисленными исправлениями ошибок и обновлениями, включая лучшую поддержку UEFI. (REFIt, похоже, был заброшен около двух лет назад.) Таким образом, я рекомендую использовать REFInd, а не REFIt - но я поддерживаю REFInd, поэтому я не являюсь независимым наблюдателем на этот счет. К сожалению, AFAIK rEFInd (пока) не включен в репозитории Ubuntu, поэтому вам придется загрузить и установить его вручную.