Загрузите NVME SSD с USB-ключа

439
megahertz

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 ГБ

0

1 ответ на вопрос

-1
Layne Bernardo

У меня есть 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-накопитель в качестве загрузочного устройства по умолчанию.

Что делают команды bootctl? Человек подразумевает, что это что-то связанное с systemd и EFI, они необходимы? Xen2050 5 лет назад 0
Из https://wiki.archlinux.org/index.php/systemd-boot#Install_the_EFI_boot_manager - «[bootctl install] скопирует загрузчик systemd-boot в раздел EFI: в системе с архитектурой x64 два идентичных двоичных файла esp / EFI / systemd / systemd-bootx64.efi и esp / EFI / BOOT / BOOTX64.EFI будут перенесены в ESP, а затем установит systemd-boot в качестве приложения EFI по умолчанию (запись загрузки по умолчанию), загружаемого менеджером загрузки EFI. " По сути, он копирует необходимые заглушки и файлы EFI, которые будут запускаться реализацией UEFI на вашей материнской плате. Это требуется для этого метода. Layne Bernardo 5 лет назад 0
Прежде всего, спасибо за быстрый ответ и за то, что нашли время помочь! Я не могу заставить это работать, хотя. Я не получаю никаких сообщений об ошибках, за исключением того, что мне нужно указать путь на шаге 5 (sudo bootctl update --path = / mnt / sdb1). При загрузке я получаю следующее сообщение об ошибке: «Ошибка загрузки \ vmlinuz-linux: не найдено Не удалось запустить Ubuntu Server 18.04 (\ vmlinuz-linux): не найдено» megahertz 5 лет назад 0
О, верно, я забыл об этой части. У меня есть хакерское исправление, вы можете решить эту проблему, скопировав `initramfs-linux.img` и` vmlinuz-linux` с загрузочного раздела вашего внутреннего диска на USB-накопитель. Вам нужно будет копировать эти файлы каждый раз, когда вы обновляете ядро ​​Linux. У меня есть системный модуль, который сделает это при загрузке и обновит ответ. Layne Bernardo 5 лет назад 0
Учебное пособие было обновлено, включая гораздо более простой метод, о котором я забыл, который можно использовать, если на внутреннем диске уже установлен systemd-boot. Я прошу прощения за это, я установил свой загрузочный USB-накопитель более года назад и с тех пор не перепутал его. Обратите внимание, что я изменил место монтирования с / mnt / usb на / mnt / usbboot, потому что это менее запутанно с модулем systemd. Ура! Layne Bernardo 5 лет назад 0
Извините, я опробовал новый учебник (включая его выполнение на Arch Linux, запущенном вживую с другой USB-флешки, чтобы получить доступ к arch-chroot и genfstab). Может быть, я просто не в восторге от подобных операций в Linux. Я начинаю думать, что мне следует просто подключить обычный SATA SSD, используя вместо этого разъем CD / DVD на сервере. Я думал, что это будет так же просто, как сказать серверу загрузиться / dev / nvme0n1p1 с USB-накопителя. В любом случае, спасибо за все то время, которое вы вложили! megahertz 5 лет назад 0
Извините за этого человека! Честно говоря, может быть проще использовать загрузку BIOS и просто загрузку GRUB, но я так долго не загружал BIOS, что не могу вспомнить. Может быть, кто-то с большим знанием, чем я, может написать лучший учебник. Я знаю, что мой метод работает, потому что я использую свой загрузочный USB-накопитель каждый день, но он не самый простой, и мой письменный метод ... не очень хорошо отформатирован. Вы можете попытаться спросить на форумах Arch, сообщество Arch очень хорошо осведомлено и полезно. Layne Bernardo 5 лет назад 0

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