У меня есть ноутбук с установками Ubuntu 12.10 и Windows 8. Сначала была установлена Windows 8 в системе, после чего Ubuntu был установлен.
Во время установки Ubuntu установщик обнаружил, что существуют существующие разделы, но не видел на них никакой ОС. Я создал еще один раздел ext4 в свободном пространстве и установил Ubuntu. Первоначально grub только добавил запись для Ubuntu, и Ubuntu работает нормально.
Теперь я хотел вручную ввести настройки w8 в Grub и изменить /etc/grub.d/40_custom:
#!/bin/bash exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "Windows 8" { insmod part_gpt insmod fat insmod search_fs_uuid insmod chain #set root='(hd0,gpt1)' search --fs_uuid --no-floppy --set=root --hint-bios=hd0,gpt2 --hint efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 chainloader /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi }
Строка поиска (вторая – последняя), которую я нашел с помощью этой команды: sudo grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Теперь, после обновления конфигурации grub, перезагрузки и выбора входа в Windows 8, он жалуется:
error: unspecified search type error: file '/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi' not found Press any key to continue
В Ubuntu, однако, если я делаю ls /boot/efi/EFI/Microsoft/Boot/b*
/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi /boot/efi/EFI/Microsoft/Boot/bootmgr.efi /boot/efi/EFI/Microsoft/Boot/boot.stl /boot/efi/EFI/Microsoft/Boot/bg-BG: bootmgfw.efi.mui bootmgr.efi.mui
Теперь, если я нажму e, чтобы отредактировать запись Windows 8, а затем выберите F2 для ввода оболочки grub, действительно, если я попытаюсь запустить ls /boot/efi
, файлы не будут показаны.
Как ни странно, если в этот момент я просто набираю exit
, окна 8 загрузятся.
fdisk -l
дает мне, что он распознает /dev/sda1 as GPT partition
Любые идеи, что я должен сделать, чтобы заставить grub работать «прямо из меню»?
Посмотрите на переделку , это очень полезно и легко (и загружает win8 в моих тестах, выполняя при добавлении поддержки UEFI в ALT Linux).
Это не загрузочный загрузчик, а менеджер загрузки, поэтому он позволит вам выбирать между WBM и GRUB, имея возможность фактически загружать (в) соответствующее ядро.
В настоящее время я сталкиваюсь с той же проблемой, но могу понять, что причина была неправильным результатом команды hint grub. Фактически, это передавало мне неправильный путь для файла .efi.
У меня есть два диска, и grub перечисляет их как hd1 и hd2. Я мог бы понять, просто используя команду grub с опцией, нажимая 'c' на экране grub и выполняя ls впоследствии.
В нем перечислены все разделы gpt и соответствующие диски, так как у меня есть разные разделы на обоих дисках, я мог бы легко определить, где был мой файл efi, и тогда это было просто изменение местоположения записей grub на правильный раздел, где my efi файл находился.
Обратите внимание, что путь цепной нагрузки должен соответствовать пути без точки монтирования. Вы можете проверить это с помощью утилиты дисков на Ubuntu!
Теперь у меня есть только ошибка, указывающая, что тип поиска не указан, но загрузка приносит мне загрузчик окон без проблем.
Что касается вашего вопроса, почему вы попадаете в загрузчик Windows при выходе из grub, я полагаю, что это просто, в ваших вариантах загрузки вашей материнской платы в качестве следующей опции, когда grub обходит, в качестве следующей опции загружаются загрузочный uefi-загрузчик.
Надеюсь, поможет !
Вам необходимо указать UUID устройства SYSTEM в строке поиска (в конце). И удалите тег –bios, поскольку вы используете EFI для загрузки.
Чтобы найти UUID, выполните следующие действия:
sudo grub-probe --target=fs_UUID /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Проблема в том, что вы уже устанавливаете свой root в '(hd0, gpt1)', который, как я полагаю, является ( /boot/efi
), где находится ваш grub.
Следовательно, запись /boot/efi/...
эквивалентна записи /boot/efi/boot/efi...
которая, скорее всего, не существует.
Вы должны изменить /boot/efi/EFI/...
на just /EFI/...