Disk detection with kickstart

Jason Edgecombe jason at rampaginggeek.com
Mon Oct 22 23:58:47 UTC 2012


On 10/22/2012 06:20 AM, Moray Henderson wrote:
> From: kk s [mailto:kks.kbase at gmail.com]
> Sent: 21 October 2012 22:51
>
>
>
> Hi,
>
>   
>
> I have to provision the servers and all the servers are different disk types
> like hda, sda, xvda. So I have issue to detect the disk type itself with
> kickstart and make partitions. Does anyone have pre installation script that
> will do this job?
>
>   
>
> There was something about this earlier in the year - I can't remember now if
> it was on kickstart-list or anaconda-devel.  Someone was saying that if you
> try to create partitions in %pre anaconda gets confused and can't find them.
> Does anyone else remember that thread?  You always need to write the
> partition instructions to a file and %include them back into your kickstart
> file.  You used to detect hard drives in %pre with list-harddrives although
> things change in anaconda so frequently it is difficult to give precise
> instructions.  With a kickstart file on USB drive for example, you could end
> up with the USB drive wiped and included in the Linux logical volume group
> if you were not careful.  As a first step, create a kickstart that just
> writes the output of list-harddrives to a file and see if it gives you
> anything you can use.
>
>   
>

I have something similar, which checks for sda, sdb, hda, hda, etc. 
Tested on RHEL5

code below:
#-----------------------------------------------cut-----------------------------------------
# main part of kickstart

# include the partitioning logic from the pre section.
%include /tmp/part-include

%pre
# pre section
#----- partitioning logic below--------------
# pick the first drive that is not removable and is over MINSIZE
DIR="/sys/block"

# minimum size of hard drive needed specified in GIGABYTES
MINSIZE=60

ROOTDRIVE=""

# /sys/block/*/size is in 512 byte chunks

for DEV in sda sdb sdc sdd hda hdb; do
   if [ -d $DIR/$DEV ]; then
     REMOVABLE=`cat $DIR/$DEV/removable`
     if (( $REMOVABLE == 0 )); then
       echo $DEV
       SIZE=`cat $DIR/$DEV/size`
       GB=$(($SIZE/2**21))
       if [ $GB -gt $MINSIZE ]; then
         echo "$(($SIZE/2**21))"
         if [ -z $ROOTDRIVE ]; then
           ROOTDRIVE=$DEV
         fi
       fi
     fi
   fi
done

echo "ROOTDRIVE=$ROOTDRIVE"

# drives smaller than 240GB use fixed-size partions
# drives larger than 240GB use percentage-based partition sizes

if [ $GB -lt 240 ]; then

# drives smaller than 240GB
cat << EOF > /tmp/part-include
zerombr
clearpart --all --drives=$ROOTDRIVE --initlabel
#clearpart --all --drives=$ROOTDRIVE
bootloader --location=mbr --driveorder=$ROOTDRIVE
part /boot --fstype ext3 --size=300 --ondisk=$ROOTDRIVE
part pv.8 --size=100 --grow --ondisk=$ROOTDRIVE
volgroup VolGroup00 --pesize=65536 pv.8
logvol / --fstype ext3 --name=root --vgname=VolGroup00 --size=30000
logvol swap --fstype swap --name=swap --vgname=VolGroup00 --size=8000
logvol /tmp --fstype ext3 --name=tmp --vgname=VolGroup00 --size=10000
logvol /var/log --fstype ext3 --name=varlog --vgname=VolGroup00 --size=1000
logvol /usr/vice/cache --fstype ext3 --name=usrvicecache 
--vgname=VolGroup00 --size=17000
EOF

else
# drives 240GB and larger

cat << EOF > /tmp/part-include
zerombr
clearpart --all --drives=$ROOTDRIVE --initlabel
#clearpart --all --drives=$ROOTDRIVE
bootloader --location=mbr --driveorder=$ROOTDRIVE
part /boot --fstype ext3 --size=300 --ondisk=$ROOTDRIVE
part pv.8 --size=100 --grow --ondisk=$ROOTDRIVE
volgroup VolGroup00 --pesize=65536 pv.8
logvol / --fstype ext3 --name=root --vgname=VolGroup00 --percent=12
logvol swap --fstype swap --name=swap --vgname=VolGroup00 --percent=4
logvol /tmp --fstype ext3 --name=tmp --vgname=VolGroup00 --percent=4
logvol /var/log --fstype ext3 --name=varlog --vgname=VolGroup00 --percent=1
logvol /usr/vice/cache --fstype ext3 --name=usrvicecache 
--vgname=VolGroup00 --percent=7
EOF

fi
#-----------------------------------------------cut-----------------------------------------


Jason




More information about the Kickstart-list mailing list