]>
git.proxmox.com Git - pve-container.git/blob - src/lxc-pve-autodev-hook
12 PVE
::LXC
::Tools
::lxc_hook
('autodev', 'lxc', sub {
13 my ($vmid, $vars, undef, undef) = @_;
15 my $root = $vars->{ROOTFS_MOUNT
};
17 PVE
::LXC
::Tools
::for_current_devices
($vmid, sub {
18 my ($type, $major, $minor, $dev) = @_;
20 my $rel_devpath = "/dev/$dev";
21 my $rel_dir = dirname
($rel_devpath);
22 File
::Path
::mkpath
("$root/$rel_dir");
24 PVE
::Tools
::run_command
(['mknod', '-m', '666', "$root/dev/$dev",
25 $type, $major, $minor]);
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");
31 symlink("/dev/$dev", "$root/dev/mapper/$mapped_name");
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";
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";