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