Перенос boot раздела на USB флешку

Предисловие

Прочитав заголовок, некоторые читатели зададут вопрос «А зачем….!?». Эксперимент по переносу boot раздела на USB флешку или microSD карту может показаться странным и бесполезным, но железо от именитых производителей иногда создает трудности и заставляет искать нестандартные пути решения.

Обновление: все действия были протестированы на Proxmox VE 8.1.4

В качестве домашнего NAS я использую HP MicroServer Gen8. В этой «крохе» возможно установить только 5 дисков SATA, при этом загрузка системы возможна только с основной корзины (из 4-х дисков). Использование 5-го диска не было предусмотрено производителем и устанавливается он вместо DVD привода.

Корзина из 4-х дисков давно себя исчерпала и в основном используется как хранилище. Новые идеи требуют от сервера высокой скорости дисковой системы, а именно использование SSD и NVMe.

Дисков должно быть больше, больше….

Для расширения возможностей в сервер было установлено новое железо:

  1. в качестве 5-го диска был установлен SSD диск для нужд docker контейнеров. Разъем для 5-го диска работает как SATA2. Пиковая прямолинейная скорость невысокая, но SSD диск дает значительный прирост в IOPS в сравнении с обычными HDD;
  2. m2 NVMe диск через переходник в слот расширения pci-e под операционную систему Proxmox VE и образы виртуалок.
SSD диск вместо CD\DVD привода
m2 NVMe в слот расширения pci-e

К сожалению возможности по выбору устройств для загрузки ОС сильно ограничены в HP MicroServer Gen8. В качестве загрузочных устройств можно выбрать: основная корзина HDD, CD\DVD привод, USB флешка и microSD карточка. Дело за малым — добавить возможность загрузки с любого носителя, установленного на сервере.

В качестве отправной точки для загрузки была выбрана USB флешка. Если на нее разместить только загрузочную запись, то нагрузка на карточку будет небольшая и работать она будет «вечно». Главное на USB флешку можно установить загрузчик (например Grub) и у сервера появляется возможность загружать операционную систему с любого носителя.

Весь описанный процесс по установки загрузчика Grub на USB флешку также применим, если вместо USB флешку использовать MicroSD карту.

Установка USB флешки

Внутри сервера на материнской плате расположен слот под внутренний USB.

Была выбрана USB флешка объемом 4 ГБ. Свободное пространство предварительно разбито на 2 раздела:

  1. 512 МБ — boot раздел
  2. Свободное пространство 2-го раздела можно использовать как небольшое дополнительное хранилище.
# Посмотреть список всех разделов
lsblk

# На моей системе USB флешка - /dev/sdc
# Если необходимо, флешку можно предварительно очистить
# ВНИМАНИЕ! Проверьте, что у вас флэшка тоже /dev/sdс, иначе исправьте!!!
dd if=/dev/zero of=/dev/sdc bs=1M status=progress

# Разбивка на разделы
fdisk /dev/sdc
# Посмотреть все разделы: p <Enter>
# Удалить все разделы
#    Command: d <Enter> (Повторить, если несколько разделов)
# Создать 1-ый раздел: 
#    Partition type: p <Enter>
#    Partition number: <Enter>
#    First sector: <Enter>
#    Last sector: +512M <Enter>
# Создать 2-ый раздел: 
#    Partition type: p <Enter>
#    Partition number: <Enter>
#    First sector: <Enter>
#    Last sector: <Enter>
# Установить флаг Boot на первый раздел
#    Command: d <Enter>
#    Partition number: 1 <Enter>
# Проверить разбивку разделов: 
#    Command: p <Enter>
# Сохранить и выйти:
#    Command: w <Enter>
# Выйти:
#    Command: q <Enter>

# Отформатировать разделы
mkfs.ext2 /dev/sdc1
mkfs.ext3 /dev/sdc2

Установка microSD карточки не сложная. Для этого необходимо снять крышку и установить карточку в разъём, легкодоступный на материнской плате.

Внутренний USB разъем находится справа от слота microSD.

Подготовка: загрузка Live CD и подключение через ssh

В начальном состоянии на NVMe диск была установлена операционная система Proxmox VE. В ходе последовательных операций будет установлен загрузчик Grub и перенесем boot раздел на USB флешку.

Важно! Перед началом работ не забываем сделать Backup.

1) Загрузка с установочного диска Proxmox VE

  1. Выбрать Advanced Options
  2. Выбрать Rescue Boot

Proxmox загрузится автоматически с раздела, на котором он установлен.

Proxmox будет доступ как через Web интерфейс, так по ssh. В моём случае Proxmox доступен по адресу 192.168.23.252

2) Подключение по ssh к Proxmox VE

В качестве клиента я выбрал PuTTY

Вводим логин root и пароль

Установка Grub на USB флешку

Важно! Перед началом работ не забываем сделать Backup.

На USB флешку будет установлена только загрузочная запись Grub. Папк /boot останется в корне основного раздела Proxmox VE и не будет переносится на флешку.

1) Поиск разделов для установки

Для поиска разделов необходимо ввести команду:

lsblk

Необходимо найти название разделов:

  1. Раздел с установленной операционной системой
    В моем случае это /dev/pve/root
  2. Раздел USB флешки
    В моем случае это /dev/sde

2) Backup папки boot и удаление её содержимого

Выполним копирование папки boot и очистим ее

cp -R -a /backup /backup.bak
cd /backup && rm -rf *

3) Установка grub на USB флешку

grub-install --recheck /dev/sde

4) Копирование содержимого /boot.bak в новый /boot в корне Proxmox VE

  1. Скопировать все папки и файлы /boot.bak, кроме grub
  2. Из папки /boot.bak/grub скопировать папки и файлы:
    • fonts
    • i386-pc
    • locale
    • x86_64-efi
    • unicode.pf2
  3. Продублировать содержимое boot на флешку (не обязательно)
mkdir /mnt/tmp
mount /dev/sde /mnt/tmp
cp -R -a /boot /mnt/tmp/boot
umount /mnt/tmp

5) Обновление конфигурации Grub

update-grub

6) Перезагрузка

reboot

Не забываем извлечь загрузочный диск

Если все сделали правильно, то загрузчик запустится с USB и загрузит Proxmox VE с m2 NVMe диска.

Удачи!

5 2 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

14 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
денис
денис
2 лет назад

Добрый вечер! Делаю все по вашей инструкции, кроме одного устанавливаю на usb флешку, потому что sd карты хоть ilo и видит, но в системе ubuntu хоть убей — не видится, не получается. Система аналогична. Установил proxmox на nvme устройство которое установлено через переходник в pci-e, далее делаю по инструкции, запуска нет.

Денис
Денис
1 год назад

Добрый день! Версия Proxmox VE 7.2 последняя с сайта, ошибок при загрузке нет, т.к. grub по данной инструкции почему-то не запускается. Если можно подсказать как сделать чтобы папку boot не переносить, а оставить в корне основного диска. Я так понимаю это уже будет другая инструкция? Или нужно пропустить какие-то пункты инструкции?
Заранее спасибо!
Пробовал еще по этой инструкции, но здесь установка идет на ссд диск на 5 порту sata. В данном случае получается грузиться с 5 порта, но с nvme нет. И в данном случает grub запускается. Здесь речь идет о переносе загрузки на usb флешку с уже загруженной системой Proxmox.
1.Обнуляем содержимое флэшки. (ВНИМАНИЕ! Удостоверьтесь, что у вас флэшка тоже обозначается как /dev/sdb, иначе исправьте команду)
# dd if=/dev/zero of=/dev/sdb
2. Создаём на ней раздел размером 128 МБ:
# fdisk /dev/sdb
Command: Нажимаем «n».
Partition type: выбираем «p».
Partition number: нажимаем Enter.
First sector: нажимаем Enter.
Last sector: Вводим +128M
3. Там же, делаем раздел загрузочным:

Command (m for help): a
Selected partition 1
The bootable flag on partition 1 is enabled now.
4. Проверяем, что всё нормально:
Command (m for help): p
Disk /dev/sdb: 3,73 GiB, 4007657472 bytes, 7827456 sectors
Disk model: -power
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: dos
Disk identifier: 0xefb6449b

Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 264191 262144 128M 83 Linux
4. Записываем изменения на накопитель:

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
5. Создаём файловую систему:

# mkfs -t ext2 /dev/sdb1
6. Монтируем ФС и создаём необходимые каталоги:

# mkdir /tmp/usb
# mount /dev/sdb1 /tmp/usb
# mkdir /tmp/usb/boot
7. Устанавливаем GRUB:

# grub-install —boot-directory=/tmp/usb/boot /dev/sdb
8. Обновляем конфигурацию GRUB:

# update-grub —output=/tmp/usb/boot/grub/grub.cfg

Денис
Денис
1 год назад

Добрый день! Может подскажите инструкцию как вы делали, а то меня смущает папка boot на флешке. Заранее спасибо!

Денис
Денис
1 год назад
Ответить на  Neosy

Добрый вечер! Попробовал еще раз, не получается выдает ошибку во вложении. Что еще может быть?

IMG_20230205_202431.jpg
Денис
Денис
1 год назад
Ответить на  Денис

вот такая структура у меня

IMG_20230206_2318111.jpg
Денис
Денис
1 год назад
Ответить на  Neosy

Добрый вечер! Нет ошибок не было, я замечаю что данная проблема возникает именно когда я устанавливаю debian на lvm. Такое ощущение что загрузчик grub не видит разделы lvm.

Сергей
Сергей
1 год назад

Коллеги, в Proxmox есть специальная утилита для решения проблемы загрузки путём создания загрузочных разделов на нескольких физических дисках и обновления их содержимого при установки новых ядер. В результате система может правильно стартовать с резервного esp-раздела, если основной накопитель недоступен. Проблему загрузки с карточки или загрузочной флэшки на серверах HP Gen8 с её помощью тоже решается быстро и изящно. Рекомендую: proxmos-boot-tool