2

Я знаю , что есть тонны вопросов , относящихся к GRUB вопросов, но у меня есть конкретная проблема , что я не в состоянии решить в течение довольно длительного времени.

Мой жесткий диск будет выложен с помощью GPT формата (не MBR - см листинга ниже). У меня есть две 64-битные ОС:

  1. Windows 10,
  2. Debian Stretch (Sid).

Проблема в том, что после одного из обновлений системы (я не уверен, что это была ошибка обновления 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!


Полезные ссылки

Ссылки, которые могут быть полезны:

3 ответа3

2

Проблема в том, что EFI - это bios-init, и вам нужно выбрать образ efi (windows или linux-grub)

Если вы не установите grub, он будет загружаться по умолчанию для безопасной загрузки, так что зайдите в BIOS и отключите безопасную загрузку.

После этого... Grub будет корректно обновляться. (после того, как он загружается правильно)

Теперь, зная, что вы ненавидите убудус "автоматическое волшебство" (хорошо, хорошо), вы все равно можете перепроектировать эти настройки для понимания ...

EFI Boot = установлено в прошивке (биос)

  • Тип загрузки = UEFI
  • 1-я загрузка = выберите EFI: диск и EFI: загрузка (менеджер загрузки Windows) или (Debian/Ubuntu/Etc ...)

Grub = должно быть EFI [имя диска здесь]

или что-то такое сочетание ... Теперь вы можете установить grub с помощью Root -> kernel, ramdisk и т.д., И Windows должна быть hd0,1 ... 2 ... efi/boot или что-то в этом роде.

Установите принудительное сканирование BIOS для загрузки - или Debian.

Ремонт багажника.

https://sourceforge.net/projects/boot-repair-cd/

  • сделать живой диск
  • Загрузи вживую.
  • Подключитесь к интернету.
  • Нажмите Go

... должно сработать.

2

Это много разделов!

Msgstr "GRUB перестал появляться при запуске, поэтому Windows запускается по умолчанию."

Указывает, что (вероятно) окна изменили загрузочные флаги.
из вашего parted вывода, раздел 2 загружается. Это где /boot /grub? ...Похоже, sda6 - это раздел /boot для вашей установки nix?

Используйте cfdisk или аналогичный, чтобы убедиться, что раздел, отмеченный загрузкой, является тем, где находится /boot /grub.

И я не вижу, как больно переустанавливать grub:

grub-install /dev/sda && update-grub && shutdown -r now
0

Чтобы меню grub2 отображалось в системе uefi , вам просто нужно добавить пункт меню с помощью efibootmgr:

sudo efibootmgr --create --disk /dev/xxxx --part 1 --write-signature --loader /EFI/Manjaro/grubx64.efi --label "MANJARO" --verbose
  • Вы должны были смонтировать раздел EFI в /boot/efi а файлы в этой точке монтирования дадут вам правильный path для --loader выше, указывающий на grubx64.efi .

  • замените --disk xxxx & номер раздела в --part на ваше фактическое устройство EFI .

В системе с двойной загрузкой это покажет что-то вроде:

[stuart@manjaro ~]$ efibootmgr
BootCurrent: 0003
Timeout: 10 seconds
BootOrder: 0003,0000,0001
Boot0000* Windows Boot Manager
Boot0001  Hard Drive 
Boot0003* MANJARO
  • ISO- образ Manjaro Architect, если он записан в виде образа на USB (т.е. с dd), может загружаться в режиме UEFI и имеет опцию в начальном меню для поиска загрузчиков EFI. Это может быть использовано для запуска вашей системы для запуска вышеуказанной команды efibootmgr . Если пункт меню не отображается, это означает, что вы загрузились с USB в режиме MBR.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .