Я знаю , что есть тонны вопросов , относящихся к GRUB вопросов, но у меня есть конкретная проблема , что я не в состоянии решить в течение довольно длительного времени.
Мой жесткий диск будет выложен с помощью GPT формата (не MBR - см листинга ниже). У меня есть две 64-битные ОС:
Проблема в том, что после одного из обновлений системы (я не уверен, что это была ошибка обновления Windows в Debian), GRUB перестал появляться при запуске, заставляя Windows запускаться по умолчанию. Для загрузки моего Debian я использую командную строку GRUB с LiveCD Debian:
grub> root=(hd0,6)
grub> linux /vmlinuz-4.3.0-1-amd64 root=/dev/sda8
grub> initrd /initrd.img-4.3.0-1-amd64
grub> boot
Что я пробовал до сих пор
Я пытался решить проблему разными способами:
- Я удалил все пакеты с именем строки
grub
и установил пакетgrub-efi-amd64
, который зависит (среди прочего):grub-common
,grub2-common
,grub-efi-amd64-bin
В результате все эти пакеты были установлены. - Я сделал следующие изменения в
/etc/default/grub
(как предложено в ответе @gilles на этот вопрос) и выполнил командуupdate-grub
(илиupdate-grub2
которая является символической ссылкой на скрипт gash для однострочногоupdate-grub
):GRUB_HIDDEN_TIMEOUT_QUIET=false
,GRUB_HIDDEN_TIMEOUT=
,GRUB_TIMEOUT=10
.
- Я отключил быстрый запуск Windows и спящий режим.
grub-install --target=x86_64-efi && update-grub
Диагностическая информация
Моя материнская плата - GIGABYTE GA-Z77-D3H с UEFI DualBIOS ™, что означает (цитата) «у нее режим совместимости с BIOS - во встроенном меню загрузки отображаются две записи для каждого устройства, одна с префиксом UEFI, а другая без». Загрузка ни в режиме UEFI, ни в устаревшем режиме BIOS не работает.
Результат команды
efibootmgr
:root@mycomp:/home/me# efibootmgr BootCurrent: 0007 Timeout: 1 seconds BootOrder: 0002,0003,0004,0005,0000,0007 Boot0000* Windows Boot Manager Boot0002* UEFI: ST1000DM003-9YN162 Boot0003* Hard Drive Boot0004* CD/DVD Drive Boot0005* Removable Drive Boot0007* UEFI: USB USB Hard Drive
parted
результат команды:root@mycomp:/home/me# parted /dev/sda print Model: ATA ST1000DM003-9YN1 (scsi) Disk /dev/sda: 1000GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 316MB 315MB ntfs Basic data partition hidden, diag 2 316MB 420MB 105MB fat32 EFI system partition boot, esp 3 420MB 555MB 134MB Microsoft reserved partition msftres 4 555MB 268GB 268GB ntfs Basic data partition msftdata 5 268GB 805GB 537GB ntfs Basic data partition msftdata 6 805GB 806GB 500MB ext4 msftdata 7 806GB 830GB 24,4GB ext4 msftdata 8 830GB 838GB 8000MB ext4 msftdata 9 838GB 853GB 15,0GB ext4 msftdata 10 853GB 863GB 10,0GB linux-swap(v1) 11 863GB 1000GB 137GB ext4 msftdata
/etc/fstab
content (ниже я обнулел UUID с целью конфиденциальности):root@mycomp:/home/me# cat /etc/fstab # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda8 during installation UUID=00000000-0000-0000-0000-000000000000 / ext4 errors=remount-ro 0 1 # /boot was on /dev/sda6 during installation UUID=00000000-0000-0000-0000-000000000000 /boot ext4 defaults 0 1 # /boot/efi was on /dev/sda2 during installation UUID=0000-0000 /boot/efi vfat defaults 0 1 # /home was on /dev/sda11 during installation UUID=00000000-0000-0000-0000-000000000000 /home ext4 defaults 0 2 # /tmp was on /dev/sda9 during installation UUID=00000000-0000-0000-0000-000000000000 /tmp ext4 defaults 0 2 # /usr was on /dev/sda7 during installation UUID=00000000-0000-0000-0000-000000000000 /usr ext4 defaults 0 2 # swap was on /dev/sda10 during installation UUID=00000000-0000-0000-0000-000000000000 none swap sw 0 0 # CD-ROM /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 # Added for Google Chrome (see: https://unix.stackexchange.com/questions/116400/google-chrome-no-space-on-rootfs-partition) /usr/opt /opt none bind 0 0 # C: Windows partition UUID=0000000000000000 /media/Windows/C ntfs ro 0 0 # D: Windows partition UUID=0000000000000000 /media/Windows/D ntfs ro 0 0
Результат
fdisk -l
:root@mycomp:/home/me# fdisk -l Device Start End Sectors Size Type /dev/sda1 2048 616447 614400 300M Windows recovery environment /dev/sda2 616448 821247 204800 100M EFI System /dev/sda3 821248 1083391 262144 128M Microsoft reserved /dev/sda4 1083392 524290047 523206656 249,5G Microsoft basic data /dev/sda5 524290048 1572866047 1048576000 500G Microsoft basic data /dev/sda6 1572866048 1573842943 976896 477M Microsoft basic data /dev/sda7 1573842944 1621499903 47656960 22,7G Microsoft basic data /dev/sda8 1621499904 1637124095 15624192 7,5G Microsoft basic data /dev/sda9 1637124096 1666420735 29296640 14G Microsoft basic data /dev/sda10 1666420736 1685952511 19531776 9,3G Linux swap /dev/sda11 1685952512 1953523711 267571200 127,6G Microsoft basic data
Ссылаясь на информацию о системе
msinfo32
Windows, мой системныйBIOS mode
UEFI
.
Если вам нужна дополнительная информация для диагностики моей проблемы, оставьте свой запрос в комментарии.
Обновить
Я удалил пакет grub-efi-amd64
со всеми зависимостями, установил grub-pc
и теперь GRUB загружается успешно, только если я загружаюсь в режиме BIOS. Следующая команда:
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
показывает BIOS
, но я все еще хочу загрузиться в режиме UEFI!
Полезные ссылки
Ссылки, которые могут быть полезны: