Содержание
Предисловие
Прочитав заголовок, некоторые читатели зададут вопрос «А зачем….!?». Эксперимент по переносу 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 карточка. Если на нее разместить только загрузочную запись и boot раздел, то нагрузка на карточку будет небольшая и работать она будет «вечно». Главное на карточку можно установить загрузчик (например Grub) и у сервера появляется возможность загружать операционную систему с любого носителя.
Установка 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 и пароль

Перенос boot раздела на microSD
Важно! Перед началом работ не забываем сделать Backup.
1) Переключаемся на root
sudo -i
2) Поиск разделов для установки
Необходимо найти название разделов:
- Раздел с установленной операционной системой
В моем случае это /dev/pve/root - Раздел microSD карты
В моем случае это /dev/sde1
Для поиска разделов необходимо ввести команду:
lsblk
3) Форматируем раздел карточки
mkfs.ext2 /dev/sde1
4) Монтируем раздел 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

5) Узнаем UUID раздела sde1 и меняем fstab
root@ubuntu:/mnt/root# blkid /dev/sde1
Результат команды:
/dev/sde1: UUID="155b89b8-8ef0-41a6-8742-7c72a15adb77" TYPE="ext2" PARTUUID="ca2bdea4-01"
6) В /etc/fstab добавляем/исправляем монтирование /boot
root@ubuntu:/mnt/root# nano etc/fstab
Строка монтирования boot
UUID=155b89b8-8ef0-41a6-8742-7c72a15adb77 /boot ext2 errors=remount-ro 0 2
7) Переименовываем папку boot в boot.bak и создаем новую пустую папку boot
root@ubuntu:/# cd /mnt/root root@ubuntu:/# mv boot boot.bak root@ubuntu:/# mkdir boot
8) Переключаемся на раздел 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

9) Монтируем раздел SD карточки в /boot
root@ubuntu:/# mount /dev/sde1 /boot
10) Устанавливаем grub
root@ubuntu:/# grub-install --recheck /dev/sde

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

14) Уходим из chroot
root@ubuntu:/# exit
15) Отмонтируем разделы
root@ubuntu:/mnt/root# umount {dev/pts,proc,sys,run}
16) Перезагружаем сервер и не забываем извлечь загрузочный диск
root@ubuntu:/# reboot
Если все сделали правильно, то загрузчик запустится с SD карточки и загрузит Linux с m2 NVMe диска.
Удачи!