我正在使用USB驱动器和不同types的服务器(HP Proliant ML110,ML310,ML350)上的预定义文件进行Ubuntu-14.04服务器的无人参与安装。
/dev/sda ,USB驱动器位于/dev/sdb 。 /dev/sda ,硬盘驱动器显示在/dev/sdb 。 由于这应该是一个完全无人值守的安装,无论服务器types,我需要find一种方法,以正确的设备pathdi partman-auto/disk 。
我的第一个想法是迫使硬盘出现在USB驱动器之前,允许它采取ML350服务器上的/dev/sda ; 但是我没有find办法 。
因此,我做了一个小脚本,在partman执行之前检测设备名称,并将其logging在variables$INSTALL_DEV :
di 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; \
从那以后,我正在努力find一种方法将这个variables赋予di partman-auto/disk 。 我想到了不同的select,但我找不到一种方法来实现其中之一:
partma-auto/disk解释一个variables。 但不幸的是,它只需要一个string作为一个值。 debian-installer数据库。 但是我没有find数据库文件(既没有改变它的方式)。 /dev之前,我只能包含来自preseed/include include的文件。 这是一个简单的partman/early_command ,它正是我想要的
di 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[az]\+\).*$/\1/'`)"
这个early-command是在partman执行之前执行的。 它dynamic设置debian-installer的partman-auto/diskconfiguration的值。
$(和)之间的命令输出第一个被发现的不是USB驱动器的硬盘驱动器。