diff --git a/archiso/initcpio/hooks/archiso b/archiso/initcpio/hooks/archiso index 1b848ce481263c856b487106585e162a4bb6cd5b..d897ae1300444af8b1dca9d43a09aff42713f0f3 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 74948c7d571fcf172c2c33cbd9f1446f2ddcb05e..c64e10e286c881339773fb8e138583f08de42f86 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 0000000000000000000000000000000000000000..c5e9ab92a898fbe5f6270fc8295f23ff5921103f --- /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 1ea5ce56feee470044591c4d49af3631b3441854..beacd81956f36f03079822e5f6488b740f3a375a 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 cadea182ce95538ea60bf800ce84cf6c3affd316..224f7f06d8a939881c98a02a20b31438bdbed778 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 867d815cc58d605e041ebee191ac3a4ab192627f..ced68019885f9a3c3e9f1de30dc210fa03f66486 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 0000000000000000000000000000000000000000..9eba5a9c1b2da917f6556fbc49daf56e5bd70191 --- /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 767d2252c3d2d9857ec7986be08d77dfbcee9a18..4f6252f14b41692a38310ac2c76619bb95221a18 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 e2b4edd2311dffc6b3c380476cccbfc5bcb83e85..e1894c103bcc5228d61c86fb314778312021b2f9 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 bcafc0e470a4151cebf272e3225dc267cfea07ee..da1fcda720fcc5632801e108fe00a4f77e2349be 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},