Предисловие
Прочитав заголовок, некоторые читатели зададут вопрос «А зачем….!?». Эксперимент по переносу boot раздела на USB флешку или microSD карту может показаться странным и бесполезным, но железо от именитых производителей иногда создает трудности и заставляет искать нестандартные пути решения.
Обновление: все действия были протестированы на Proxmox VE 8.1.4
В качестве домашнего 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 карточка. Дело за малым — добавить возможность загрузки с любого носителя, установленного на сервере.
В качестве отправной точки для загрузки была выбрана USB флешка. Если на нее разместить только загрузочную запись, то нагрузка на карточку будет небольшая и работать она будет «вечно». Главное на USB флешку можно установить загрузчик (например Grub) и у сервера появляется возможность загружать операционную систему с любого носителя.
Весь описанный процесс по установки загрузчика Grub на USB флешку также применим, если вместо USB флешку использовать MicroSD карту.
Установка USB флешки
Внутри сервера на материнской плате расположен слот под внутренний USB.
Была выбрана USB флешка объемом 4 ГБ. Свободное пространство предварительно разбито на 2 раздела:
- 512 МБ — boot раздел
- Свободное пространство 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
- Выбрать Advanced Options
- Выбрать 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
Необходимо найти название разделов:
- Раздел с установленной операционной системой
В моем случае это /dev/pve/root - Раздел 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
- Скопировать все папки и файлы /boot.bak, кроме grub
- Из папки /boot.bak/grub скопировать папки и файлы:
- fonts
- i386-pc
- locale
- x86_64-efi
- unicode.pf2
- Продублировать содержимое 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 диска.
Удачи!
Добрый вечер! Делаю все по вашей инструкции, кроме одного устанавливаю на 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.
Коллеги, в Proxmox есть специальная утилита для решения проблемы загрузки путём создания загрузочных разделов на нескольких физических дисках и обновления их содержимого при установки новых ядер. В результате система может правильно стартовать с резервного esp-раздела, если основной накопитель недоступен. Проблему загрузки с карточки или загрузочной флэшки на серверах HP Gen8 с её помощью тоже решается быстро и изящно. Рекомендую: proxmos-boot-tool
Сергей, спасибо.
Полезная утилита. Попробую для своих задач.
Описание утилиты:
https://pve.proxmox.com/wiki/Host_Bootloader
https://pve.proxmox.com/wiki/ZFS:_Switch_Legacy-Boot_to_Proxmox_Boot_Tool
Вариант загрузки с помощью proxmos-boot-tool для HP MicroServer Gen8 не подходит, т.к. не поддерживается UEFI boot loader