Предисловие
Прочитав заголовок, некоторые читатели зададут вопрос «А зачем….!?». Эксперимент по переносу boot раздела на microSD карту может показаться странным и бесполезным, но железо от именитых производителей иногда создает трудности и заставляет искать нестандартные пути решения.
В качестве домашнего NAS я использую HP MicroServer Gen8. В этой «крохе» возможно установить только 5 дисков SATA, при этом загрузка системы возможна только с основной корзины (из 4-х дисков). Использование 5-го диска не было предусмотрено производителем и устанавливается он вместо DVD привода.
Корзина из 4-х дисков давно себя исчерпала и в основном используется как хранилище. Новые идеи требуют от сервера высокой скорости дисковой системы, а именно использование SSD и NVMe.
Дисков должно быть больше, больше….
Для расширения возможностей в сервер было установлено новое железо:
- в качестве 5-го диска был установлен SSD диск для нужд docker контейнеров. Разъем для 5-го диска работает как SATA2. Пиковая прямолинейная скорость невысокая, но SSD диск дает значительный прирост в IOPS в сравнении с обычными HDD;
- m2 NVMe диск через переходник в слот расширения pci-e под операционную систему Proxmox VE и образы виртуалок.


К сожалению возможности по выбору устройств для загрузки ОС сильно ограничены в HP MicroServer Gen8. В качестве загрузочных устройств можно выбрать: основная корзина HDD, CD\DVD привод, USB флешка и microSD карточка. Дело за малым — добавить возможность загрузки с любого носителя, установленного на сервере.
В качестве отправной точки для загрузки была выбрана microSD карточка. Если на нее разместить только загрузочную запись, то нагрузка на карточку будет небольшая и работать она будет «вечно». Главное на карточку можно установить загрузчик (например Grub) и у сервера появляется возможность загружать операционную систему с любого носителя.
Весь описанный процесс по установки загрузчика Grub на MicroSD карту также применим, если вместо microSD карты использовать USB флешку.
Установка microSD карточки
Внутри сервера на материнской плате расположен слот под microSD.
Была выбрана карточка от фирмы SanDisk объемом 32 ГБ. Свободное пространство предварительно было разбито на 2 раздела:
- 512 МБ — boot раздел
- Свободное пространство 2-го раздела можно использовать как небольшое дополнительное хранилище.
Установка microSD карточки не сложная. Для этого необходимо снять крышку и установить карточку в разъём, легкодоступный на материнской плате.


Подготовка: загрузка Live CD и подключение через ssh
В начальном состоянии на NVMe диск была установлена операционная система Proxmox VE. В ходе последовательных операций будет установлен загрузчик Grub и перенесем boot раздел на microSD карточку.
Важно! Перед началом работ не забываем сделать Backup.
1) Загружаем Ubuntu с Live CD

2) Установка ssh для удобства настройки
Сначала необходимо открыть terminal


Устанавливаем ssh и утилиту для определения ip адреса
sudo apt update sudo apt install -y ssh net-tools

Узнаем ip адрес с помощью команды
ifconfig

Необходимо задать пароль для пользователя ubuntu. Для этого вводим команду и задаем пароль:
passwd ubuntu
3) Подключаемся по ssh к Ubunt Live CD
В качестве клиента я выбрал PuTTY

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

Установка Grub на microSD
Важно! Перед началом работ не забываем сделать Backup.
На microSD будет установлена только загрузочная запись Grub. Папк /boot останется в корне основного раздела Proxmox VE и не будет переносится на microSD.
1) Переключаемся на root
sudo -i
2) Поиск разделов для установки
Необходимо найти название разделов:
- Раздел с установленной операционной системой
В моем случае это /dev/pve/root - Раздел microSD карты
В моем случае это /dev/sde
Для поиска разделов необходимо ввести команду:
lsblk

3) Монтируем раздел root нашей ОС Proxmox VE
root@ubuntu:~# mkdir /mnt/root root@ubuntu:~# mount /dev/pve/root /mnt/root

Проверяем, что раздел примонтировался и переходим в новую папку
root@ubuntu:~# ls /mnt/root root@ubuntu:~# cd /mnt/root

4) Переименовываем папку boot в boot.bak и создаем новую пустую папку boot
root@ubuntu:/# cd /mnt/root root@ubuntu:/# mv boot boot.bak root@ubuntu:/# mkdir boot
5) Переключаемся на раздел root нашей Proxmox VE с помощью chroot
root@ubuntu:~# for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt/root$i; done root@ubuntu:~# chroot /mnt/root

6) Устанавливаем grub на microSD карту
root@ubuntu:/# grub-install --recheck /dev/sde

7) Копируем содержимое /boot.bak в новый /boot в корне Proxmox VE
Копируем частично:
- Все папки и файлы /boot.bak, кроме grub
- Из папки /boot.bak/grub скопировать папки и файлы:
- fonts i386-pc
- locale
- x86_64-efi
- unicode.pf2
8) Генерация\обновление образа для загрузчика
Выполнить команду:
root@ubuntu:/# update-initramfs -u
9) Обновление конфигурации Grub
root@ubuntu:/# update-grub

10) Уходим из chroot
root@ubuntu:/# exit
11) Отмонтируем разделы и перезагрузим сервер
root@ubuntu:/mnt/root# umount {dev/pts,proc,sys,run} root@ubuntu:/# reboot
Не забываем извлечь загрузочный диск
Если все сделали правильно, то загрузчик запустится с SD карточки и загрузит Linux с m2 NVMe диска.
Удачи!
Добрый вечер! Делаю все по вашей инструкции, кроме одного устанавливаю на usb флешку, потому что sd карты хоть ilo и видит, но в системе ubuntu хоть убей — не видится, не получается. Система аналогична. Установил proxmox на nvme устройство которое установлено через переходник в pci-e, далее делаю по инструкции, запуска нет.
Денис, добрый вечер!
Опиши подробнее. Какая версия Proxmox? Какие ошибки возникают при загрузке? Grub стартует?
В настоящий момент у меня GRUB установлен на USB флешку, т.к. на SD карте по непонятным причинам система не всегда загружалась. Также папку boot лучше не переносить на флешку, а оставить в корне основного диска. Таким образом на USB флешке будет только загрузчик GRUB, который будет обращаться к папке boot в корне основного диска.
Добрый день! Версия 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
Денис, добрый вечер!
Из статьи «Перенос boot раздела на microSD карточку» я убрал несколько пунктов, в которых описывался процесс переноса папки /boot. Таким образом в статье описываться процесс установки загрузчика grub на microSD, либо USB флешку.
В статье описывается перенос загрузчика grub с уже установленной Proxmox VE на microSD или USB флешку. При этом не важно место установки Proxmox VE, которая может быть как на SSD, так и на m2 NVMe. Приведенная вами инструкция частична похожа. В ней не совсем понятно для чего на флешку устанавливается новая папка /boot без правки fstab. Proxmox по умолчанию будет использовать boot из своего корня.
Если вы делали по инструкции из моей статьи, то загрузчик Grub должен был быть установлен на USB флешку. В этом случае должен был начаться процесс загрузки Grub. При загрузке с USB флешки на экране монитора должна была появится какая-то информация от Grub, например сообщения об ошибках о невозможности найти загрузочный раздел.
На всякий случай я бы проверил в настройках Биоса выставлена ли загрузка с USB флешки.
Добрый день! Может подскажите инструкцию как вы делали, а то меня смущает папка boot на флешке. Заранее спасибо!
Денис, добрый день! Статья в текущем виде актуальна для последней версии Proxmox 7.3. Ранее в комментариях 22.11.2022 я писал, что отредактировал статью и отказался от идеи переноса папки /boot на флешку. На флешке находится только загрузочный раздел Grub. Папки /boot на флешке нет, она остаётся в корне основного раздела Proxmox.
Визуальное текущее представление разделов:
Добрый вечер! Попробовал еще раз, не получается выдает ошибку во вложении. Что еще может быть?
вот такая структура у меня
Добрый вечер!
1) Какой диск в качестве загрузочной USB флешки — это /dev/sdb?
2) Команда grub-install —recheck /dev/<USB disk> выполнилась без ошибок?
3)Что выдала команда update-grub? Ошибок не было?
Добрый вечер! Нет ошибок не было, я замечаю что данная проблема возникает именно когда я устанавливаю debian на lvm. Такое ощущение что загрузчик grub не видит разделы lvm.