Commit Graph

243 Commits

Author SHA1 Message Date
Thomas Lamprecht
6ef4e6d417 bump version to 7.2-7
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-07-21 07:37:09 +02:00
Thomas Lamprecht
f97f710082 bump version to 7.2-6
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-06-23 14:04:24 +02:00
Thomas Lamprecht
00dc08ea56 bump version to 7.2-5
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-06-17 15:52:26 +02:00
Thomas Lamprecht
7e074fcbaa bump version to 7.2-4
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-06-02 14:44:32 +02:00
Thomas Lamprecht
4d049590ab bump version to 7.2-3
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-05-04 16:55:35 +02:00
Thomas Lamprecht
901b5c1c05 bump version to 7.2-2
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-04-27 19:09:20 +02:00
Stoiko Ivanov
ccfbe44f75 proxmox-boot: add reinit subcommand
to iterate over all configured ESPs and refresh the boot-loader
installations.

the init function was changed to not run refresh directly - to prevent
refresh from running once for each ESP

currently reinit does not imply refresh

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2022-04-27 19:06:41 +02:00
Stoiko Ivanov
bcd5fb47f0 rename pve-efiboot-manual-kernels to proxmox-boot-manual-kernels
was forgotten during the general renaming of pve-efiboot ->
proxmox-boot.

follows commit 8c0a22adfe

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2022-04-27 19:06:41 +02:00
Thomas Lamprecht
85c499d4a2 p-b-t: pinning: output hint on next-boot only pinning
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-04-26 12:40:03 +02:00
Thomas Lamprecht
5708fdf695 p-b-t: pinning: prompt for auto-refresh on interactive seesion
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Reviewed-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Tested-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2022-04-26 12:38:58 +02:00
Stoiko Ivanov
a998a513b7 proxmox-boot: fix #3729 add --graceful to bootctl invocation
The version of systemd boot in bullseye, tries writing an efivar which
is not writeable on certain (broken) UEFIs (HP thin clients).

The issue was not present in the version in buster (the variable
simply did not get written) and can be worked around by adding
--graceful to the `bootctl install` command.

see also:
https://github.com/systemd/systemd/issues/13603

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2022-04-26 08:20:05 +02:00
Thomas Lamprecht
814105cf85 d/copyright: update years
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-04-22 12:15:57 +02:00
Thomas Lamprecht
15852208e7 bump version to 7.2-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-04-22 11:39:26 +02:00
Thomas Lamprecht
a64976e8a4 bump version to 7.1-14
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-03-29 15:48:44 +02:00
Thomas Lamprecht
d06347366a bump version to 7.1-13
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-03-12 15:39:52 +01:00
Thomas Lamprecht
73b0c9303a boot tool: seletive usage help message
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-03-04 11:08:07 +01:00
Thomas Lamprecht
4e4a9eb9d0 kernel pinning: note when overriding previous pin
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-03-04 11:05:23 +01:00
Thomas Lamprecht
33cbbb5a32 kernel pinning: output possible kversions on bad usage
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-03-04 11:04:54 +01:00
Thomas Lamprecht
bf10a73e5a boot-tool: shellcheck lint fixes
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-22 17:28:34 +01:00
Stoiko Ivanov
95c28bfa78 proxmox-boot: add pin/unpin functionality for non-p-b-t systems
While running `update-grub` directly in this case is a divergence from
the semantics of the command when p-b-t handles booting it makes the
cleanup in the `next-boot` case a bit tidier.

fetching the next-boot version explicitly again before setting the
provided version is to cover the sequence:
p-b-t kernel pin <ver1> --next-boot ; p-b-t kernel pin <ver2>

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Tested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-22 13:31:31 +01:00
Stoiko Ivanov
d5a182ad1d proxmox-boot: add --next-boot option kernel pin command
by setting the desired version in a dedicated file, which is used
by the systemd service as condition for removing it and refreshing
upon reboot.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Tested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-22 13:31:31 +01:00
Stoiko Ivanov
83a41a1a03 fix #3761: proxmox-boot: add pin/unpin for kernel-version
The 2 commands follow the mechanics of p-b-t kernel add/remove in
writing the desired abi-version to a config-file in /etc/kernel and
actually modifying the boot-loader configuration upon p-b-t refresh.

A dedicated new file is used instead of writing the version (with some
kind of annotation) to the manual kernel list to keep parsing the file
simple (and hopefully also cause fewer problems with manually edited
files)

For systemd-boot we write the entry into the loader.conf on the ESP(s)
instead of relying on the `bootctl set-default` mechanics (bootctl(1))
which write the entry in an EFI-var. This was preferred, because of a
few reports of unwriteable EFI-vars on some systems (e.g. DELL servers
have a setting preventing writing EFI-vars from the OS). The rationale
in `Why not simply rely on the EFI boot menu logic?` from [0] also
makes a few points in that direction.

For grub the following choices were made:
* write the pinned version (or actually the menu-path leading to it)
  to a snippet in /etc/default/grub.d instead of editing the grub.cfg
  files on the partition. Mostly to divert as little as possible from
  the grub-workflow I assume people are used to.
* the 'root-device-id' part of the menu-entries is parsed from
  /boot/grub/grug.cfg since it was stable (the same on all ESPs and in
  /boot/grub), saves us from copying the part of "find device behind
  /, mangle it if zfs/btrfs, call grub_probe a few times" part of
  grub-mkconfig - and seems a bit more robust

Tested with a BIOS and an UEFI VM with / on ZFS.

[0] https://systemd.io/BOOT_LOADER_SPECIFICATION/

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Tested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-22 13:31:31 +01:00
Stoiko Ivanov
151a54703c proxmox-boot: return empty if file does not exist in get_first_line
makes using this helper shorter in most cases

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Tested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-22 13:31:31 +01:00
Thomas Lamprecht
b9e1485fb2 bump version to 7.1-12
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-14 15:13:10 +01:00
Thomas Lamprecht
e469f27245 helpers postinst: fixup initrd onetime after update
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-14 15:08:28 +01:00
Thomas Lamprecht
83bd8320e2 initrd modules: use simplefb
while it's the legacy variant it actually works over simpledrm with
amdgpu (glitches) and nvidia (complete breakage)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-14 15:07:27 +01:00
Thomas Lamprecht
ea2015da4b bump version to 7.1-11
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-11 16:30:00 +01:00
Thomas Lamprecht
3b82e1ebb5 ship config to always include simpledrm module in initrd
to ensure the newly switched on SYS_FB kconfig doesn't breaks the
using the fb for the kernel, e.g., via fbcon

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-11 16:29:32 +01:00
Stoiko Ivanov
8de0567d10 proxmox-boot: add get_first_line_from_file helper and use it
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2022-02-04 17:46:07 +01:00
Stoiko Ivanov
605438b0ac proxmox-boot: drop unused potential_esps function
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2022-02-04 17:46:07 +01:00
Thomas Lamprecht
d271989611 bump version to 7.1-10
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-02-04 06:58:28 +01:00
Thomas Lamprecht
47893302de bump version to 7.1-9
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-01-31 12:10:07 +01:00
Thomas Lamprecht
b259c23329 bump version to 7.1-8
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-01-11 13:45:52 +01:00
Thomas Lamprecht
e1e7cf5f1e bump version to 7.1-7
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-12-14 21:29:03 +01:00
Stoiko Ivanov
9af7953afa fix #3781: add Provides: wireguard-modules to control.in
without this line `apt install wireguard` pulls in Debian's kernel +
firmware which confilcts with pve-firmware - forcing users to install
via `apt install --no-install-recommends wireguard-tools` in order to
get the userspace utils.

Plain debian has the 'Provides' in the meta-package[0]
(linux-image-amd64), so following this add it to pve-kernel-$MAJ.$MIN

versioned dependency added since wireguard has a versioned dependency
on wireguard-modules.

[0] https://salsa.debian.org/kernel-team/linux/-/blob/master/debian/templates/control.image.meta.in

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2021-12-14 13:29:03 +01:00
Stoiko Ivanov
c45ff47200 d/control.in: Provide linux-image/linux-headers
pve-kernel-$MAJ.$MIN (e.g. pve-kernel-5.15) is the equivalent
to linux-image-amd64 for plain debian systems (similarly
pve-headers-$MAJ.$MIN).

Providing the plain debian meta-packages should improve the user
experience, for example when users install DKMS packages, which have a
dependency on linux-headers-amd64.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2021-12-14 13:29:00 +01:00
Thomas Lamprecht
1d0adcf796 proxmox-boot: drop useless assignment to self
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-11-30 19:01:32 +01:00
Thomas Lamprecht
6e0dd07015 proxmox-boot: handle /etc/kernel/cmdline without any newline
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-11-30 18:53:55 +01:00
Thomas Lamprecht
3402b9bd83 bump version to 7.1-6
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-11-30 16:49:10 +01:00
Thomas Lamprecht
486894ae01 bump version to 7.1-5
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-11-30 13:30:39 +01:00
Thomas Lamprecht
8c5bf0169d proxmox-boot: esp config: align options argunment vertically
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-11-11 11:19:01 +01:00
Stoiko Ivanov
86c7015086 proxmox-boot: read only first line of /etc/kernel/cmdline
following the commit of removing the wrong indentation of the linux
and initrd lines - this commit strips empty lines (and leading
trailing whitespace) in /etc/kernel/cmdline.

I managed to reproduce the issue reported in the forum [0] by adding
empty lines to /etc/kernel/cmdline) - without this - systemd-boot
booted quite happily even with the indentation.

considered using perl -pe with multiline matching but thanks to
Thomas' suggestion went with the shell-builtin read.

the check for existance of 'root=' in the resulting CMDLINE was added,
since my test-system had an empty line in the beginning, which again
rendered it unbootable.

quickly tested on a VM.

[0]: https://forum.proxmox.com/threads/problem-with-proxmox-boot-tool.99043/

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2021-11-11 11:18:42 +01:00
Oguz Bektas
c473995e65 proxmox-boot: esp config: avoid leading whitespace in initrd/linux options
Not an actual issue, the systemd parser just skips those
whitespaces[0], but it may confuse people and lead to false-positive
conclusions about a culprit for loader issues, so fix that up.

[0]: https://github.com/systemd/systemd/blob/main/src/boot/efi/boot.c#L1064

diff before -> after:
 version  5.11.22-7-pve
 options   root=ZFS=rpool/ROOT/pve-1 boot=zfs iommu=pt
-    linux    /EFI/proxmox/5.11.22-7-pve/vmlinuz-5.11.22-7-pve
-    initrd   /EFI/proxmox/5.11.22-7-pve/initrd.img-5.11.22-7-pve
+linux    /EFI/proxmox/5.11.22-7-pve/vmlinuz-5.11.22-7-pve
+initrd   /EFI/proxmox/5.11.22-7-pve/initrd.img-5.11.22-7-pve

Fixes: 2a8a4b5 ("proxmox-boot: fix #3632 copy kernel+initrd unconditionally")
Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
[ Thomas: Clarify that the commit does not fix anything but is still
  good to have ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-11-11 11:18:13 +01:00
Thomas Lamprecht
3004f01932 bump version to 7.1-4
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-11-06 15:17:00 +01:00
Thomas Lamprecht
20983dfb40 bump version to 7.1-3
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-10-19 13:44:20 +02:00
Thomas Lamprecht
dea93e0142 bump version to 7.1-2
only for helper/tool package

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-10-01 09:15:58 +02:00
Stoiko Ivanov
2a8a4b5e37 proxmox-boot: fix #3632 copy kernel+initrd unconditionally
do not use the -u (update) flag when copying kernel images and inird
from /boot to the ESPs:
* the ESPs are formatted with vfat, which has a 2 second precision for
  mtime (`linux/fs/fat/misc.c` - `fat_truncate_time`)
* cp -u compares the mtimes of source (kernel image in /boot not on
  vfat) and destination - leading to the copy always being carried
  out, if the source files remain the same (and do not happen to have
  a mtime exactly happening on a even second)

as laid out in the bug-report - the case where this leads to an
unbootable system is when a kernel-version is shipped twice (built
with different tool-chains) - e.g. currently the 5.11 kernels in PVE 6
and PVE 7.

tested the behavior of `cp -u` by running opensnopp-bpfcc and copying
a file twice onto ext4 (opened only once) and on vfat (opened twice).

additionally reproduced the issue (by dist-upgrading a PVE 6 VM to 7
with the pve-no-subscription repo) and verified this patch fixes it.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2021-10-01 09:09:59 +02:00
Thomas Lamprecht
221e6a67b1 bump version to 7.1-1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-09-28 06:44:35 +02:00
Thomas Lamprecht
505310288e bump version to 7.0-7
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-08-27 11:55:36 +02:00
Fabian Grünbichler
40d8d36eef boot-tool: prefer PVE for systemd-boot loader title
like for Grub where this is handled via snippets with PVE > PMG > PBS.

Reported-by: Oguz Bektas <o.bektas@proxmox.com>
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2021-07-26 12:40:41 +02:00