#! /bin/bash set -ex # 2021654528 SIZE=$[30000*32*4*512] BASE=f15-live BIN=$BASE.bin ISO64=$BASE-x86_64.iso ISO32=$BASE-i686.iso ISO=$BASE.iso KS=$BASE.ks SELF=$BASE.sh # $PWD: rpm: arguments to --root (-r) must begin with a / MNT=$PWD/$BASE.mnt LOOPDEV= set -o pipefail renice +19 -p $$ ionice -c3 -p $$ test "`uname -m`" = "x86_64" test ! -e $BIN test ! -e $ISO test ! -e $MNT test -e $SELF if [ ! -e $ISO64 ];then test -e "$KS" livecd-creator --config=$KS --fslabel=$BASE --cache=/var/cache/live test -e $ISO mv -f $ISO $ISO64 fi if [ ! -e $ISO32 ];then test -e "$KS" setarch i686 livecd-creator --config=$KS --fslabel=$BASE --cache=/var/cache/live test -e $ISO mv -f $ISO $ISO32 fi trap 'set +e; rm -f $BIN; (umount $MNT/{c,b,a,}; rmdir $MNT/{c,b,a,}; losetup -d $LOOPDEV) 2>/dev/null' EXIT dd if=/dev/zero of=$BIN bs=1 seek=$[SIZE-1] count=1 /sbin/parted --script $BIN mklabel msdos dd bs=1 if=/usr/share/syslinux/mbr.bin of=$BIN conv=notrunc /sbin/parted --script $BIN unit b mkpart primary fat32 1048576 $[$(find $BIN -printf %s)-1048576] set 1 boot on LOOPDEV=`losetup -o 1048576 -v -f $BIN | sed 's/^Loop device is //'` [ -n "$LOOPDEV" -a "${LOOPDEV#/dev/loop[0-9]}" != "$LOOPDEV" ] /sbin/mkdosfs -n LIVE $LOOPDEV UUID="$(dd skip=$[0x43] bs=1 count=4 if=$LOOPDEV|od -An -txI|tr a-z A-Z|sed 's/^ \(....\)\(....\)$/\1-\2/')" # --overlay-size-mb 100 --home-size-mb 100 echo | livecd-iso-to-disk --unencrypted-home --livedir $BASE-i686 $ISO32 $LOOPDEV mkdir $MNT mount $LOOPDEV $MNT CFG="`cat $MNT/syslinux/syslinux.cfg | sed 's/\( root=live:UUID=\)....-.... /\1'"$UUID /"`" mv $MNT/syslinux/initrd0.img $MNT/syslinux/initrd1.img mv $MNT/syslinux/vmlinuz0 $MNT/syslinux/vmlinuz1 umount $MNT livecd-iso-to-disk --unencrypted-home --livedir $BASE-x86_64 $ISO64 $LOOPDEV mount $LOOPDEV $MNT cp -p /usr/share/syslinux/ifcpu64.c32 $MNT/syslinux/ ( echo "$CFG" | sed -n '1,/^menu hiddenrow/p' cat <$MNT/syslinux/syslinux.cfg cp -p $SELF $MNT/ if [ -e "$KS" ];then cp -p $KS $MNT/ fi umount $MNT mkdir $MNT/{a,b,c} mount $LOOPDEV $MNT/a mount -r -o loop $MNT/a/$BASE-x86_64/squashfs.img $MNT/b mount -r -o loop $MNT/b/LiveOS/ext3fs.img $MNT/c rpm -r $MNT/c -qa|sort >$MNT/a/$BASE-x86_64/rpm-qa umount $MNT/{c,b} mount -r -o loop $MNT/a/$BASE-i686/squashfs.img $MNT/b mount -r -o loop $MNT/b/LiveOS/ext3fs.img $MNT/c rpm -r $MNT/c -qa|sort >$MNT/a/$BASE-i686/rpm-qa diff -u <(sed 's/\.x86_64$//' <$MNT/a/$BASE-x86_64/rpm-qa) <(sed 's/\.i.86$//' <$MNT/a/$BASE-i686/rpm-qa) || : BIN= echo OK