Загрузка с внутреннего SATA порта HPE Microserver Gen8
14 августа 2022
Всплыла одна интересная особенность сервера HPE Microserver Gen8. Пока система грузилась с жёсткого диска, который был установлен в корзину — всё было отлично. Но тут я решил добавить в сервер SSD под систему и подключить его в внутреннему SATA порту, который изначально предназначался для подключения DVD-привода. И выяснилось, что система умеет грузиться только с ПЕРВОГО по счёту жёсткого диска, и если SSD подключить к внутреннему порту и вставить в корзину ещё 4 диска, то он станет пятым. Впрочем, сервер умеет грузиться ещё с трёх мест: внешних USB-портов, внутреннего USB-порта на материнской плате и microSD-карты. Эту особенность мы и используем для обхода ограничений, установив загрузчик операционной системы на USB-флэшку.
MicroSD слот, USB-порт и SATA-порт на материнской плате сервера:
Нам понадобится любая ненужная USB флэшка. Так как на ней будет располагаться только загрузчик GRUB, то в процессе работы на неё не будет производиться никаких записей, поэтому за ресурс можно не переживать. Я взял давно лежащую без дела флэшку на 4 ГБ.
Извлекаем из корзины все диски и подключаем SSD к внутреннему SATA порту. Сам SSD я разместил в верхней части сервера в отсеке для DVD-привода:
Кстати, при подключении ждал ещё один сюрприз: на блоке питания не было провода питания SATA — вместо него предлагался Molex для подключения FDD… Ага, вот такой:
Поэтому, вооружившись паяльником, я просто заменил этот разъём на стандартный SATA.
Как обычно устанавливаем систему на SSD — здесь никаких проблем не возникло. Далее подключаем флэшку к ВНЕШНЕМУ USB-порту и выполняем следующие команды уже из установленной системы:
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
При необходимости в файле grub.cfg затем меняем параметры загрузки или время ожидания команды в загрузочном меню.
9. Вставляем флэшку во ВНУТРЕННИЙ USB-порт на материнской плате и перезагружаем сервер.
10. В RBSU заходим в System Options —> USB options —> Removable Flash Media Boot Sequence и выбираем пункт «Internal DriveKeys First»:
И там устанавливаем следующий порядок загрузки (главное, чтобы USB DriveKey находился выше Hard Drive):
11. Выходим из RBSU, проверяем, что система загружается нормально.
12. При необходимости возвращаем диски в корзину.






