Прочитав заголовок, некоторые читатели зададут вопрос «А зачем….!?». Эксперимент по переносу 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 и образы виртуалок.
SSD диск вместо CD\DVD привода
m2 NVMe в слот расширения pci-e
К сожалению возможности по выбору устройств для загрузки ОС сильно ограничены в HP MicroServer Gen8. В качестве загрузочных устройств можно выбрать: основная корзина HDD, CD\DVD привод, USB флешка и microSD карточка. Дело за малым — добавить возможность загрузки с любого носителя, установленного на сервере.
В качестве отправной точки для загрузки была выбрана USB флешка. Если на нее разместить только загрузочную запись, то нагрузка на карточку будет небольшая и работать она будет «вечно». Главное на USB флешку можно установить загрузчик (например Grub) и у сервера появляется возможность загружать операционную систему с любого носителя.
Весь описанный процесс по установки загрузчика Grub на USB флешку также применим, если вместо USB флешку использовать MicroSD карту.
Установка USB флешки
Внутри сервера на материнской плате расположен слот под внутренний USB.
Была выбрана USB флешка объемом 4 ГБ. Свободное пространство предварительно разбито на 2 раздела:
512 МБ — boot раздел
Свободное пространство 2-го раздела можно использовать как небольшое дополнительное хранилище.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Посмотреть список всех разделов
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
# Посмотреть список всех разделов
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
# Посмотреть список всех разделов
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
Результат команды lsblk
Создание разделов с помощью fdisk
Установка microSD карточки не сложная. Для этого необходимо снять крышку и установить карточку в разъём, легкодоступный на материнской плате.
Внутренний USB разъем находится справа от слота microSD.
Установка microSD
Подготовка: загрузка Live CD и подключение через ssh
В начальном состоянии на NVMe диск была установлена операционная система Proxmox VE. В ходе последовательных операций будет установлен загрузчик Grub и перенесем boot раздел на USB флешку.
Важно! Перед началом работ не забываем сделать Backup.
1) Загрузка с установочного диска Proxmox VE
Выбрать Advanced Options
Выбрать Rescue Boot
Live CD Proxmox VERescue Boot Proxmox VE
Proxmox загрузится автоматически с раздела, на котором он установлен.
Загрузка Proxmox в режиме Rescue Boot
Proxmox будет доступ как через Web интерфейс, так по ssh. В моём случае Proxmox доступен по адресу 192.168.23.252
Важно! Перед началом работ не забываем сделать Backup.
На USB флешку будет установлена только загрузочная запись Grub. Папк /boot останется в корне основного раздела Proxmox VE и не будет переносится на флешку.
1) Поиск разделов для установки
Для поиска разделов необходимо ввести команду:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
lsblk
lsblk
lsblk
Поиск разделов с помощью команды lsblk
Необходимо найти название разделов:
Раздел с установленной операционной системой В моем случае это /dev/pve/root
Раздел USB флешки В моем случае это /dev/sde
2) Backup папки boot и удаление её содержимого
Выполним копирование папки boot и очистим ее
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp -R -a /backup /backup.bak
cd /backup && rm -rf *
cp -R -a /backup /backup.bak
cd /backup && rm -rf *
cp -R -a /backup /backup.bak
cd /backup && rm -rf *
3) Установка grub на USB флешку
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
grub-install --recheck /dev/sde
grub-install --recheck /dev/sde
grub-install --recheck /dev/sde
Установка Grub
4) Копирование содержимого /boot.bak в новый /boot в корне Proxmox VE
Скопировать все папки и файлы /boot.bak, кроме grub
Из папки /boot.bak/grub скопировать папки и файлы:
fonts
i386-pc
locale
x86_64-efi
unicode.pf2
Продублировать содержимое boot на флешку (не обязательно)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mkdir /mnt/tmp
mount /dev/sde /mnt/tmp
cp -R -a /boot /mnt/tmp/boot
umount /mnt/tmp
mkdir /mnt/tmp
mount /dev/sde /mnt/tmp
cp -R -a /boot /mnt/tmp/boot
umount /mnt/tmp
mkdir /mnt/tmp
mount /dev/sde /mnt/tmp
cp -R -a /boot /mnt/tmp/boot
umount /mnt/tmp
5) Обновление конфигурации Grub
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
update-grub
update-grub
update-grub
Обновление конфигурации Grub
6) Перезагрузка
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
reboot
reboot
reboot
Не забываем извлечь загрузочный диск
Старый способ: Загрузка Ubuntu Live CD и установка Grub
1) Загружаем Ubuntu с Live CD Ubuntu Live CD
2) Установка ssh для удобства настройки Сначала необходимо открыть terminal Открыть главное меню
Открыть terminal
Устанавливаем ssh и утилиту для определения ip адреса
sudo apt update
sudo apt update
sudo apt install -y ssh net-tools
sudo apt install -y ssh net-tools
Установка ssh на Ubuntu
Узнаем ip адрес с помощью команды:
ifconfig
ifconfig Узнаем ip адрес командой ifconfig
Необходимо задать пароль для пользователя ubuntu. Для этого вводим команду и задаем пароль:
passwd ubuntu
passwd ubuntu
3) Подключаемся по ssh к Ubunt Live CD В качестве клиента я выбрал PuTTY Окно PuTTY для соединения по ssh
Вводим логин ubuntu и пароль Логин и пароль для подключения по ssh
Установка Grub на USB флешку Важно!Перед началом работ не забываем сделать Backup.
На USB флешку будет установлена только загрузочная запись Grub. Папка /boot останется в корне основного раздела Proxmox VE и не будет переносится на USB флешку.
1) Переключаемся на root
sudo -i
sudo -i
2) Поиск разделов для установки Необходимо найти название разделов: 1. Раздел с установленной операционной системой В моем случае это /dev/pve/root 2. Раздел microSD карты В моем случае это /dev/sde
Для поиска разделов необходимо ввести команду:
lsblk
lsblk Поиск разделов с помощью команды lsblk
3) Монтируем раздел root нашей ОС Proxmox VE
root@ubuntu:~# mkdir /mnt/root
root@ubuntu:~# mkdir /mnt/root
root@ubuntu:~# mount /dev/pve/root /mnt/root
root@ubuntu:~# mount /dev/pve/root /mnt/root Монтирование root раздела
Проверяем, что раздел примонтировался и переходим в новую папку
root@ubuntu:~# ls /mnt/root
root@ubuntu:~# ls /mnt/root
root@ubuntu:~# cd /mnt/root
root@ubuntu:~# cd /mnt/root Команда ls для root раздела
4) Переименовываем папку boot в boot.bak и создаем новую пустую папку boot
root@ubuntu:/# cd /mnt/root
root@ubuntu:/# cd /mnt/root
root@ubuntu:/# mv boot boot.bak
root@ubuntu:/# mv boot boot.bak
root@ubuntu:/# mkdir boot
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:~# for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt/root$i; done
root@ubuntu:~# chroot /mnt/root
root@ubuntu:~# chroot /mnt/root Подключение раздела root Proxmox VE
6) Устанавливаем grub на microSD карту
root@ubuntu:/# grub-install --recheck /dev/sde
root@ubuntu:/# grub-install --recheck /dev/sde Установка Grub
7) Копируем содержимое /boot.bak в новый /boot в корне Proxmox VE Копируем частично: 1. Все папки и файлы /boot.bak, кроме grub 2. Из папки /boot.bak/grub скопировать папки и файлы: * fonts * i386-pc * locale * x86_64-efi * unicode.pf2
8) Генерация\обновление образа для загрузчика Выполнить команду:
Добрый вечер! Делаю все по вашей инструкции, кроме одного устанавливаю на usb флешку, потому что sd карты хоть ilo и видит, но в системе ubuntu хоть убей — не видится, не получается. Система аналогична. Установил proxmox на nvme устройство которое установлено через переходник в pci-e, далее делаю по инструкции, запуска нет.
Денис, добрый вечер!
Опиши подробнее. Какая версия Proxmox? Какие ошибки возникают при загрузке? Grub стартует?
В настоящий момент у меня GRUB установлен на USB флешку, т.к. на SD карте по непонятным причинам система не всегда загружалась. Также папку boot лучше не переносить на флешку, а оставить в корне основного диска. Таким образом на USB флешке будет только загрузчик GRUB, который будет обращаться к папке boot в корне основного диска.
Денис
2 лет назад
Добрый день! Версия 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. Монтируем ФС и создаём необходимые каталоги:
Денис, добрый вечер!
Из статьи «Перенос 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 флешки.
Денис
2 лет назад
Добрый день! Может подскажите инструкцию как вы делали, а то меня смущает папка 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? Ошибок не было?
Последний раз редактировалось 2 лет назад Neosy ем
Добрый вечер! Нет ошибок не было, я замечаю что данная проблема возникает именно когда я устанавливаю debian на lvm. Такое ощущение что загрузчик grub не видит разделы lvm.
Сергей
1 год назад
Коллеги, в Proxmox есть специальная утилита для решения проблемы загрузки путём создания загрузочных разделов на нескольких физических дисках и обновления их содержимого при установки новых ядер. В результате система может правильно стартовать с резервного esp-раздела, если основной накопитель недоступен. Проблему загрузки с карточки или загрузочной флэшки на серверах HP Gen8 с её помощью тоже решается быстро и изящно. Рекомендую: proxmos-boot-tool
Добрый вечер! Делаю все по вашей инструкции, кроме одного устанавливаю на 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