Двойная загрузка (Win7 + Ubuntu14) терпит неудачу для Win 7 после добавления SSD с Ubuntu 16

У меня есть ноутбук ASUS с жестким диском и двойной загрузкой через grub2: Windows 7, Ubuntu 14.

Когда через 5 лет жесткий диск начал сбой с плохими блоками, я добавил SSD на порт SATA 2. Я сделал SSD один загрузочный Ubuntu 16 со своим собственным разделом EFI - чтобы удалить жесткий диск в один прекрасный день, когда он завершился неудачно, и продолжить работу с SSD.

Я установил SSD вручную при установке Ubuntu 16 на нем с Live USB: выбрал «Что-то еще» в диалоговом окне установки, позаботился о монтировании /boot/efi, /boot, / и /home в разделы SSD, которые я только что создал из Live USB, и проверил, что разделы жесткого диска находятся в разделе «Не использовать этот раздел ".

К сожалению, я не проверял раздел EFI на HDD. Поэтому, несмотря на указание sdb1 (/ boot / efi SSD) как Use as: EFI System Partition и, несмотря на выбор / dev / sdb (SSD) в качестве Device for boot loader installation, загрузчики оказались на жестком диске, а не на SSD, как я и планировал. Это связано с тем, что раздел EFI на жестком диске также был сконфигурирован как Use as: EFI System Partition.

Две возникающие проблемы:

ESP (EFI) находится на жестком диске, а не на SSD. Windows 7 попадает в спасение grub, в то время как Ubuntu 16 и Ubuntu 14 загружаются нормально. Интересно, связаны ли 2 проблемы.

Чтобы решить проблему 1, я скопировал содержимое EFI жесткого диска в EFI SSD и изменил отображение /boot/efi в /etc/fstab, чтобы указать EFI SSD (UUID=E2A1-9FFE, /dev/sdb1):

# /boot/efi was on /dev/sda1 during installation #UUID=40BE-2040 /boot/efi vfat umask=0077 0 1 # redirecting /boot/efi from /dev/sda1 to /dev/sdb1 UUID=E2A1-9FFE /boot/efi vfat umask=0077 0 1

Теперь правильный раздел EFI (на SSD) устанавливается на /boot/efi, когда загружается Ubuntu (хотя я не проверял, используется ли правильная EFI во время загрузки). Можно ли решить проблему 1 следующим образом: путем копирования файлов + изменения fstab?

И во время ? Когда вы выбираете Windows Boot Manager (on /dev/sda1) в grub, я вижу эту ошибку и эту конфигурацию от set:

error: symbol `grub_term_highlight_color` not found. grub rescue> set lang= locale_dir= prefix=(hd0,gpt6)/grub root=hd0,gpt6 secondary_locale_dir=

При выборе Windows Boot Manager (on /dev/sdb1) в grub я вижу эту ошибку и эту конфигурацию от set:

error: file `/grub/x86_64-efi/normal.mod` not found. grub rescue> set prefix=(hd1,gpt6)/grub root=hd1,gpt6

В BIOS (UEFI) вызываются загрузочные устройства, соответственно:

Windows Boot Manager (P0: ST1000...) Windows Boot Manager (P1: Samsung SSD 850 PRO ...)

Однако, когда Live USB в USB-порту, выберите загрузочные устройства из BIOS (Esc ) производит выход set с номерами hd, сдвинутыми на один:

error: symbol `grub_term_highlight_color` not found. grub rescue> set lang= locale_dir= prefix=(hd1,gpt6)/grub root=hd1,gpt6 secondary_locale_dir=

и

error: file `/grub/x86_64-efi/normal.mod` not found. grub rescue> set prefix=(hd2,gpt6)/grub root=hd2,gpt6

Я чувствую, что все в порядке, хотя не на 100% не причина сбоя загрузки Win7.

Вот информация из boot-repair: Вставить из boot-repair в pastebin.

Я боюсь запустить boot-repair как его Предполагаемый ремонт, похоже, фиксирует загрузку Ubuntu, а не Win. (Я еще должен узнать, что означает rename-ms-efi.)

У меня также возникла идея удалить SSD и попробовать загрузиться только с HDD, но я боюсь, что раздел EFI будет завинчен еще больше ( например, путем автоматической фиксации), и я больше не смогу загрузиться в Ubuntu 14. Звучит глупо, наверное. Но в конце концов, введение Ubuntu 14 рядом с исходным Win7 приведет к тому, что grub не сможет возобновить Win7 из спящего режима.

Любая помощь была бы высоко оценена!

Я буду создавать резервные копии для разделов SSD в Между тем.

0
задан 24 September 2017 в 23:44

2 ответа

Большое спасибо за подсказки @oldfred!

Я начал рыть в записи цепочки и обнаружил, что /boot/grub/grub.cfg файлы отличаются на sda и sdb. Исходный grub.cfg с HDD (sda) содержал запись меню, которую я использовал для загрузки в Win7, в то время как grub.cfg из sdb не имел этого. Я не помню, были ли созданные пользовательские записи меню мной или grub при установке Ubuntu 12 рядом с Win7. Это и может быть полезно для других, чтобы создать пользовательскую запись в меню вручную.

Вот два шага, которые я сделал, чтобы перезагрузить Win7:

Копировать недостающие /etc/grub.d/25_custom sdb из sda.

Содержимое /etc/grub.d/25_custom:

#!/bin/sh exec tail -n +3 $0 menuentry "Windows UEFI bkpbootmgfw.efi" { search --fs-uuid --no-floppy --set=root 40BE-2040 chainloader (${root})/EFI/Microsoft/Boot/bkpbootmgfw.efi } menuentry "Windows Boot UEFI loader" { search --fs-uuid --no-floppy --set=root 40BE-2040 chainloader (${root})/EFI/Boot/bkpbootx64.efi } menuentry "efi/EFI/Boot/bkpbootx64.efi" { search --fs-uuid --no-floppy --set=root 84ba8463-a7a4-4a32-a429-f28e606435f2 chainloader (${root})/efi/EFI/Boot/bkpbootx64.efi }

, где 40BE-2040 и 84ba8463-a7a4-4a32-a429-f28e606435f2 являются разделом EFI и / загрузочным разделом Ubuntu 14 на HDD соответственно:

/dev/sda1: LABEL="SYSTEM" UUID="40BE-2040" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="41d1ad3d-8c17-44cd-9e4f-e6554d3c532b" /dev/sda6: UUID="84ba8463-a7a4-4a32-a429-f28e606435f2" TYPE="ext4" PARTUUID="7f61e2e3-7b36-49a0-a357-90032497db30"

sudo update-grub затем обновляет grub.cfg.

Для загрузки Win7 я использую вторую запись меню: Windows Boot UEFI loader.

Копия отсутствует /etc/grub.d/25_custom до sdb из sda.

Сделка сломалась в моем случае, вероятно, из-за изменения имени & amp; ярлык раздела EFI на sdb при исследовании того, может ли некодированное имя раздела / метка быть причиной того, что Win7 не загружается. Раздел подкачки начал запрашивать пароль при загрузке Ubuntu 16. Я не мог исправить это, обновив UUID в /etc/fstab, /etc/crypttab и /etc/initramfs-tools/conf.d/resume. Только связанная ссылка помогла исправить зашифрованный раздел подкачки. Запуск sudo ecryptfs-setup-swap завершился неудачно, но после перезагрузки обмен был зашифрован правильно:

> lsblk ├─sdb3 8:19 0 8G 0 part │ └─cryptswap1 253:0 0 8G 0 crypt [SWAP]

И вывод swapon -s отличается от показанного в приведенной выше ссылке:

Filename Type Size Used Priority /dev/dm-0 partition 8388092 0 -1

Но кажется, что это правильный раздел подкачки:

> ls -l /dev/mapper/cryptswap1 lrwxrwxrwx 1 root root 7 sept 25 14:02 /dev/mapper/cryptswap1 -> ../dm-0
0
ответ дан 18 July 2018 в 06:16

Большое спасибо за подсказки @oldfred!

Я начал рыть в записи цепочки и обнаружил, что /boot/grub/grub.cfg файлы отличаются на sda и sdb. Исходный grub.cfg с HDD (sda) содержал запись меню, которую я использовал для загрузки в Win7, в то время как grub.cfg из sdb не имел этого. Я не помню, были ли созданные пользовательские записи меню мной или grub при установке Ubuntu 12 рядом с Win7. Это и может быть полезно для других, чтобы создать пользовательскую запись в меню вручную.

Вот два шага, которые я сделал, чтобы перезагрузить Win7:

Копировать недостающие /etc/grub.d/25_custom sdb из sda.

Содержимое /etc/grub.d/25_custom:

#!/bin/sh exec tail -n +3 $0 menuentry "Windows UEFI bkpbootmgfw.efi" { search --fs-uuid --no-floppy --set=root 40BE-2040 chainloader (${root})/EFI/Microsoft/Boot/bkpbootmgfw.efi } menuentry "Windows Boot UEFI loader" { search --fs-uuid --no-floppy --set=root 40BE-2040 chainloader (${root})/EFI/Boot/bkpbootx64.efi } menuentry "efi/EFI/Boot/bkpbootx64.efi" { search --fs-uuid --no-floppy --set=root 84ba8463-a7a4-4a32-a429-f28e606435f2 chainloader (${root})/efi/EFI/Boot/bkpbootx64.efi }

, где 40BE-2040 и 84ba8463-a7a4-4a32-a429-f28e606435f2 являются разделом EFI и / загрузочным разделом Ubuntu 14 на HDD соответственно:

/dev/sda1: LABEL="SYSTEM" UUID="40BE-2040" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="41d1ad3d-8c17-44cd-9e4f-e6554d3c532b" /dev/sda6: UUID="84ba8463-a7a4-4a32-a429-f28e606435f2" TYPE="ext4" PARTUUID="7f61e2e3-7b36-49a0-a357-90032497db30"

sudo update-grub затем обновляет grub.cfg.

Для загрузки Win7 я использую вторую запись меню: Windows Boot UEFI loader.

Копия отсутствует /etc/grub.d/25_custom до sdb из sda.

Сделка сломалась в моем случае, вероятно, из-за изменения имени & amp; ярлык раздела EFI на sdb при исследовании того, может ли некодированное имя раздела / метка быть причиной того, что Win7 не загружается. Раздел подкачки начал запрашивать пароль при загрузке Ubuntu 16. Я не мог исправить это, обновив UUID в /etc/fstab, /etc/crypttab и /etc/initramfs-tools/conf.d/resume. Только связанная ссылка помогла исправить зашифрованный раздел подкачки. Запуск sudo ecryptfs-setup-swap завершился неудачно, но после перезагрузки обмен был зашифрован правильно:

> lsblk ├─sdb3 8:19 0 8G 0 part │ └─cryptswap1 253:0 0 8G 0 crypt [SWAP]

И вывод swapon -s отличается от показанного в приведенной выше ссылке:

Filename Type Size Used Priority /dev/dm-0 partition 8388092 0 -1

Но кажется, что это правильный раздел подкачки:

> ls -l /dev/mapper/cryptswap1 lrwxrwxrwx 1 root root 7 sept 25 14:02 /dev/mapper/cryptswap1 -> ../dm-0
0
ответ дан 24 July 2018 в 18:34

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

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