[pve-devel] [PATCH container v3 05/13] config: add entrypoint parameter

Filip Schauer f.schauer at proxmox.com
Wed Jul 9 14:34:22 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 45c5cef..c3d0037 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -582,7 +582,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 ffedcb9..37ff8e1 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -811,6 +811,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 7bdb8b9..fb370cf 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',
@@ -1844,6 +1850,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