[Fedora-livecd-list] auto-biarch update for F14 [fix]

Jan Kratochvil jan.kratochvil at redhat.com
Thu Dec 30 23:44:26 UTC 2010


[ Sorry, one fatality fix.  ]
-------------- next part --------------
#! /bin/bash
# $Id: OOo-LiveCD.sh,v 1.5 2010/12/30 23:34:08 jkratoch Exp $

set -ex
SIZE=2021654528
BASE=f14-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; (losetup -d $LOOPDEV; umount $MNT/{c,b,a,}; rmdir $MNT/{c,b,a,}) 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
# 17408=34*512
/sbin/parted --script $BIN unit b mkpart primary fat32 17408 $[$(find $BIN -printf %s)-17408] set 1 boot on
LOOPDEV=`losetup -o 17408 -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 <<EOH
label detect
  menu label Autoselect x86_64 / i686 Boot
  kernel ifcpu64.c32
  append linux0 -- linux1
  menu default
EOH
  echo "$CFG" | sed -n -e "s/$BASE-i686/$BASE-x86_64/g"                             -e 's/^  menu label .*$/& x86_64/' -e '/^label.*0$/,/^  append/p'
  echo "$CFG" | sed -n -e 's/^\(label.*\)0$/\11/' -e 's/\(vmlinuz\|initrd\)0/\11/g' -e 's/^  menu label .*$/& i686/'   -e '/^label.*1$/,/^  append/p'
  echo "$CFG" | sed -n '/^label mem/,$p'
) >$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/\.i686$//' <$MNT/a/$BASE-i686/rpm-qa) || :
BIN=
echo OK


More information about the livecd mailing list