[pve-devel] Feature Request: Support for boot environments

tactical-documentation at tuta.io tactical-documentation at tuta.io
Sun Oct 6 21:31:43 CEST 2019


Hey,

I would like to propose a feature request:
Add support for Boot Environments and create a tool to manage them.

If you don't know what boot environments are: basically they are filesystem-based snapshots of a system, which you can boot into. Among other things this enables rollbacks of a system by simply rebooting (such rollbacks include version upgrades).

There are quite a few benefits of supporting Boot Environments, for example they enable you to basically version control your Proxmox Installation and allow the migration of Proxmox Host Systems.


I have documented a Proof of Concept [0] which explains in depth how to enable Boot Environments in Proxmox. I have also created a fork [1] of the FreeBSD beadm Boot Environment Manager that works with Proxmox and documented how it works and how to use it [2].

Both the initial Proof of Concept as well as the Boot Environment Manager are written in a way that does not interfere with Proxmox core functionality. This means that on one hand I haven't changed any of the Proxmox scripts, but on the other hand I've done some things in a more complicated way than would have been necessary.

I think, native support for Boot Environments could be achieved by changing/adding the following things:

- creating a boot environment manager (e.g. refactoring the beadm fork)

- changing the way files are stored on the EFI Systems Partitions (similiar to what is done by the beadm fork, but with deduplication)

- (optionally) increase the EFI Systems Partition in size since with boot environments it makes perfect sense to store more kernels than before

- move images, templates and backups from rpool/ROOT/pve-1 into another dataset, so the state of those doesn't depend on the active Boot Environment

- (optionally) move other directories off rpool/ROOT/pve-1 as well (e.g. /root/, /tmp, /var/log)

- change the /etc/kernel/cmdline file such that the root kernel option always points to the boot environment that is active after the next boot (e.g. by creating a template file from which this file is generated by the boot environment manager)

- change the boot preparation process so it uses the Boot Environment Manager (/etc/kernel/postinst.d/zz-pve-efiboot would have to be modified)

What do you think?

Kind Regards!
--
[0] : https://tactical-documentation.github.io/post/poc-proxmox-and-boot-environments <https://tactical-documentation.github.io/post/poc-proxmox-and-boot-environments[1>
[1 <https://tactical-documentation.github.io/post/poc-proxmox-and-boot-environments[1>] : https://github.com/tactical-documentation/beadm <https://github.com/tactical-documentation/beadm>
[2] : https://tactical-documentation.github.io/post/a-boot-environment-manager-for-proxmox <https://tactical-documentation.github.io/post/a-boot-environment-manager-for-proxmox>



More information about the pve-devel mailing list