diff --git a/archiso/initcpio/hooks/archiso b/archiso/initcpio/hooks/archiso index 1b848ce..d897ae1 100644 --- a/archiso/initcpio/hooks/archiso +++ b/archiso/initcpio/hooks/archiso @@ -69,10 +69,23 @@ _mnt_sfs() { # defined via initcpio's parse_cmdline() if [ "${copytoram}" = "y" ]; then msg -n ":: Copying squashfs image to RAM..." - if ! cp -- "${img}" "/run/archiso/copytoram/${img_fullname}" ; then + + # in case we have pv use it to display copy progress feedback otherwise + # fallback to using plain cp + if command -v pv > /dev/null 2>&1; then + echo "" + (pv "${img}" > "/run/archiso/copytoram/${img_fullname}") + local rc=$? + else + (cp -- "${img}" "/run/archiso/copytoram/${img_fullname}") + local rc=$? + fi + + if [ $rc != 0 ]; then echo "ERROR: while copy '${img}' to '/run/archiso/copytoram/${img_fullname}'" launch_interactive_shell fi + img="/run/archiso/copytoram/${img_fullname}" msg "done." fi diff --git a/archiso/initcpio/install/archiso b/archiso/initcpio/install/archiso index 74948c7..c64e10e 100644 --- a/archiso/initcpio/install/archiso +++ b/archiso/initcpio/install/archiso @@ -19,6 +19,12 @@ build() { add_binary gpg add_binary grep + if command -v pv > /dev/null 2>&1; then + add_binary pv + else + warning 'pv not found; falling back to cp for copy to RAM' + fi + add_file /usr/lib/udev/rules.d/60-cdrom_id.rules add_file /usr/lib/udev/rules.d/10-dm.rules add_file /usr/lib/udev/rules.d/95-dm-notify.rules diff --git a/configs/baseline/efiboot/loader/entries/archiso-x86_64-linux.conf b/configs/baseline/efiboot/loader/entries/01-archiso-x86_64-linux.conf similarity index 100% rename from configs/baseline/efiboot/loader/entries/archiso-x86_64-linux.conf rename to configs/baseline/efiboot/loader/entries/01-archiso-x86_64-linux.conf diff --git a/configs/baseline/efiboot/loader/entries/02-archiso-x86_64-ram-linux.conf b/configs/baseline/efiboot/loader/entries/02-archiso-x86_64-ram-linux.conf new file mode 100644 index 0000000..c5e9ab9 --- /dev/null +++ b/configs/baseline/efiboot/loader/entries/02-archiso-x86_64-ram-linux.conf @@ -0,0 +1,7 @@ +# +# SPDX-License-Identifier: GPL-3.0-or-later + +title Arch Linux (x86_64, UEFI) Copy to RAM +linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux +initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram diff --git a/configs/baseline/efiboot/loader/loader.conf b/configs/baseline/efiboot/loader/loader.conf index 1ea5ce5..beacd81 100644 --- a/configs/baseline/efiboot/loader/loader.conf +++ b/configs/baseline/efiboot/loader/loader.conf @@ -2,4 +2,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later timeout 3 -default archiso-x86_64-linux.conf +default 01-archiso-x86_64-linux.conf diff --git a/configs/baseline/packages.x86_64 b/configs/baseline/packages.x86_64 index cadea18..224f7f0 100644 --- a/configs/baseline/packages.x86_64 +++ b/configs/baseline/packages.x86_64 @@ -6,6 +6,7 @@ linux mkinitcpio mkinitcpio-archiso openssh +pv qemu-guest-agent syslinux virtualbox-guest-utils-nox diff --git a/configs/baseline/syslinux/syslinux-linux.cfg b/configs/baseline/syslinux/syslinux-linux.cfg index 867d815..ced6801 100644 --- a/configs/baseline/syslinux/syslinux-linux.cfg +++ b/configs/baseline/syslinux/syslinux-linux.cfg @@ -6,3 +6,9 @@ MENU LABEL Arch Linux (x86_64, BIOS) LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% + +LABEL arch-ram +MENU LABEL Arch Linux (x86_64, BIOS) Copy to RAM +LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux +INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img +APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram diff --git a/configs/releng/efiboot/loader/entries/archiso-x86_64-linux.conf b/configs/releng/efiboot/loader/entries/01-archiso-x86_64-linux.conf similarity index 100% rename from configs/releng/efiboot/loader/entries/archiso-x86_64-linux.conf rename to configs/releng/efiboot/loader/entries/01-archiso-x86_64-linux.conf diff --git a/configs/releng/efiboot/loader/entries/archiso-x86_64-speech-linux.conf b/configs/releng/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf similarity index 100% rename from configs/releng/efiboot/loader/entries/archiso-x86_64-speech-linux.conf rename to configs/releng/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf diff --git a/configs/releng/efiboot/loader/entries/03-archiso-x86_64-ram-linux.conf b/configs/releng/efiboot/loader/entries/03-archiso-x86_64-ram-linux.conf new file mode 100644 index 0000000..9eba5a9 --- /dev/null +++ b/configs/releng/efiboot/loader/entries/03-archiso-x86_64-ram-linux.conf @@ -0,0 +1,9 @@ +# +# SPDX-License-Identifier: GPL-3.0-or-later + +title Arch Linux install medium (x86_64, UEFI, Copy to RAM) +linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux +initrd /%INSTALL_DIR%/boot/intel-ucode.img +initrd /%INSTALL_DIR%/boot/amd-ucode.img +initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram diff --git a/configs/releng/efiboot/loader/loader.conf b/configs/releng/efiboot/loader/loader.conf index 767d225..4f6252f 100644 --- a/configs/releng/efiboot/loader/loader.conf +++ b/configs/releng/efiboot/loader/loader.conf @@ -2,4 +2,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later timeout 15 -default archiso-x86_64-linux.conf +default 01-archiso-x86_64-linux.conf diff --git a/configs/releng/syslinux/archiso_sys-linux.cfg b/configs/releng/syslinux/archiso_sys-linux.cfg index e2b4edd..e1894c1 100644 --- a/configs/releng/syslinux/archiso_sys-linux.cfg +++ b/configs/releng/syslinux/archiso_sys-linux.cfg @@ -21,3 +21,14 @@ MENU LABEL Arch Linux install medium (x86_64, BIOS) with ^speech LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% accessibility=on + +# Copy to RAM boot option +LABEL arch64ram +TEXT HELP +Boot the Arch Linux install medium on BIOS with Copy-to-RAM option +It allows you to install Arch Linux or perform system maintenance. +ENDTEXT +MENU LABEL Arch Linux install medium (x86_64, BIOS, Copy to RAM) +LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux +INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img +APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram diff --git a/docs/README.bootparams b/docs/README.bootparams index bcafc0e..da1fcda 100644 --- a/docs/README.bootparams +++ b/docs/README.bootparams @@ -24,7 +24,9 @@ INDEX * archisobasedir= Set the base directory where all files reside. Default: "arch" * copytoram= If set to "y" or just "copytoram" without arguments, - all SquashFS are copied to "RAM". + all SquashFS are copied to "RAM". If you add the package + "pv" to the packages.x86_64 it is used to display the copy + progress. Default: (unset) * checksum= If set to "y" or just "checksum" without arguments, performs a self-test of all files inside ${install_dir},