# livedvd post script # # creates a fake installation aimed at producing a kernel image and initrd # for livecd boot # make initramfs [ -e $MOUNTDIR2/boot/grub ] || mkdir -p $MOUNTDIR2/boot/grub 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 ext4 overlay squashfs isofs hfsplus nls_utf8" \ --nomdadmconf --nolvmconf \ /boot/initramfs-${KERNEL_MAJVER}${K}.img.gz \ ${KERNEL_MAJVER}${K} # 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; } 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; } ISOID=$(($ISOID + 1)) done # copy grub theme mkdir -p $MOUNTDIR2/boot/grub/themes cp -a $MOUNTDIR/usr/share/grub/themes/breeze $MOUNTDIR2/boot/grub/themes/ # add buildinfo buildinfo="`cat $MOUNTDIR/etc/openmamba-release` ${PLATFORM}" # configure grub boot loader cat > $MOUNTDIR2/boot/grub/grub.cfg << _EOF # # GRUB configuration generated by openmamba makedist # font=unicode set gfxmode=auto insmod all_video insmod gfxterm insmod gettext insmod iso9660 insmod biosdisk terminal_output gfxterm set timeout=10 # theme loadfont /boot/grub/themes/breeze/unifont-bold-16.pf2 loadfont /boot/grub/themes/breeze/unifont-regular-14.pf2 loadfont /boot/grub/themes/breeze/unifont-regular-16.pf2 loadfont /boot/grub/themes/breeze/unifont-regular-32.pf2 loadfont /boot/grub/fonts/unicode.pf2 insmod png set theme=/boot/grub/themes/breeze/theme.txt export theme _EOF # # Boot entries # ROOT_ARGS="root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} rd.live.overlay.overlayfs" 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" ;; "de") LABEL="Deutsch"; LOCALELANG="de_DE.UTF-8"; VCONSOLEKEYMAP="de" ;; *) LABEL="$l" esac # Enable glibc locale sed -i "s|#${LOCALELANG}|${LOCALELANG}|" ${MOUNTDIR}/etc/locale.gen cat >> $MOUNTDIR2/boot/grub/grub.cfg << _EOF submenu "${LABEL}" { _EOF ISOID= for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do cat >> $MOUNTDIR2/boot/grub/grub.cfg << _EOF menuentry "openmamba GNU/Linux (${KERNEL_MAJVER}${K} - ${l})" { echo "Loading /boot/vmlinuz${ISOID}" linux /boot/vmlinuz${ISOID} ${ROOT_ARGS} selinux=0 quiet splash ro locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP echo "Loading /boot/initrd${ISOID}.gz" initrd /boot/initrd${ISOID}.gz } _EOF ISOID=$(($ISOID + 1)) done cat >> $MOUNTDIR2/boot/grub/grub.cfg << _EOF submenu "Advanced options for openmamba GNU/Linux" { _EOF #ISOID= #for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do # cat >> $MOUNTDIR2/boot/grub/grub.cfg << _EOF # menuentry "No modeset (${KERNEL_MAJVER}${K})" { # echo "Loading /boot/vmlinuz${ISOID}" # linux /boot/vmlinuz${ISOID} ${ROOT_ARGS} selinux=0 quiet splash ro nomodeset # echo "Loading /boot/initrd${ISOID}.gz" # initrd /boot/initrd${ISOID}.gz # } #_EOF # ISOID=$(($ISOID + 1)) #done ISOID= for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do cat >> $MOUNTDIR2/boot/grub/grub.cfg << _EOF menuentry "Debug mode (${KERNEL_MAJVER}${K} - ${l})" { echo "Loading /boot/vmlinuz${ISOID}" linux /boot/vmlinuz${ISOID} ${ROOT_ARGS} ro selinux=0 rddebug locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP echo "Loading /boot/initrd${ISOID}.gz" initrd /boot/initrd${ISOID}.gz } _EOF ISOID=$(($ISOID + 1)) done ISOID= for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do cat >> $MOUNTDIR2/boot/grub/grub.cfg << _EOF menuentry "Debug mode with nomodeset (${KERNEL_MAJVER}${K} - ${l})" { echo "Loading /boot/vmlinuz${ISOID}" linux /boot/vmlinuz${ISOID} ${ROOT_ARGS} ro selinux=0 rddebug nomodeset locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP echo "Loading /boot/initrd${ISOID}.gz" initrd /boot/initrd${ISOID}.gz } _EOF ISOID=$(($ISOID + 1)) done cat >> $MOUNTDIR2/boot/grub/grub.cfg << _EOF } } _EOF done chroot $MOUNTDIR locale-gen # install memtest if [ -e $MOUNTDIR/boot/memtest86+.bin ]; then cp $MOUNTDIR/boot/memtest86+.bin $MOUNTDIR2/boot/memtest cat >> $MOUNTDIR2/boot/grub/grub.cfg << _EOF menuentry 'Memory test' { insmod part_gpt insmod fat linux16 /boot/memtest } _EOF else echo "Error: /boot/memtest86+.bin not found. Please install the memtest86 package." exit 1 fi # copy static files for specific platform [ -e $TARGETDIR/platforms/$PLATFORM/root ] && cp -a --no-preserve=ownership $TARGETDIR/platforms/$PLATFORM/root/* $MOUNTDIR2/ # 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/ # # EFI support section BEGIN # # create EFI grub 32 and 64 bit images mkdir -p $MOUNTDIR/boot/efi/EFI/openmamba/ if [ "${ARCH}" == "x86_64" ]; then GRUB_ADD="--sbat /usr/share/grub/sbat.csv \ all_video bli boot chain configfile cpuid echo efifwsetup efi_gop efi_uga efinet ext2 \ fat font gettext gfxmenu gfxterm gfxterm gfxterm_background gzio halt help hfsplus \ iso9660 jpeg keystatus linux loadenv loopback ls lsefi lsefimmap lsefisystab lssal \ memdisk minicmd normal ntfs ntfscomp part_apple part_gpt part_msdos password_pbkdf2 \ play png probe reboot regexp search search_fs_file search_fs_uuid search_label sleep \ smbios squash4 test tpm true video video_bochs video_cirrus xfs zfs zfscrypt zfsinfo" else # FIXME: i586 provides grub 204 which does not support --sbat and other modules for SB GRUB_ADD="\ 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" fi chroot $MOUNTDIR grub-mkimage -o /boot/efi/EFI/openmamba/grubx64.efi -O x86_64-efi \ -p /boot/grub ${GRUB_ADD} || { echo $"Error: unable to create GRUB x86_64-efi image" exit 1 } # 32 bit image chroot $MOUNTDIR grub-mkimage -o /boot/efi/EFI/openmamba/grubia32.efi -O i386-efi \ -p /boot/grub ${GRUB_ADD} || { echo $"Error: unable to create GRUB i386-efi image" exit 1 } # Sign EFI image for secure boot chroot $MOUNTDIR openssl req -newkey rsa:2048 -nodes -keyout /root/MOK.key -new -x509 -sha256 -days 3650 -subj "/CN=openmamba Machine Owner Key/" -out /root/MOK.crt chroot $MOUNTDIR openssl x509 -outform DER -in /root/MOK.crt -out /root/MOK.cer chroot $MOUNTDIR sbsign --key /root/MOK.key --cert /root/MOK.crt --output /boot/efi/EFI/openmamba/grubx64.efi /boot/efi/EFI/openmamba/grubx64.efi chroot $MOUNTDIR sbsign --key /root/MOK.key --cert /root/MOK.crt --output /boot/efi/EFI/openmamba/grubia32.efi /boot/efi/EFI/openmamba/grubia32.efi ISOID= for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do chroot $MOUNTDIR sbsign --key /root/MOK.key --cert /root/MOK.crt --output /boot/vmlinuz-${KERNEL_MAJVER}${K} /boot/vmlinuz-${KERNEL_MAJVER}${K} cp $MOUNTDIR/boot/vmlinuz-${KERNEL_MAJVER}${K} \ $MOUNTDIR2/boot/vmlinuz${ISOID} ISOID=$(($ISOID + 1)) done mkdir -p $MOUNTDIR2/EFI/BOOT/ cp $MOUNTDIR/root/MOK.cer $MOUNTDIR2/ENROLLME.cer cp $MOUNTDIR/boot/efi/EFI/openmamba/grubx64.efi $MOUNTDIR2/EFI/BOOT/grubx64.efi cp $MOUNTDIR/boot/efi/EFI/openmamba/grubia32.efi $MOUNTDIR2/EFI/BOOT/bootia32.efi # Install shim-signed cp $MOUNTDIR/usr/share/shim-signed/shimx64.efi $MOUNTDIR2/EFI/BOOT/bootx64.efi cp $MOUNTDIR/usr/share/shim-signed/mmx64.efi $MOUNTDIR2/EFI/BOOT/ # # EFI support section END # # Finally produce the medium 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

Root target(s):

_EOF cat $LOCALSTATEDIR/.$CURR_MEDIA_NAME.inc.html >> \ $LOCALSTATEDIR/.$MEDIA_NAME.inc.html echo "
" >> $LOCALSTATEDIR/.$MEDIA_NAME.inc.html done exit 0