[archiso] Add -D <install_dir> option to mkarchiso
-D <install_dir> allow to select install directory on target media defaults to "arch". There is a new %INSTALL_DIR% macro for syslinux.cfg. This is how ISO will look now: /syslinux only syslinux related files (syslinux.cfg, *.c32, etc) /arch/ isomounts + *.sqfs images /arch/boot/ Linux + initramfs + Memtest86+ + other files for early boot stage Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This commit is contained in:
parent
f13952761b
commit
c186a206a1
@ -62,6 +62,10 @@ run_hook() {
|
|||||||
copytoram_size="75%"
|
copytoram_size="75%"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "x${archisobasedir}" = "x" ]; then
|
||||||
|
archisobasedir="arch"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "x${isomounts}" != "x" ]; then
|
if [ "x${isomounts}" != "x" ]; then
|
||||||
isomounts="/bootmnt/${isomounts}"
|
isomounts="/bootmnt/${isomounts}"
|
||||||
else
|
else
|
||||||
|
@ -9,6 +9,7 @@ PUBLISHER="Arch Linux <http://www.archlinux.org>"
|
|||||||
APPLICATION="Arch Linux Live/Rescue CD"
|
APPLICATION="Arch Linux Live/Rescue CD"
|
||||||
COMPRESSION="gzip"
|
COMPRESSION="gzip"
|
||||||
CREATE_DEFAULT="n"
|
CREATE_DEFAULT="n"
|
||||||
|
INSTALL_DIR="arch"
|
||||||
|
|
||||||
APPNAME=$(basename "${0}")
|
APPNAME=$(basename "${0}")
|
||||||
|
|
||||||
@ -27,6 +28,9 @@ usage ()
|
|||||||
echo " NOTES:"
|
echo " NOTES:"
|
||||||
echo " lzma: not officially supported yet by Linux (2.6.36)"
|
echo " lzma: not officially supported yet by Linux (2.6.36)"
|
||||||
echo " lzo: needs Linux >= 2.6.36"
|
echo " lzo: needs Linux >= 2.6.36"
|
||||||
|
echo " -D <install_dir> Set an install_dir. All files will by located here on ISO (except for syslinux)"
|
||||||
|
echo " Default $INSTALL_DIR"
|
||||||
|
echo " NOTE: Max 8 characters, use only [a-z0-9]"
|
||||||
echo " -d Create default user directory /home/arch"
|
echo " -d Create default user directory /home/arch"
|
||||||
echo " -v Enable verbose output"
|
echo " -v Enable verbose output"
|
||||||
echo " -h This message"
|
echo " -h This message"
|
||||||
@ -39,7 +43,7 @@ usage ()
|
|||||||
exit $1
|
exit $1
|
||||||
}
|
}
|
||||||
|
|
||||||
while getopts 'p:C:L:P:A:c:dfvh' arg; do
|
while getopts 'p:C:L:P:A:c:D:dfvh' arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
p) PKGLIST="${PKGLIST} ${OPTARG}" ;;
|
p) PKGLIST="${PKGLIST} ${OPTARG}" ;;
|
||||||
C) PACCONFIG="${OPTARG}" ;;
|
C) PACCONFIG="${OPTARG}" ;;
|
||||||
@ -47,6 +51,7 @@ while getopts 'p:C:L:P:A:c:dfvh' arg; do
|
|||||||
P) PUBLISHER="${OPTARG}" ;;
|
P) PUBLISHER="${OPTARG}" ;;
|
||||||
A) APPLICATION="${OPTARG}" ;;
|
A) APPLICATION="${OPTARG}" ;;
|
||||||
c) COMPRESSION="${OPTARG}" ;;
|
c) COMPRESSION="${OPTARG}" ;;
|
||||||
|
D) INSTALL_DIR="${OPTARG}" ;;
|
||||||
d) CREATE_DEFAULT="y" ;;
|
d) CREATE_DEFAULT="y" ;;
|
||||||
f) FORCE="y" ;;
|
f) FORCE="y" ;;
|
||||||
v) QUIET="n" ;;
|
v) QUIET="n" ;;
|
||||||
@ -110,33 +115,8 @@ _pacman ()
|
|||||||
|
|
||||||
command_create () {
|
command_create () {
|
||||||
echo "====> Creating working directory: ${work_dir}"
|
echo "====> Creating working directory: ${work_dir}"
|
||||||
mkdir -p "${work_dir}/iso/"
|
mkdir -p "${work_dir}/iso/${INSTALL_DIR}"
|
||||||
mkdir -p "${work_dir}/root-image/"
|
mkdir -p "${work_dir}/root-image/"
|
||||||
echo "# archiso isomounts file
|
|
||||||
# img - location of image/directory to mount relative to addons directory
|
|
||||||
# arch - architecture of this image
|
|
||||||
# mount point - absolute location on the post-initrd root
|
|
||||||
# type - either 'bind' or 'squashfs' for now
|
|
||||||
|
|
||||||
# syntax: <img> <arch> <mount point> <type>
|
|
||||||
|
|
||||||
# NOTE: Order matters. If the same file exists in multiple
|
|
||||||
# images, the FIRST one mounted, top-down, will take precedence
|
|
||||||
|
|
||||||
root-image.sqfs i686 / squashfs
|
|
||||||
#root-image-x86_64.sqfs x86_64 / squashfs" > "${work_dir}/isomounts"
|
|
||||||
|
|
||||||
echo "README for this archiso created directory
|
|
||||||
|
|
||||||
All directories in this dir, except for 'iso' will be squashed
|
|
||||||
with squashfs and put into the iso dir as iso/<dirname>.sqfs
|
|
||||||
This should be reflected in the isomounts file
|
|
||||||
|
|
||||||
The iso dir is later used to build the actual bootable iso.
|
|
||||||
Please ensure the proper bootloader is installed or copied
|
|
||||||
to the iso/ directory.
|
|
||||||
|
|
||||||
...TODO: Write more..." > "${work_dir}/README"
|
|
||||||
|
|
||||||
if [ "${PKGLIST}" != "" ]; then
|
if [ "${PKGLIST}" != "" ]; then
|
||||||
echo "====> Installing packages to '${work_dir}/root-image/'"
|
echo "====> Installing packages to '${work_dir}/root-image/'"
|
||||||
@ -177,7 +157,7 @@ _mksquash () {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sqimg="${work_dir}/iso/$(basename ${1}).sqfs"
|
sqimg="${work_dir}/iso/${INSTALL_DIR}/$(basename ${1}).sqfs"
|
||||||
echo "====> Generating SquashFS image for '${1}'"
|
echo "====> Generating SquashFS image for '${1}'"
|
||||||
if [ -e "${sqimg}" ]; then
|
if [ -e "${sqimg}" ]; then
|
||||||
dirhaschanged=$(find ${1} -newer ${sqimg})
|
dirhaschanged=$(find ${1} -newer ${sqimg})
|
||||||
@ -218,7 +198,7 @@ _imgcommon () {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "${work_dir}/isomounts" ]; then
|
if [ ! -f "${work_dir}/iso/${INSTALL_DIR}/isomounts" ]; then
|
||||||
echo "Error: the isomounts file doesn't exist. This image won't do anything"
|
echo "Error: the isomounts file doesn't exist. This image won't do anything"
|
||||||
echo " Protecting you from yourself and erroring out here..."
|
echo " Protecting you from yourself and erroring out here..."
|
||||||
exit 1
|
exit 1
|
||||||
@ -234,10 +214,9 @@ _imgcommon () {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp "${work_dir}/isomounts" "${work_dir}/iso/"
|
if ! sed "s|archisolabel=[^ ]*|archisolabel=${LABEL}|g;
|
||||||
|
s|%INSTALL_DIR%|${INSTALL_DIR}|g" -i ${work_dir}/iso/syslinux/syslinux.cfg; then
|
||||||
if ! sed "s|archisolabel=[^ ]*|archisolabel=${LABEL}|" -i ${work_dir}/iso/boot/syslinux/syslinux.cfg; then
|
echo "Error: ${work_dir}/iso/syslinux/syslinux.cfg, doesn't exist, aborting."
|
||||||
echo "Error: ${work_dir}/iso/boot/syslinux/syslinux.cfg, doesn't exist, aborting."
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -249,7 +228,7 @@ command_iso () {
|
|||||||
qflag=""
|
qflag=""
|
||||||
[ "${QUIET}" = "y" ] && qflag="-quiet"
|
[ "${QUIET}" = "y" ] && qflag="-quiet"
|
||||||
mkisofs ${qflag} -r -l \
|
mkisofs ${qflag} -r -l \
|
||||||
-b boot/syslinux/isolinux.bin -c boot/syslinux/boot.cat \
|
-b syslinux/isolinux.bin -c syslinux/boot.cat \
|
||||||
-uid 0 -gid 0 \
|
-uid 0 -gid 0 \
|
||||||
-udf -allow-limited-size -iso-level 3 \
|
-udf -allow-limited-size -iso-level 3 \
|
||||||
-input-charset utf-8 -p "prepared by mkarchiso" \
|
-input-charset utf-8 -p "prepared by mkarchiso" \
|
||||||
|
Loading…
Reference in New Issue
Block a user