]> git.proxmox.com Git - pve-container.git/blame - src/lxc-pve-autodev-hook
add setup_systemd_preset helper, disable networkd for debian 12+
[pve-container.git] / src / lxc-pve-autodev-hook
CommitLineData
50df544c
WB
1#!/usr/bin/perl
2
50df544c
WB
3use strict;
4use warnings;
5
55d14e39
WB
6use File::Path;
7use File::Basename;
8
0a49c44e 9use PVE::LXC::Tools;
50df544c
WB
10use PVE::Tools;
11
0a49c44e
WB
12PVE::LXC::Tools::lxc_hook('autodev', 'lxc', sub {
13 my ($vmid, $vars, undef, undef) = @_;
50df544c 14
0a49c44e 15 my $root = $vars->{ROOTFS_MOUNT};
50df544c 16
e84241f7
WB
17 PVE::LXC::Tools::for_current_devices($vmid, sub {
18 my ($type, $major, $minor, $dev) = @_;
19
20 my $rel_devpath = "/dev/$dev";
21 my $rel_dir = dirname($rel_devpath);
22 File::Path::mkpath("$root/$rel_dir");
23
24 PVE::Tools::run_command(['mknod', '-m', '666', "$root/dev/$dev",
25 $type, $major, $minor]);
26
27 if ($dev =~ /^dm-\d+$/) {
28 File::Path::mkpath("$root/dev/mapper");
29 my $mapped_name = PVE::Tools::file_get_contents("/sys/block/$dev/dm/name");
30 chomp $mapped_name;
31 symlink("/dev/$dev", "$root/dev/mapper/$mapped_name");
32 }
33
34 my $cgbase = "/sys/fs/cgroup/devices/lxc/$vmid";
35 my $limitpath = "$cgbase/devices.allow";
36 my $nspath = "$cgbase/ns/devices.allow";
37 if (!PVE::LXC::Tools::cgroup_do_write($limitpath, "$type $major:$minor rwm")) {
38 warn "failed to allow access to device $dev ($major:$minor)\n";
39 }
40 if (!PVE::LXC::Tools::cgroup_do_write($nspath, "$type $major:$minor rwm")) {
41 warn "failed to allow access to device $dev ($major:$minor) inside the namespace\n";
42 }
43 });
0a49c44e 44});