Автоматическая установка с preseed - предоставьте пользовательское устройство partman-auto
Я делаю автоматическую установку Ubuntu-14.04-server с USB-накопителем и файлом preseed на серверах другого типа (HP Proliant ML110, ML310, ML350).
- На ML110 и ML310 жесткий диск находится в
/dev/sda
и USB-накопитель занимает/dev/sdb
, - В то время как на серверах ML350, USB-накопитель принимает
/dev/sda
и жесткий диск обнаруживается в/dev/sdb
,
Поскольку это должна быть полностью автоматическая установка, независимо от типа сервера, мне нужно найти способ указать правильный путь к устройству. d-i partman-auto/disk
,
Моя первая идея состояла в том, чтобы заставить жесткий диск появляться перед USB-накопителем, позволяя ему занять /dev/sda
на серверах ML350; но я не нашел способ сделать это.
Поэтому я сделал небольшой скрипт, который определяет имя устройства непосредственно перед partman
выполняет и записывает это в переменную $INSTALL_DEV
:
d-i partman/early_command string \
for DEV in `ls /sys/block | grep sd`; do \
if [ -n "`ls -l /sys/block/$DEV | grep /usb`" ]; then \
USB_DEV=/dev/${DEV}; \
echo "USB_DEV is $USB_DEV" >> /var/log/syslog; \
else \
INSTALL_DEV=/dev/${DEV}; \
echo "INSTALL_DEV = $INSTALL_DEV" >> /var/log/syslog; \
break; \
fi; \
done; \
С тех пор я изо всех сил пытаюсь найти способ дать эту переменную d-i partman-auto/disk
, Я думал о различных альтернативах, но я не мог найти способ реализовать один из них:
- Сделать
partma-auto/disk
интерпретировать переменную. Но, к сожалению, он принимает только строку в качестве значения. - Изменить
debian-installer
база данных, в которой, я надеюсь, сохраняются заданные значения. Но я не нашел файл базы данных (ни способа изменить его). - Сделайте сценарий, который включает в себя крошечный файл preseed с правильным устройством. Но я могу включать только файлы из
preseed/include
до того, как жесткий диск покажет в/dev
,
1 ответ
Вот простой partman/early_command
это именно то, что я хотел
d-i partman/early_command \
string debconf-set partman-auto/disk "$(echo /dev/`ls -l /sys/block/[hs]d* | grep -v "usb" | head -n1 | sed 's/^.*\([hs]d[a-z]\+\).*$/\1/'`)"
это early-command
выполняется незадолго до partman
выполняет. Он динамически устанавливает значение partman-auto/disk
конфигурация debian-installer
,
Команда между $(
а также )
выводит первый обнаруженный жесткий диск, который не является USB-накопителем.