Build initramfs images only once
Place custom mkinitcpio.conf in airootfs. Use a custom mkinitcpio preset to specify generated image file path.
This commit is contained in:
parent
a5886ad71e
commit
ff0c13f90c
69
configs/baseline/airootfs/etc/mkinitcpio.conf
Normal file
69
configs/baseline/airootfs/etc/mkinitcpio.conf
Normal file
@ -0,0 +1,69 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# vim:set ft=sh
|
||||
# MODULES
|
||||
# The following modules are loaded before any boot hooks are
|
||||
# run. Advanced users may wish to specify all system modules
|
||||
# in this array. For instance:
|
||||
# MODULES=(piix ide_disk reiserfs)
|
||||
MODULES=()
|
||||
|
||||
# BINARIES
|
||||
# This setting includes any additional binaries a given user may
|
||||
# wish into the CPIO image. This is run last, so it may be used to
|
||||
# override the actual binaries included by a given hook
|
||||
# BINARIES are dependency parsed, so you may safely ignore libraries
|
||||
BINARIES=()
|
||||
|
||||
# FILES
|
||||
# This setting is similar to BINARIES above, however, files are added
|
||||
# as-is and are not parsed in any way. This is useful for config files.
|
||||
FILES=()
|
||||
|
||||
# HOOKS
|
||||
# This is the most important setting in this file. The HOOKS control the
|
||||
# modules and scripts added to the image, and what happens at boot time.
|
||||
# Order is important, and it is recommended that you do not change the
|
||||
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
|
||||
# help on a given hook.
|
||||
# 'base' is _required_ unless you know precisely what you are doing.
|
||||
# 'udev' is _required_ in order to automatically load modules
|
||||
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
|
||||
# Examples:
|
||||
## This setup specifies all modules in the MODULES setting above.
|
||||
## No raid, lvm2, or encrypted root is needed.
|
||||
# HOOKS=(base)
|
||||
#
|
||||
## This setup will autodetect all modules for your system and should
|
||||
## work as a sane default
|
||||
# HOOKS=(base udev autodetect block filesystems)
|
||||
#
|
||||
## This setup will generate a 'full' image which supports most systems.
|
||||
## No autodetection is done.
|
||||
# HOOKS=(base udev block filesystems)
|
||||
#
|
||||
## This setup assembles a pata mdadm array with an encrypted root FS.
|
||||
## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
|
||||
# HOOKS=(base udev block mdadm encrypt filesystems)
|
||||
#
|
||||
## This setup loads an lvm2 volume group on a usb device.
|
||||
# HOOKS=(base udev block lvm2 filesystems)
|
||||
#
|
||||
## NOTE: If you have /usr on a separate partition, you MUST include the
|
||||
# usr, fsck and shutdown hooks.
|
||||
HOOKS=(base udev archiso block filesystems)
|
||||
|
||||
# COMPRESSION
|
||||
# Use this to compress the initramfs image. By default, gzip compression
|
||||
# is used. Use 'cat' to create an uncompressed image.
|
||||
#COMPRESSION="gzip"
|
||||
#COMPRESSION="bzip2"
|
||||
#COMPRESSION="lzma"
|
||||
#COMPRESSION="xz"
|
||||
#COMPRESSION="lzop"
|
||||
#COMPRESSION="lz4"
|
||||
|
||||
# COMPRESSION_OPTIONS
|
||||
# Additional options for the compressor
|
||||
#COMPRESSION_OPTIONS=()
|
11
configs/baseline/airootfs/etc/mkinitcpio.d/linux.preset
Normal file
11
configs/baseline/airootfs/etc/mkinitcpio.d/linux.preset
Normal file
@ -0,0 +1,11 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# mkinitcpio preset file for the 'linux' package on archiso
|
||||
|
||||
PRESETS=('archiso')
|
||||
|
||||
ALL_kver='/boot/vmlinuz-linux'
|
||||
ALL_config='/etc/mkinitcpio.conf'
|
||||
|
||||
archiso_image="/boot/archiso.img"
|
@ -56,6 +56,11 @@ make_custom_airootfs() {
|
||||
done < "${_airootfs}/etc/passwd"
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p -- "${work_dir}/airootfs/etc/initcpio/hooks"
|
||||
mkdir -p -- "${work_dir}/airootfs/etc/initcpio/install"
|
||||
cp /usr/lib/initcpio/hooks/archiso "${work_dir}/airootfs/etc/initcpio/hooks/"
|
||||
cp /usr/lib/initcpio/install/archiso "${work_dir}/airootfs/etc/initcpio/install/"
|
||||
}
|
||||
|
||||
# Packages (airootfs)
|
||||
@ -64,17 +69,6 @@ make_packages() {
|
||||
-p "$(grep -h -v '^#' "${script_path}/packages.x86_64"| sed ':a;N;$!ba;s/\n/ /g')" install
|
||||
}
|
||||
|
||||
# Copy mkinitcpio archiso hooks and build initramfs (airootfs)
|
||||
make_setup_mkinitcpio() {
|
||||
mkdir -p "${work_dir}/airootfs/etc/initcpio/hooks"
|
||||
mkdir -p "${work_dir}/airootfs/etc/initcpio/install"
|
||||
cp /usr/lib/initcpio/hooks/archiso "${work_dir}/airootfs/etc/initcpio/hooks"
|
||||
cp /usr/lib/initcpio/install/archiso "${work_dir}/airootfs/etc/initcpio/install"
|
||||
cp "${script_path}/mkinitcpio.conf" "${work_dir}/airootfs/etc/mkinitcpio-archiso.conf"
|
||||
mkarchiso -v -w "${work_dir}" -D "${install_dir}" \
|
||||
-r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run
|
||||
}
|
||||
|
||||
# Prepare ${install_dir}/boot/
|
||||
make_boot() {
|
||||
mkdir -p "${work_dir}/iso/${install_dir}/boot/${arch}"
|
||||
@ -118,7 +112,6 @@ make_iso() {
|
||||
run_once make_custom_airootfs
|
||||
run_once make_pacman_conf
|
||||
run_once make_packages
|
||||
run_once make_setup_mkinitcpio
|
||||
run_once make_boot
|
||||
run_once make_syslinux
|
||||
run_once make_isolinux
|
||||
|
@ -1,4 +0,0 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
HOOKS=(base udev archiso block filesystems)
|
69
configs/releng/airootfs/etc/mkinitcpio.conf
Normal file
69
configs/releng/airootfs/etc/mkinitcpio.conf
Normal file
@ -0,0 +1,69 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# vim:set ft=sh
|
||||
# MODULES
|
||||
# The following modules are loaded before any boot hooks are
|
||||
# run. Advanced users may wish to specify all system modules
|
||||
# in this array. For instance:
|
||||
# MODULES=(piix ide_disk reiserfs)
|
||||
MODULES=()
|
||||
|
||||
# BINARIES
|
||||
# This setting includes any additional binaries a given user may
|
||||
# wish into the CPIO image. This is run last, so it may be used to
|
||||
# override the actual binaries included by a given hook
|
||||
# BINARIES are dependency parsed, so you may safely ignore libraries
|
||||
BINARIES=()
|
||||
|
||||
# FILES
|
||||
# This setting is similar to BINARIES above, however, files are added
|
||||
# as-is and are not parsed in any way. This is useful for config files.
|
||||
FILES=()
|
||||
|
||||
# HOOKS
|
||||
# This is the most important setting in this file. The HOOKS control the
|
||||
# modules and scripts added to the image, and what happens at boot time.
|
||||
# Order is important, and it is recommended that you do not change the
|
||||
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
|
||||
# help on a given hook.
|
||||
# 'base' is _required_ unless you know precisely what you are doing.
|
||||
# 'udev' is _required_ in order to automatically load modules
|
||||
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
|
||||
# Examples:
|
||||
## This setup specifies all modules in the MODULES setting above.
|
||||
## No raid, lvm2, or encrypted root is needed.
|
||||
# HOOKS=(base)
|
||||
#
|
||||
## This setup will autodetect all modules for your system and should
|
||||
## work as a sane default
|
||||
# HOOKS=(base udev autodetect block filesystems)
|
||||
#
|
||||
## This setup will generate a 'full' image which supports most systems.
|
||||
## No autodetection is done.
|
||||
# HOOKS=(base udev block filesystems)
|
||||
#
|
||||
## This setup assembles a pata mdadm array with an encrypted root FS.
|
||||
## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
|
||||
# HOOKS=(base udev block mdadm encrypt filesystems)
|
||||
#
|
||||
## This setup loads an lvm2 volume group on a usb device.
|
||||
# HOOKS=(base udev block lvm2 filesystems)
|
||||
#
|
||||
## NOTE: If you have /usr on a separate partition, you MUST include the
|
||||
# usr, fsck and shutdown hooks.
|
||||
HOOKS=(base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block filesystems keyboard)
|
||||
|
||||
# COMPRESSION
|
||||
# Use this to compress the initramfs image. By default, gzip compression
|
||||
# is used. Use 'cat' to create an uncompressed image.
|
||||
#COMPRESSION="gzip"
|
||||
#COMPRESSION="bzip2"
|
||||
#COMPRESSION="lzma"
|
||||
COMPRESSION="xz"
|
||||
#COMPRESSION="lzop"
|
||||
#COMPRESSION="lz4"
|
||||
|
||||
# COMPRESSION_OPTIONS
|
||||
# Additional options for the compressor
|
||||
#COMPRESSION_OPTIONS=()
|
11
configs/releng/airootfs/etc/mkinitcpio.d/linux.preset
Normal file
11
configs/releng/airootfs/etc/mkinitcpio.d/linux.preset
Normal file
@ -0,0 +1,11 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# mkinitcpio preset file for the 'linux' package on archiso
|
||||
|
||||
PRESETS=('archiso')
|
||||
|
||||
ALL_kver='/boot/vmlinuz-linux'
|
||||
ALL_config='/etc/mkinitcpio.conf'
|
||||
|
||||
archiso_image="/boot/archiso.img"
|
@ -86,44 +86,31 @@ make_custom_airootfs() {
|
||||
done < "${_airootfs}/etc/passwd"
|
||||
fi
|
||||
fi
|
||||
|
||||
local _hook
|
||||
mkdir -p -- "${work_dir}/x86_64/airootfs/etc/initcpio/hooks"
|
||||
mkdir -p -- "${work_dir}/x86_64/airootfs/etc/initcpio/install"
|
||||
for _hook in archiso archiso_shutdown archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_loop_mnt; do
|
||||
cp "/usr/lib/initcpio/hooks/${_hook}" "${work_dir}/x86_64/airootfs/etc/initcpio/hooks/"
|
||||
cp "/usr/lib/initcpio/install/${_hook}" "${work_dir}/x86_64/airootfs/etc/initcpio/install/"
|
||||
done
|
||||
sed -i "s|/usr/lib/initcpio/|/etc/initcpio/|g" "${work_dir}/x86_64/airootfs/etc/initcpio/install/archiso_shutdown"
|
||||
cp /usr/lib/initcpio/install/archiso_kms "${work_dir}/x86_64/airootfs/etc/initcpio/install/"
|
||||
cp /usr/lib/initcpio/archiso_shutdown "${work_dir}/x86_64/airootfs/etc/initcpio/"
|
||||
}
|
||||
|
||||
# Packages (airootfs)
|
||||
make_packages() {
|
||||
if [ -n "${verbose}" ]; then
|
||||
mkarchiso -v -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
|
||||
-p "$(grep -h -v '^#' "${script_path}/packages.x86_64"| sed ':a;N;$!ba;s/\n/ /g')" install
|
||||
else
|
||||
mkarchiso -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
|
||||
-p "$(grep -h -v '^#' "${script_path}/packages.x86_64"| sed ':a;N;$!ba;s/\n/ /g')" install
|
||||
fi
|
||||
}
|
||||
|
||||
# Copy mkinitcpio archiso hooks and build initramfs (airootfs)
|
||||
make_setup_mkinitcpio() {
|
||||
local _hook
|
||||
mkdir -p "${work_dir}/x86_64/airootfs/etc/initcpio/hooks"
|
||||
mkdir -p "${work_dir}/x86_64/airootfs/etc/initcpio/install"
|
||||
for _hook in archiso archiso_shutdown archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_loop_mnt; do
|
||||
cp "/usr/lib/initcpio/hooks/${_hook}" "${work_dir}/x86_64/airootfs/etc/initcpio/hooks"
|
||||
cp "/usr/lib/initcpio/install/${_hook}" "${work_dir}/x86_64/airootfs/etc/initcpio/install"
|
||||
done
|
||||
sed -i "s|/usr/lib/initcpio/|/etc/initcpio/|g" "${work_dir}/x86_64/airootfs/etc/initcpio/install/archiso_shutdown"
|
||||
cp /usr/lib/initcpio/install/archiso_kms "${work_dir}/x86_64/airootfs/etc/initcpio/install"
|
||||
cp /usr/lib/initcpio/archiso_shutdown "${work_dir}/x86_64/airootfs/etc/initcpio"
|
||||
cp "${script_path}/mkinitcpio.conf" "${work_dir}/x86_64/airootfs/etc/mkinitcpio-archiso.conf"
|
||||
if [[ "${gpg_key}" ]]; then
|
||||
gpg --export "${gpg_key}" > "${work_dir}/gpgkey"
|
||||
exec 17<>"${work_dir}/gpgkey"
|
||||
fi
|
||||
if [ -n "${verbose}" ]; then
|
||||
ARCHISO_GNUPG_FD="${gpg_key:+17}" mkarchiso -v -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" \
|
||||
-D "${install_dir}" \
|
||||
-r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run
|
||||
ARCHISO_GNUPG_FD="${gpg_key:+17}" mkarchiso -v -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
|
||||
-p "$(grep -h -v '^#' "${script_path}/packages.x86_64"| sed ':a;N;$!ba;s/\n/ /g')" install
|
||||
else
|
||||
ARCHISO_GNUPG_FD="${gpg_key:+17}" mkarchiso -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" \
|
||||
-D "${install_dir}" \
|
||||
-r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run
|
||||
ARCHISO_GNUPG_FD="${gpg_key:+17}" mkarchiso -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
|
||||
-p "$(grep -h -v '^#' "${script_path}/packages.x86_64"| sed ':a;N;$!ba;s/\n/ /g')" install
|
||||
fi
|
||||
if [[ "${gpg_key}" ]]; then
|
||||
exec 17<&-
|
||||
@ -321,7 +308,6 @@ run_once make_pacman_conf
|
||||
run_once make_custom_airootfs
|
||||
run_once make_packages
|
||||
run_once make_customize_airootfs
|
||||
run_once make_setup_mkinitcpio
|
||||
run_once make_boot
|
||||
run_once make_boot_extra
|
||||
run_once make_syslinux
|
||||
|
@ -1,5 +0,0 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
HOOKS=(base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block filesystems keyboard)
|
||||
COMPRESSION="xz"
|
Loading…
Reference in New Issue
Block a user