]> git.proxmox.com Git - pve-installer.git/log
pve-installer.git
6 months agotui: install_progress: split out low-level installer spawing into own function
Christoph Heiss [Fri, 10 Nov 2023 14:17:21 +0000 (15:17 +0100)]
tui: install_progress: split out low-level installer spawing into own function

No functional changes.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: install_progress: move progress task into own function
Christoph Heiss [Fri, 10 Nov 2023 14:17:20 +0000 (15:17 +0100)]
tui: install_progress: move progress task into own function

No functional changes.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: move install progress dialog into own view module
Christoph Heiss [Fri, 10 Nov 2023 14:17:19 +0000 (15:17 +0100)]
tui: move install progress dialog into own view module

While at it, convert it to a proper `View`-impl, instead of a functional
component.

No functional changes.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agofix #4856: tui: bootdisk: use correct defaults in advanced dialog
Christoph Heiss [Thu, 9 Nov 2023 09:40:56 +0000 (10:40 +0100)]
fix #4856: tui: bootdisk: use correct defaults in advanced dialog

The size of the install disk was set to the size of the first disk,
regardless of what disk was selected. This only happened if the advanced
options dialog was never opened, and only a disk was selected in the
main bootdisk dialog.

Properly solving this involved restructuring the LVM advanced bootdisk
dialog, to also hold the selected disks, like the ZFS and Btrfs dialogs.
In addition to that, the `BootdiskOptionsRef` needs quite some passing
around, to cover all the cases, since the dialog also needs to be
"reentrant-safe".

I tested (among other things):
  * Only select disk, don't open the advanced dialog, go to summary,
    then back to the bootdisk dialog -> selected disk should be kept
  * Select disk, open advanced dialog but leave everything as is, go to
    summary, then go back again -> selected disk should be kept
  * Same as previous, but change the "Total size" for the disk, go to
    summary and back -> selected disk and size should be kept
  * Same as previous, but additionally change filesystem to XFS -> disk,
    filesystem and size should be kept
  * Same as previous, but then create a ZFS RAID, go to summary & back,
    ZFS RAID should be kept with all parameters
  * etc ..

Further I also verified that the correct disk size(s) get written into
the setup structure for the low-level installer.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: bootdisk: refactor Rc<RefCell<..>> type into custom type
Christoph Heiss [Thu, 9 Nov 2023 09:40:55 +0000 (10:40 +0100)]
tui: bootdisk: refactor Rc<RefCell<..>> type into custom type

Will be used/passed around quite a lot of times due to future changes,
so simplify it a bit.

No functional changes.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agolow level: testmode: take path to disk image instead of using /dev/null
Christoph Heiss [Thu, 9 Nov 2023 09:47:56 +0000 (10:47 +0100)]
low level: testmode: take path to disk image instead of using /dev/null

.. in exactly the same way GUI and TUI installer do, streamlining them.

Up until now, testing the TUI installer often involved hand-editing the
`run-env-info.json` to put some proper disk sizes > 0 in place. This
makes this process a lot easier.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: bootdisk: expose `arc_max` ZFS option for PVE installations
Christoph Heiss [Tue, 7 Nov 2023 12:20:54 +0000 (13:20 +0100)]
tui: bootdisk: expose `arc_max` ZFS option for PVE installations

To set the maximum value for arc_max accordingly, simply pass down
`RuntimeInfo` directly instead of the disks array to the views.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agocommon: add ZFS `arc_max` installer setup option
Christoph Heiss [Tue, 7 Nov 2023 12:20:53 +0000 (13:20 +0100)]
common: add ZFS `arc_max` installer setup option

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotest: add tests for zfs_arc_max calculations
Christoph Heiss [Tue, 7 Nov 2023 12:20:52 +0000 (13:20 +0100)]
test: add tests for zfs_arc_max calculations

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agoproxinstall: expose `arc_max` ZFS option for PVE installations
Christoph Heiss [Tue, 7 Nov 2023 12:20:51 +0000 (13:20 +0100)]
proxinstall: expose `arc_max` ZFS option for PVE installations

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agoinstall: use correct variable names in zfs_setup_module_conf()
Christoph Heiss [Tue, 7 Nov 2023 12:20:50 +0000 (13:20 +0100)]
install: use correct variable names in zfs_setup_module_conf()

That's what happens when you do some last-minute variable renaming and
trust that nothing broke ..

Fixes: 42aa2fa ("fix #4829: install: add new ZFS `arc_max` setup option")
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agorun env: remove debug print
Christoph Heiss [Tue, 7 Nov 2023 12:20:49 +0000 (13:20 +0100)]
run env: remove debug print

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: fix same "Administrator" typo in password and summary view
Christoph Heiss [Tue, 7 Nov 2023 12:23:40 +0000 (13:23 +0100)]
tui: fix same "Administrator" typo in password and summary view

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agoinstall: install correct grub metapackage for the current boot-mode
Stoiko Ivanov [Thu, 28 Sep 2023 14:05:33 +0000 (16:05 +0200)]
install: install correct grub metapackage for the current boot-mode

grub packages in debian split between:

* meta-packages, which handles (among other things) the reinstalling
  grub to the actual device/ESP in case of a version upgrade (grub-pc,
  grub-efi-amd64)

* bin-packages, which contain the actual boot-loaders

The bin-packages can coexist on a system, but the meta-package
conflict with each other (didn't check why, but I don't see a hard
conflict on a quick glance)

Currently our ISO installs grub-pc unconditionally (and both bin
packages, since we install the legacy bootloader also on uefi-booted
systems). This results in uefi-systems not getting a new grub
installed automatically upon upgrade.

Reported in our community-forum from users who upgraded to PVE 8.0,
and still run into an issue fixed in grub for bookworm:
https://forum.proxmox.com/threads/.123512/

Reproduced and analyzed by Friedrich.

This patch changes the installer, to install the meta-package fitting
for the boot-mode.

We do not set the debconf variable install_devices, because the
'install_devices' variable is only defined for 'grub-pc', and thus
(still) only set for that package/namespace.

Reported-by: Friedrich Weber <f.weber@proxmox.com>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
6 months agoCorrect DNS IP check on management interface setup
Filip Schauer [Mon, 16 Oct 2023 10:20:06 +0000 (12:20 +0200)]
Correct DNS IP check on management interface setup

Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
6 months agofix #4829: install: add new ZFS `arc_max` setup option
Christoph Heiss [Tue, 31 Oct 2023 12:10:56 +0000 (13:10 +0100)]
fix #4829: install: add new ZFS `arc_max` setup option

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: bootdisk: simplify product handling by passing the config directly
Christoph Heiss [Tue, 31 Oct 2023 12:10:55 +0000 (13:10 +0100)]
tui: bootdisk: simplify product handling by passing the config directly

No functional changes.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: views: add optional suffix label for `NumericEditView`s
Christoph Heiss [Tue, 31 Oct 2023 12:10:54 +0000 (13:10 +0100)]
tui: views: add optional suffix label for `NumericEditView`s

Most of the churn here is due to changing the inner view from an
`EditView` to a `LinearLayout`. Also prompted the introduction of two
small helpers .inner() and .inner_mut() to simplify things everywhere
else in the view.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agorun env: add comment for query_total_memory()
Christoph Heiss [Tue, 31 Oct 2023 12:10:53 +0000 (13:10 +0100)]
run env: add comment for query_total_memory()

This is mainly to explicitly document the unit of its return value.

No functional changes.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: fix clippy warning
Christoph Heiss [Fri, 3 Nov 2023 09:49:37 +0000 (10:49 +0100)]
tui: fix clippy warning

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui, common: run rustfmt
Christoph Heiss [Fri, 3 Nov 2023 09:49:36 +0000 (10:49 +0100)]
tui, common: run rustfmt

While at it, move rustfmt.toml to the repo root, to share it with the
other crate.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: remove unused read_json function
Aaron Lauterer [Wed, 25 Oct 2023 16:00:11 +0000 (18:00 +0200)]
tui: remove unused read_json function

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agotui: use installer_setup from common cate
Aaron Lauterer [Wed, 25 Oct 2023 16:00:10 +0000 (18:00 +0200)]
tui: use installer_setup from common cate

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agocommon: document installer_setup method
Aaron Lauterer [Wed, 25 Oct 2023 16:00:09 +0000 (18:00 +0200)]
common: document installer_setup method

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agocommon: add installer_setup method
Aaron Lauterer [Wed, 25 Oct 2023 16:00:08 +0000 (18:00 +0200)]
common: add installer_setup method

moved over from the TUI installer

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agotui: remove now unused utils.rs
Aaron Lauterer [Wed, 25 Oct 2023 16:00:07 +0000 (18:00 +0200)]
tui: remove now unused utils.rs

all it did moved to the common crate

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agotui: switch to common crate
Aaron Lauterer [Wed, 25 Oct 2023 16:00:06 +0000 (18:00 +0200)]
tui: switch to common crate

by switching dependencies and deleting doubled code to avoid ambiguities
within the same scope.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agotui-installer: add dependency for new common crate
Aaron Lauterer [Wed, 25 Oct 2023 16:00:05 +0000 (18:00 +0200)]
tui-installer: add dependency for new common crate

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agocommon: disk_checks: make functions public
Aaron Lauterer [Wed, 25 Oct 2023 16:00:04 +0000 (18:00 +0200)]
common: disk_checks: make functions public

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agocommon: make InstallZfsOption public
Aaron Lauterer [Wed, 25 Oct 2023 16:00:03 +0000 (18:00 +0200)]
common: make InstallZfsOption public

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agocommon: utils: add dependency for doc test
Aaron Lauterer [Wed, 25 Oct 2023 16:00:02 +0000 (18:00 +0200)]
common: utils: add dependency for doc test

Was probably missed because it used to be in a binary crate where doc
tests aren't run automatically.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agocommon: copy common code from tui-installer
Aaron Lauterer [Wed, 25 Oct 2023 16:00:01 +0000 (18:00 +0200)]
common: copy common code from tui-installer

Copy code that is common to its own crate.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agoadd proxmox-installer-common crate
Aaron Lauterer [Wed, 25 Oct 2023 16:00:00 +0000 (18:00 +0200)]
add proxmox-installer-common crate

It will be used for code shared among the different crates in the
installer. For now between the TUI installer and the upcoming auto
installer.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
 [TL: fold in Christoph's buildsys fix ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agotui: remove obsolete, global `SetupInfo` state
Christoph Heiss [Wed, 25 Oct 2023 08:56:24 +0000 (10:56 +0200)]
tui: remove obsolete, global `SetupInfo` state

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: bootdisk: pass down product info to advanced dialog
Christoph Heiss [Wed, 25 Oct 2023 08:56:23 +0000 (10:56 +0200)]
tui: bootdisk: pass down product info to advanced dialog

Enables the advanced and LVM dialog to determine what options (max
root/data size and Btrfs RAIDs) by itself, without needing to resort to
the global `setup_info()` function.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
6 months agotui: refactor `NetworkOptions` to have a `defaults_from()` function
Christoph Heiss [Wed, 25 Oct 2023 08:56:22 +0000 (10:56 +0200)]
tui: refactor `NetworkOptions` to have a `defaults_from()` function

This aligns it with the other constructors for options struct by
introducing a `::defaults_from()` function.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
7 months agotui: add some tests for `NetworkInfo` -> `NetworkOptions` conversion
Christoph Heiss [Fri, 20 Oct 2023 09:46:48 +0000 (11:46 +0200)]
tui: add some tests for `NetworkInfo` -> `NetworkOptions` conversion

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
 [ TL: merge fix for missing state member when declaring a Interface
   struct in a test on master ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agotui: use hostname from run env if available
Christoph Heiss [Fri, 20 Oct 2023 09:46:47 +0000 (11:46 +0200)]
tui: use hostname from run env if available

This now tries to use the hostname from the DHCP lease if it was set,
falling back to the product name as before.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
7 months agoproxinstall: use hostname from run env if available
Christoph Heiss [Fri, 20 Oct 2023 09:46:46 +0000 (11:46 +0200)]
proxinstall: use hostname from run env if available

This now tries to use the hostname from the DHCP lease if it was set,
falling back to the product name as before.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
7 months agorun env: retrieve and store hostname from DHCP lease if available
Christoph Heiss [Fri, 20 Oct 2023 09:46:45 +0000 (11:46 +0200)]
run env: retrieve and store hostname from DHCP lease if available

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
7 months agonet: move hostname/fqdn regexes into common code
Christoph Heiss [Fri, 20 Oct 2023 09:46:44 +0000 (11:46 +0200)]
net: move hostname/fqdn regexes into common code

Such that they can be re-used by other parts.
No functional changes.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
7 months agobuildsys: redirect stderr of TUI in check targets
Thomas Lamprecht [Thu, 19 Oct 2023 12:19:51 +0000 (14:19 +0200)]
buildsys: redirect stderr of TUI in check targets

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agotui: fix interface sorting
Thomas Lamprecht [Thu, 19 Oct 2023 12:19:06 +0000 (14:19 +0200)]
tui: fix interface sorting

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agotui: show interface UP state as filled circle
Thomas Lamprecht [Thu, 19 Oct 2023 11:37:04 +0000 (13:37 +0200)]
tui: show interface UP state as filled circle

like we do in the GTK UI since recently, there we also color the
filled circle green, but with current cursive crate version this
doesn't seem to be easy, at least not without breaking its theming a
bit (e.g., by just using ANSI escape codes), so just use the circle
for now.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agoadd interface state to run-time environment
Thomas Lamprecht [Thu, 19 Oct 2023 11:34:35 +0000 (13:34 +0200)]
add interface state to run-time environment

making this slowly compatible with our battle-proven ifaces entry..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agofix #4869: Show state in management interface ComboBox
Maximiliano Sandoval [Thu, 19 Oct 2023 08:35:31 +0000 (10:35 +0200)]
fix #4869: Show state in management interface ComboBox

This is a continuation of
https://lists.proxmox.com/pipermail/pve-devel/2023-August/058639.html.

Signed-off-by: Maximiliano Sandoval R <m.sandoval@proxmox.com>
Tested-by: Filip Schauer <f.schauer@proxmox.com>
7 months agosys: block: fix inverted check when detecting block size
Christoph Heiss [Thu, 21 Sep 2023 11:22:56 +0000 (13:22 +0200)]
sys: block: fix inverted check when detecting block size

We do actually want the block size if it is integer - currently, it is
always set to `undef` (and then `null` in the serialized JSON).

Fixes: 15b2cd7 ("sys: block: fix possible use of `undef`-value when detecting disk sizes")
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agotui: honor test mode flag when starting low-level install session
Christoph Heiss [Wed, 20 Sep 2023 11:39:35 +0000 (13:39 +0200)]
tui: honor test mode flag when starting low-level install session

Even if the installer is run in release mode, the test-mode flag should
be honored on whether to start a test-installation or not.

The test mode is always forced on in debug builds, so the cfg()
conditionals can be dropped.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agotui: fix search domain parsing from runtime environment info
Christoph Heiss [Mon, 21 Aug 2023 08:53:59 +0000 (10:53 +0200)]
tui: fix search domain parsing from runtime environment info

Commit 55dc67c ("tui: fix FQDN validation") mostly fixed FQDN
validation, but missed a case when the search domain only has one
component.

As Fqdn::from() requires at least two components to pass validation, the
search domain parsing from the runtime environment info provided by the
low-level installer failed. This resulted in that the network dialog
defaulted to "<product>.example.invalid" as FQDN, instead of
"<product>.<searchdomain>" as it should.

Fixes: 55dc67c ("tui: fix FQDN validation")
Reported-by: Aaron Lauterer <a.lauterer@proxmox.com>
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agotui: disallow legacy BIOS boot from 4Kn disks for all filesystems
Christoph Heiss [Thu, 10 Aug 2023 10:31:57 +0000 (12:31 +0200)]
tui: disallow legacy BIOS boot from 4Kn disks for all filesystems

The GUI installer already has the same rules in place, not allowing to
boot from 4Kn disks when booting in legacy BIOS mode. The TUI installer
currently only checks that for ZFS RAIDs, so extend that check to all
filesystem configurations.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agoraid setup: btrfs: do not allow legacy BIOS boot on 4Kn disks
Christoph Heiss [Thu, 10 Aug 2023 10:31:56 +0000 (12:31 +0200)]
raid setup: btrfs: do not allow legacy BIOS boot on 4Kn disks

This is already checked for LVM and ZFS setups, but not for Btrfs. Add
it there too, as it doesn't work anyway.

Tested by creating a block device with 4K sectorsize using
the following QEMU args:
  -device virtio-blk,drive=testdrive4k,logical_block_size=4096,physical_block_size=4096
  -drive file=/path/to/4k-testdisk.img,if=none,id=testdrive4k

The 4k-testdisk.img was created with:
  qemu-img create -f qcow2 /path/to/4k-testdisk.img 16G

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agotui: setup: handle missing disk block size gracefully
Christoph Heiss [Wed, 9 Aug 2023 13:44:25 +0000 (15:44 +0200)]
tui: setup: handle missing disk block size gracefully

As that value can indeed be undefined, handle that (edge-)case
gracefully. There is only one place where it is checked, in the ZFS RAID
setup dialog. Aligns it with how the low-level installer handles that
case too.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agosys: block: fix possible use of `undef`-value when detecting disk sizes
Christoph Heiss [Wed, 9 Aug 2023 13:44:24 +0000 (15:44 +0200)]
sys: block: fix possible use of `undef`-value when detecting disk sizes

`$size` and `$logical_bsize` might get unset if there invalid, but then
are unconditionally converted to an int - which throws an error.
This was reported on the forum by a user [0].

Fix it by changing the check a bit to skip the disk immediately if
detecting either of those two values are invalid or simply not present.
The fix for `$logical_bsize` simply avoids trying to convert to value to
an int if invalid.

tl;dr: Should have no impact at all, in the end. The same
`run-env-info.json` is generated w/ and w/o the patch if all disks are
fine. I then also hacked up the script a bit to actually have an invalid
size, this resulted in the "affected" disk simply missing from the disk
array - the expected behavior in this case.

[0] https://forum.proxmox.com/threads/error-installing-proxmox-8.131921/

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agotui: setup: fix disk size for 4Kn block devices
Christoph Heiss [Wed, 9 Aug 2023 13:44:23 +0000 (15:44 +0200)]
tui: setup: fix disk size for 4Kn block devices

This can be tested by creating a block device with 4K sectorsize using
the following QEMU args:
  -device virtio-blk,drive=testdrive4k,logical_block_size=4096,physical_block_size=4096
  -drive file=/path/to/4k-testdisk.img,if=none,id=testdrive4k

The 4k-testdisk.img was created with:
  qemu-img create -f qcow2 /path/to/4k-testdisk.img 16G

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agotui: network: select matching NIC for IP configuration
Christoph Heiss [Wed, 9 Aug 2023 13:44:22 +0000 (15:44 +0200)]
tui: network: select matching NIC for IP configuration

Instead of always just selecting an essentially random NIC (depending on
the enumeration), use the correct one for the rest of the
(DHCP-obtained) IP configuration.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agotui: password: include minimum password length in error message
Christoph Heiss [Wed, 9 Aug 2023 13:44:21 +0000 (15:44 +0200)]
tui: password: include minimum password length in error message

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
8 months agotui: drop some leftover, commented-out code
Christoph Heiss [Wed, 9 Aug 2023 13:44:20 +0000 (15:44 +0200)]
tui: drop some leftover, commented-out code

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
9 months agod/rules: enable dh_auto_test
Christoph Heiss [Mon, 24 Jul 2023 10:14:50 +0000 (12:14 +0200)]
d/rules: enable dh_auto_test

Since we now have a test suite (or, at least the TUI installer in this
case), we can enable dh_auto_test so that it will be run on package
builds.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
9 months agotui: add tests for RAID setup checks
Christoph Heiss [Mon, 24 Jul 2023 10:14:49 +0000 (12:14 +0200)]
tui: add tests for RAID setup checks

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
9 months agotui: add RAID setup checks for ZFS/Btrfs
Christoph Heiss [Mon, 24 Jul 2023 10:14:48 +0000 (12:14 +0200)]
tui: add RAID setup checks for ZFS/Btrfs

This adds early checks when setting up ZFS and Btrfs RAIDs, such as
minimum number of disks in the RAID, mirror sizes and legacy BIOS
compatibility.

The same rules as the GUI uses are applied, which unfortunaly means that
this logic is essentially duplicated between the GUI and TUI.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
9 months agotui: improve bootdisk dialog error handling
Christoph Heiss [Mon, 24 Jul 2023 10:14:47 +0000 (12:14 +0200)]
tui: improve bootdisk dialog error handling

Now we don't just fail silently, but instead give the user/developer
some indication what went wrong.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
9 months agotui: deserialize boot type and disk blocksize from runtime env info
Christoph Heiss [Mon, 24 Jul 2023 10:14:46 +0000 (12:14 +0200)]
tui: deserialize boot type and disk blocksize from runtime env info

This is needed later on to check whether a RAID setup is compatible with
BIOS and 4Kn disks, in particular ZFS.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
9 months agotui: simplify duplicate disk checking logic
Christoph Heiss [Mon, 24 Jul 2023 10:14:45 +0000 (12:14 +0200)]
tui: simplify duplicate disk checking logic

This reduces the logic from O(n^2) to O(n), which is always a good
thing.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agotui: fix small typo in error message
Christoph Heiss [Thu, 13 Jul 2023 09:49:26 +0000 (11:49 +0200)]
tui: fix small typo in error message

Fixes: 994c4ff ("tui: add better error handling to BootdiskOptions::get_values()")
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agogitignore: add cd-info.test
Christoph Heiss [Thu, 13 Jul 2023 09:49:25 +0000 (11:49 +0200)]
gitignore: add cd-info.test

It's a testfile and should thus be ignored.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agotui: fix FQDN validation
Christoph Heiss [Wed, 19 Jul 2023 16:31:30 +0000 (18:31 +0200)]
tui: fix FQDN validation

Add checks to ensure that:
 * It is actually has a hostname, not just a domain name
 * Properly check if the hostname is purely numeric, which was
   broken/different to how the GUI installer does it

The custom error type also allows for easier future adaptions, as the
changes can be entirely contained to the `Fqdn` type.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agotui: use EULA path from ISO info instead of hard-coding
Christoph Heiss [Fri, 14 Jul 2023 09:29:47 +0000 (11:29 +0200)]
tui: use EULA path from ISO info instead of hard-coding

.. in the same fashion as the GUI installer.
See also proxinstall:create_intro_view() for reference.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agodisk partitioning: fix checking answer for to-small-disk prompt
Philipp Hufnagl [Thu, 13 Jul 2023 09:38:53 +0000 (11:38 +0200)]
disk partitioning: fix checking answer for to-small-disk prompt

Currently there is a bug that you only can install < 8 GB when you NOT
accept the warning. This is wrong. A user should have to accept the
warning to install on small systems

Signed-off-by: Philipp Hufnagl <p.hufnagl@proxmox.com>
 [T: reword commit subject & fix typo there ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agotui: add "Deselect all" button to zfs/btrfs raid disk select
Christoph Heiss [Mon, 10 Jul 2023 13:26:26 +0000 (15:26 +0200)]
tui: add "Deselect all" button to zfs/btrfs raid disk select

Another puzzle piece in the quest to align the TUI installer more to
its GUI counterpart.

Like the GUI installer, it will only be shown if >3 disks are
detected on the system.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agotui: fix clippy warnings
Christoph Heiss [Mon, 10 Jul 2023 13:26:25 +0000 (15:26 +0200)]
tui: fix clippy warnings

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agotui: don't abort install if min ram requirement is not met
Noel Ullreich [Mon, 10 Jul 2023 09:22:27 +0000 (11:22 +0200)]
tui: don't abort install if min ram requirement is not met

If the minimum requirements are not met, the TUI installer will create a
popup notifying you that the install might not work and then exits the
installer.
While the GUI also creates such a popup, it will not exit the installer.
This patch adapts the behavior of the GUI: the TUI creates a popup
warning you that min spec is not met but doesn't abort the install.

Signed-off-by: Noel Ullreich <n.ullreich@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Tested-by: Christoph Heiss <c.heiss@proxmox.com>
 [T: fix conflict in context and drop intermediate variable ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agotui: fix incorrect scrolling of form view contents
Christoph Heiss [Thu, 6 Jul 2023 12:27:50 +0000 (14:27 +0200)]
tui: fix incorrect scrolling of form view contents

See the inline comment for what & why.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agod/control: drop unused librust-proxmox-sys-dev build dependency
Christoph Heiss [Tue, 4 Jul 2023 08:27:23 +0000 (10:27 +0200)]
d/control: drop unused librust-proxmox-sys-dev build dependency

Since the TUI installer does not use it anymore, we can drop it from
here as well.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agotui: check hvm support through runtime env info instead of open-coding
Christoph Heiss [Mon, 3 Jul 2023 07:35:00 +0000 (09:35 +0200)]
tui: check hvm support through runtime env info instead of open-coding

As the runtime environment now exports that info, use it. In turn, this
allows us to drop the dependency on `proxmox-sys`, as that check was its
only user.

The dependency graph drops from 107 to 88 crates from this, which
definitively is a nice change.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agoproxinstall: check hvm support through runtime env info
Christoph Heiss [Mon, 3 Jul 2023 07:34:59 +0000 (09:34 +0200)]
proxinstall: check hvm support through runtime env info

As that info is now available through the runtime environment info, use
it and avoid duplicating logic.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agorun env: add hardware-accelerated virtualization support flag
Christoph Heiss [Mon, 3 Jul 2023 07:34:58 +0000 (09:34 +0200)]
run env: add hardware-accelerated virtualization support flag

Can later be used by the installer frontends, as well as nicely alinging
with the 'single source of truth' "policy".

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
10 months agobump version to 8.0.14
Thomas Lamprecht [Wed, 28 Jun 2023 16:39:44 +0000 (18:39 +0200)]
bump version to 8.0.14

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agoinstallation: disable clamav-clamonacc.service by default for PMG
Thomas Lamprecht [Wed, 28 Jun 2023 16:34:16 +0000 (18:34 +0200)]
installation: disable clamav-clamonacc.service by default for PMG

> On-Access [...] leverages a kernel api called fanotify to block
> processes from attempting to access malicious files. This
> prevention occurs in kernel-space, and thus offers stronger
> protection than a purely user-space solution.

This is not really useful for the PMG use case and requires user
configuration as otherwise it refuses to start. In fact, is the sole
unit marked as failed after a fresh installation:

> ERROR: Clamonacc: at least one of OnAccessExcludeUID,
> OnAccessExcludeUname, or OnAccessExcludeRootUID must be specified
> it is recommended you exclude the clamd instance UID or uname to
> prevent infinite event scanning loops.

So disable it by default, if a user really wants this, whyever that
would be, the can just configure it and enable it again via
systemctl.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agobump version to 8.0.13
Thomas Lamprecht [Tue, 27 Jun 2023 14:20:02 +0000 (16:20 +0200)]
bump version to 8.0.13

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agobump version to 8.0.12
Thomas Lamprecht [Tue, 27 Jun 2023 13:00:18 +0000 (15:00 +0200)]
bump version to 8.0.12

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agotui: persist disk selection for zfs and btrfs
Stefan Sterz [Tue, 27 Jun 2023 14:15:07 +0000 (16:15 +0200)]
tui: persist disk selection for zfs and btrfs

previously the disk selection was reset if the advanced options
dialogue was re-opened. this commit adapts the behavior to restore
the previous selection.

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agotui: block & notify if same disk gets selected twice
Thomas Lamprecht [Tue, 27 Jun 2023 12:58:51 +0000 (14:58 +0200)]
tui: block & notify if same disk gets selected twice

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agotui: only show warning for missing hyper-visor CPU flags for PVE
Thomas Lamprecht [Tue, 27 Jun 2023 09:16:41 +0000 (11:16 +0200)]
tui: only show warning for missing hyper-visor CPU flags for PVE

that feature isn't useful for neither Proxmox Mail Gateway nor
Proxmox Backup Server

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agobump version to 8.0.11
Thomas Lamprecht [Mon, 26 Jun 2023 19:40:01 +0000 (21:40 +0200)]
bump version to 8.0.11

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agotui: hide max-vz and max-root inputs if product isn't PVE
Thomas Lamprecht [Mon, 26 Jun 2023 19:37:54 +0000 (21:37 +0200)]
tui: hide max-vz and max-root inputs if product isn't PVE

like we do in the GTK based installer

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agobuildsys: copy over .cargo config directory to build-dir
Thomas Lamprecht [Mon, 26 Jun 2023 17:23:26 +0000 (19:23 +0200)]
buildsys: copy over .cargo config directory to build-dir

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agobump version to 8.0.10
Thomas Lamprecht [Mon, 26 Jun 2023 17:10:06 +0000 (19:10 +0200)]
bump version to 8.0.10

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agotui: boot disks: filter out Btrfs if setup info disallows it
Thomas Lamprecht [Mon, 26 Jun 2023 17:08:01 +0000 (19:08 +0200)]
tui: boot disks: filter out Btrfs if setup info disallows it

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agobuildsys: add check-pbs-tui target
Thomas Lamprecht [Mon, 26 Jun 2023 17:06:58 +0000 (19:06 +0200)]
buildsys: add check-pbs-tui target

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agobuildsys: add check-pmg-tui target
Thomas Lamprecht [Mon, 26 Jun 2023 17:05:50 +0000 (19:05 +0200)]
buildsys: add check-pmg-tui target

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agotui: rustfmt
Wolfgang Bumiller [Mon, 26 Jun 2023 13:59:43 +0000 (15:59 +0200)]
tui: rustfmt

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
10 months agotui: use product for default hostname
Wolfgang Bumiller [Mon, 26 Jun 2023 13:59:39 +0000 (15:59 +0200)]
tui: use product for default hostname

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
10 months agotui: make ProxmoxProduct Copy
Wolfgang Bumiller [Mon, 26 Jun 2023 13:56:13 +0000 (15:56 +0200)]
tui: make ProxmoxProduct Copy

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
10 months agotui: add global 'setup_info'
Wolfgang Bumiller [Mon, 26 Jun 2023 13:52:28 +0000 (15:52 +0200)]
tui: add global 'setup_info'

This is basically "installer information" and will is used
for things such as default values for which we do not want
to pass around all the data.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
10 months agobump version to 8.0.9
Thomas Lamprecht [Thu, 22 Jun 2023 14:48:22 +0000 (16:48 +0200)]
bump version to 8.0.9

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agodisk selection: save both, order and disk id
Thomas Lamprecht [Thu, 22 Jun 2023 14:46:33 +0000 (16:46 +0200)]
disk selection: save both, order and disk id

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agofix space calculation for small disks for pve product
Stoiko Ivanov [Thu, 22 Jun 2023 13:57:13 +0000 (15:57 +0200)]
fix space calculation for small disks for pve product

The convoluted calculation logic in case the disks is 8GB leads to
datasize becoming 16EiB further down:
* after calculating and removing the rootsize from $rest, $rest becomes
  smaller than $space (which should be the minimal non-used space in the
  volume-group) - this leads to a negative value, which overflows in
  the `& ~0xFFF` opration.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
10 months agoalways align rootdisk size to 4 MiB
Fiona Ebner [Thu, 22 Jun 2023 14:18:34 +0000 (16:18 +0200)]
always align rootdisk size to 4 MiB

While this was already done in the $rest < 48 GiB cases, it wasn't yet
done for the else branch and also not if $maxroot_mb was assigned,
because of being smaller.

Second and last step towards fixing an issue reported in the community
forum [0] where using 250.00 hdsize, 250 maxroot and 0 minfree would
fail.

Turns out two extents would be missing because of lvcreate implicitly
rounding up, one of them for the root LV (the one for metadata was
already handled in the previous commit).

[0]: https://forum.proxmox.com/threads/129320/post-566375

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
10 months agoalign metadatasize to 4 MiB
Fiona Ebner [Thu, 22 Jun 2023 14:18:33 +0000 (16:18 +0200)]
align metadatasize to 4 MiB

First step towards fixing an issue reported in the community forum [0]
where using 250.00 hdsize, 250 maxroot and 0 minfree would fail.

Turns out two extents would be missing because of lvcreate implicitly
rounding up, one of them for the metadata.

[0]: https://forum.proxmox.com/threads/129320/post-566375

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
10 months agogtk: raid disk selector: separate UI state from config state
Thomas Lamprecht [Thu, 22 Jun 2023 14:22:10 +0000 (16:22 +0200)]
gtk: raid disk selector: separate UI state from config state

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>