Перенос boot раздела на microSD карточку

Предисловие

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

В качестве домашнего 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 карточка. Дело за малым — добавить возможность загрузки с любого носителя, установленного на сервере.

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

Установка microSD карточки

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

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

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

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

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

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

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

1) Загружаем Ubuntu с Live CD

Ubuntu Live CD

2) Установка ssh для удобства настройки

Сначала необходимо открыть terminal

Открыть главное меню
Открыть terminal

Устанавливаем ssh и утилиту для определения ip адреса

sudo apt update
sudo apt install -y ssh net-tools
Установка ssh на Ubuntu

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

ifconfig
Узнаем ip адрес командой ifconfig

Необходимо задать пароль для пользователя ubuntu. Для этого вводим команду и задаем пароль:

passwd ubuntu

3) Подключаемся по ssh к Ubunt Live CD

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

Окно PuTTY для соединения по ssh

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

Логин и пароль для подключения по ssh

Перенос boot раздела на microSD

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

1) Переключаемся на root

sudo -i

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

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

  1. Раздел с установленной операционной системой
    В моем случае это /dev/pve/root
  2. Раздел 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 раздела

Проверяем, что раздел примонтировался и переходим в новую папку

root@ubuntu:~# ls /mnt/root
root@ubuntu:~# cd /mnt/root
Команда ls для 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
Подключение нового раздела root

9) Монтируем раздел SD карточки в /boot

root@ubuntu:/# mount /dev/sde1 /boot

10) Устанавливаем grub

root@ubuntu:/# grub-install --recheck /dev/sde
Установка Grub

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
Обновление конфигурации 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 диска.

Удачи!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *