tl; dr - Как загрузить установку Ubuntu Server с USB-ключа?

Я пытаюсь загрузить установку Ubuntu Server 18.04 LTS на сервер, который не позволяет загружаться с диска NVMe. Поскольку диск виден после загрузки (например, после загрузки с Live CD), я подумал, как заставить его работать, загружая ОС с диска / ключа USB, который я постоянно подключаю.

Я просмотрел в Интернете руководство о том, как это сделать, но все, что я нашел, находится на очень концептуальном уровне. Я ищу кого-то, чтобы предоставить ссылки на документацию или пошаговое руководство.

Технические характеристики оборудования (при необходимости):

Dell Poweredge R230 Startech x4 PCI Express к M.2 PCIe SSD адаптер карта Samsung 970 EVO NVMe (M.2) 250 ГБ Kingston DataTraveler SE9 16 ГБ

1 ответ1

-1

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

Если у вас установлен systemd-boot на вашем внутреннем диске, следуйте первому руководству. Если нет, перейдите ко второму способу. Установка systemd-boot на вашем внутреннем диске - рекомендуемый метод

Руководство 1: Systemd-загрузка на внутреннем диске

  1. Загрузите живой CD на компьютере. Вставьте USB-диск, который вы будете использовать для загрузки с диска NVMe.

  2. Создайте раздел FAT32 на USB-накопителе. Убедитесь, что включены флаги boot и esp. Самый простой способ сделать это с помощью gparted.

  3. Смонтируйте раздел FAT32. Для остальных шагов я предполагаю, что он смонтирован в /mnt /usbboot

  4. Добавьте загрузочный раздел USB в fstab, чтобы он автоматически монтировался. Самый простой способ сделать это - выполнить chroot (используйте arch-chroot, это проще) на вашем внутреннем диске и затем запустить sudo genfstab -U / > /etc/fstab .

  5. Создайте этот файл на внутреннем диске: `/etc/systemd/system/boot-sync.service '

    Примечание. Для этого модуля systemd вам потребуется установить rsync.

  6. Вставьте следующее в файл, который вы только что создали:

[Единица измерения]

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

  1. Загрузите ваш внутренний диск и выполните команду: sudo systemctl enable --now boot-sync.service

  2. Перезагрузите компьютер и выберите только что созданный USB-накопитель в качестве загрузочного устройства по умолчанию.


Руководство 2: Systemd-загрузка с USB-накопителя - не рекомендуется

  1. Загрузите живой CD на компьютере. Вставьте USB-диск, который вы будете использовать для загрузки с диска NVMe.

  2. Создайте раздел FAT32 на USB-накопителе. Убедитесь, что включены флаги boot и esp. Самый простой способ сделать это с помощью gparted.

  3. Смонтируйте раздел FAT32. Для остальных шагов я предполагаю, что он смонтирован в /mnt /usbboot

  4. Загрузите ваш внутренний диск и выполните команду sudo bootctl --path=/mnt/usbboot install

  5. Запустите эту команду (также внутри chroot на вашем внутреннем диске). sudo bootctl update (ПРИМЕЧАНИЕ. В этом нет необходимости, но это не повредит).

  6. Создайте запись для вашего диска 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 и выполнив поиск вашего корневого раздела.

  1. Создать /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

  1. Создайте этот файл на внутреннем диске: `/etc/systemd/system/boot-sync.service '

  2. Вставьте следующее в файл, который вы только что создали:

[Единица измерения]

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

  1. Загрузите ваш внутренний диск и выполните команду: sudo systemctl enable --now boot-sync.service

  2. Перезагрузите компьютер и выберите только что созданный USB-накопитель в качестве загрузочного устройства по умолчанию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .