У меня есть ноутбук ASUS с жестким диском и двойной загрузкой через grub2: Windows 7, Ubuntu 14.
Когда после 5 лет жесткий диск начал перестать работать со сбойными блоками, я добавил SSD к порту SATA 2. Я сделал SSD единственной начальной загрузкой Ubuntu 16 с ее собственным разделом EFI - чтобы удалить жесткий диск однажды, когда это перестало работать полностью и возобновлять SSD только.
Я разделил SSD вручную при установке Ubuntu 16 на нем от Живого USB: выбранный "Что-то еще" в диалоговом окне установки, заботился для монтирования /boot/efi
, /boot
, /
и /home
к разделам SSD я только что создал из Живого USB и проверил, что разделы жесткого диска находятся в, "Не используют этот раздел".
К сожалению, я не проверял раздел EFI на жестком диске. Таким образом несмотря на определение sdb1 (/boot/efi SSD) как Use as: EFI System Partition
и несмотря на выбор/dev/sdb (SSD) как a Device for boot loader installation
, загрузчики закончились в жестком диске, не в SSD, когда я запланировал его. Это вызвано тем, что раздел EFI на жестком диске также оставили настроенным как Use as: EFI System Partition
.
2 получающихся проблемы:
ESP (EFI) находится на жестком диске, не на SSD.
Windows 7 попадает в спасение личинки, в то время как и прекрасная начальная загрузка 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 во время начальной загрузки). Это - OK для решения проблемы 1 этот путь: путем копирования файлов + изменяющийся fstab?
И как я решаю проблему 2? При выборе Windows Boot Manager (on /dev/sda1)
в личинке я вижу эту ошибку и эту конфигурацию от 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)
в личинке я вижу эту ошибку и эту конфигурацию от 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 ...)
Однако, когда наличие Живого 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.
Вот информация от восстановления начальной загрузки: Вставка от восстановления начальной загрузки в pastebin.
Я боюсь выполнения восстановления начальной загрузки, поскольку его Предложенное восстановление, кажется, фиксирует начальную загрузку Ubuntu, не того из Win. (Я должен все еще учиться что rename-ms-efi
средства.)
Я также имел идею удалить SSD и попытаться загрузиться с жестким диском только, но боюсь, что раздел EFI будет завинчен еще больше (например, путем автофиксации себя), и я не смогу загрузиться к Ubuntu 14 больше. Звучит глупым, вероятно. Но в конце концов, представление Ubuntu 14 рядом с оригиналом Win7 ведет для расчистки неспособности возобновить Win7 от спящего режима. Так, я боюсь личинки, делающей "хорошее задание" снова.
Любая справка высоко ценилась бы!
Я буду создавать резервные копии для разделов SSD в это время.
Большое спасибо за подсказки, @oldfred!
Я начал рыть в цепочечные записи и обнаружил это /boot/grub/grub.cfg
файлы расходятся в sda
и sdb
. Оригинал grub.cfg
от жесткого диска (sda
) содержавший запись меню я раньше загружался в Win7, в то время как grub.cfg
из sdb
не имел его. Я не помню, были ли записи пользовательского меню созданы мной или личинкой после установки Ubuntu 12 рядом с Win7. Это и это могли быть полезны другим для создания записи пользовательского меню вручную.
Вот 2 шага, которые я сделал, чтобы заставить 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 на жестком диске, соответственно:
/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, я использую 2-ю запись меню: Windows Boot UEFI loader
.
Подкачка была прервана мой случай, вероятно, из-за того, чтобы менять имя и маркировку раздела 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