From: leo-lb Date: Tue, 8 Sep 2020 11:05:05 +0000 (+0200) Subject: Add --uefi-output for custom output filename X-Git-Tag: 051~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f8f3b0f3588273e69b345d6d0602d6d2a1c5a819;p=thirdparty%2Fdracut.git Add --uefi-output for custom output filename Closes #921 --- diff --git a/dracut-bash-completion.sh b/dracut-bash-completion.sh index 913471017..3104c3ebd 100644 --- a/dracut-bash-completion.sh +++ b/dracut-bash-completion.sh @@ -38,7 +38,7 @@ _dracut() { --fwdir --libdirs --fscks --add-fstab --mount --device --nofscks --kmoddir --conf --confdir --tmpdir --stdlog --compress --prefix --kernel-cmdline --sshkey --persistent-policy --install-optional - --loginstall --uefi-stub --kernel-image + --loginstall --uefi-stub --kernel-image --uefi-output ' ) diff --git a/dracut.8.asc b/dracut.8.asc index b99019e50..cc099dc25 100644 --- a/dracut.8.asc +++ b/dracut.8.asc @@ -524,6 +524,9 @@ will not be able to boot. Specifies the UEFI stub loader's splash image. Requires bitmap (**.bmp**) image format. +**--uefi-output __**:: + Specifies the UEFI application output filename, uses default if not set. + **--kernel-image __**:: Specifies the kernel image, which to include in the UEFI executable. The default is _/lib/modules//vmlinuz_ or _/boot/vmlinuz-_ @@ -674,6 +677,8 @@ David Dillow Will Woods +Léo Le Bouter + SEE ALSO -------- *dracut.cmdline*(7) *dracut.conf*(5) *lsinitrd*(1) diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc index f206f2f7b..48255bdef 100644 --- a/dracut.conf.5.asc +++ b/dracut.conf.5.asc @@ -209,6 +209,9 @@ provide a valid _/etc/fstab_. *uefi_splash_image=*"__":: Specifies the UEFI stub loader's splash image. Requires bitmap (**.bmp**) image format. +*uefi_output=*"__":: + Specifies the UEFI application output filename, uses default if not set. + *uefi_secureboot_cert=*"__", *uefi_secureboot_key=*"__":: Specifies a certificate and corresponding key, which are used to sign the created UEFI executable. Requires both certificate and key need to be specified and _sbsign_ to be installed. @@ -232,6 +235,8 @@ AUTHOR ------ Harald Hoyer +Léo Le Bouter + See Also -------- *dracut*(8) *dracut.cmdline*(7) diff --git a/dracut.sh b/dracut.sh index 0f4648397..117c84af4 100755 --- a/dracut.sh +++ b/dracut.sh @@ -241,6 +241,8 @@ Creates initial ramdisk images for preloading modules --uefi-splash-image [FILE] Use [FILE] as a splash image when creating an UEFI executable + --uefi-output [FILE] Use [FILE] as output filename when creating an UEFI + executable --kernel-image [FILE] location of the kernel image --regenerate-all Regenerate all initramfs images at the default location for the kernel versions found on the system @@ -423,6 +425,7 @@ rearrange_params() --long uefi \ --long uefi-stub: \ --long uefi-splash-image: \ + --long uefi-output: \ --long kernel-image: \ --long no-hostonly-i18n \ --long hostonly-i18n \ @@ -627,6 +630,8 @@ while :; do uefi_stub_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;; --uefi-splash-image) uefi_splash_image_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;; + --uefi-output) + uefi_output_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;; --kernel-image) kernel_image_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;; --no-machineid) @@ -811,6 +816,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l)) [[ $loginstall_l ]] && loginstall="$loginstall_l" [[ $uefi_stub_l ]] && uefi_stub="$uefi_stub_l" [[ $uefi_splash_image_l ]] && uefi_splash_image="$uefi_splash_image_l" +[[ $uefi_output_l ]] && uefi_output="$uefi_output_l" [[ $kernel_image_l ]] && kernel_image="$kernel_image_l" [[ $machine_id_l ]] && machine_id="$machine_id_l" @@ -830,27 +836,31 @@ if ! [[ $outfile ]]; then exit 1 fi - BUILD_ID=$(cat $dracutsysrootdir/etc/os-release $dracutsysrootdir/usr/lib/os-release \ - | while read -r line || [[ $line ]]; do \ - [[ $line =~ BUILD_ID\=* ]] && eval "$line" && echo "$BUILD_ID" && break; \ - done) - if [[ -z $dracutsysrootdir ]]; then - if [[ -d /efi ]] && mountpoint -q /efi; then - efidir=/efi/EFI + if [[ -z "$uefi_output" ]]; then + BUILD_ID=$(cat $dracutsysrootdir/etc/os-release $dracutsysrootdir/usr/lib/os-release \ + | while read -r line || [[ $line ]]; do \ + [[ $line =~ BUILD_ID\=* ]] && eval "$line" && echo "$BUILD_ID" && break; \ + done) + if [[ -z $dracutsysrootdir ]]; then + if [[ -d /efi ]] && mountpoint -q /efi; then + efidir=/efi/EFI + else + efidir=/boot/EFI + if [[ -d $dracutsysrootdir/boot/efi/EFI ]]; then + efidir=/boot/efi/EFI + fi + fi else efidir=/boot/EFI if [[ -d $dracutsysrootdir/boot/efi/EFI ]]; then efidir=/boot/efi/EFI fi fi + mkdir -p "$dracutsysrootdir$efidir/Linux" + outfile="$dracutsysrootdir$efidir/Linux/linux-$kernel${MACHINE_ID:+-${MACHINE_ID}}${BUILD_ID:+-${BUILD_ID}}.efi" else - efidir=/boot/EFI - if [[ -d $dracutsysrootdir/boot/efi/EFI ]]; then - efidir=/boot/efi/EFI - fi + outfile="$uefi_output" fi - mkdir -p "$dracutsysrootdir$efidir/Linux" - outfile="$dracutsysrootdir$efidir/Linux/linux-$kernel${MACHINE_ID:+-${MACHINE_ID}}${BUILD_ID:+-${BUILD_ID}}.efi" else if [[ -e "$dracutsysrootdir/boot/vmlinuz-$kernel" ]]; then outfile="/boot/initramfs-$kernel.img"