web-dev-qa-db-ja.com

Preseedを使用して、サイズまたはタイプに基づいてインストールディスクを選択します

最初の2つのディスク(/ dev/sda、/ dev/sdb)からRAIDミラーを作成するpreseedスクリプトがあります

d-i partman/early_command string \
DISKA=$(list-devices disk|head -n1);\
DISKB=$(list-devices disk|head -n2|tail -1);\
if [ "${DISKA#/dev/cciss}" != "$DISKA" ]; then DISKAP="p"; fi;\
if [ "${DISKB#/dev/cciss}" != "$DISKB" ]; then DISKBP="p"; fi;\
if [ "$DISKA" = "$DISKB" ]; then\
debconf-set partman-auto/disk "$DISKA";\
debconf-set partman-auto-raid/recipe "1 2 0 ext3 /boot ${DISKA}${DISKAP}1 . 1 2 0 lvm - ${DISKA}${DISKAP}5 .";\
debconf-set grub-installer/bootdev "$DISKA";\
else\
debconf-set partman-auto/disk "$DISKA $DISKB";\
debconf-set partman-auto-raid/recipe "1 2 0 ext3 /boot ${DISKA}${DISKAP}1#${DISKB}${DISKBP}1 . 1 2 0 lvm - ${DISKA}${DISKAP}5#${DISKB}${DISKBP}5 .";\
debconf-set grub-installer/bootdev "$DISKA $DISKB";\
fi;

しかし、sda/sdbの代わりにサイズまたはタイプのディスクを選択できる必要があります。たとえば、sda/sdbとして選択された2つの2TB SSDの代わりに使用したい2つの160GBディスクがあります

Preseedを使用してこれにどのようにアプローチしますか?

2
davideagle

これは最もエレガントなソリューションではないかもしれませんが、私にとってはうまくいきました。 RAIDに使用する1000MB未満の最初の2つのディスクを選択します

d-i partman/early_command string \
NODEVICES=$(list-devices disk | wc -l);\
SIZELIMIT=1000;\
FOUNDDISK=0;\
COUNTER=0;\
while [ "$COUNTER" -ne "$NODEVICES" ]; do\
COUNTER=$((COUNTER+1));\
if [ $COUNTER -eq 1 ]; then\
DEVICE=$(list-devices disk|head -n1);\
else DEVICE=$(list-devices disk|head -n$COUNTER|tail -1);fi;\
echo $DEVICE >> /disks.txt;\
DEVICESIZE=$(fdisk -l|grep -o "$DEVICE: [0-9.]* GB"|grep -o "[0-9.]*");\
INT=${DEVICESIZE%.*};\
if [ $INT -lt $SIZELIMIT ]; then\
if [ $FOUNDDISK -eq 0 ]; then FOUNDDISK=1; DISKA=${DEVICE};\
Elif [ $FOUNDDISK -eq 1 ]; then FOUNDDISK=2; DISKB=${DEVICE};fi;\
fi;\
done;\
if [ "${DISKA#/dev/cciss}" != "$DISKA" ]; then DISKAP="p"; fi;\
if [ "${DISKB#/dev/cciss}" != "$DISKB" ]; then DISKBP="p"; fi;\
if [ "$DISKA" = "$DISKB" ]; then\
debconf-set partman-auto/disk "$DISKA";\
debconf-set partman-auto-raid/recipe "1 2 0 ext3 /boot ${DISKA}${DISKAP}1 . 1    2 0 lvm - ${DISKA}${DISKAP}5 .";\
debconf-set grub-installer/bootdev "$DISKA";\
else\
debconf-set partman-auto/disk "$DISKA $DISKB";\
debconf-set partman-auto-raid/recipe "1 2 0 ext3 /boot ${DISKA}${DISKAP}1#${DISKB}${DISKBP}1 . 1 2 0 lvm - ${DISKA}${DISKAP}5#${DISKB}${DISKBP}5 .";\
debconf-set grub-installer/bootdev "$DISKA $DISKB";\
fi;
1
davideagle