[pve-devel] [PATCH container v4 08/15] config: add entrypoint parameter

Filip Schauer f.schauer at proxmox.com
Mon Sep 8 17:02:11 CEST 2025


Signed-off-by: Filip Schauer <f.schauer at proxmox.com>
---
Changed since v2:
* rebase onto newest master (5a8b3f962f16) and re-format with
  proxmox-perltidy

 src/PVE/API2/LXC.pm   |  2 +-
 src/PVE/LXC.pm        |  2 ++
 src/PVE/LXC/Config.pm | 12 ++++++++++++
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index bc87bc3..55f5b7a 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -586,7 +586,7 @@ __PACKAGE__->register_method({
                                 );
                             }
                             if ($init_cmd_str ne '/sbin/init') {
-                                push @{ $conf->{lxc} }, ['lxc.init.cmd', $init_cmd_str];
+                                $conf->{entrypoint} = $init_cmd_str;
 
                                 # An entrypoint other than /sbin/init breaks the tty console mode.
                                 # This is fixed by setting cmode: console
diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index a445a85..5eaa57c 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -862,6 +862,8 @@ sub update_lxc_config {
 
     $raw .= "lxc.rootfs.path = $dir/rootfs\n";
 
+    $raw .= "lxc.init.cmd = $conf->{entrypoint}\n" if defined($conf->{entrypoint});
+
     foreach my $k (sort keys %$conf) {
         next if $k !~ m/^net(\d+)$/;
         my $ind = $1;
diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
index 1038fa7..56cb01c 100644
--- a/src/PVE/LXC/Config.pm
+++ b/src/PVE/LXC/Config.pm
@@ -638,6 +638,12 @@ my $confdesc = {
         enum => ['shell', 'console', 'tty'],
         default => 'tty',
     },
+    entrypoint => {
+        optional => 1,
+        type => 'string',
+        description => "Absolute path from container rootfs to the binary to use as init.",
+        default => '/sbin/init',
+    },
     protection => {
         optional => 1,
         type => 'boolean',
@@ -1861,6 +1867,12 @@ sub get_cmode {
     return $conf->{cmode} // $confdesc->{cmode}->{default};
 }
 
+sub get_entrypoint {
+    my ($class, $conf) = @_;
+
+    return $conf->{entrypoint} // $confdesc->{entrypoint}->{default};
+}
+
 sub valid_volume_keys {
     my ($class, $reverse) = @_;
 
-- 
2.47.2





More information about the pve-devel mailing list