makedist-openmamba/platforms/livedvd/post.inc.sh

228 lines
8.6 KiB
Bash
Raw Normal View History

2011-05-19 16:02:37 +02:00
# livecd post script
#
# creates a fake installation aimed at producing a kernel image and initrd
# for livecd boot
# make initramfs
[ -e $MOUNTDIR2/boot/isolinux ] || mkdir -p $MOUNTDIR2/boot/isolinux
2011-10-19 13:03:40 +02:00
ISOID=
for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do
chroot $MOUNTDIR depmod -a ${KERNEL_MAJVER}${K}
LANG=${LANGUAGE}_${COUNTRY} chroot $MOUNTDIR dracut \
-a dmsquash-live -o squash-live \
--filesystems "autofs4 ext3 ext4 overlay squashfs isofs reiserfs" \
2011-10-19 13:03:40 +02:00
--nomdadmconf --nolvmconf \
/boot/initramfs-${KERNEL_MAJVER}${K}.img.gz \
${KERNEL_MAJVER}${K}
2011-05-19 16:02:37 +02:00
2011-10-19 13:03:40 +02:00
# Note: isolinux requires 8.3 filenames
cp $MOUNTDIR/boot/initramfs-${KERNEL_MAJVER}${K}.img.gz \
$MOUNTDIR2/boot/initrd${ISOID}.gz || {
echo "Error: cannot copy file $MOUNTDIR/boot/initramfs-${KERNEL_MAJVER}${K}.img.gz to $MOUNTDIR2/boot/initrd${ISOID}.gz.";
exit 1; }
2011-10-19 13:03:40 +02:00
cp $MOUNTDIR/boot/vmlinuz-${KERNEL_MAJVER}${K} \
$MOUNTDIR2/boot/vmlinuz${ISOID} || {
echo "Error: cannot copy file $MOUNTDIR/boot/vmlinuz-${KERNEL_MAJVER}${K}.img.gz to $MOUNTDIR2/boot/vmlinuz${ISOID}.gz.";
exit 1; }
2011-05-19 16:02:37 +02:00
2011-10-19 13:03:40 +02:00
ISOID=$(($ISOID + 1))
done
2011-05-19 16:02:37 +02:00
# add buildinfo
buildinfo="`cat $MOUNTDIR/etc/openmamba-release` ${PLATFORM}"
# configure isolinux boot loader
cat > $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF
2011-05-19 16:02:37 +02:00
PROMPT 0
TIMEOUT 20
DEFAULT vesamenu.c32
2011-10-19 13:03:40 +02:00
MENU TITLE ${buildinfo} (${KERNEL_MAJVER} kernel)
2011-05-19 16:02:37 +02:00
MENU BACKGROUND openmamba.png
MENU COLOR TITLE 1;32;49 #ff00993d #00000000 std
2011-10-19 13:03:40 +02:00
LABEL -
MENU LABEL Please select system startup language:
MENU DISABLE
2011-10-19 13:03:40 +02:00
_EOF
ISOID=
for l in $MULTILANGUAGE; do
case $l in
"en") LABEL="English"; LOCALELANG="en_US.UTF-8"; VCONSOLEKEYMAP="us" ;;
"it") LABEL="Italiano"; LOCALELANG="it_IT.UTF-8"; VCONSOLEKEYMAP="it" ;;
"fr") LABEL="Français"; LOCALELANG="fr_FR.UTF-8"; VCONSOLEKEYMAP="fr" ;;
"es") LABEL="Español"; LOCALELANG="es_ES.UTF-8"; VCONSOLEKEYMAP="es" ;;
2014-07-02 12:54:47 +02:00
"de") LABEL="Deutsch"; LOCALELANG="de_DE.UTF-8"; VCONSOLEKEYMAP="de" ;;
*) LABEL="$l"
esac
cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF
MENU BEGIN $l
MENU LABEL $LABEL
MENU TITLE ${buildinfo} (${KERNEL_MAJVER} kernel)
2011-10-19 13:03:40 +02:00
_EOF
ISOID=
for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do
cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF
LABEL default-${KERNEL_MAJVER}${K}
MENU LABEL default (${KERNEL_MAJVER}${K} $l)
kernel /boot/vmlinuz${ISOID}
append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 quiet splash vga=792 locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP
2011-10-19 13:03:40 +02:00
_EOF
ISOID=$(($ISOID + 1))
done
echo "MENU SEPARATOR" >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8
ISOID=
for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do
cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF
LABEL vga800-${KERNEL_MAJVER}${K}
MENU LABEL VGA 800x600 no modeset (${KERNEL_MAJVER}${K} $l)
kernel /boot/vmlinuz${ISOID}
append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 quiet splash vga=789 locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP nomodeset
_EOF
ISOID=$(($ISOID + 1))
done
ISOID=
for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do
cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF
LABEL vga1024-${KERNEL_MAJVER}${K}
MENU LABEL VGA 1024x768 no modeset (${KERNEL_MAJVER}${K} $l)
kernel /boot/vmlinuz${ISOID}
append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 quiet splash vga=792 locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP nomodeset
_EOF
ISOID=$(($ISOID + 1))
done
echo "MENU SEPARATOR" >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8
ISOID=
for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do
cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF
LABEL debug-${KERNEL_MAJVER}${K}
MENU LABEL Debug mode (${KERNEL_MAJVER}${K} $l)
kernel /boot/vmlinuz${ISOID}
append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP rddebug nomodeset
_EOF
ISOID=$(($ISOID + 1))
done
cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF
MENU END
2011-10-19 13:03:40 +02:00
_EOF
done
2011-05-19 16:02:37 +02:00
cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF
2011-05-19 16:02:37 +02:00
MENU SEPARATOR
LABEL memtest
MENU LABEL Memory test
kernel memtest
MENU SEPARATOR
MENU SEPARATOR
LABEL -
MENU LABEL $PRODUCT_NAME build:`date -R`
MENU DISABLE
_EOF
# convert isolinux.cfg from UTF-8 to CP437
iconv -f utf-8 -t cp437 $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 > $MOUNTDIR2/boot/isolinux/isolinux.cfg
rm -f $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8
2011-05-19 16:02:37 +02:00
# install isolinux binary
[ -e $MOUNTDIR/usr/share/syslinux/isolinux.bin ] && cp $MOUNTDIR/usr/share/syslinux/isolinux.bin $MOUNTDIR2/boot/isolinux/isolinux.bin ||
{ echo "Error: /usr/share/syslinux/isolinux.bin not found. Please install the syslinux package.";
exit 1; }
# copy syslinux addons to final root /boot dir
for f in ldlinux.c32 libcom32.c32 libutil.c32 libmenu.c32 menu.c32 vesamenu.c32; do
[ -e $MOUNTDIR/usr/share/syslinux/$f ] && cp $MOUNTDIR/usr/share/syslinux/$f $MOUNTDIR2/boot/isolinux/
done
2011-05-19 16:02:37 +02:00
# install memtest
[ -e $MOUNTDIR/boot/memtest86+.bin ] && cp $MOUNTDIR/boot/memtest86+.bin $MOUNTDIR2/boot/isolinux/memtest ||
2011-05-19 16:02:37 +02:00
{ echo "Error: /boot/memtest.bin not found. Please install the memtest86 package.";
exit 1; }
# copy static files for specific platform
[ -e $TARGETDIR/platforms/$PLATFORM/root ] &&
cp -a --no-preserve=ownership $TARGETDIR/platforms/$PLATFORM/root/* $MOUNTDIR2/
2011-05-19 16:02:37 +02:00
# copy localized static files for specific platform
[ "$LANGUAGE" -a -e $TARGETDIR/platforms/$PLATFORM/root-$LANGUAGE ] &&
cp -a --no-preserve=ownership $TARGETDIR/platforms/$PLATFORM/root-$LANGUAGE/* $MOUNTDIR2/
2011-05-19 16:02:37 +02:00
# add buildinfo
buildinfo="`cat $MOUNTDIR/etc/openmamba-release` [$PRODUCT_NAME build:`date +%c`]"
sed -i "s|%buildinfo%|$buildinfo|" $MOUNTDIR2/boot/isolinux/menu.txt
#
# EFI support section BEGIN
#
# create EFI grub 32 and 64 bit images
mkdir -p $MOUNTDIR2/EFI/BOOT/
grub-mkimage -o $MOUNTDIR2/EFI/BOOT/bootx64.efi -O x86_64-efi -p /EFI/BOOT \
part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot linux echo \
help gfxterm gettext png efi_gop efi_uga search search_label search_fs_uuid \
iso9660 configfile || {
errorAndExit $"Error: unable to create GRUB x86_64-efi image"
}
# basic extlinux.conf -> grub.cfg conversion
echo "search --no-floppy --label --set=root openmamba_live" > $MOUNTDIR2/EFI/BOOT/grub.cfg
while read line; do
case $line in
"MENU LABEL "*) [ "$CURR_BRACKET_OPEN" = "1" ] && echo "}" >> $MOUNTDIR2/EFI/BOOT/grub.cfg
echo "menuentry \"${line/MENU LABEL }\" {" >> $MOUNTDIR2/EFI/BOOT/grub.cfg
CURR_BRACKET_OPEN=1
;;
"kernel "*) CURR_KERNEL="${line/kernel }"
echo "echo \"Loading ${CURR_KERNEL}\"" >> $MOUNTDIR2/EFI/BOOT/grub.cfg
;;
"append "*) set -- ${line/append initrd=}
CURR_INITRD="$1"
CURR_CMDLINE="${line/append initrd=$CURR_INITRD}"
echo "linux ${CURR_KERNEL} ${CURR_CMDLINE}" >> $MOUNTDIR2/EFI/BOOT/grub.cfg
echo "echo \"Loading ${CURR_INITRD}\"" >> $MOUNTDIR2/EFI/BOOT/grub.cfg
echo "initrd ${CURR_INITRD}" >> $MOUNTDIR2/EFI/BOOT/grub.cfg
echo "}" >> $MOUNTDIR2/EFI/BOOT/grub.cfg
CURR_BRACKET_OPEN=0
;;
esac
done < $MOUNTDIR2/boot/isolinux/isolinux.cfg
[ "$CURR_BRACKET_OPEN" = "1" ] && echo "}" >> $MOUNTDIR2/EFI/BOOT/grub.cfg
#
# EFI support section END
#
2011-05-19 16:02:37 +02:00
#echo "Adding binary packages from pkggroups.db..."
#. $LOCALSTATEDIR/.${MEDIA_NAMES[0]}.distinfo
#LANG=${LANGUAGE:0:2} . $MOUNTDIR/usr/share/openmamba/pkggroups.db
#
#add_binary_packages_to_repository $MOUNTDIR2/openmamba "$ALL_PKGS $EXTRA_PKGS" "$INSTALLED"
#echo "Generating APT database..."
#ln -s RPMS/$arch $MOUNTDIR2/openmamba/RPMS.$arch
#genbasedir $MOUNTDIR2/openmamba
#mkdir $MOUNTDIR2/.disk
#cat $MOUNTDIR/etc/openmamba-release > $MOUNTDIR2/.disk/info
# Finally produce the media
MOUNTDIR=$MOUNTDIR2 produce_media $MEDIA_NAME
for i in $SUBPLATFORM; do
. $TARGETDIR/platforms/$i/settings.inc
CURR_MEDIA_NAME=`PLATFORM=$i media_name`
cat >> $LOCALSTATEDIR/.$MEDIA_NAME.inc.html << _EOF
<br><p><b>Root target(s):</b>
<div><table width="90%"><tr><td>
_EOF
cat $LOCALSTATEDIR/.$CURR_MEDIA_NAME.inc.html >> \
$LOCALSTATEDIR/.$MEDIA_NAME.inc.html
echo "</td></tr></table></div>" >> $LOCALSTATEDIR/.$MEDIA_NAME.inc.html
done
exit 0