通常 pve 安装出来的是 lvm 作为兼容层 上面再是具体的文件系统

可是吧 单硬盘 我用不到

是的 我不喜欢这种分区方案

可是 这是 linux 啊 那不都是通用的

开搞

备份 再恢复 就行

先采用官方正常的安装流程 装完后进入 livecd 推荐 archlinux

先挂载系统分区

lvm 格式的

先 使用 lvscan 罗列出来

1
2
root@pve:/tmp# lvscan
ACTIVE '/dev/pve-OLD-A39EDD75/root' [446.00 GiB] inherit

再直接挂载就行

1
mount /dev/mapper/pve--OLD--A39EDD75-root olda/

btrfs 格式的

直接挂载分区就行 默认安装的是不带子卷的

1
mount /dev/nvme0n1p3 olda/

备份文件

使用 rsync

1
rsync -qaHAXS olda/ /tmp/bak/

重新分区

1
cfdisk /dev/nvme0n1

分两个

1
2
3
Device           Start       End   Sectors  Size Type
/dev/nvme0n1p1 2048 2099199 2097152 1G EFI System
/dev/nvme0n1p2 2099200 966789119 964689920 460G Linux filesystem

再格式化下

1
2
mkfs.fat -n EFI -F32 /dev/nvme0n1p1
mkfs.btrfs -L PVE /dev/nvme0n1p2

创建子卷

1
2
3
4
5
mount /dev/nvme0n1p2 /tmp/newbtrfs

cd /tmp/newbtrfs
# 就这么创建下去
btrfs subvolume create @

大概有这些子卷

1
2
3
4
5
6
7
8
root@pve:/tmp/newbtrfs# tree -L 1
.
├── @
├── @pvevz
├── @root
├── @var_cache
├── @var_log
└── @var_tmp

挂载新分区

1
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p2 /tmp/newpve

恢复备份

1
rsync -qaHAXS /tmp/bak/ /tmp/newpve/

修复引导

默认用的 grub2 进行引导的

参考 proxmox-boot-tool 这个

而我 用的 systemd-boot

1
arch-chroot /tmp/newpve/

修改 /etc/kernel/cmdline 加入子卷启动项 rootflags=subvol=@

1
root=UUID=eb239303-5067-4e32-add8-55fd643059ac rootflags=subvol=@ rw

运行 proxmox-boot-tool clean 删除 /etc/kernel/proxmox-boot-uuids 中旧的 esp uuid

运行 proxmox-boot-tool init /dev/nvme0n1p1 自动处理 efi 引导等

至此 reboot 后应该可以进入系统了

关闭 grub 提示信息

1
2
3
4
5
6
Removable bootloader found at '/boot/efi/EFI/BOOT/BOOTX64.efi', but GRUB packages not set up to update it!
Run the following command:

echo 'grub-efi-amd64 grub2/force_efi_extra_removable boolean true' | debconf-set-selections -v -u

Then reinstall GRUB with 'apt install --reinstall grub-efi-amd64'

进入系统后 执行 echo 'grub-efi-amd64 grub2/force_efi_extra_removable boolean true' | debconf-set-selections -v -u

置于能不能卸载 grub 这件事情呢 发现是不行的

但是可以卸载 memtest86+

卸载旧内核

他是 proxmox-kernel- 开头的包

直接 apt purge proxmox-kernel-6.8.12-9-pve 就行