it's the more modern version, the legacy 'ntfs' one is already removed upstream
nowadays.. initial feedback on a test build was positive throughout - while it
still doesn't support all features of the Windows version, it does handle a lot
of backups better than the previous one..
Stoiko Ivanov [Tue, 28 Nov 2023 15:07:30 +0000 (16:07 +0100)]
update kernel to 6.5.11 and ZFS to 2.2.1, refresh patches
* for the kernel-patch this includes a rename from 0003+0004 to
0001+0002
* for ZFS there was a change in upstream's autotools-setup - I
referenced the commit in the actual patch-file
minimally tested with a VM with a zfs-pool and an ext4 disk
* restore of a directory on ext4 containing 160MB of debian packages
as tar.zstd
* restore of a small folder (/root in a debian container) on zfs
both worked
restoring files from a Windows guest - worked, however there is an
independent issue with tpmstate not being found:
`given image 'drive-tpmstate0-backup.img.fidx' not found (400)`
directories with 10 million files also still cause the restore-shim to
run into OOM (but this is independent of the restore-image)
Fixes a small regression in 0cec05b ("build initramfs: download
packages into per-flavor dirs"), which while taking a better
approach in general, missed that the debug package list is selected
with the assumption that it builds on top of the base list, but with
the split into two separate directories (to fix pre-caching), this
was lost.
While the packages selected pulled in a surprising amount of reverse
dependencies, it was still missing some like lvm2 tools (dmeventd and
co) and most notably busybox - which is really nice to have in the
debug image.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
fix clean build again, use cache if actually there
whit dropping this in 0cec05b ("build initramfs: download packages
into per-flavor dirs"), the pre-caching was made effectively useless,
and building without internet during the build-step failed.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Stoiko Ivanov [Thu, 1 Jun 2023 14:32:33 +0000 (16:32 +0200)]
build initramfs: add libtirpc3 to basic packages
since libc6 in bookworm does not provide use '--enable-obsolete-rpc'
anymore and zfs needs it (building '--without-libtirpc' fails) - we
add it to both images.
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Stoiko Ivanov [Thu, 1 Jun 2023 14:32:32 +0000 (16:32 +0200)]
build initramfs: download packages into per-flavor dirs
commit f773602bd35c84c292649fb1c6e215050f25c21e introduced pre-caching
packages in the source-package, but resulted in both initrds getting
all packages installed:
* DOWNLOAD_ONLY=1 .../build_intiramfs.sh puts all packages in to pkgs
* installation when running w/o DOWNLOAD_ONLY installs all files
matching '*.deb' - which results in all packages being installed
Additionally the TO_DOWNLOAD variable contained all packages anyways
(apt-rdepends yields packagenames - the file-existance check matches
on deb-filenames (containing version+arch) - so this was stripped out
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Tue, 30 May 2023 07:31:52 +0000 (09:31 +0200)]
update kernel to 6.2.16 & ZFS to 2.1.11, drop outdated patches
switch to our new unified ubuntu-kernels git origin, allows for
simpler update (no buildsys change required anymore)
The two patches dropped are:
- removal of xr-usb-uart, which was patched in by ubuntu (thus no
KConfig switch, and got now removed, see:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1945938
- a fix for a syntax error in Ubuntu patches, which is fixed in newer
repo already
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Max Carrara [Thu, 20 Apr 2023 12:53:07 +0000 (14:53 +0200)]
fix #4477: init: symlink busybox binaries on init
This change makes Busybox symbolically link its inbuilt utils to their
respective locations, allowing them to be invoked through their
absolute path. This means that Busybox inbuilts like e.g. `mount`
and `env` become available at `/bin/mount` and `/usr/bin/env` etc.
In particular, when entering any of the snapshot directories in
`.zfs/snapshot` (e.g. via `cd` or `ls`), ZFS normally mounts the
respective snapshot(s) on demand, using `/usr/bin/env mount [...]`
internally. Before this change, this would fail, rendering ZFS
snapshots unavailable when restoring individual files.
Signed-off-by: Max Carrara <m.carrara@proxmox.com>
Thomas Lamprecht [Wed, 12 Apr 2023 10:29:38 +0000 (12:29 +0200)]
init shim: print package version
use the one from the debian package, as that's what we actually track
but fall back to the cargo one from the init shim (which we normally
don't bump) for developer convenience (env! fails the build if the
variable isn't set).
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
instead of using crates.io - the build still requires network access and
depends on configured APT sources in the build environment, so there's room for
further improvement.
Thomas Lamprecht [Tue, 15 Nov 2022 16:08:31 +0000 (17:08 +0100)]
init shim: drop ttyS1 driver check
the path changed to not include serial8250 directly anymore in jammy
kernel and we just don't really care, not much winning by dying here
if the base ttyS1 dev exists..
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Stefan Reiter [Wed, 16 Jun 2021 10:55:49 +0000 (12:55 +0200)]
build custom ZFS tools without udev requirement
We already include the required sources with the zfsonlinux submodule,
so apply a patch to disable linking against libudev (as I couldn't find
a working configure flag for it?) and build the user space part as well.
Includes dependencies as well as 'strace' for the debug initramfs, which
proved quite useful for debugging.
The init-shim automatically creates the necessary /dev/zfs device node,
and additionally /dev/null to make rust's std::process::Command happy.
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
Stefan Reiter [Thu, 6 May 2021 15:26:24 +0000 (17:26 +0200)]
add debug initramfs as seperate package
"proxmox-backup-restore-image-debug", containing only the debug
initramfs, so depends on the base "proxmox-backup-restore-image" for the
kernel.
Adapt the init-shim to start an agetty on ttyS1, which the host
can use to connect to a root shell for debugging, and use
create_dir_all, since some debug packages seem to create /sys and /proc
as empty dirs already.
The build_initramfs.sh script is modified to include dependency
resolution via apt-rdepends, so debug packages like agetty (util-linux),
busybox and gdb can easily be added. This now builds both the regular
and the debug binary at once, to avoid downloading shared packages
twice.
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
Stefan Reiter [Thu, 6 May 2021 15:26:23 +0000 (17:26 +0200)]
kernel: power off on panic
Instead of just rebooting, which may lead to an infinite loop, try to
resolve the situation by just powering off the VM - it can be restarted
any time anyway.
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
Stefan Reiter [Mon, 26 Apr 2021 13:04:17 +0000 (15:04 +0200)]
add workaround kernel patch for vsock panics
Allocation failures for vsock packet buffers occur routinely when
downloading more than one stream at the same time, with less then 512
MiB of RAM it sometimes even occurs for single downloads.
This appears to fix it in all of my reproducer scenarios, tested with up
to 6 downloads at once in a 128 MiB RAM machine.
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
Stefan Reiter [Tue, 16 Feb 2021 17:06:51 +0000 (18:06 +0100)]
initial commit
proxmox-restore-vm-data provides means to build a debian package
containing a minimalistic Linux kernel and a corresponding initramfs
image for use in a file-restore VM.
Launched with QEMU/KVM, it boots in 1.6 seconds to userspace (on AMD
2700X) and has a minimal attack surface (no network stack other than
virtio-vsock, no auxiliary device support (USB, etc...), userspace
written in Rust) as opposed to mounting backup archives directly on the
host.
Since our Rust binaries are currently not fully statically linked, we
need to include some libraries into the initramfs as well. This is done
in 'build_initramfs.sh'.
A minimal /init is included as a Rust binary (init-shim-rs), doing only
the bare-minimum userspace setup before handing over control to the
file-restore daemon (see 'proxmox-backup' repository).
The debian package comes with a 'activate-noawait
pbs-file-restore-initramfs' trigger activation to rebuild the cached
initramfs when the base image shipped here updates. This is taken care
of by proxmox-file-restore.
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>