summaryrefslogtreecommitdiff
path: root/archiso2dual/archiso2dual
diff options
context:
space:
mode:
Diffstat (limited to 'archiso2dual/archiso2dual')
-rwxr-xr-xarchiso2dual/archiso2dual411
1 files changed, 0 insertions, 411 deletions
diff --git a/archiso2dual/archiso2dual b/archiso2dual/archiso2dual
deleted file mode 100755
index 4e80b4d..0000000
--- a/archiso2dual/archiso2dual
+++ /dev/null
@@ -1,411 +0,0 @@
-#!/bin/bash
-
-#
-# Join two Arch Linux iso images of i686 and x86_64 architecture.
-# Contributed for archiso by Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
-#
-
-set -e -u
-
-publisher="Arch Linux <http://www.archlinux.org>"
-application="Arch Linux Live/Rescue disk"
-label="ARCH_$(date +%Y%m)"
-isofile_i686=""
-isofile_x86_64=""
-imgname=""
-quiet="y"
-profile_type="basic"
-work_dir="/tmp/archiso2dual"
-isomounts_file="/usr/share/archiso2dual/isomounts"
-syslinuxcfg_dir="/usr/share/archiso2dual/syslinux"
-removefiles_file="/usr/share/archiso2dual/removefiles.lst"
-compression="xz"
-install_dir="arch"
-appname=${0##*/}
-_error="0"
-_confirm="n"
-_v=""
-_iscoreiso=n
-
-iso_umount() {
- echo "Executing: ${FUNCNAME}"
- trap - 0 1 2 15
- umount ${_v} ${work_dir}/i686/mnt
- umount ${_v} ${work_dir}/x86_64/mnt
-}
-
-iso_mount() {
- echo "Executing: ${FUNCNAME}"
- trap 'iso_umount' 0 1 2 15
- mount ${_v} -t udf -o ro,loop ${isofile_i686} ${work_dir}/i686/mnt
- mount ${_v} -t udf -o ro,loop ${isofile_x86_64} ${work_dir}/x86_64/mnt
-}
-
-kernel_copy() {
- echo "Executing: ${FUNCNAME}"
- for _arch in i686 x86_64; do
- cp ${_v} ${work_dir}/${_arch}/mnt/${install_dir}/boot/${_arch}/archiso.img ${work_dir}/iso/${install_dir}/boot/${_arch}/archiso.img
- cp ${_v} ${work_dir}/${_arch}/mnt/${install_dir}/boot/${_arch}/vmlinuz26 ${work_dir}/iso/${install_dir}/boot/${_arch}/vmlinuz26
- done
-}
-
-syslinux_copy() {
- echo "Executing: ${FUNCNAME}"
- cp ${_v} ${work_dir}/i686/mnt/${install_dir}/boot/{memtest*,splash.png} ${work_dir}/iso/${install_dir}/boot/
- cp ${_v} ${work_dir}/i686/mnt/syslinux/*.c32 ${work_dir}/iso/syslinux/
- cp ${_v} ${work_dir}/i686/mnt/syslinux/poweroff.com ${work_dir}/iso/syslinux/
- cp ${_v} ${work_dir}/i686/mnt/syslinux/memdisk ${work_dir}/iso/syslinux/
- cp ${_v} ${work_dir}/i686/mnt/syslinux/isolinux.bin ${work_dir}/iso/syslinux/
- cp ${_v} ${work_dir}/i686/mnt/syslinux/pxelinux.0 ${work_dir}/iso/syslinux/
- cp ${_v} ${work_dir}/i686/mnt/syslinux/gpxelinux.0 ${work_dir}/iso/syslinux/
- cp ${_v} -r ${work_dir}/i686/mnt/syslinux/hdt ${work_dir}/iso/syslinux/
-}
-
-syslinuxcfg_copy() {
- echo "Executing: ${FUNCNAME}"
- for _cfg in ${syslinuxcfg_dir}/*.cfg; do
- sed "s|%ARCHISO_LABEL%|${label}|g;
- s|%INSTALL_DIR%|${install_dir}|g" ${_cfg} > ${work_dir}/iso/syslinux/$(basename ${_cfg})
- done
-}
-
-isomounts_copy() {
- echo "Executing: ${FUNCNAME}"
- cp ${_v} ${isomounts_file} ${work_dir}/iso/${install_dir}/
-}
-
-squashfs_copy() {
- echo "Executing: ${FUNCNAME}"
- for _arch in i686 x86_64; do
- cp ${_v} ${work_dir}/${_arch}/mnt/${install_dir}/${_arch}/*.sqfs ${work_dir}/iso/${install_dir}/${_arch}/
- done
-}
-
-make_iso() {
- echo "Executing: ${FUNCNAME}"
- if [ "${quiet}" = "y" ]; then
- _qflag="-quiet"
- else
- _qflag=""
- fi
- mkisofs ${_v} ${_qflag} -r -l \
- -b syslinux/isolinux.bin -c syslinux/boot.cat \
- -uid 0 -gid 0 \
- -udf -allow-limited-size -iso-level 3 \
- -input-charset utf-8 -p "prepared by archiso2dual" \
- -no-emul-boot -boot-load-size 4 -boot-info-table \
- -publisher "${publisher}" \
- -A "${application}" \
- -V "${label}" \
- -o "${imgname}" "${work_dir}/iso/"
- isohybrid "${imgname}"
-}
-
-unsquashfs_image() {
- echo "Executing: ${FUNCNAME}"
- img=${1}
- arch=${2}
- rm -rf ${work_dir}/tmp/${arch}/${img}
- if [ "${quiet}" = "y" ]; then
- unsquashfs -d ${work_dir}/tmp/${arch}/${img} ${work_dir}/iso/${install_dir}/${arch}/${img}.sqfs > /dev/null
- else
- unsquashfs -d ${work_dir}/tmp/${arch}/${img} ${work_dir}/iso/${install_dir}/${arch}/${img}.sqfs
- fi
-}
-
-mksquashfs_image() {
- echo "Executing: ${FUNCNAME}"
- img=${1}
- arch=${2}
- rm -f ${work_dir}/iso/${install_dir}/${arch}/${img}.sqfs
- if [ "${quiet}" = "y" ]; then
- mksquashfs ${work_dir}/tmp/${arch}/${img} ${work_dir}/iso/${install_dir}/${arch}/${img}.sqfs -comp ${compression} > /dev/null
- else
- mksquashfs ${work_dir}/tmp/${arch}/${img} ${work_dir}/iso/${install_dir}/${arch}/${img}.sqfs -comp ${compression}
- fi
-}
-
-usrshare_make_image() {
- echo "Executing: ${FUNCNAME}"
- mkdir -p ${work_dir}/tmp/any/usrshare/usr
- cp -a ${work_dir}/tmp/i686/root-image/usr/share ${work_dir}/tmp/any/usrshare/usr
- mksquashfs_image usrshare any
-}
-
-libmodules_make_image() {
- echo "Executing: ${FUNCNAME}"
- for _arch in i686 x86_64; do
- mkdir -p ${work_dir}/tmp/${_arch}/libmodules/lib
- cp -a ${work_dir}/tmp/${_arch}/root-image/lib/modules ${work_dir}/tmp/${_arch}/libmodules/lib
- mksquashfs_image libmodules ${_arch}
- done
-}
-
-core_pkgs_make_image() {
- echo "Executing: ${FUNCNAME}"
- mkdir -p ${work_dir}/tmp/any/core-any-pkgs/src/core/pkg
- cp -a ${work_dir}/tmp/i686/core-pkgs/src/core/pkg/*-any.pkg.* ${work_dir}/tmp/any/core-any-pkgs/src/core/pkg
- for _arch in i686 x86_64; do
- rm -rf ${work_dir}/tmp/${_arch}/core-pkgs/src/core/pkg/*-any.pkg.*
- mksquashfs_image core-pkgs ${_arch}
- done
- mksquashfs_image core-any-pkgs any
-}
-
-core_pkgs_extract() {
- echo "Executing: ${FUNCNAME}"
- for _arch in i686 x86_64; do
- unsquashfs_image core-pkgs ${_arch}
- done
-}
-
-check_if_core_medium() {
- echo "Executing: ${FUNCNAME}"
- if [ -f ${work_dir}/iso/${install_dir}/i686/core-pkgs.sqfs ] && [ -f ${work_dir}/iso/${install_dir}/x86_64/core-pkgs.sqfs ]; then
- _iscoreiso=y
- fi
-}
-
-root_image_extract() {
- echo "Executing: ${FUNCNAME}"
- for _arch in i686 x86_64; do
- unsquashfs_image root-image ${_arch}
- done
-}
-
-root_image_purge() {
- echo "Executing: ${FUNCNAME}"
- while read _file; do
- [ "${_file#"#"}" != "${_file}" ] && continue
- for _arch in i686 x86_64; do
- rm -rf "${work_dir}/tmp/${_arch}/root-image/${_file}"
- done
- done < "${removefiles_file}"
-}
-
-root_image_list_purge() {
- while read _file; do
- [ "${_file#"#"}" != "${_file}" ] && continue
- for _arch in i686 x86_64; do
- echo "${work_dir}/tmp/${_arch}/root-image/${_file}"
- done
- done < "${removefiles_file}"
-}
-
-root_image_make_image() {
- echo "Executing: ${FUNCNAME}"
- for _arch in i686 x86_64; do
- rm -rf ${work_dir}/tmp/${_arch}/root-image/usr/share
- rm -rf ${work_dir}/tmp/${_arch}/root-image/lib/modules
- mksquashfs_image root-image ${_arch}
- done
-}
-
-make_workspace() {
- echo "Executing: ${FUNCNAME}"
- for _arch in i686 x86_64; do
- mkdir ${_v} -p ${work_dir}/iso/${install_dir}/${_arch}
- mkdir ${_v} -p ${work_dir}/iso/${install_dir}/boot/${_arch}
- mkdir ${_v} -p ${work_dir}/${_arch}/mnt
- mkdir ${_v} -p ${work_dir}/tmp/${_arch}
- done
- mkdir ${_v} -p ${work_dir}/iso/syslinux
- mkdir ${_v} -p ${work_dir}/iso/${install_dir}/any
- mkdir ${_v} -p ${work_dir}/tmp/any
-}
-
-show_help()
-{
- exitvalue=${1}
- echo
- echo "${appname} [options] -3 <i686.iso> -6 <x86_64.iso> -o <output.iso>"
- echo
- echo " needed options:"
- echo " -3 <i686.iso> Path to i686 source iso image"
- echo " -6 <x86_64.iso> Path to x86_64 source iso image"
- echo " -o <output.iso> Path to dual target iso image"
- echo
- echo " general options:"
- echo " -M <isomounts> Path to isomounts file
- (default to '${isomounts_file}'"
- echo " -S <syslinux> Path to syslinux.cfg file
- (default to '${syslinuxcfg_dir}'"
- echo " -R <removefiles> Path to removefiles file
- (default to '${removefiles_file}'"
- echo " -w <workdir> Set work directory
- (default to '${work_dir}')"
- echo " -T <profile> Type of target image (work is done on root-image.sqfs):
- basic: join both images, no changes in root-image
- split: 'basic' + split out usr/share/ and lib/modules/ from root-image
- full: 'split' + remove specified directories (with -R) from root-image
- (default to '${profile_type}')"
- echo " -L <label> Set a label for the disk [max 11 chars]
- (default to '${label}')"
- echo " -P <publisher> Set a publisher for the disk
- (default to '${publisher}')"
- echo " -A <application> Set an application name for the disk
- (default to '${application}')"
- echo " -c <compressor> Set SquashFS compression type: gzip, xz or lzo.
- (default to '${compression}')"
- echo " -D <install_dir> Set an install_dir
- (default to '${install_dir}')"
- echo " NOTES:"
- echo " Must match install_dir from both .iso sources"
- echo " Max 8 characters, use only [a-z0-9]"
- echo " -y Confirm execution (otherwise only show configuration)"
- echo " -v Enable verbose output"
- echo " -h This message"
- exit ${exitvalue}
-}
-
-show_config() {
- echo
- echo "${appname} : Configuration settings"
- echo " source iso i686 image: ${isofile_i686}"
- echo " source iso x86_64 image: ${isofile_x86_64}"
- echo " target iso image: ${imgname}"
- echo " install directory on ISO: ${install_dir}"
- echo " isomounts file: ${isomounts_file}"
- echo " syslinux.cfg path: ${syslinuxcfg_dir}"
- echo " removefiles.lst file: ${removefiles_file}"
- echo " working directory: ${work_dir}"
- echo " profile: ${profile_type}"
- echo " label: ${label}"
- echo " publisher: ${publisher}"
- echo " application: ${application}"
- echo " compression: ${compression}"
- echo
- if [ "${profile_type}" = "full" ]; then
- echo "These files will be deleted (selected via -R option)"
- root_image_list_purge
- fi
-}
-
-options_check() {
- if [ "x${isofile_i686}" = "x" ]; then
- echo "*ERROR*: -3 <i686.iso> must be specified"
- _error="1"
- fi
-
- if [ "x${isofile_x86_64}" = "x" ]; then
- echo "*ERROR*: -6 <x86_64.iso> must be specified"
- _error="1"
- fi
-
- if [ "x${imgname}" = "x" ]; then
- echo "*ERROR*: -o <output.iso> must be specified"
- _error="1"
- fi
-
- if [ ${_error} = "1" ]; then
- show_help 1
- fi
-}
-
-sanity_check() {
- echo
- if [ ! -f "${isofile_i686}" ]; then
- echo "*ERROR*: ${isofile_i686} does not exist"
- _error="1"
- fi
-
- if [ ! -f "${isofile_x86_64}" ]; then
- echo "*ERROR*: ${isofile_x86_64} does not exist"
- _error="1"
- fi
-
- if [ -f "${imgname}" ]; then
- echo "*ERROR*: ${imgname} already exists, aborting"
- _error="1"
- fi
-
- if [ ! -f "${isomounts_file}" ]; then
- echo "*ERROR*: ${isomounts_file} does not exist, , specify one with -M option"
- _error="1"
- fi
-
- if [ ! -f "${syslinuxcfg_dir}/syslinux.cfg" ]; then
- echo "*ERROR*: ${syslinuxcfg_dir}/syslinux.cfg does not exist, specify one with -S option"
- _error="1"
- fi
-
- if [ ! -f "${removefiles_file}" ]; then
- echo "*ERROR*: ${removefiles_file} does not exist, specify one with -R option"
- _error="1"
- fi
-
- if [ -d "${work_dir}" ]; then
- echo "*ERROR*: work directory ${work_dir} is present, first delete it"
- _error="1"
- fi
-
- if [ ${_error} = "1" ]; then
- exit 1
- fi
-}
-
-if [ "$EUID" != "0" ]; then
- echo "*ERROR*: This script must be run as root."
- exit 1
-fi
-
-while getopts '3:6:o:T:M:S:R:L:P:A:c:D:yvh' arg; do
- case "${arg}" in
- 3) isofile_i686="${OPTARG}" ;;
- 6) isofile_x86_64="${OPTARG}" ;;
- o) imgname="${OPTARG}" ;;
- T) case "${OPTARG}" in
- "basic"|"split"|"full") profile_type="${OPTARG}" ;;
- *) echo; echo "*ERROR*: invalid argument in -T option: ${profile_type}"; show_help 1 ;;
- esac
- ;;
- M) isomounts_file="${OPTARG}" ;;
- S) syslinuxcfg_dir="${OPTARG}" ;;
- R) removefiles_file="${OPTARG}" ;;
- L) label="${OPTARG}" ;;
- P) publisher="${OPTARG}" ;;
- A) application="${OPTARG}" ;;
- c) compression="${OPTARG}" ;;
- D) install_dir="${OPTARG}" ;;
- w) work_dir="${OPTARG}" ;;
- y) _confirm="y" ;;
- v) quiet="n"; _v="-v" ;;
- h|?) show_help 0 ;;
- *) echo; echo "*ERROR*: invalid argument '${arg}'"; show_help 1 ;;
- esac
-done
-
-options_check
-sanity_check
-show_config
-
-if [ "${_confirm}" != "y" ]; then
- echo
- echo "If configuration is correct, re-execute with -y"
- exit 1
-fi
-make_workspace
-iso_mount
-kernel_copy
-syslinux_copy
-squashfs_copy
-check_if_core_medium
-iso_umount
-syslinuxcfg_copy
-isomounts_copy
-if [ ${profile_type} = "full" ] || [ ${profile_type} = "split" ]; then
- root_image_extract
- if [ ${profile_type} = "full" ]; then
- root_image_purge
- fi
- if [ ${_iscoreiso} = "y" ]; then
- core_pkgs_extract
- fi
- usrshare_make_image
- libmodules_make_image
- root_image_make_image
- if [ ${_iscoreiso} = "y" ]; then
- core_pkgs_make_image
- fi
-fi
-make_iso