Making root volume live in the lvm thin pool ?

shodan

Active Member
Sep 1, 2022
232
63
33
Hi,

I am using a space constrained system.
Fresh install of proxmox uses 70GB, thick provisioned and it's difficult to reclaim this space for use by the thin pool while also not risking to run out.

So I think the solution would be that root should be a thin volume.

However, grub can't access a thin volume, as far as I can tell there are no linux bootloader that can boot thin volumes.

But I think that MOST of the root filesystem, can still live in the thin pool, just not the contents of /boot ?

So far I've attempted this

booted to the proxmox installer, hit ctrl+alt+F3

Code:
# enable ssh with root login
apt update ; apt install -y openssh-server ; echo "permitrootlogin yes" >> /etc/ssh/sshd_config ; /etc/init.d/ssh restart ; passwd root
# mount remote folder
mount //192.168.1.3/guest /mnt/ -o username=nobody,password=
# check sha256 hash
sha256sum /dev/pve/root
# create a file containing all of the root volume
xz -9e -T0 < /dev/pve/root > /mnt/proxmox-root-server1.lan.img.xz
# get exact byte size of root volume
blockdev --getsize64 /dev/pve/root
# remove root volume
lvremove -y /dev/pve/root
# re-create root volume
lvcreate --size 74570530816b -n root pve
# restore contents of the root volume
xz -dc /mnt/proxmox.root.lvm.2025-12-14.img.xz | dd of=/dev/pve/root bs=16M status=progress
# check that partition UUID still good
blkid /dev/pve/root
# check filesystem hash
sha256sum /dev/pve/root
# check filesystem
e2fsck -f /dev/pve/root

Rebooted and the system still works without issues

So next step, I tried the same thing again, but I created the root volume in the thin pool instead

Code:
lvcreate -V 74570530816b -T pve/data -n root

Now grub doesn't boot, confirm that it's not going to be this easy !

Now I am going to investigate just HOW MUCH of the root partition really has to be thick provisioned to boot

In my next attempt, I will put only the contents of the /boot folder into a thick volume and try to boot that in a way that does not break anything else in proxmox.
In particular I want to avoid breaking kernel update and the commands like

Code:
update-initramfs -u
update-grub

Which do hocus-pocus things to mess with kernel modules and graphic cards drivers and if I can avoid having to learn that I would die happier ! Which is probably not going to happen but I'm going to try anyway
 
Continuing attempt to make root mostly a thin volume

Code:
root@proxmox:/# lvcreate -L 512M -n boot pve
  Logical volume "boot" created.
  WARNING: This metadata update is NOT backed up.
root@proxmox:/# mkfs.ext4 /dev/pve/boot
mke2fs 1.47.2 (1-Jan-2025)
Discarding device blocks: done
Creating filesystem with 131072 4k blocks and 32768 inodes
Filesystem UUID: 2cd8c128-1d26-4861-ba84-1b59f54867c6
Superblock backups stored on blocks:
        32768, 98304

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

root@proxmox:/# mkdir /mnt/boot
root@proxmox:/# mkdir /mnt/root
root@proxmox:/# mount /dev/pve/root /mnt/root
root@proxmox:/# mount /dev/pve/boot /mnt/boot
root@proxmox:/# cd /mnt/boot/
root@proxmox:/mnt/boot# cp -a /mnt/root/boot/* ./
root@proxmox:/mnt/boot# nano /mnt/root/etc/fstab
root@proxmox:/mnt/boot# cat /mnt/root/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/boot /boot ext4 defaults 0 2
UUID=13F0-E261 /boot/efi vfat defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
root@proxmox:/mnt/boot# ls -lsh
total 217M
8.8M -rw-r--r-- 1 root root 8.8M Oct 21 11:55 System.map-6.17.2-1-pve
8.8M -rw-r--r-- 1 root root 8.8M Nov 26 12:33 System.map-6.17.2-2-pve
296K -rw-r--r-- 1 root root 296K Oct 21 11:55 config-6.17.2-1-pve
296K -rw-r--r-- 1 root root 296K Nov 26 12:33 config-6.17.2-2-pve
4.0K drwxr-xr-x 2 root root 4.0K Dec  8 23:37 efi
4.0K drwxr-xr-x 6 root root 4.0K Dec  8 23:51 grub
 85M -rw-r--r-- 1 root root  85M Dec  8 23:50 initrd.img-6.17.2-1-pve
 85M -rw-r--r-- 1 root root  85M Dec  8 23:51 initrd.img-6.17.2-2-pve
 16K drwx------ 2 root root  16K Dec 15 04:50 lost+found
148K -rw-r--r-- 1 root root 148K Nov 17  2024 memtest86+ia32.bin
152K -rw-r--r-- 1 root root 149K Nov 17  2024 memtest86+ia32.efi
156K -rw-r--r-- 1 root root 153K Nov 17  2024 memtest86+x64.bin
156K -rw-r--r-- 1 root root 154K Nov 17  2024 memtest86+x64.efi
4.0K drwxr-xr-x 2 root root 4.0K Dec  8 23:51 pve
 15M -rw-r--r-- 1 root root  15M Oct 21 11:55 vmlinuz-6.17.2-1-pve
 15M -rw-r--r-- 1 root root  15M Nov 26 12:33 vmlinuz-6.17.2-2-pve
root@proxmox:/mnt/boot#

So I kept the thin volume, but just created a new thick volume called boot

Now, I suspect that grub is still setup to boot from pve-root or (lvm/pve-root) or whatever, in some file somewhere, so I need to find that

And after some looking around I think the file

Code:
/etc/grub.d/10_linux

Is going to be the one that needs to be modified, maybe ??

After more looking around

Code:
root@proxmox:/mnt/boot#  grep 'set root' /mnt/boot/grub/grub.cfg


Something in those commands

Code:
update-initramfs -u -k all
update-grub
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck

Will find the device that contains /boot and apply the correct identifiers to id

On my system it's, for root, something like

Code:
root@proxmox:/mnt/boot#  grep 'set root' /mnt/boot/grub/grub.cfg
set root='lvmid/Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH/k9gKak-GH6p-y421-YJuZ-gkMz-hxDV-6WTVGP'

So apparently, running the 3 above commands, after changing fstab, all I might need to do is, re-mount my full filesystem, chroot into it and run the 3 commands

So trying that

Code:
root@proxmox:/mnt/boot# cd /mnt/root
root@proxmox:/mnt/root# mount --bind /dev dev
root@proxmox:/mnt/root# mount --bind /proc proc
root@proxmox:/mnt/root# mount --bind /sys sys
root@proxmox:/mnt/root# mount --bind /run run
root@proxmox:/mnt/root# mkdir /mnt/efi
root@proxmox:/mnt/root# mount /dev/sda2  /mnt/efi
root@proxmox:/mnt/root# ls /mnt/efi
EFI
root@proxmox:/mnt/root# mount --bind /mnt/efi /mnt/root/boot/efi
root@proxmox:/mnt/root# chroot /mnt/root
root@proxmox:/# update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-6.17.2-2-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
update-initramfs: Generating /boot/initrd.img-6.17.2-1-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
root@proxmox:/# ls  /boot/efi/
EFI
root@proxmox:/# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck
Installing for x86_64-efi platform.
grub-install.real: warning: EFI variables cannot be set on this system.
grub-install.real: warning: You will have to complete the GRUB setup manually.
Installation finished. No error reported.
root@proxmox:/#
 
Unfortunately, that did not work apparently,

Here is what booting looks like

1765777625185.jpeg

1765777657241.jpeg
1765777684108.jpeg



So I rebooted into the installed, and chrooted again into the system


Code:
root@proxmox:/# mkdir /mnt/root
root@proxmox:/# mkdir /mnt/boot
root@proxmox:/# mkdir /mnt/efi
root@proxmox:/# mount /dev/pve/boot /mnt/boot
root@proxmox:/# mount /dev/pve/root /mnt/root
root@proxmox:/# mount /dev/sda2 /mnt/efi/
root@proxmox:/# mount --bind /dev /mnt/root/dev
root@proxmox:/# mount --bind /proc /mnt/root/proc
root@proxmox:/# mount --bind /sys /mnt/root/sys
root@proxmox:/# mount --bind /run /mnt/root/run
root@proxmox:/# mount --bind /mnt/boot /mnt/root/boot/
root@proxmox:/# mount --bind /mnt/efi /mnt/root/boot/efi/
root@proxmox:/# chroot /mnt/root
root@proxmox:/# cat /boot/grub/grub.cfg | grep "set root"
set root='lvmid/Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH/k9gKak-GH6p-y421-YJuZ-gkMz-hxDV-6WTVGP'
        set root='lvmid/Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH/k9gKak-GH6p-y421-YJuZ-gkMz-hxDV-6WTVGP'


So the file /boot/grub/grub.cfg did not get updated because the LVM UUID are still the old ones from the thick root

Code:
root@proxmox:/# lvdisplay pve/root
  --- Logical volume ---
  LV Path                /dev/pve/root
  LV Name                root
  VG Name                pve
  LV UUID                AC7dei-Plz5-Iqvb-LRaA-DKu7-XxBp-fD6Hgc
  LV Write Access        read/write
  LV Creation host, time proxmox, 2025-12-14 22:27:41 -0500
  LV Pool name           data
  LV Status              available
  # open                 1
  LV Size                <69.45 GiB
  Mapped size            100.00%
  Current LE             17779
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:5

root@proxmox:/# vgdisplay pve
  --- Volume group ---
  VG Name               pve
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  13
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               237.47 GiB
  PE Size               4.00 MiB
  Total PE              60793
  Alloc PE / Size       39045 / <152.52 GiB
  Free  PE / Size       21748 / 84.95 GiB
  VG UUID               Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH

root@proxmox:/# lvdisplay pve/boot
  --- Logical volume ---
  LV Path                /dev/pve/boot
  LV Name                boot
  VG Name                pve
  LV UUID                TdTMmm-i2fV-tecE-YXNJ-JttD-SxfA-4q4tL3
  LV Write Access        read/write
  LV Creation host, time proxmox, 2025-12-14 23:50:03 -0500
  LV Status              available
  # open                 1
  LV Size                512.00 MiB
  Current LE             128
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:6

root@proxmox:/#

So I think, "set root" should point to
Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH/TdTMmm-i2fV-tecE-YXNJ-JttD-SxfA-4q4tL3

So since the automatic tool didn't work, I'll try modifying the file /boot/grub/grub.cfg manually

As a last ditch attempt after a day of this I ask the LLM

Code:
give me the command to change, in the file /boot/grub/grub.cfg
Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH/k9gKak-GH6p-y421-YJuZ-gkMz-hxDV-6WTVGP
into
Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH/TdTMmm-i2fV-tecE-YXNJ-JttD-SxfA-4q4tL3

result


Code:
root@proxmox:/# cat /boot/grub/grub.cfg | grep "set root"
set root='lvmid/       [more results omitted]
root@proxmox:/# sed -i \
's|Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH/k9gKak-GH6p-y421-YJuZ-gkMz-hxDV-6WTVGP|Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH/TdTMmm-i2fV-tecE-YXNJ-JttD-SxfA-4q4tL3|g' \
/boot/grub/grub.cfg
root@proxmox:/# cat /boot/grub/grub.cfg | grep "set root"
set root='lvmid/Sccbk2-bTCA-fkwi-45dK-Bxfe-T5yi-zM50yH/TdTMmm-i2fV-tecE-YXNJ-JttD-SxfA-4q4tL3'
       [more results omitted]
root@proxmox:/#
 
Can grub boot ZFS stores but not lvm thin pools ?
How does that work ?

But for my purpose, I have to make it work with LVM2 so it's not an option.

Thanks, I didn't know there was a variable to change the allocated space, but if possible I would like to have the needed space allocated as needed, rather than reserve an amount of space that would be difficult to increase later on. Putting root in the thin pool makes a lot more sense to me.
 
Last edited:
I kept cracking at it, I think I have a working solution

As far as I can tell, everything works, but I did not test extensively

/boot is now a small thick LVM volume
pve-root is now a thin volume in the data (local-lvm) thin pool that uses about 3.8G
The data thin pool has been grown to use all remaining space

Here is the commands that I used

Code:
apt update ; apt install openssh-server -y ; echo "permitrootlogin yes" >> /etc/ssh/sshd_config ; printf "%s\n" "root:qwerty" | chpasswd ; /etc/init.d/ssh restart

apt install xz-utils -y
mkdir -p /mnt/guest
mount -t cifs //192.168.1.212/guest /mnt/guest -o username=nobody,password=


blkid /dev/pve/root
blockdev --getsize64 /dev/pve/root
sha256sum /dev/pve/root > /mnt/guest/proxmox.root.lvm.2025-12-15.img.xz.sha256
#dd if=/dev/pve/root bs=16M | xz -T0 -c > /mnt/guest/proxmox.root.lvm.2025-12-15.img.xz
dd if=/dev/pve/root bs=16M status=progress | xz -T0 -c > /mnt/guest/proxmox.root.lvm.2025-12-15.img.xz


lvremove -y /dev/pve/root

#lvcreate --size 74570530816b -n root pve
lvcreate -V 74570530816b -T pve/data -n root

xz -dc /mnt/guest/proxmox.root.lvm.2025-12-15.img.xz | dd of=/dev/pve/root bs=16M status=progress
blkid /dev/pve/root
#tune2fs /dev/pve/root -U 535ec190-5e59-4bdd-b1be-cb52428809e8
sha256sum /dev/pve/root
e2fsck -f /dev/pve/root

lvcreate -L 512M -n boot pve
mkfs.ext4 /dev/pve/boot


mkdir /mnt/root
mkdir /mnt/boot
mkdir /mnt/efi
mount /dev/pve/boot /mnt/boot
mount /dev/pve/root /mnt/root
mount /dev/sda2 /mnt/efi/

mv /mnt/root/boot/* /mnt/boot/
echo "/dev/pve/boot /boot ext4 defaults 0 2" >> /mnt/root/etc/fstab

mount --bind /dev /mnt/root/dev
mount --bind /proc /mnt/root/proc
mount --bind /sys /mnt/root/sys
mount --bind /run /mnt/root/run
mount --bind /mnt/boot /mnt/root/boot/
mount --bind /mnt/efi /mnt/root/boot/efi/
chroot /mnt/root
mount -t efivarfs efivarfs /sys/firmware/efi/efivars

#grub-mkconfig -o /boot/grub/grub.cfg
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck
update-initramfs -u -k all
update-grub


ls -lh /boot/vmlinuz-*
ls -lh /boot/initrd.img-*
vgdisplay pve | grep 'UUID'
lvdisplay pve/boot | grep 'UUID'
grep "set root=" /boot/grub/grub.cfg

grep -A17 "menuentry 'Proxmox VE GNU/Linux'" /boot/grub/grub.cfg
lvs -a -o lv_name,lv_size,origin,data_percent,lv_attr
fstrim -v /
lvs -a -o lv_name,lv_size,origin,data_percent,lv_attr
lvextend -l +100%FREE /dev/pve/data
exit
umount -R /mnt/root
umount /mnt/efi
umount /mnt/boot
umount /mnt/guest

And here is the console output of running those commands

Code:
apt update ; apt install openssh-server -y ; echo "permitrootlogin yes" >> /etc/ssh/sshd_config ; printf "%s\n" "root:qwerty" | chpasswd ; /etc/init.d/ssh restart
[output not captured]
root@proxmox:/# mkdir -p /mnt/guest
mount -t cifs //192.168.1.212/guest /mnt/guest -o username=nobody,password=
root@proxmox:/# apt install xz-utils -y
Installing:
  xz-utils

Summary:
  Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 5
  Download size: 660 kB
  Space needed: 1458 kB / 3909 MB available

Get:1 http://deb.debian.org/debian trixie/main amd64 xz-utils amd64 5.8.1-1 [660 kB]
Fetched 660 kB in 0s (15.5 MB/s)
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 79, <STDIN> line 1.)
debconf: falling back to frontend: Readline
Selecting previously unselected package xz-utils.
(Reading database ... 30635 files and directories currently installed.)
Preparing to unpack .../xz-utils_5.8.1-1_amd64.deb ...
Unpacking xz-utils (5.8.1-1) ...
Setting up xz-utils (5.8.1-1) ...
update-alternatives: using /usr/bin/xz to provide /usr/bin/lzma (lzma) in auto mode
Processing triggers for man-db (2.13.1-1) ...
root@proxmox:/# blkid /dev/pve/root
/dev/pve/root: UUID="535ec190-5e59-4bdd-b1be-cb52428809e8" BLOCK_SIZE="4096" TYPE="ext4"
root@proxmox:/# blockdev --getsize64 /dev/pve/root
74570530816
root@proxmox:/# sha256sum /dev/pve/root > /mnt/guest/proxmox.root.lvm.2025-12-15.img.xz.sha256
root@proxmox:/# cat /mnt/guest/proxmox.root.lvm.2025-12-15.img.xz.sha256
71333d1bb9f8b270aecd7f23ea235d533354e37bf9855196b329af4fe88e7414  /dev/pve/root
root@proxmox:/# dd if=/dev/pve/root bs=16M | xz -T0 -c > /mnt/guest/proxmox.root.lvm.2025-12-15.img.xz
4444+1 records in
4444+1 records out
74570530816 bytes (75 GB, 69 GiB) copied, 794.986 s, 93.8 MB/s
root@proxmox:/# lvremove -y /dev/pve/root
  Logical volume "root" successfully removed.
  WARNING: This metadata update is NOT backed up.
root@proxmox:/# lvcreate -V 74570530816b -T pve/data -n root
  /usr/sbin/thin_check: execvp failed: No such file or directory
  WARNING: Check is skipped, please install recommended missing binary /usr/sbin/thin_check!
  /usr/sbin/thin_check: execvp failed: No such file or directory
  WARNING: Check is skipped, please install recommended missing binary /usr/sbin/thin_check!
  Logical volume "root" created.
  WARNING: This metadata update is NOT backed up.
root@proxmox:/# xz -dc /mnt/guest/proxmox.root.lvm.2025-12-15.img.xz | dd of=/dev/pve/root bs=16M status=progress
74518061056 bytes (75 GB, 69 GiB) copied, 477 s, 156 MB/s
0+2507323 records in
0+2507323 records out
74570530816 bytes (75 GB, 69 GiB) copied, 483.8 s, 154 MB/s
root@proxmox:/# blkid /dev/pve/root
/dev/pve/root: UUID="535ec190-5e59-4bdd-b1be-cb52428809e8" BLOCK_SIZE="4096" TYPE="ext4"
root@proxmox:/# sha256sum /dev/pve/root
71333d1bb9f8b270aecd7f23ea235d533354e37bf9855196b329af4fe88e7414  /dev/pve/root
root@proxmox:/# e2fsck -f /dev/pve/root
e2fsck 1.47.2 (1-Jan-2025)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/pve/root: 59718/4554752 files (0.1% non-contiguous), 1385827/18205696 blocks
root@proxmox:/# lvcreate -L 512M -n boot pve
WARNING: ext4 signature detected on /dev/pve/boot at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/pve/boot.
  Logical volume "boot" created.
  WARNING: This metadata update is NOT backed up.
root@proxmox:/# mkfs.ext4 /dev/pve/boot
mke2fs 1.47.2 (1-Jan-2025)
Discarding device blocks: done
Creating filesystem with 131072 4k blocks and 32768 inodes
Filesystem UUID: 2a867084-ff47-4ee0-97cf-fdfed167deaf
Superblock backups stored on blocks:
        32768, 98304

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

root@proxmox:/# mkdir /mnt/root
mkdir /mnt/boot
mkdir /mnt/efi
mount /dev/pve/boot /mnt/boot
mount /dev/pve/root /mnt/root
mount /dev/sda2 /mnt/efi/
root@proxmox:/# mv /mnt/root/boot/* /mnt/boot/
root@proxmox:/# echo "/dev/pve/boot /boot ext4 defaults 0 2" >> /mnt/root/etc/fstab
root@proxmox:/# mount --bind /dev /mnt/root/dev
mount --bind /proc /mnt/root/proc
mount --bind /sys /mnt/root/sys
mount --bind /run /mnt/root/run
mount --bind /mnt/boot /mnt/root/boot/
mount --bind /mnt/efi /mnt/root/boot/efi/
root@proxmox:/# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
root@proxmox:/# chroot /mnt/root
root@proxmox:/# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck
Installing for x86_64-efi platform.
grub-install.real: warning: EFI variables cannot be set on this system.
grub-install.real: warning: You will have to complete the GRUB setup manually.
Installation finished. No error reported.
root@proxmox:/# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
root@proxmox:/# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck
Installing for x86_64-efi platform.
Installation finished. No error reported.
root@proxmox:/# update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-6.17.2-1-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
root@proxmox:/# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.17.2-1-pve
Found initrd image: /boot/initrd.img-6.17.2-1-pve
Found memtest86+ 64bit EFI image: /boot/memtest86+x64.efi
Found memtest86+ 32bit EFI image: /boot/memtest86+ia32.efi
Found memtest86+ 64bit image: /boot/memtest86+x64.bin
Found memtest86+ 32bit image: /boot/memtest86+ia32.bin
Adding boot menu entry for UEFI Firmware Settings ...
done
root@proxmox:/# ls -lh /boot/vmlinuz-*
-rw-r--r-- 1 root root 15M Oct 21 07:55 /boot/vmlinuz-6.17.2-1-pve
root@proxmox:/# ls -lh /boot/initrd.img-*
-rw-r--r-- 1 root root 83M Dec 15 05:55 /boot/initrd.img-6.17.2-1-pve
root@proxmox:/# vgdisplay pve | grep 'UUID'
  VG UUID               QvLAEb-jrYh-eMt2-jwnN-0EDI-Vgpz-u3pKDS
root@proxmox:/# lvdisplay pve/boot | grep 'UUID'
  LV UUID                7b2Ak9-RLm7-NYkz-Lc1M-reTO-jdEV-5R0LdC
root@proxmox:/# grep "set root=" /boot/grub/grub.cfg
set root='lvmid/QvLAEb-jrYh-eMt2-jwnN-0EDI-Vgpz-u3pKDS/7b2Ak9-RLm7-NYkz-Lc1M-reTO-jdEV-5R0LdC'
[output trunkated for brevity]
root@proxmox:/# grep -A17 "menuentry 'Proxmox VE GNU/Linux'" /boot/grub/grub.cfg
menuentry 'Proxmox VE GNU/Linux' --class proxmox --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-/dev/mapper/pve-root' {
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod lvm
        insmod ext2
        set root='lvmid/QvLAEb-jrYh-eMt2-jwnN-0EDI-Vgpz-u3pKDS/7b2Ak9-RLm7-NYkz-Lc1M-reTO-jdEV-5R0LdC'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint='lvmid/QvLAEb-jrYh-eMt2-jwnN-0EDI-Vgpz-u3pKDS/7b2Ak9-RLm7-NYkz-Lc1M-reTO-jdEV-5R0LdC'  2a867084-ff47-4ee0-97cf-fdfed167deaf
        else
          search --no-floppy --fs-uuid --set=root 2a867084-ff47-4ee0-97cf-fdfed167deaf
        fi
        echo    'Loading Linux 6.17.2-1-pve ...'
        linux   /vmlinuz-6.17.2-1-pve root=/dev/mapper/pve-root ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-6.17.2-1-pve
}
root@proxmox:/# lvs -a -o lv_name,lv_size,origin,data_percent,lv_attr
  LV              LSize   Origin Data%  Attr
  boot            512.00m               -wi-ao----
  data            141.47g        49.09  twi-aotz--
  [data_tdata]    141.47g               Twi-ao----
  [data_tmeta]      1.44g               ewi-ao----
  [lvol0_pmspare]   1.44g               ewi-------
  root             69.45g        100.00 Vwi-aotz--
  swap              7.66g               -wi-a-----
root@proxmox:/# fstrim -v /
/: 64.1 GiB (68836114432 bytes) trimmed
root@proxmox:/#
root@proxmox:/# lvs -a -o lv_name,lv_size,origin,data_percent,lv_attr
  LV              LSize   Origin Data%  Attr
  boot            512.00m               -wi-ao----
  data            141.47g        3.82   twi-aotz--
  [data_tdata]    141.47g               Twi-ao----
  [data_tmeta]      1.44g               ewi-ao----
  [lvol0_pmspare]   1.44g               ewi-------
  root             69.45g        7.78   Vwi-aotz--
  swap              7.66g               -wi-a-----
root@proxmox:/# lvextend -l +100%FREE /dev/pve/data
  Size of logical volume pve/data_tdata changed from 141.47 GiB (36217 extents) to <226.43 GiB (57965 extents).
  Logical volume pve/data successfully resized.
root@proxmox:/# exit
exit
root@proxmox:/# umount -R /mnt/root
root@proxmox:/# umount /mnt/efi
root@proxmox:/# umount /mnt/boot
root@proxmox:/# umount /mnt/guest

Then I hit ctrl+alt+del to reboot the computer, it booted normally into proxmox as if nothing had happenned

This is a touchscreen laptop, and I plan to install proxmox+windows 10+opensuse on it
It has only a 256GB SSD that I won't be upgrading
And I want to be able to run the windows 10 and the opensuse, as bare metal but ALSO as virtual machines, and be able to install more version of linux in the LVM thin pool
As a boot manager I will use rEFInd

I am curious if the thick boot partition are really needed, or if all this could just go in the EFI partition ?
Maybe it could work if the permission aren't mandaroty, on the other hand, with multiple linux OSes it is probably worth the 256MB waste on thick partition just to be able to manage the kernels easily !
 
proxmox-boot-tool basically does what you want - it moves the bootloader, kernel and initrd files to the ESP, which means the bootloader doesn't need to access / anymore during boot.
 
  • Like
Reactions: Johannes S