--- trunk/mlivecdbuild/mlivecdbuild2.sh 2006/03/27 21:23:02 360 +++ trunk/mlivecdbuild/mlivecdbuild2.sh 2007/11/11 11:41:57 609 @@ -52,19 +52,19 @@ local services="$2" case ${cmd} in - add|del|default) continue;; + add|del|default) + # add given services from profile + if [[ -n ${services} ]] + then + local i + for i in ${services} + do + MROOT="${CDCHROOTDIR}" rc-config ${cmd} ${i} || die "rc ${cmd} ${i}" + done + fi + ;; *) die "custom_services: unkown command ${cmd}";; esac - - # add given services from profile - if [[ -n ${services} ]] - then - local i - for i in ${services} - do - MROOT="${CDCHROOTDIR}" rc-config ${cmd} ${i} || die "rc ${cmd} ${i}" - done - fi } add_initrc() @@ -72,7 +72,7 @@ local var="$1" # sanity checks - [ -z "${CDCHROOTDIR}" ] && die "\$CDCHROOTDIR not given." + [[ -z ${CDCHROOTDIR} ]] && die "\$CDCHROOTDIR not given." echo "${var}" >> ${CDCHROOTDIR}/.installrc || die "add_initrc() adding \$var" } @@ -82,31 +82,39 @@ local packages="$2" case ${cmd} in - install|uninstall) continue;; + install|uninstall) + if [[ -n ${packages} ]] + then + :> ${CDCHROOTDIR}/.installrc + + # respect proxies + [[ -n ${http_proxy} ]] && add_initrc "export http_proxy=${http_proxy}" + [[ -n ${ftp_proxy} ]] && add_initrc "export ftp_proxy=${ftp_proxy}" + [[ -n ${no_proxy} ]] && add_initrc "export no_proxy=${no_proxy}" + + # do not auto-start any services! + add_initrc "export MAGE_BOOTSTRAP=true" + + local i + for i in ${packages} + do + add_initrc "mage ${cmd} ${i}" + done + 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 + fi + ;; *) die "custom_packages: unkown command ${cmd}";; esac - - if [[ -n ${packages} ]] - then - - :> ${CDCHROOTDIR}/.installrc - local i - for i in ${packages} - do - add_initrc "mage install ${i}" - done - 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 - fi } read_config() @@ -128,7 +136,7 @@ echo Preparing LiveCD ISO Image ... # fixes some issues with xfree/xorg xkb - if [ -L "${CDCHROOTDIR}/etc/X11/xkb" -a -d "/usr/X11R6/lib/X11/xkb" ] + if [[ -L ${CDCHROOTDIR}/etc/X11/xkb ]] && [[ -d /usr/X11R6/lib/X11/xkb ]] then rm ${CDCHROOTDIR}/etc/X11/xkb || die mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 || die @@ -143,11 +151,6 @@ echo Setting up services ... -# not needed with initscripts 0.3.6-r2 -# # change mountfs with mountfslivecd -# MROOT="${CDCHROOTDIR}" rc-config del mountfs || die "rc del mountfs" -# MROOT="${CDCHROOTDIR}" rc-config add mountfslivecd || die "rc add mountfslivecd" - # add hardware detection MROOT="${CDCHROOTDIR}" rc-config add hwdetect || die "rc add hwdetect" @@ -252,9 +255,30 @@ popd } +generate_dvd() +{ + echo Generating DVD Image ... + install -d ${CDISOROOT} + pushd ${CDISOROOT} && + growisofs -dvd-compat \ + -rock \ + -full-iso9660-filenames \ + -allow-leading-dots \ + -disable-deep-relocation \ + -output ${LIVECDROOT}/${CDISONAME} \ + -eltorito-boot isolinux/isolinux.bin \ + -eltorito-catalog isolinux/boot.cat \ + -no-emul-boot \ + -boot-load-size 4 \ + -boot-info-table \ + -volid "${CDID}" \ + ${CDISOROOT} #&> /dev/null + popd +} + enter_livecd() { - mount -t sysfs sysfs ${CDCHROOTDIR}/proc + mount -t sysfs sysfs ${CDCHROOTDIR}/sys mount -t proc proc ${CDCHROOTDIR}/proc mount -o bind /dev ${CDCHROOTDIR}/dev @@ -263,7 +287,14 @@ HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ + http_proxy=${http_proxy} \ + ftp_proxy=${ftp_proxy} \ + no_proxy=${no_proxy} \ /bin/bash -i + + umount ${CDCHROOTDIR}/dev + umount ${CDCHROOTDIR}/proc + umount ${CDCHROOTDIR}/sys } usage() @@ -277,7 +308,9 @@ echo " initrd - generates a livecd suitable initrd" echo " bootloader - installs the bootloader" echo " isogen - generate the final livecd iso image" + echo " dvdgen - same as isogen but creates a dvd-image" echo " all - runs all tasks to get a livecd from zero" + echo " enter - enters the rootfs of a livecd" echo echo " for example '$(basename $0) all default'" echo " creates a livecd using the default profile." @@ -287,13 +320,6 @@ # source profile config - overrides all other vars [ -f ${PROFILES_DIR}/${CDPROFILE}/config ] && . ${PROFILES_DIR}/${CDPROFILE}/config -#bootstrap_system -#prepare_iso -#generate_rootfs -#generate_initrd -#install_bootloader -#generate_iso - case $1 in bootstrap) bootstrap_system;; prepare) prepare_iso;; @@ -301,13 +327,20 @@ initrd) generate_initrd;; bootloader) install_bootloader;; isogen) generate_iso;; + dvdgen) generate_dvd;; all) bootstrap_system prepare_iso generate_rootfs generate_initrd install_bootloader - generate_iso + if [[ ${DEFINE_DVD} = 1 ]] + then + generate_dvd + else + generate_iso + fi ;; + enter) enter_livecd ;; *|'') usage;; esac