--- trunk/mlivecdbuild/mlivecdbuild2.sh 2023/09/19 09:33:42 3228 +++ trunk/mlivecdbuild/mlivecdbuild2.sh 2023/09/19 09:37:59 3229 @@ -111,9 +111,14 @@ { local var="$1" + if [[ -z ${ADD_INITRC_CHROOT} ]] + then + ADD_INITRC_CHROOT="${CDCHROOTDIR}" + fi + # sanity checks - [[ -z ${CDCHROOTDIR} ]] && die "\$CDCHROOTDIR not given." - echo "${var}" >> ${CDCHROOTDIR}/.installrc || die "add_initrc() adding \$var" + [[ -z ${ADD_INITRC_CHROOT} ]] && die "\$ADD_INITRC_CHROOT not given." + echo "${var}" >> ${ADD_INITRC_CHROOT}/.installrc || die "add_initrc() adding \$var" } custom_packages() @@ -121,11 +126,19 @@ local cmd="$1" local packages="$2" + if [[ -z ${CUSTOM_PACKAGES_CHROOT} ]] + then + CUSTOM_PACKAGES_CHROOT="${CDCHROOTDIR}" + ADD_INITRC_CHROOT="${CDCHROOTDIR}" + else + ADD_INITRC_CHROOT="${CUSTOM_PACKAGES_CHROOT}" + fi + case ${cmd} in install|uninstall) if [[ -n ${packages} ]] then - :> ${CDCHROOTDIR}/.installrc + :> ${CUSTOM_PACKAGES_CHROOT}/.installrc # respect proxies [[ -n ${http_proxy} ]] && add_initrc "export http_proxy=${http_proxy}" @@ -144,14 +157,14 @@ add_initrc "mage clean" # now run the .installrc script - mount -t proc proc ${CDCHROOTDIR}/proc || die "mount proc" - mount -t sysfs sysfs ${CDCHROOTDIR}/sys || die "mount sys" - mount -o bind /dev ${CDCHROOTDIR}/dev || die "mount dev" - chroot ${CDCHROOTDIR} /bin/bash -i /.installrc || die "chr00ting" - umount ${CDCHROOTDIR}/dev || die "umount dev" - umount ${CDCHROOTDIR}/proc || die "umount proc" - umount ${CDCHROOTDIR}/sys || die "umount sys" - [ -f ${CDCHROOTDIR}/.installrc ] && rm ${CDCHROOTDIR}/.installrc + mount -t proc proc ${CUSTOM_PACKAGES_CHROOT}/proc || die "mount proc" + mount -t sysfs sysfs ${CUSTOM_PACKAGES_CHROOT}/sys || die "mount sys" + mount -o bind /dev ${CUSTOM_PACKAGES_CHROOT}/dev || die "mount dev" + chroot ${CUSTOM_PACKAGES_CHROOT} /bin/bash -i /.installrc || die "chr00ting" + umount ${CUSTOM_PACKAGES_CHROOT}/dev || die "umount dev" + umount ${CUSTOM_PACKAGES_CHROOT}/proc || die "umount proc" + umount ${CUSTOM_PACKAGES_CHROOT}/sys || die "umount sys" + [ -f ${CUSTOM_PACKAGES_CHROOT}/.installrc ] && rm ${CUSTOM_PACKAGES_CHROOT}/.installrc fi ;; *) die "custom_packages: unkown command ${cmd}";; @@ -436,41 +449,47 @@ generate_initrd() { - local CHROOTSH="$(mktemp -p ${CDCHROOTDIR})" + if [[ -z ${INITRD_CHROOT} ]] + then + INITRD_CHROOT="${CDCHROOTDIR}" + fi - is_loc_mounted "${CDCHROOTDIR}/sys" || mount -t sysfs sysfs ${CDCHROOTDIR}/sys - is_loc_mounted "${CDCHROOTDIR}/proc" || mount -t proc proc ${CDCHROOTDIR}/proc - is_loc_mounted "${CDCHROOTDIR}/dev" || mount -o bind /dev ${CDCHROOTDIR}/dev + local INITRD_CHROOTSH="$(mktemp -p ${INITRD_CHROOT})" + + is_loc_mounted "${INITRD_CHROOT}/sys" || mount -t sysfs sysfs ${INITRD_CHROOT}/sys + is_loc_mounted "${INITRD_CHROOT}/proc" || mount -t proc proc ${INITRD_CHROOT}/proc + is_loc_mounted "${INITRD_CHROOT}/dev" || mount -o bind /dev ${INITRD_CHROOT}/dev echo Generating initrd image ... - echo '#!/bin/bash' > ${CHROOTSH} || die - echo 'export LC_ALL=C' >> ${CHROOTSH} || die + echo '#!/bin/bash' > ${INITRD_CHROOTSH} || die + echo 'export LC_ALL=C' >> ${INITRD_CHROOTSH} || die # support kernel installations without symlinks - if [ -L ${CDCHROOTDIR}/boot/vmlinuz ] + if [ -L ${INITRD_CHROOT}/boot/vmlinuz ] then - echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die + echo 'kv="$(readlink /boot/vmlinuz)"' >> ${INITRD_CHROOTSH} || die else - echo "kv=\$(find /boot -name kernel-\* -printf '%f\n')" >> ${CHROOTSH} || die + echo "kv=\$(find /boot -name kernel-\* -printf '%f\n')" >> ${INITRD_CHROOTSH} || die fi - echo 'kv="${kv/kernel-/}"' >> ${CHROOTSH} || die + echo 'kv="${kv/kernel-/}"' >> ${INITRD_CHROOTSH} || die # prefer dracut - echo 'if [[ -x /sbin/dracut ]] || [[ -x /usr/sbin/dracut ]] || [[ -x /usr/bin/dracut ]]' >> ${CHROOTSH} || die - echo 'then' >> ${CHROOTSH} || die - echo ' dracut -v -f /initrd.gz ${kv}' >> ${CHROOTSH} || die - echo 'else' >> ${CHROOTSH} || die - echo ' mkinitrd-livecd -f --initramfs /initrd.gz ${kv}' >> ${CHROOTSH} || die - echo 'fi' >> ${CHROOTSH} || die - chmod +x ${CHROOTSH} || die - chroot ${CDCHROOTDIR} /$(basename ${CHROOTSH}) || die - [[ -f ${CHROOTSH} ]] && rm ${CHROOTSH} || die - - is_loc_mounted "${CDCHROOTDIR}/dev" && umount ${CDCHROOTDIR}/dev - is_loc_mounted "${CDCHROOTDIR}/proc" && umount ${CDCHROOTDIR}/proc - is_loc_mounted "${CDCHROOTDIR}/sys" && umount ${CDCHROOTDIR}/sys + echo 'if [[ -x /sbin/dracut ]] || [[ -x /usr/sbin/dracut ]] || [[ -x /usr/bin/dracut ]]' >> ${INITRD_CHROOTSH} || die + echo 'then' >> ${INITRD_CHROOTSH} || die + echo ' dracut -N -v -f /initrd.gz ${kv}' >> ${INITRD_CHROOTSH} || die + echo 'else' >> ${INITRD_CHROOTSH} || die + echo ' mkinitrd-livecd -f --initramfs /initrd.gz ${kv}' >> ${INITRD_CHROOTSH} || die + echo 'fi' >> ${INITRD_CHROOTSH} || die + chmod +x ${INITRD_CHROOTSH} || die + chroot ${INITRD_CHROOT} /$(basename ${INITRD_CHROOTSH}) || die + [[ -f ${INITRD_CHROOTSH} ]] && rm ${INITRD_CHROOTSH} || die + + is_loc_mounted "${INITRD_CHROOT}/dev" && umount ${INITRD_CHROOT}/dev + is_loc_mounted "${INITRD_CHROOT}/proc" && umount ${INITRD_CHROOT}/proc + is_loc_mounted "${INITRD_CHROOT}/sys" && umount ${INITRD_CHROOT}/sys # move initrd to isoroot install -d ${CDISOROOT}/isolinux || die - mv ${CDCHROOTDIR}/initrd.gz ${CDISOROOT}/isolinux || die + mv ${INITRD_CHROOT}/initrd.gz ${CDISOROOT}/isolinux || die + chmod 0644 ${CDISOROOT}/isolinux/initrd.gz || die } generate_iso()