diff options
-rw-r--r-- | addon_config | 17 | ||||
-rw-r--r-- | hooks/archiso | 6 | ||||
-rwxr-xr-x | mkarchiso | 11 |
3 files changed, 33 insertions, 1 deletions
diff --git a/addon_config b/addon_config new file mode 100644 index 0000000..e8bbdea --- /dev/null +++ b/addon_config @@ -0,0 +1,17 @@ +# This script gets run around the end of the archiso hook +# These are some typical examples of what addons may need + +# installer package payload in a plain directory +mkdir -p /real_root/packages +mount -o bind $BOOT_MOUNT/addons/core /real_root/packages + +# a squashed livecd-specific overlay for a pristine system +#TODO: we should keep track of used loop devices in case of multiple images +mkdir -p /tmpfs/mnt/live_overlay +if ! /bin/losetup /dev/loop1 "${BOOT_MOUNT}/addons/live_overlay.sqfs" >/dev/null 2>&1; then + echo "ERROR: Cannot mount loop device /dev/loop1...aborting" +fi +/bin/mount -r -t squashfs /dev/loop1 /tmpfs/mnt/live_overlay +mount -t unionfs -o remount,add=/tmpfs/squashfs_root:/tmpfs/mnt/live_overlay=ro none /real_root + +# vim:ft=sh:ts=4:sw=4:et: diff --git a/hooks/archiso b/hooks/archiso index f06e56b..e345382 100644 --- a/hooks/archiso +++ b/hooks/archiso @@ -33,6 +33,12 @@ run_hook () /bin/modprobe -q unionfs >/dev/null 2>&1 /bin/mount -t unionfs -o dirs=/tmpfs=rw:/tmpfs/squashfs_root=ro none /real_root + addon_conf="${BOOT_MOUNT}/addons/config" + if [ -e "${addon_conf}" ]; then + msg ":: Mounting addons" + . $addon_conf + fi + if [ -d /proc/sys/dev/cdrom ]; then echo 0 > /proc/sys/dev/cdrom/lock echo 1 > /proc/sys/dev/cdrom/autoeject @@ -6,6 +6,7 @@ PKGFILE="$(pwd)/packages.list" PKGLIST="" QUIET="y" FORCE="n" +ADDON_DIR="" command_name="" work_dir="" @@ -22,6 +23,7 @@ usage () echo " -i CPIO_CONFIG Use CONFIG file for mkinitcpio. default: ${CPIOCONFIG}" echo " -P PKGFILE File with list of packages to install. default: ${PKGFILE}" echo " -p PACKAGE Additional package to install, can be used multiple times" + echo " -a ADDON_DIR Use addons from DIR. default: none" echo " -v Enable verbose output." echo " -h This message." echo " commands:" @@ -32,11 +34,12 @@ usage () exit $1 } -while getopts 'i:P:p:fvh' arg; do +while getopts 'i:P:p:a:fvh' arg; do case "${arg}" in i) CPIOCONFIG="${OPTARG}" ;; P) PKGFILE="${OPTARG}" ;; p) PKGLIST="${PKGLIST} ${OPTARG}" ;; + a) ADDON_DIR="${OPTARG}" ;; f) FORCE="y" ;; v) QUIET="n" ;; h|?) usage 0 ;; @@ -172,6 +175,12 @@ if [ "${command_name}" = "install" -o "${command_name}" = "all" ]; then rm -rf "${isoroot}/boot" mv "${instroot}/boot" "${isoroot}" fi + + # TODO: this might belong somewhere else + if [ -d "${ADDON_DIR}" ]; then + echo "Copying addons from ${ADDON_DIR}..." + cp -r ${ADDON_DIR} ${isoroot}/addons + fi fi # Squash is the next step. |