web-dev-qa-db-fra.com

Utilisez Preseed pour choisir d'installer des disques en fonction de leur taille ou de leur type.

J'ai un script de préconfiguration qui crée un miroir RAID à partir des deux premiers disques (/ dev/sda,/dev/sdb)

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;

Mais je dois être capable de choisir le disque sur la taille ou le type au lieu de sda ​​/ sdb. Par exemple, je souhaite utiliser 2 disques de 160 Go à la place des deux disques SSD de 2 To choisis comme sda ​​/ sdb.

Comment pourrait-on aborder cela à l'aide de la préconfiguration?

2
davideagle

Ce n'est peut-être pas la solution la plus élégante, mais c'est ce qui a été fait pour moi. Il sélectionne les deux premiers disques de moins de 1000 Mo à utiliser pour le raid.

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