[libvirt] [PATCH] [libvirt-test-API] Use YABOOT instead of ISOLINUX to create bootable ISO.

Yaboot is the bootloader of PowerPC (ISOLINUX on AMD64/x86 systems, yaboot on PowerPC), so should change the yaboot.conf firstly,then use mkiso command to create bootable ISO. Signed-off-by: Qing Lin<qinglbj@linux.vnet.ibm.com> --- utils/ksiso.sh | 57 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 35 insertions(+), 22 deletions(-) diff --git a/utils/ksiso.sh b/utils/ksiso.sh index 7cf30fc..8b3186c 100755 --- a/utils/ksiso.sh +++ b/utils/ksiso.sh @@ -23,28 +23,41 @@ cp -rf ${boot_iso_dir}/* $custom_iso_dir chmod -R 777 ${custom_iso_dir}/* umount $boot_iso_dir -echo "- copy kickstart to custom work directory" -cp $kscfg $custom_iso_dir - -echo "- edit isolinux.cfg and add kickstart entry" -WORKING_ISO="${custom_iso_dir}/isolinux/isolinux.cfg" - -echo "label custom_ks - kernel vmlinuz $kernel_args - append initrd=initrd.img ks=cdrom:/$kscfg ramdisk_size=20000">> $WORKING_ISO - -# change default boot target and timeout -DEFAULT_LINE=`cat $WORKING_ISO | grep default | head -1` -TIMEOUT_LINE=`cat $WORKING_ISO | grep timeout | head -1` - -cat $WORKING_ISO | sed "s/${DEFAULT_LINE}/default custom_ks/" | sed "s/${TIMEOUT_LINE}/timeout 5/"> isocfgtmp - -mv -f isocfgtmp $WORKING_ISO - -# cd to custom_iso_dir, otherwise mkisofs seems to bomb... -cd $custom_iso_dir -mkisofs -R -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -o $cwd/$custom_iso . - +vlmid=`isoinfo -d -i $boot_iso |grep 'Volume id:'` +vlmid=${vlmid#"Volume id: "} +if [ -n "`echo $vlmid|grep ppc`" ];then + echo "- edit yaboot.conf and add kickstart entry" + WORKING_ISO="${custom_iso_dir}/etc/yaboot.conf" + # change timeout and add kickstart entry + TIMEOUT_LINE=`cat $WORKING_ISO | grep timeout | head -1` + APPEND_LINE=`cat $WORKING_ISO | grep append | head -1` + cat $WORKING_ISO | sed "s#${TIMEOUT_LINE}#timeout=5#" | sed "s#${APPEND_LINE}#append= \"root=live:CDLABEL=$vlmid ks=cdrom:/$kscfg \"#"> isocfgtmp + mv -f isocfgtmp $WORKING_ISO + cd $custom_iso_dir + mkisofs -R -V "$vlmid" -sysid PPC -chrp-boot -U -prep-boot ppc/chrp/yaboot -hfs-bless ppc/mac -no-desktop -allow-multidot -volset 4 -volset-size 1 -volset-seqno 1 -hfs-volid 4 -o $cwd/$custom_iso . +else + echo "- copy kickstart to custom work directory" + cp $kscfg $custom_iso_dir + + echo "- edit isolinux.cfg and add kickstart entry" + WORKING_ISO="${custom_iso_dir}/isolinux/isolinux.cfg" + + echo "label custom_ks + kernel vmlinuz $kernel_args + append initrd=initrd.img ks=cdrom:/$kscfg ramdisk_size=20000">> $WORKING_ISO + + # change default boot target and timeout + DEFAULT_LINE=`cat $WORKING_ISO | grep default | head -1` + TIMEOUT_LINE=`cat $WORKING_ISO | grep timeout | head -1` + + cat $WORKING_ISO | sed "s/${DEFAULT_LINE}/default custom_ks/" | sed "s/${TIMEOUT_LINE}/timeout 5/"> isocfgtmp + + mv -f isocfgtmp $WORKING_ISO + + # cd to custom_iso_dir, otherwise mkisofs seems to bomb... + cd $custom_iso_dir + mkisofs -R -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -o $cwd/$custom_iso . +fi EXITVAL=$? if [ $EXITVAL -ne '0' ] ; then echo -e "\n mkisofs exited with $EXITVAL!" --

On 05/03/2012 05:11 PM, Lin Qing wrote:
Yaboot is the bootloader of PowerPC (ISOLINUX on AMD64/x86 systems, yaboot on PowerPC), so should change the yaboot.conf firstly,then use mkiso command to create bootable ISO. Whether we consider to rewrite it in python language and add it as a function into utils module instead of a shell script, in addition, I don't like 'if..else' in shell, if we will support other bootloader in the future, we must add a new 'else' branch in ksiso.sh, it hasn't a better expansibility. I'd like to use python 'getattr' as a dispatcher to deal with this kind of case. if we need to add a new bootloader support, just need to add a new function/interface, you don't need to change original codes.
Signed-off-by: Qing Lin<qinglbj@linux.vnet.ibm.com> --- utils/ksiso.sh | 57 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 35 insertions(+), 22 deletions(-)
diff --git a/utils/ksiso.sh b/utils/ksiso.sh index 7cf30fc..8b3186c 100755 --- a/utils/ksiso.sh +++ b/utils/ksiso.sh @@ -23,28 +23,41 @@ cp -rf ${boot_iso_dir}/* $custom_iso_dir chmod -R 777 ${custom_iso_dir}/* umount $boot_iso_dir
-echo "- copy kickstart to custom work directory" -cp $kscfg $custom_iso_dir - -echo "- edit isolinux.cfg and add kickstart entry" -WORKING_ISO="${custom_iso_dir}/isolinux/isolinux.cfg" - -echo "label custom_ks - kernel vmlinuz $kernel_args - append initrd=initrd.img ks=cdrom:/$kscfg ramdisk_size=20000">> $WORKING_ISO - -# change default boot target and timeout -DEFAULT_LINE=`cat $WORKING_ISO | grep default | head -1` -TIMEOUT_LINE=`cat $WORKING_ISO | grep timeout | head -1` - -cat $WORKING_ISO | sed "s/${DEFAULT_LINE}/default custom_ks/" | sed "s/${TIMEOUT_LINE}/timeout 5/"> isocfgtmp - -mv -f isocfgtmp $WORKING_ISO - -# cd to custom_iso_dir, otherwise mkisofs seems to bomb... -cd $custom_iso_dir -mkisofs -R -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -o $cwd/$custom_iso . - +vlmid=`isoinfo -d -i $boot_iso |grep 'Volume id:'` +vlmid=${vlmid#"Volume id: "} +if [ -n "`echo $vlmid|grep ppc`" ];then + echo "- edit yaboot.conf and add kickstart entry" + WORKING_ISO="${custom_iso_dir}/etc/yaboot.conf" + # change timeout and add kickstart entry + TIMEOUT_LINE=`cat $WORKING_ISO | grep timeout | head -1` + APPEND_LINE=`cat $WORKING_ISO | grep append | head -1` + cat $WORKING_ISO | sed "s#${TIMEOUT_LINE}#timeout=5#" | sed "s#${APPEND_LINE}#append= \"root=live:CDLABEL=$vlmid ks=cdrom:/$kscfg \"#"> isocfgtmp + mv -f isocfgtmp $WORKING_ISO + cd $custom_iso_dir + mkisofs -R -V "$vlmid" -sysid PPC -chrp-boot -U -prep-boot ppc/chrp/yaboot -hfs-bless ppc/mac -no-desktop -allow-multidot -volset 4 -volset-size 1 -volset-seqno 1 -hfs-volid 4 -o $cwd/$custom_iso . +else + echo "- copy kickstart to custom work directory" + cp $kscfg $custom_iso_dir + + echo "- edit isolinux.cfg and add kickstart entry" + WORKING_ISO="${custom_iso_dir}/isolinux/isolinux.cfg" + + echo "label custom_ks + kernel vmlinuz $kernel_args + append initrd=initrd.img ks=cdrom:/$kscfg ramdisk_size=20000">> $WORKING_ISO + + # change default boot target and timeout + DEFAULT_LINE=`cat $WORKING_ISO | grep default | head -1` + TIMEOUT_LINE=`cat $WORKING_ISO | grep timeout | head -1` + + cat $WORKING_ISO | sed "s/${DEFAULT_LINE}/default custom_ks/" | sed "s/${TIMEOUT_LINE}/timeout 5/"> isocfgtmp + + mv -f isocfgtmp $WORKING_ISO + + # cd to custom_iso_dir, otherwise mkisofs seems to bomb... + cd $custom_iso_dir + mkisofs -R -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -o $cwd/$custom_iso . +fi EXITVAL=$? if [ $EXITVAL -ne '0' ] ; then echo -e "\n mkisofs exited with $EXITVAL!" --
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On 05/03/2012 06:23 PM, Alex Jia wrote:
On 05/03/2012 05:11 PM, Lin Qing wrote:
Yaboot is the bootloader of PowerPC (ISOLINUX on AMD64/x86 systems, yaboot on PowerPC), so should change the yaboot.conf firstly,then use mkiso command to create bootable ISO. Whether we consider to rewrite it in python language and add it as a function into utils module instead of a shell script, in addition, I don't like 'if..else' in shell, if we will support other bootloader in the future, we must add a new 'else' branch in ksiso.sh, it hasn't a better expansibility. I'd like to use python 'getattr' as a dispatcher to deal with this kind of case. if we need to add a new bootloader support, just need to add a new function/interface, you don't need to change original codes.
Currently, the script is fine to work and easy to maintain. Python wrap will make it complex. let's just keep it for a while. Guannan Ren

On 05/03/2012 05:11 PM, Lin Qing wrote:
Yaboot is the bootloader of PowerPC (ISOLINUX on AMD64/x86 systems, yaboot on PowerPC), so should change the yaboot.conf firstly,then use mkiso command to create bootable ISO.
Signed-off-by: Qing Lin<qinglbj@linux.vnet.ibm.com> --- utils/ksiso.sh | 57 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 35 insertions(+), 22 deletions(-)
diff --git a/utils/ksiso.sh b/utils/ksiso.sh index 7cf30fc..8b3186c 100755 --- a/utils/ksiso.sh +++ b/utils/ksiso.sh @@ -23,28 +23,41 @@ cp -rf ${boot_iso_dir}/* $custom_iso_dir chmod -R 777 ${custom_iso_dir}/* umount $boot_iso_dir
-echo "- copy kickstart to custom work directory" -cp $kscfg $custom_iso_dir - -echo "- edit isolinux.cfg and add kickstart entry" -WORKING_ISO="${custom_iso_dir}/isolinux/isolinux.cfg" - -echo "label custom_ks - kernel vmlinuz $kernel_args - append initrd=initrd.img ks=cdrom:/$kscfg ramdisk_size=20000">> $WORKING_ISO - -# change default boot target and timeout -DEFAULT_LINE=`cat $WORKING_ISO | grep default | head -1` -TIMEOUT_LINE=`cat $WORKING_ISO | grep timeout | head -1` - -cat $WORKING_ISO | sed "s/${DEFAULT_LINE}/default custom_ks/" | sed "s/${TIMEOUT_LINE}/timeout 5/"> isocfgtmp - -mv -f isocfgtmp $WORKING_ISO - -# cd to custom_iso_dir, otherwise mkisofs seems to bomb... -cd $custom_iso_dir -mkisofs -R -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -o $cwd/$custom_iso . - +vlmid=`isoinfo -d -i $boot_iso |grep 'Volume id:'` +vlmid=${vlmid#"Volume id: "} +if [ -n "`echo $vlmid|grep ppc`" ];then + echo "- edit yaboot.conf and add kickstart entry" + WORKING_ISO="${custom_iso_dir}/etc/yaboot.conf" + # change timeout and add kickstart entry + TIMEOUT_LINE=`cat $WORKING_ISO | grep timeout | head -1` + APPEND_LINE=`cat $WORKING_ISO | grep append | head -1` + cat $WORKING_ISO | sed "s#${TIMEOUT_LINE}#timeout=5#" | sed "s#${APPEND_LINE}#append= \"root=live:CDLABEL=$vlmid ks=cdrom:/$kscfg \"#"> isocfgtmp + mv -f isocfgtmp $WORKING_ISO + cd $custom_iso_dir + mkisofs -R -V "$vlmid" -sysid PPC -chrp-boot -U -prep-boot ppc/chrp/yaboot -hfs-bless ppc/mac -no-desktop -allow-multidot -volset 4 -volset-size 1 -volset-seqno 1 -hfs-volid 4 -o $cwd/$custom_iso . +else + echo "- copy kickstart to custom work directory" + cp $kscfg $custom_iso_dir + + echo "- edit isolinux.cfg and add kickstart entry" + WORKING_ISO="${custom_iso_dir}/isolinux/isolinux.cfg" + + echo "label custom_ks + kernel vmlinuz $kernel_args + append initrd=initrd.img ks=cdrom:/$kscfg ramdisk_size=20000">> $WORKING_ISO + + # change default boot target and timeout + DEFAULT_LINE=`cat $WORKING_ISO | grep default | head -1` + TIMEOUT_LINE=`cat $WORKING_ISO | grep timeout | head -1` + + cat $WORKING_ISO | sed "s/${DEFAULT_LINE}/default custom_ks/" | sed "s/${TIMEOUT_LINE}/timeout 5/"> isocfgtmp + + mv -f isocfgtmp $WORKING_ISO + + # cd to custom_iso_dir, otherwise mkisofs seems to bomb... + cd $custom_iso_dir + mkisofs -R -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -o $cwd/$custom_iso . +fi EXITVAL=$? if [ $EXITVAL -ne '0' ] ; then echo -e "\n mkisofs exited with $EXITVAL!" --
ACK and pushed. Guannan Ren
participants (3)
-
Alex Jia
-
Guannan Ren
-
Lin Qing