У меня есть USB-накопитель, который я использую для загрузки с моего ноутбука, у которого периодически возникают проблемы с внутренним жестким диском. Иногда это не будет обнаружено в BIOS, но оно всегда обнаруживается после загрузки.
Если у вас установлен systemd-boot на вашем внутреннем диске, следуйте первому руководству. Если нет, перейдите ко второму способу. Установка systemd-boot на вашем внутреннем диске - рекомендуемый метод
Руководство 1: Systemd-загрузка на внутреннем диске
Загрузите живой CD на компьютере. Вставьте USB-диск, который вы будете использовать для загрузки с диска NVMe.
Создайте раздел FAT32 на USB-накопителе. Убедитесь, что включены флаги boot и esp. Самый простой способ сделать это с помощью gparted.
Смонтируйте раздел FAT32. Для остальных шагов я предполагаю, что он смонтирован в /mnt /usbboot
Добавьте загрузочный раздел USB в fstab, чтобы он автоматически монтировался. Самый простой способ сделать это - выполнить chroot (используйте arch-chroot, это проще) на вашем внутреннем диске и затем запустить sudo genfstab -U / > /etc/fstab
.
Создайте этот файл на внутреннем диске: `/etc/systemd/system/boot-sync.service '
Примечание. Для этого модуля systemd вам потребуется установить rsync.
Вставьте следующее в файл, который вы только что создали:
[Единица измерения]
Description = "Синхронизация загрузочных файлов с внутреннего накопителя на USB-накопитель"
RequiresMountsFor =/ мнт / usbboot
[Обслуживание]
Тип = OneShot
ExecStart =/ bin / bash -c "rsync -rlgopuv /boot/*.img / mnt / usbboot /"
ExecStart =/ bin / rsync -rlgopuv / boot / vmlinuz-linux / mnt / usbboot /
ExecStart =/ bin / rsync -rlgopuv / boot / EFI / mnt / usbboot /
ExecStart =/ bin / rsync -rlgopuv / boot / loader / mnt / usbboot /
[Установить] WantedBy = multi-user.target
Загрузите ваш внутренний диск и выполните команду: sudo systemctl enable --now boot-sync.service
Перезагрузите компьютер и выберите только что созданный USB-накопитель в качестве загрузочного устройства по умолчанию.
Руководство 2: Systemd-загрузка с USB-накопителя - не рекомендуется
Загрузите живой CD на компьютере. Вставьте USB-диск, который вы будете использовать для загрузки с диска NVMe.
Создайте раздел FAT32 на USB-накопителе. Убедитесь, что включены флаги boot и esp. Самый простой способ сделать это с помощью gparted.
Смонтируйте раздел FAT32. Для остальных шагов я предполагаю, что он смонтирован в /mnt /usbboot
Загрузите ваш внутренний диск и выполните команду sudo bootctl --path=/mnt/usbboot install
Запустите эту команду (также внутри chroot на вашем внутреннем диске). sudo bootctl update
(ПРИМЕЧАНИЕ. В этом нет необходимости, но это не повредит).
Создайте запись для вашего диска NVMe по адресу /mnt/usb/loader/entries/ubuntu_server.conf
Это должно выглядеть примерно так:
title Ubuntu Server 18.04
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=XXXX rw
Замените XXXX на PARTUUID для корневого раздела вашего NVMe диска.
Это можно найти, запустив blkid и выполнив поиск вашего корневого раздела.
- Создать /mnt/usb/loader/loader.conf
Это должно выглядеть примерно так:
default ubuntu_server
timeout 4
editor 0
ПРИМЕЧАНИЕ. Выполните ИЛИ шаг 8А ИЛИ шаг 8В. Если вы решите скопировать файлы вручную, их нужно будет повторно копировать каждый раз при обновлении ядра
8А (не рекомендуется). Вручную скопируйте /boot/initramfs-linux.img
и /boot/vmlinuz-linux
из загрузочного раздела внутреннего диска на USB-накопитель. Эти файлы нужно будет обновлять каждый раз, когда вы обновляете свое ядро или перестраиваете свои initramfs.
8В. Если вы хотите использовать скрипт вместо копирования вручную, сначала добавьте загрузочный раздел USB в fstab, чтобы он автоматически монтировался. Самый простой способ сделать это - выполнить chroot (используйте arch-chroot, это проще) на вашем внутреннем диске и затем запустить sudo genfstab -U / > /etc/fstab
.
Примечание: вам понадобится rsync, установленный для этого модуля systemd
Создайте этот файл на внутреннем диске: `/etc/systemd/system/boot-sync.service '
Вставьте следующее в файл, который вы только что создали:
[Единица измерения]
Description = "Синхронизация загрузочных файлов с внутреннего накопителя на USB-накопитель"
RequiresMountsFor =/ мнт / usbboot
[Обслуживание]
Тип = OneShot
ExecStart =/ bin / bash -c "rsync -rlgopuv /boot/*.img / mnt / usbboot /"
ExecStart =/ bin / rsync -rlgopuv / boot / vmlinuz-linux / mnt / usbboot /
[Установить] WantedBy = multi-user.target
Загрузите ваш внутренний диск и выполните команду: sudo systemctl enable --now boot-sync.service
Перезагрузите компьютер и выберите только что созданный USB-накопитель в качестве загрузочного устройства по умолчанию.