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

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

Установка 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

Установка Grub на microSD

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

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

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

sudo -i

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

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

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

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

lsblk

3) Монтируем раздел 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 раздела

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
Подключение раздела root Proxmox VE

6) Устанавливаем grub на microSD карту

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

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

Копируем частично:

  1. Все папки и файлы /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
    Обновление конфигурации Grub

    10) Уходим из chroot

    root@ubuntu:/# exit

    11) Отмонтируем разделы и перезагрузим сервер

    root@ubuntu:/mnt/root# umount {dev/pts,proc,sys,run}
    root@ubuntu:/# reboot

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

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

    Удачи!

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

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

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

    Денис
    Денис
    6 месяцев назад

    Добрый день! Версия 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

    Денис
    Денис
    4 месяцев назад

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

    Денис
    Денис
    3 месяцев назад
    Ответить на  Neosy

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

    IMG_20230205_202431.jpg
    Денис
    Денис
    3 месяцев назад
    Ответить на  Денис

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

    IMG_20230206_2318111.jpg
    Денис
    Денис
    3 месяцев назад
    Ответить на  Neosy

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