all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments
@ 2024-08-21 13:22 Christoph Heiss
  2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 1/3] low level: config: filter out kernel cmdline on word boundaries Christoph Heiss
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Christoph Heiss @ 2024-08-21 13:22 UTC (permalink / raw)
  To: pve-devel

Friedrich recently reported that when installing using the
auto-installer, the kernel commandline does not get cleaned up properly.

For building/testing on current master, [0] needs to be applied
beforehand to fix a test failure.

[0] https://lists.proxmox.com/pipermail/pve-devel/2024-July/064815.html

history
=======

v1: https://lists.proxmox.com/pipermail/pve-devel/2024-August/065070.html

Notable changes v1 -> v2:
  * parse whole line by splitting and then filtering out individually
  * add some tests

git diffstat
============

Christoph Heiss (3):
  low level: config: filter out kernel cmdline on word boundaries
  low level: config: filter out all installer-related kernel arguments
  test: add test for kernel commandline parsing

 Proxmox/Install/Config.pm    | 11 ++++---
 test/Makefile                |  7 +++-
 test/parse-kernel-cmdline.pl | 62 ++++++++++++++++++++++++++++++++++++
 3 files changed, 75 insertions(+), 5 deletions(-)
 create mode 100755 test/parse-kernel-cmdline.pl

-- 
2.45.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH installer v2 1/3] low level: config: filter out kernel cmdline on word boundaries
  2024-08-21 13:22 [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
@ 2024-08-21 13:23 ` Christoph Heiss
  2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 2/3] low level: config: filter out all installer-related kernel arguments Christoph Heiss
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Christoph Heiss @ 2024-08-21 13:23 UTC (permalink / raw)
  To: pve-devel

Otherwise, substrings might get replaced, e.g. the replacement
`proxmox-start-auto-installer` -> `pxmox-start-auto-installer` would be
done.

Fixes: a02a78a ("fix #4747: pass kernel cmdline parameters to target system")
Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
Changes v1 -> v2:
  * split commandline along whitespace and filter individually, to avoid
    problems with regexes and word boundaries

 Proxmox/Install/Config.pm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/Proxmox/Install/Config.pm b/Proxmox/Install/Config.pm
index ae70093..7378d86 100644
--- a/Proxmox/Install/Config.pm
+++ b/Proxmox/Install/Config.pm
@@ -43,10 +43,12 @@ my sub parse_kernel_cmdline {
 	}
     }
 
-    $cmdline =~ s/(?:BOOT_IMAGE|root|ramdisk_size|splash|vga)=\S+\s?//gi;
-    $cmdline =~ s/ro|rw|quiet|proxdebug|proxtui|nomodeset//gi;
+    my @filtered = grep {
+	$_ !~ m/^(BOOT_IMAGE|root|ramdisk_size|splash|vga)=\S+$/ &&
+	$_ !~ m/^(ro|rw|quiet|proxdebug|proxtui|nomodeset)$/
+    } split(/\s+/, $cmdline);
 
-    $cfg->{target_cmdline}= $cmdline;
+    $cfg->{target_cmdline} = join(' ', @filtered);
 
     return $cfg;
 }
-- 
2.45.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH installer v2 2/3] low level: config: filter out all installer-related kernel arguments
  2024-08-21 13:22 [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
  2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 1/3] low level: config: filter out kernel cmdline on word boundaries Christoph Heiss
@ 2024-08-21 13:23 ` Christoph Heiss
  2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 3/3] test: add test for kernel commandline parsing Christoph Heiss
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Christoph Heiss @ 2024-08-21 13:23 UTC (permalink / raw)
  To: pve-devel

For one, include the auto-installer arguments, which weren't filtered
out before. Secondely, include the aliases as introduced in [0].

[0] de7f779 ("unconfigured: accept more telling boot cmdline option names")

Reported-by: Friedrich Weber <f.weber@proxmox.com>
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
Changes v1 -> v2:
  * added parentheses around 'or'-expression
  * adapted to new filtering

 Proxmox/Install/Config.pm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Proxmox/Install/Config.pm b/Proxmox/Install/Config.pm
index 7378d86..607f0bf 100644
--- a/Proxmox/Install/Config.pm
+++ b/Proxmox/Install/Config.pm
@@ -45,7 +45,8 @@ my sub parse_kernel_cmdline {
 
     my @filtered = grep {
 	$_ !~ m/^(BOOT_IMAGE|root|ramdisk_size|splash|vga)=\S+$/ &&
-	$_ !~ m/^(ro|rw|quiet|proxdebug|proxtui|nomodeset)$/
+	$_ !~ m/^(ro|rw|quiet|nomodeset)$/ &&
+	$_ !~ m/^(prox(debug|tui|auto)|proxmox-\S+)$/
     } split(/\s+/, $cmdline);
 
     $cfg->{target_cmdline} = join(' ', @filtered);
-- 
2.45.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH installer v2 3/3] test: add test for kernel commandline parsing
  2024-08-21 13:22 [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
  2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 1/3] low level: config: filter out kernel cmdline on word boundaries Christoph Heiss
  2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 2/3] low level: config: filter out all installer-related kernel arguments Christoph Heiss
@ 2024-08-21 13:23 ` Christoph Heiss
  2024-09-25 14:01 ` [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Christoph Heiss @ 2024-08-21 13:23 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
Changes v1 -> v2:
  * new patch

 Proxmox/Install/Config.pm    |  2 +-
 test/Makefile                |  7 +++-
 test/parse-kernel-cmdline.pl | 62 ++++++++++++++++++++++++++++++++++++
 3 files changed, 69 insertions(+), 2 deletions(-)
 create mode 100755 test/parse-kernel-cmdline.pl

diff --git a/Proxmox/Install/Config.pm b/Proxmox/Install/Config.pm
index 607f0bf..df9be2e 100644
--- a/Proxmox/Install/Config.pm
+++ b/Proxmox/Install/Config.pm
@@ -11,7 +11,7 @@ use Proxmox::Log;
 use Proxmox::Install::ISOEnv;
 use Proxmox::Sys::Net;
 
-my sub parse_kernel_cmdline {
+sub parse_kernel_cmdline {
     my ($cfg) = @_;
 
     my $cmdline = Proxmox::Install::RunEnv::get('kernel_cmdline');
diff --git a/test/Makefile b/test/Makefile
index c473af8..70a05be 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -3,7 +3,8 @@ all:
 export PERLLIB=..
 
 .PHONY: check
-check: test-zfs-arc-max test-run-command test-parse-fqdn test-ui2-stdio test-zfs-get-pool-list
+check: test-zfs-arc-max test-run-command test-parse-fqdn test-ui2-stdio \
+       test-zfs-get-pool-list test-parse-kernel-cmdline
 
 .PHONY: test-zfs-arc-max
 test-zfs-arc-max:
@@ -24,3 +25,7 @@ test-ui2-stdio:
 .PHONY: test-zfs-get-pool-list
 test-zfs-get-pool-list:
 	./zfs-get-pool-list.pl
+
+.PHONY: test-parse-kernel-cmdline
+test-parse-kernel-cmdline:
+	./parse-kernel-cmdline.pl
diff --git a/test/parse-kernel-cmdline.pl b/test/parse-kernel-cmdline.pl
new file mode 100755
index 0000000..10a59a4
--- /dev/null
+++ b/test/parse-kernel-cmdline.pl
@@ -0,0 +1,62 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use Test::More;
+use Test::MockModule qw(strict);
+
+use Proxmox::Install::RunEnv;
+use Proxmox::Install::Config qw(parse_kernel_cmdline);
+
+my $proxmox_install_runenv = Test::MockModule->new('Proxmox::Install::RunEnv');
+my $proxmox_install_isoenv = Test::MockModule->new('Proxmox::Install::ISOEnv');
+
+$proxmox_install_isoenv->redefine(
+    get => sub {
+	my ($k) = @_;
+	return { product => 'pve' } if !defined($k);
+	die "iso environment key $k not mocked!\n";
+    },
+);
+
+my sub mock_kernel_cmdline {
+    my ($cmdline) = @_;
+
+    $proxmox_install_runenv->redefine(
+	get => sub {
+	    my ($k) = @_;
+	    return $cmdline if $k eq 'kernel_cmdline';
+	    die "iso environment key $k not mocked!\n";
+	},
+    );
+}
+
+sub is_parsed {
+    my ($cmdline, $expected) = @_;
+
+    mock_kernel_cmdline($cmdline);
+    my $cfg = Proxmox::Install::Config::parse_kernel_cmdline({});
+
+    is($cfg->{target_cmdline}, $expected,
+	"kernel cmdline matched excepted: $expected");
+}
+
+is_parsed(
+    'BOOT_IMAGE=/vmlinuz-6.8.12-1-pve root=/dev/mapper/pve-root ro quiet',
+    ''
+);
+
+is_parsed(
+    'BOOT_IMAGE=/vmlinuz-6.8.12-1-pve root=/dev/mapper/pve-root ro= quiet',
+    'ro='
+);
+
+is_parsed(
+    'a BOOT_IMAGE=/vmlinuz-6.8.12-1-pve b root=/dev/mapper/pve-root c ro d quiet e',
+    'a b c d e'
+);
+
+is_parsed('proxmox-foo foo=bar proxtui', 'foo=bar');
+
+done_testing();
-- 
2.45.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments
  2024-08-21 13:22 [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
                   ` (2 preceding siblings ...)
  2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 3/3] test: add test for kernel commandline parsing Christoph Heiss
@ 2024-09-25 14:01 ` Christoph Heiss
  2024-11-10 18:38 ` Thomas Lamprecht
  2024-11-11 11:08 ` Christoph Heiss
  5 siblings, 0 replies; 7+ messages in thread
From: Christoph Heiss @ 2024-09-25 14:01 UTC (permalink / raw)
  To: Proxmox VE development discussion

Ping, still applies on latest master.

On Wed, Aug 21, 2024 at 03:22:59PM GMT, Christoph Heiss wrote:
> Friedrich recently reported that when installing using the
> auto-installer, the kernel commandline does not get cleaned up properly.
>
> For building/testing on current master, [0] needs to be applied
> beforehand to fix a test failure.
>
> [0] https://lists.proxmox.com/pipermail/pve-devel/2024-July/064815.html

FWIW, this patch has been applied in the meantime [0] and is thus no
longer needed as a prerequisite.

[0] https://git.proxmox.com/?p=pve-installer.git;a=commitdiff;h=0c9a7003f

>
> history
> =======
>
> v1: https://lists.proxmox.com/pipermail/pve-devel/2024-August/065070.html
>
> Notable changes v1 -> v2:
>   * parse whole line by splitting and then filtering out individually
>   * add some tests
>
> git diffstat
> ============
>
> Christoph Heiss (3):
>   low level: config: filter out kernel cmdline on word boundaries
>   low level: config: filter out all installer-related kernel arguments
>   test: add test for kernel commandline parsing
>
>  Proxmox/Install/Config.pm    | 11 ++++---
>  test/Makefile                |  7 +++-
>  test/parse-kernel-cmdline.pl | 62 ++++++++++++++++++++++++++++++++++++
>  3 files changed, 75 insertions(+), 5 deletions(-)
>  create mode 100755 test/parse-kernel-cmdline.pl
>
> --
> 2.45.2
>
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
>


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments
  2024-08-21 13:22 [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
                   ` (3 preceding siblings ...)
  2024-09-25 14:01 ` [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
@ 2024-11-10 18:38 ` Thomas Lamprecht
  2024-11-11 11:08 ` Christoph Heiss
  5 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2024-11-10 18:38 UTC (permalink / raw)
  To: Proxmox VE development discussion, Christoph Heiss

Am 21.08.24 um 15:22 schrieb Christoph Heiss:
> Friedrich recently reported that when installing using the
> auto-installer, the kernel commandline does not get cleaned up properly.
> 
> For building/testing on current master, [0] needs to be applied
> beforehand to fix a test failure.
> 
> [0] https://lists.proxmox.com/pipermail/pve-devel/2024-July/064815.html
> 
> history
> =======
> 
> v1: https://lists.proxmox.com/pipermail/pve-devel/2024-August/065070.html
> 
> Notable changes v1 -> v2:
>   * parse whole line by splitting and then filtering out individually
>   * add some tests
> 
> git diffstat
> ============
> 
> Christoph Heiss (3):
>   low level: config: filter out kernel cmdline on word boundaries
>   low level: config: filter out all installer-related kernel arguments
>   test: add test for kernel commandline parsing
> 
>  Proxmox/Install/Config.pm    | 11 ++++---
>  test/Makefile                |  7 +++-
>  test/parse-kernel-cmdline.pl | 62 ++++++++++++++++++++++++++++++++++++
>  3 files changed, 75 insertions(+), 5 deletions(-)
>  create mode 100755 test/parse-kernel-cmdline.pl
> 


can you please rebase this and also check if it adheres to the recent slight
change in not filtering out nomodeset anymore?

https://git.proxmox.com/?p=pve-installer.git;a=commitdiff;h=49219542da0e2a5e52dc83455466868cd0d5b25d


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments
  2024-08-21 13:22 [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
                   ` (4 preceding siblings ...)
  2024-11-10 18:38 ` Thomas Lamprecht
@ 2024-11-11 11:08 ` Christoph Heiss
  5 siblings, 0 replies; 7+ messages in thread
From: Christoph Heiss @ 2024-11-11 11:08 UTC (permalink / raw)
  Cc: Proxmox VE development discussion

v3 out: https://lore.proxmox.com/pve-devel/20241111110523.261482-1-c.heiss@proxmox.com/

On Wed, Aug 21, 2024 at 03:22:59PM +0200, Christoph Heiss wrote:
> Friedrich recently reported that when installing using the
> auto-installer, the kernel commandline does not get cleaned up properly.
>
> For building/testing on current master, [0] needs to be applied
> beforehand to fix a test failure.
>
> [0] https://lists.proxmox.com/pipermail/pve-devel/2024-July/064815.html
>
> history
> =======
>
> v1: https://lists.proxmox.com/pipermail/pve-devel/2024-August/065070.html
>
> Notable changes v1 -> v2:
>   * parse whole line by splitting and then filtering out individually
>   * add some tests
>
> git diffstat
> ============
>
> Christoph Heiss (3):
>   low level: config: filter out kernel cmdline on word boundaries
>   low level: config: filter out all installer-related kernel arguments
>   test: add test for kernel commandline parsing
>
>  Proxmox/Install/Config.pm    | 11 ++++---
>  test/Makefile                |  7 +++-
>  test/parse-kernel-cmdline.pl | 62 ++++++++++++++++++++++++++++++++++++
>  3 files changed, 75 insertions(+), 5 deletions(-)
>  create mode 100755 test/parse-kernel-cmdline.pl
>
> --
> 2.45.2
>
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
>


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-11-11 11:09 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-21 13:22 [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 1/3] low level: config: filter out kernel cmdline on word boundaries Christoph Heiss
2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 2/3] low level: config: filter out all installer-related kernel arguments Christoph Heiss
2024-08-21 13:23 ` [pve-devel] [PATCH installer v2 3/3] test: add test for kernel commandline parsing Christoph Heiss
2024-09-25 14:01 ` [pve-devel] [PATCH installer v2 0/3] properly filter out all installer-related kernel arguments Christoph Heiss
2024-11-10 18:38 ` Thomas Lamprecht
2024-11-11 11:08 ` Christoph Heiss

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal