Большой беспорядок с моими диспетчерами загрузки

У меня довольно сложная конфигурация. Я пытаюсь быть синтетическим:

У меня 4 диска (1 ssd, 2 nvme и 1 HDD) и 4 ОС (3 Win10 и 1 ubuntu):

  • Nvme 1 (Win10-1 + Ubuntu 20.04) / dev / nvme0n1
  • Nvme 2 (Win10-2) / dev / nvme1n1
  • HDD 1 (только данные + подкачка) / dev / sda
  • SSD 1 (Win10-3) / dev / sdb

компьютер - UEFI.

Сначала у меня не было проблем. Grub показал мои 4 варианта загрузки.

Но мне пришлось переустановить Win10-1, и тогда я полностью потерял свой личный состав. Таким образом, я смог загрузиться только на Win10-1 или Win10-2 через диспетчер загрузки Windows.

Я попытался восстановить загрузку Grub на живом Ubuntu, но с небольшим успехом ... Вот фактическое поведение:


Boot 
|_______Grub
        |______*Ubuntu > boots Ubuntu
        |______*Windows Boot manager on /dev/nvme1n1
                |_______Windows Boot Manager GUI
                        |______*Win10-1 > boots Win10-1
                        |______*Win10-2
                                |_______Grub
                                        |______*Ubuntu > Grub rescue
                                        |______*Windows Boot manager on /dev/nvme1n1 > boots Win10-2

Итак это полный беспорядок для меня, и, кстати, я потерял возможность загружаться на Win10-3 ...

Я не знаю, как стереть эту беспорядочную конфигурацию загрузки в MBR и вернуться к этому:

Boot 
|_______Grub
        |______*Ubuntu > boots Ubuntu
        |______*Windows Boot manager on /dev/nvme0n1 > boots Win10-1
        |______*Windows Boot manager on /dev/nvme1n1 > boots Win10-2
        |______*Windows Boot manager on /dev/sdb > boots Win10-3

Is есть ли волшебный инструмент для настройки этого?

Любая помощь / совет будут оценены.

--- Редактировать 1 --- Спасибо за ваш ответ, WaterOfDark.

Я уже прошел через этот процесс, но безуспешно.

Кроме того, Win3 не имеет большого значения, поскольку я могу загрузить его, используя выбор EFI. У меня также есть 3 раздела EFI на Nvme1, Nvme2 и SSD1

Может быть, проблема в этих разделах? Может быть, я смогу каким-то образом сбросить содержимое части EFI, а затем снова запустить update-grub?

Должен признать, что я не очень хорошо разбираюсь в материалах EFI.

--- Edit2 ---

Я подтверждаю, что быстрый запуск Windows отключен

--- Edit3 ---

Вот результат выполнения команд: Вот результаты

willy@Ubuntu:~$ sudo efibootmgr
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,000A,0000,0008,0006,000B,0007
Boot0000* Windows Boot Manager
Boot0002* ubuntu
Boot0006* UEFI: SAMSUNG SSD 830 Series, Partition 2
Boot0007* UEFI: Sabrent Rocket 4.0 1TB, Partition 1
Boot0008* Windows Boot Manager
Boot000A* ubuntu
Boot000B* UEFI OS
willy@Ubuntu:~$ sudo dmidecode -t0 | grep -Ei "BIOS boot|UEFI"
        BIOS boot specification is supported
        UEFI is supported
0
задан 16 December 2020 в 18:14

2 ответа

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

Вот подробности того, как я поступаю:

Из Ubuntu, используя Gparted, я полностью удаляю раздел EFI на Nvme2. Я форматирую раздел на Nvme1. . (с флагом загрузки)

Затем в терминале: sudo gedit / etc / fstab для замены UID раздела EFI. Изменяет форматирование арфтера. Линия должна выглядеть так UUID = 1A2B-3C4D / boot / efi vfat по умолчанию 0 1 ,сохраните fstab, затем смонтируйте раздел EFI sudo mount / boot / efi и переустановите grub sudo grub-install

Теперь, после перезагрузки, записи UEFI больше не беспорядочные, но у вас есть только одна запись: Ubnutu. Здесь больше нет Windows, поэтому мне нужно воссоздать записи EFI для Windows

Во многих найденных мною руководствах говорится об использовании средства восстановления при загрузке Windows, но:

  1. У меня это не сработало (возможно, из-за Grub?)
  2. Я точно не знаю, что он делает и как ....

Я сделал это вручную:

Загрузитесь с установочного носителя Windows10> выберите язык> Восстановите компьютер> Дополнительные параметры> Устранение неполадок > Командная строка

С помощью diskpart я монтирую и добавляю букву в раздел EFI

diskpart
diskpart>list vol            (to display assigned letter to partitions and volume numbers)
diskpart>sel vol 4           (volume number of the EFI partition)
diskpart>assign letter=Z:    (or other available letter)
diskpart>exit

Затем я использую bcdboot для создания записей Windows в разделе EFI

bcdboot D:\Windows /l fr-fr /s Z: /f UEFI                (D is the letter of the partition with the first Windows system to boot, here Win10-1)
bcdboot E:\Windows /l fr-fr /s Z: /f UEFI /d /addlast    (E is the letter of the partition with the first Win10-2 system)
bcdboot F:\Windows /l fr-fr /s Z: /f UEFI /d /addlast    (F is the letter of the partition with the first Win10-3 system)

При перезагрузке теперь есть 2 варианта выбора в выборе UEFI: Grub или загрузка Windows manager, но grub по-прежнему не знает Windows. В конце загрузитесь в последний раз на Ubuntu и выполните sudo update-grub .

Вот фактическое поведение при загрузке:

Boot 
|_______Grub
        |______*Ubuntu > boots Ubuntu
        |______*Windows Boot manager on /dev/nvme0n1
                |_______Windows Boot Manager GUI
                        |______*Win10-1 > boots Win10-1
                        |______*Win10-2 > boots Win10-2
                        |______*Win10-3 > boots Win10-3                       

Для большей ясности мы можем использовать bcdedit для переименования записей в WBM

Из любой командной строки Windows:

bcdedit (to list entries and not identifiers)
bcdedit /set {identifier} description "My Custom Windows"

Теперь предварительная очистка. Но я должен пройти через Grub, затем через графический интерфейс Windows Boot Manager, чтобы загрузиться в любой Windows. Так что я продолжаю играть!

Я снова отформатировал раздел EFI на Nvme1, создал новый на Nvme2, а другой на SSD1 (раздел FAT32 100Mo с флагом 'boot' от Gparted)

Установите Grub на Nvme1 / boot / EFI .

С установочного носителя Windows10 таким же образом, как описано выше, смонтируйте все 3 раздела EFI и добавьте в каждый из них соответствующие записи EFI:

bcdboot D:\Windows /l fr-fr /s Z: /f UEFI /d /addlast    (D is system Win10-1 and Z EFI on Nvme1)
bcdboot E:\Windows /l fr-fr /s Y: /f UEFI /d /addlast    (E is system Win10-2 and Y EFI on Nvme2)
bcdboot F:\Windows /l fr-fr /s X: /f UEFI /d /addlast    (F is system Win10-3 and X EFI on SSD1)

Окончательно выполните update-grub из Ubuntu после перезагрузки. А теперь вот поведение:

Boot 
|_______Grub
        |______*Ubuntu > boots Ubuntu
        |______*Windows Boot manager on /dev/nvme0n1 > boots Win10-1
        |______*Windows Boot manager on /dev/nvme1n1 > boots Win10-2
        |______*Windows Boot manager on /dev/sdb > boots Win10-3

Кроме того, теперь я могу загружать любую систему из выбора UEFI, и если я потеряю диск Nvme1, я все еще могу загрузиться с другого диска

Надеюсь, этот роман может быть полезен другим людям

1
ответ дан 3 January 2021 в 22:46

У меня была похожая проблема, я решил ее, обновив загрузчик grub через версию linux-live. Но сначала я бы рекомендовал снова запустить ОС Win-3. Я полагаю, что для вашей Win-3 вы каким-то образом удалили флаг загрузки. Самый простой способ восстановить это - отключить все остальные "работающие" ОС, чтобы был подключен только жесткий диск с Win-3 (SSD1), который использует инструмент восстановления Windows (используйте живую систему Windows, если обычная загрузка не работает. запустите средство восстановления, если подключен только диск win-3), чтобы исправить флаг загрузки. После этого подключите все снова и обновите grub.

После того, как Win-3 заработает, обновите grub из системы linux-live. Хорошее подробное объяснение того, как это работает, вы можете найти здесь . Просто убедитесь, что выбрали правильный раздел, так как у вас две ОС на одном жестком диске.


Редактировать:

Хорошо, я думаю, это что-то особенное для EFI. Я нашел здесь полезную информацию , но она на немецком языке. Использование действующей или установленной системы для более подробной проверки ситуации Для считывания NVRAM

sudo apt-get install efibootmgr 
...
sudo efibootmgr -v 
Boot0002* Ubuntu    HD(1,800,32000,34911255-cfd8-43ce-a600-fb43636a9c2c)File(\EFI\trusty\shimx64.efi)

Boot000X - это просто увеличивающиеся числа, и * отметьте его как активный, поэтому вы должны получить минимум 2 записи со звездочкой или, возможно, 4, если тестируется и нормальный диск.

Вы можете запустить sudo dmidecode -t0 | grep -Ei "BIOS boot | UEFI" , чтобы узнать, поддерживает ли ваш UEFI CSM (если да, он будет поддерживать BIOS и UEFI).

Любая проблема может заключаться в том, что окна проверяют, выполняется ли первый вход в загрузчик EFI - это Windwos, в противном случае он удалит его и заменит собственный загрузочный флаг. Предложение предотвратить это - оставить его на первом месте, но отключить. Но я предполагаю, что это будет работать только с 1 windosOS.

0
ответ дан 3 January 2021 в 22:46

Другие вопросы по тегам:

Похожие вопросы: