Unprivileged LXC behavior changed with 8.1.10 - Failed to mount "/dev/loop8"

en4ble

Member
Feb 24, 2023
69
5
8
Hello,

It seems like something changed on 8.1.10 that not sure how to tackle. Previously on earlier versions when configuring Unprivileged LXC environment would do the followings:
1)Modify grub /etc/default/grub with the following addition:
GRUB_CMDLINE_LINUX_DEFAULT="max_loop=255"

2)Update grub which throws this error now:
update-grub
Generating grub configuration file ...
W: This system is booted via proxmox-boot-tool:
W: Executing 'update-grub' directly does not update the correct configs!
W: Running: 'proxmox-boot-tool refresh'

Copying and configuring kernels on /dev/disk/by-uuid/C407-5BB2
Copying kernel and creating boot-entry for 6.5.11-8-pve
Copying kernel and creating boot-entry for 6.5.13-3-pve
Copying and configuring kernels on /dev/disk/by-uuid/C408-62AC
Copying kernel and creating boot-entry for 6.5.11-8-pve
Copying kernel and creating boot-entry for 6.5.13-3-pve
Found linux image: /boot/vmlinuz-6.5.13-3-pve
Found initrd image: /boot/initrd.img-6.5.13-3-pve
/usr/sbin/grub-probe: error: unknown filesystem.
Found linux image: /boot/vmlinuz-6.5.11-8-pve
Found initrd image: /boot/initrd.img-6.5.11-8-pve
/usr/sbin/grub-probe: error: unknown filesystem.
Adding boot menu entry for UEFI Firmware Settings ...
done


Starting the LXC containers with an error:
Failed to mount "/dev/loop8" onto "/usr/lib/x86_64-linux-gnu/lxc/rootfs/dev/loop8"

Any advise on what should like look into?!
1712336469598.png

LXC Container Config:
Code:
arch: amd64
cores: 4
hostname: template
memory: 7178
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=BC:24:11:38:02:2F,ip=dhcp,type=veth
ostype: ubuntu
rootfs: hdd1:vm-9999-disk-0,size=225G
swap: 0
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.cgroup2.devices.allow: b 7:* rwm
lxc.cgroup2.devices.allow: c 10:237 rwm
lxc.mount.entry: /dev/loop0 dev/loop0 none bind,create=file 0 0
lxc.mount.entry: /dev/loop1 dev/loop1 none bind,create=file 0 0
lxc.mount.entry: /dev/loop2 dev/loop2 none bind,create=file 0 0
lxc.mount.entry: /dev/loop3 dev/loop3 none bind,create=file 0 0
lxc.mount.entry: /dev/loop4 dev/loop4 none bind,create=file 0 0
lxc.mount.entry: /dev/loop5 dev/loop5 none bind,create=file 0 0
lxc.mount.entry: /dev/loop6 dev/loop6 none bind,create=file 0 0
lxc.mount.entry: /dev/loop7 dev/loop7 none bind,create=file 0 0
lxc.mount.entry: /dev/loop8 dev/loop8 none bind,create=file 0 0
lxc.mount.entry: /dev/loop9 dev/loop9 none bind,create=file 0 0
lxc.mount.entry: /dev/loop10 dev/loop10 none bind,create=file 0 0
lxc.mount.entry: /dev/loop11 dev/loop11 none bind,create=file 0 0
lxc.mount.entry: /dev/loop12 dev/loop12 none bind,create=file 0 0
lxc.mount.entry: /dev/loop13 dev/loop13 none bind,create=file 0 0
lxc.mount.entry: /dev/loop14 dev/loop14 none bind,create=file 0 0
lxc.mount.entry: /dev/loop15 dev/loop15 none bind,create=file 0 0
lxc.mount.entry: /dev/loop16 dev/loop16 none bind,create=file 0 0
lxc.mount.entry: /dev/loop17 dev/loop17 none bind,create=file 0 0
lxc.mount.entry: /dev/loop18 dev/loop18 none bind,create=file 0 0
lxc.mount.entry: /dev/loop19 dev/loop19 none bind,create=file 0 0
lxc.mount.entry: /dev/loop20 dev/loop20 none bind,create=file 0 0
lxc.mount.entry: /dev/loop21 dev/loop21 none bind,create=file 0 0
lxc.mount.entry: /dev/loop22 dev/loop22 none bind,create=file 0 0
lxc.mount.entry: /dev/loop23 dev/loop23 none bind,create=file 0 0
lxc.mount.entry: /dev/loop24 dev/loop24 none bind,create=file 0 0
lxc.mount.entry: /dev/loop25 dev/loop25 none bind,create=file 0 0
lxc.mount.entry: /dev/loop26 dev/loop26 none bind,create=file 0 0
lxc.mount.entry: /dev/loop27 dev/loop27 none bind,create=file 0 0
lxc.mount.entry: /dev/loop28 dev/loop28 none bind,create=file 0 0
lxc.mount.entry: /dev/loop29 dev/loop29 none bind,create=file 0 0
lxc.mount.entry: /dev/loop30 dev/loop30 none bind,create=file 0 0
lxc.mount.entry: /dev/loop31 dev/loop31 none bind,create=file 0 0
lxc.mount.entry: /dev/loop32 dev/loop32 none bind,create=file 0 0
lxc.mount.entry: /dev/loop33 dev/loop33 none bind,create=file 0 0
lxc.mount.entry: /dev/loop34 dev/loop34 none bind,create=file 0 0
lxc.mount.entry: /dev/loop35 dev/loop35 none bind,create=file 0 0
lxc.mount.entry: /dev/loop36 dev/loop36 none bind,create=file 0 0
lxc.mount.entry: /dev/loop37 dev/loop37 none bind,create=file 0 0
lxc.mount.entry: /dev/loop38 dev/loop38 none bind,create=file 0 0
lxc.mount.entry: /dev/loop39 dev/loop39 none bind,create=file 0 0
lxc.mount.entry: /dev/loop40 dev/loop40 none bind,create=file 0 0
lxc.mount.entry: /dev/loop41 dev/loop41 none bind,create=file 0 0
lxc.mount.entry: /dev/loop42 dev/loop42 none bind,create=file 0 0
lxc.mount.entry: /dev/loop43 dev/loop43 none bind,create=file 0 0
lxc.mount.entry: /dev/loop44 dev/loop44 none bind,create=file 0 0
lxc.mount.entry: /dev/loop45 dev/loop45 none bind,create=file 0 0
lxc.mount.entry: /dev/loop46 dev/loop46 none bind,create=file 0 0
lxc.mount.entry: /dev/loop47 dev/loop47 none bind,create=file 0 0
lxc.mount.entry: /dev/loop48 dev/loop48 none bind,create=file 0 0
lxc.mount.entry: /dev/loop49 dev/loop49 none bind,create=file 0 0
lxc.mount.entry: /dev/loop50 dev/loop50 none bind,create=file 0 0
lxc.mount.entry: /dev/loop51 dev/loop51 none bind,create=file 0 0
lxc.mount.entry: /dev/loop52 dev/loop52 none bind,create=file 0 0
lxc.mount.entry: /dev/loop53 dev/loop53 none bind,create=file 0 0
lxc.mount.entry: /dev/loop54 dev/loop54 none bind,create=file 0 0
lxc.mount.entry: /dev/loop55 dev/loop55 none bind,create=file 0 0
lxc.mount.entry: /dev/loop56 dev/loop56 none bind,create=file 0 0
lxc.mount.entry: /dev/loop57 dev/loop57 none bind,create=file 0 0
lxc.mount.entry: /dev/loop58 dev/loop58 none bind,create=file 0 0
lxc.mount.entry: /dev/loop59 dev/loop59 none bind,create=file 0 0
lxc.mount.entry: /dev/loop60 dev/loop60 none bind,create=file 0 0
lxc.mount.entry: /dev/loop61 dev/loop61 none bind,create=file 0 0
lxc.mount.entry: /dev/loop62 dev/loop62 none bind,create=file 0 0
lxc.mount.entry: /dev/loop63 dev/loop63 none bind,create=file 0 0
lxc.mount.entry: /dev/loop64 dev/loop64 none bind,create=file 0 0
lxc.mount.entry: /dev/loop65 dev/loop65 none bind,create=file 0 0
lxc.mount.entry: /dev/loop66 dev/loop66 none bind,create=file 0 0
lxc.mount.entry: /dev/loop67 dev/loop67 none bind,create=file 0 0
lxc.mount.entry: /dev/loop68 dev/loop68 none bind,create=file 0 0
lxc.mount.entry: /dev/loop69 dev/loop69 none bind,create=file 0 0
lxc.mount.entry: /dev/loop70 dev/loop70 none bind,create=file 0 0
lxc.mount.entry: /dev/loop71 dev/loop71 none bind,create=file 0 0
lxc.mount.entry: /dev/loop72 dev/loop72 none bind,create=file 0 0
lxc.mount.entry: /dev/loop73 dev/loop73 none bind,create=file 0 0
lxc.mount.entry: /dev/loop74 dev/loop74 none bind,create=file 0 0
lxc.mount.entry: /dev/loop75 dev/loop75 none bind,create=file 0 0
lxc.mount.entry: /dev/loop76 dev/loop76 none bind,create=file 0 0
lxc.mount.entry: /dev/loop77 dev/loop77 none bind,create=file 0 0
lxc.mount.entry: /dev/loop78 dev/loop78 none bind,create=file 0 0
lxc.mount.entry: /dev/loop79 dev/loop79 none bind,create=file 0 0
lxc.mount.entry: /dev/loop80 dev/loop80 none bind,create=file 0 0
lxc.mount.entry: /dev/loop81 dev/loop81 none bind,create=file 0 0
lxc.mount.entry: /dev/loop82 dev/loop82 none bind,create=file 0 0
lxc.mount.entry: /dev/loop83 dev/loop83 none bind,create=file 0 0
lxc.mount.entry: /dev/loop84 dev/loop84 none bind,create=file 0 0
lxc.mount.entry: /dev/loop85 dev/loop85 none bind,create=file 0 0
lxc.mount.entry: /dev/loop86 dev/loop86 none bind,create=file 0 0
lxc.mount.entry: /dev/loop87 dev/loop87 none bind,create=file 0 0
lxc.mount.entry: /dev/loop88 dev/loop88 none bind,create=file 0 0
lxc.mount.entry: /dev/loop89 dev/loop89 none bind,create=file 0 0
lxc.mount.entry: /dev/loop90 dev/loop90 none bind,create=file 0 0
lxc.mount.entry: /dev/loop91 dev/loop91 none bind,create=file 0 0
lxc.mount.entry: /dev/loop92 dev/loop92 none bind,create=file 0 0
lxc.mount.entry: /dev/loop93 dev/loop93 none bind,create=file 0 0
lxc.mount.entry: /dev/loop94 dev/loop94 none bind,create=file 0 0
lxc.mount.entry: /dev/loop95 dev/loop95 none bind,create=file 0 0
lxc.mount.entry: /dev/loop96 dev/loop96 none bind,create=file 0 0
lxc.mount.entry: /dev/loop97 dev/loop97 none bind,create=file 0 0
lxc.mount.entry: /dev/loop98 dev/loop98 none bind,create=file 0 0
lxc.mount.entry: /dev/loop99 dev/loop99 none bind,create=file 0 0
lxc.mount.entry: /dev/loop-control dev/loop-control none bind,create=file 0 0
 
Only difference with this setup is that OS was installed with raid1 ZFS so I found this:
Proxmox VE currently uses one of two bootloaders depending on the disk setupselected in the installer.

For EFI Systems installed with ZFS as the root filesystem systemd-boot isused, unless Secure Boot is enabled. All other deployments use the standardGRUB bootloader (this usually also applies to systems which are installed ontop of Debian).


How could I accomplish above unprivileged using EFI then?!

We need the unprivileged on lxc because of permissions to be able to mount/dismount something that application is doing i.e:
Code:
truncate --size 100M my.img

mkfs.ext4 -F my.img

sudo mount -o loop,ro my.img /mnt
 
Last edited:

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!