
Я установил Debian 10 на внутренний жесткий диск, и он отлично работал с безопасной загрузкой UEFI.
Когда я установил второй Debian на внешний USB-накопитель, он загружался только с этого USB-накопителя.
Когда я отключаю USB от ноутбука, чтобы загрузиться с SSD, появляется ошибка
Минимальное редактирование строк в стиле bash.
Отключение безопасной загрузки не помогло.
Disk /dev/sda: 238,5 GiB, 256060514304 bytes, 500118192 sectors
Disk model
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier:
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 1550335 499712 244M Linux filesystem
/dev/sda3 1550336 500117503 498567168 237,8G Linux filesystem
Disk /dev/sdb: 57,3 GiB, 61505273856 bytes, 120127488 sectors
Disk model: Ultra USB 3.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier:
Device Start End Sectors Size Type
/dev/sdb1 2048 1050623 1048576 512M EFI System
/dev/sdb2 1050624 1550335 499712 244M Linux filesystem
/dev/sdb3 1550336 120125439 118575104 56,6G Linux filesystem
Disk /dev/mapper/sdc3_crypt: 56,5 GiB, 60693676032 bytes, 118542336 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/usb--vg-root: 48,7 GiB, 52240056320 bytes, 102031360 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/usb--vg-swap_1: 7,9 GiB, 8451522560 bytes, 16506880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
выход lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root intern-vg -wi-a----- 229,80g
swap_1 intern-vg -wi-a----- <7,87g
root usb-vg -wi-ao---- 48,65g
swap_1 usb-vg -wi-ao---- 7,87g
решение1
Обратите внимание, что на момент написания этой статьи Debian 10 все еще находится в testing
стадии разработки, поэтому кое-где могут быть шероховатости.
Я предполагаю, что установщик Debian не имел ни малейшего представления о том, что вторая установка будет производиться на съемном диске, и перезаписал копию GRUB первой установки на системном разделе EFI (ESP) на копию, настроенную для загрузки с USB-устройства.
Чтобы исправить это, вам придется сделать две вещи в любом порядке:
1.) Вы должны убедиться, что установка на основе USB является загрузочной сама по себе, т. е. USB-накопитель должен включать раздел FAT32, содержащий копию загрузчика в \EFI\boot\bootx64.efi
. Это то, что делает съемный USB-накопитель загрузочным в смысле UEFI.
2.) Чтобы исправить загрузчик установки на внутреннем жестком диске, вы можете загрузиться с установки на USB-накопителе, затем смонтировать раздел(ы) установки на внутреннем жестком диске и выполнить chroot в этой установке.
Ваши fdisk -l
выходные данные указывают на то, что, вероятно, также используется LVM.
Исходя из вашего fdisk -l
вывода, это должно быть началом требуемых команд. Обратите внимание, что все это должно быть запущено как root, поэтому сначала используйте либо su -
и введите пароль root, либо sudo -i
и введите свой собственный пароль, чтобы стать root.
# mkdir /mnt/hddsystem
# cryptsetup luksOpen /dev/sda3 sda3_crypt
<the above command will ask you the encryption passphrase of the HDD installation.
If successful, then /dev/mapper/sda3_crypt should now exist>
# vgscan
<this detects the LVM volume group within the encrypted container of the HDD installation>
# lvs
<this displays all the detected LVM logical volumes and their names>
# vgchange -ay intern-vg
# mount /dev/mapper/intern--vg-root /mnt/hddsystem
<if successful, directories like /mnt/hddsystem/dev, /mnt/hddsystem/proc, /mnt/hddsystem/sys
should be visible and empty at this point. Other directories should be visible under /mnt/hddsystem too.>
# mount /dev/sda2 /mnt/hddsystem/boot
# mount /dev/sda1 /mnt/hddsystem/boot/efi
На этом этапе можно легко исправить загрузку USB-системы, просто скопировав версию GRUB, которая ищет USB-носитель для загрузки, на USB-накопитель, прежде чем перезаписывать его на жесткий диск.
# mkdir /mnt/usb-esp
# mount /dev/sdb1 /mnt/usb-esp
# mkdir -p /mnt/usb-esp/EFI/boot
# cp -r /mnt/hddsystem/boot/efi/EFI/debian /mnt/usb-esp/EFI/
# cp /mnt/usb-esp/EFI/debian/grubx64.efi /mnt/usb-esp/EFI/boot/
# cp /mnt/hddsystem/boot/efi/EFI/debian/shimx64.efi /mnt/usb-esp/EFI/boot/bootx64.efi
# umount /mnt/usb-esp
Возвращаемся к исправлению установки жесткого диска...
# mount -o bind /dev /mnt/hddsystem/dev
# mount -o bind /proc /mnt/hddsystem/proc
# mount -o bind /sys /mnt/hddsystem/sys
<these commands are preparations for the following chroot command, mounting all the necessary real and virtual filesystems so that the inactive HDD-based installation can be used like an active, running system.>
# chroot /mnt/hddsystem /bin/bash
<this command transitions us to the HDD-based environment; from this point onwards, for this shell session only, /mnt/hddsystem is /.>
# grub-install /dev/sda1
# update-grub
<these two commands to fix the bootloader are what all the preparations above were for.>