summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addon_config17
-rw-r--r--hooks/archiso6
-rwxr-xr-xmkarchiso11
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
diff --git a/mkarchiso b/mkarchiso
index c158ef9..3703b0b 100755
--- a/mkarchiso
+++ b/mkarchiso
@@ -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.