[pve-devel] [PATCH kernel-meta] fix #2403: exclude initrd entries from /proc/cmdline

Thomas Lamprecht t.lamprecht at proxmox.com
Tue Oct 15 15:54:14 CEST 2019


On 10/15/19 3:22 PM, Oguz Bektas wrote:
> if we fallback to /proc/cmdline, it can include the booted initrd.
> 
> to avoid loader entries with (sometimes even multiple) initrd lines,
> we have to parse them out.
> 
> Signed-off-by: Oguz Bektas <o.bektas at proxmox.com>
> ---
>  efiboot/zz-pve-efiboot | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/efiboot/zz-pve-efiboot b/efiboot/zz-pve-efiboot
> index 4756555..5a84af2 100755
> --- a/efiboot/zz-pve-efiboot
> +++ b/efiboot/zz-pve-efiboot
> @@ -50,7 +50,8 @@ update_esps() {
>  		CMDLINE="$(cat /etc/kernel/cmdline)"
>  	else
>  		warn "No /etc/kernel/cmdline found - falling back to /proc/cmdline"
> -		CMDLINE="$(cat /proc/cmdline)"
> +		# remove initrd entries
> +		CMDLINE="$(cat /proc/cmdline | awk '{gsub(/initrd=([0-9a-zA-Z\\.-])*\s/,x)}1')"

could pontentially match a field which ends with initrd, e.g.,
noinitrd=foo

while just an example that still should be caught..

also, this is a wrong use of cat, you could just do:
"$(awk '...' /proc/cmdline)"

not point for the pipe..

now if the initrd= is _always_ the first one we could also do:
"$(cut -d ' ' -f2- /proc/cmdline)"

but no hard feelings.

>  	fi
>  
>  	loop_esp_list update_esp_func
> 





More information about the pve-devel mailing list