10 months agoSW: add mbuffer to GRML_FULL
Michael Prokop [Fri, 6 May 2022 10:02:14 +0000 (12:02 +0200)]
SW: add mbuffer to GRML_FULL

mbuffer - tool for buffering data streams

Acked-by: Darshaka Pathirana
10 months agoSW: add stenc to GRML_FULL
Michael Prokop [Fri, 6 May 2022 10:00:52 +0000 (12:00 +0200)]
SW: add stenc to GRML_FULL

stenc (SCSI Tape Encryption Manager)

Acked-by: Darshaka Pathirana
11 months agoRelease new version 0.40.1 v0.40.1
Michael Prokop [Wed, 20 Apr 2022 12:48:39 +0000 (14:48 +0200)]
Release new version 0.40.1

11 months agoSW: move from ntp/ntpdate to ntpsec/ntpsec-ntpdate in GRML_SMALL + GRML_FULL
Michael Prokop [Mon, 11 Apr 2022 16:47:19 +0000 (18:47 +0200)]
SW: move from ntp/ntpdate to ntpsec/ntpsec-ntpdate in GRML_SMALL + GRML_FULL

Starting with bookworm (current Debian/testing), ntpsec replaces ntp,
and ntpsec-ntpdate replaces ntpdate. Now both the ntp + ntpdate packages
are transitional packages. Given that ntpsec/ntpsec-ntpdate are
available even for oldstable, let's follow this transition now (also see

FTR, as of 2022-04-11:

| % rmadison ntpsec ntpsec-ntpdate
| ntpsec         | 1.1.3+dfsg1-2+deb10u1 | oldstable              | source, amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x
| ntpsec         | 1.1.3+dfsg1-2+deb10u1 | oldstable-debug        | source
| ntpsec         | 1.2.0+dfsg1-4~bpo10+1 | buster-backports       | source, amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x
| ntpsec         | 1.2.0+dfsg1-4~bpo10+1 | buster-backports-debug | source
| ntpsec         | 1.2.0+dfsg1-4         | stable                 | source, amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
| ntpsec         | 1.2.1+dfsg1-6         | testing                | source, amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
| ntpsec         | 1.2.1+dfsg1-6         | unstable               | source, amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
| ntpsec         | 1.2.1+dfsg1-6         | unstable-debug         | source
| ntpsec-ntpdate | 1.1.3+dfsg1-2+deb10u1 | oldstable              | amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x
| ntpsec-ntpdate | 1.2.0+dfsg1-4~bpo10+1 | buster-backports       | amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x
| ntpsec-ntpdate | 1.2.0+dfsg1-4         | stable                 | amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
| ntpsec-ntpdate | 1.2.1+dfsg1-6         | testing                | amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
| ntpsec-ntpdate | 1.2.1+dfsg1-6         | unstable               | amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x

12 months agoRelease new version 0.40.0 v0.40.0
Michael Prokop [Mon, 21 Mar 2022 15:19:28 +0000 (16:19 +0100)]
Release new version 0.40.0

12 months agoRedesign RELEASE_INFO handling + fix variable replacements within templates
Michael Prokop [Fri, 11 Mar 2022 15:53:06 +0000 (16:53 +0100)]
Redesign RELEASE_INFO handling + fix variable replacements within templates

There's no point in setting "$GRML_NAME $VERSION - $RELEASENAME" at
different places, while it's supposed to be identical to $RELEASE_INFO,
so let's unify it.

Also ensure, that $fixed_release_info is set at the appropriate place.
Otherwise it might be missing, when adjust_boot_files() is invoked from
within grub_setup(). This has been observed to fail for example with
SecureBoot enabled, and using grml-live's `-b` option:

  [*] Secure Boot is enabled [mode: debian]
  [x] Variable fixed_squashfs_name is unset, can't adjust %SQUASHFS_NAME% in templates.
  [x] Variable fixed_release_info is unset, can't adjust %RELEASE_INFO% in templates.
  [*] Generated 64-bit Secure Boot (debian) EFI image /srv/grml-live/grml64-forensic_2022.03-1/grml_chroot//boot/efi.img

Furthermore, $fixed_squashfs_name shouldn't be used in
adjust_boot_files(), as the boot templates usually include
"toram=%SQUASHFS_NAME%", while this shouldn't be stripped of (as it
would break the actual toram feature then).  Instead, the
$fixed_squashfs_name should be used only with specific isolinux/syslinux
config files, where the length matters for the appropriate line length
for its look'n'feel.

This work was funded by Grml-Forensic.

12 months agoUse grubx64.efi file from grml_chroot, instead of relying on host system
Michael Prokop [Fri, 11 Mar 2022 15:18:19 +0000 (16:18 +0100)]
Use grubx64.efi file from grml_chroot, instead of relying on host system

We don't want to depend on the host system, but instead use the
grubnetx64.efi.signed or grubnetx64.efi files from the grml_chroot as
grubx64.efi for PXE boot.

Related to commit 871fc96fc

This work was funded by Grml-Forensic.

13 months agoSW: add myrescue to GRML_FULL
Michael Prokop [Tue, 1 Feb 2022 16:35:09 +0000 (17:35 +0100)]
SW: add myrescue to GRML_FULL

This requires only ~85kB of disk space.

13 months agobuildinfo generation: avoid error message with older versions of jo
Michael Prokop [Wed, 26 Jan 2022 12:27:23 +0000 (13:27 +0100)]
buildinfo generation: avoid error message with older versions of jo

We use the jo(1) tool for generating /conf/buildinfo.json.
To avoid syntax errors when sorting the list of keys/values, we
also end the last entry (wayback_date=...) with a "\", so the next
line is considered, and reordering the list is simple.

The usage of ":" isn't supported by older versions of jo, though:

| % jo -v
| jo 1.0
| % jo -p foo=bar :
| Argument `:' is neither k=v nor k@v
| {
|    "foo": "bar"
| }

FTR, newer versions don't cause any failure messages:

| % jo -v
| jo 1.3
| % jo -p foo=bar :
| {
|    "foo": "bar"
| }

Since there's no strong need to use ":", the error message might look
like the /conf/buildinfo.json isn't generated (while it still is), and
I'd like to keep sorting the list easy and error free, let's fix this.
Usage of "--" usually ends list of command line options, let's use this
pattern instead.

13 months agoSW: drop bonnie++ from GRML_FULL
Michael Prokop [Wed, 26 Jan 2022 06:49:19 +0000 (07:49 +0100)]
SW: drop bonnie++ from GRML_FULL

bonnie++ is missing from Debian/testing since 2021-10-27, due to +

Since 2021-08-23 there's a patch available to address the build failure
(see, but
sadly there's no progress from upstream / package maintainer since then.

Given that fio exists nowadays, let's see whether there's any need
to include bonnie++ at all.

14 months agoSW: replace fluxbox with openbox + obconf in GRML_FULL
Michael Prokop [Mon, 24 Jan 2022 17:09:42 +0000 (18:09 +0100)]
SW: replace fluxbox with openbox + obconf in GRML_FULL

fluxbox is missing in Debian/testing (upcoming bookworm) due to a ftbfs
bug (see since
2021-10-27, and it looks like this isn't going to change soonish.  We've
good experience with usage of openbox for custom Grml flavours, so let's
try replacing fluxbox with openbox (and obconf for configuring openbox).


14 months agoRelease new version 0.39.2 v0.39.2
Michael Prokop [Mon, 24 Jan 2022 16:19:08 +0000 (17:19 +0100)]
Release new version 0.39.2

14 months agoSW: drop iptstate from GRML_SMALL + GRML_FULL
Michael Prokop [Mon, 24 Jan 2022 16:05:57 +0000 (17:05 +0100)]
SW: drop iptstate from GRML_SMALL + GRML_FULL

iptstate is missing in Debian/testing due to

At least for the time being, let's drop it from our software list,
to get fresh Debian/testing based daily ISO builds again.

14 months agoSW: drop firmware-ath9k-htc from GRMLBASE
Michael Prokop [Mon, 24 Jan 2022 16:04:27 +0000 (17:04 +0100)]
SW: drop firmware-ath9k-htc from GRMLBASE

firmware-ath9k-htc is missing in Debian/testing due to Its fix is
stuck in the open-ath9k-htc-firmware package in Debian's NEW queue since
5 months (see

At least for the time being, let's drop it from GRMLBASE, to get fresh
Debian/testing based daily ISO builds again.


14 months agoMerge remote-tracking branch 'origin/github/pr/106'
Michael Prokop [Mon, 24 Jan 2022 09:50:31 +0000 (10:50 +0100)]
Merge remote-tracking branch 'origin/github/pr/106'

14 months agogrml-live.txt: output dir mount options; manifold
Dr. András Korn [Mon, 24 Jan 2022 09:48:22 +0000 (10:48 +0100)]
grml-live.txt: output dir mount options; manifold

Explain that the output dir shouldn't be nodev, noexec or nosuid (some packages may fail to configure correctly with nosuid even if no problems are immediately apparent with the default builds).

Improve the section on reverting manifold.

14 months agoSW: drop bacula-* from GRML_FULL
Michael Prokop [Tue, 11 Jan 2022 06:36:40 +0000 (07:36 +0100)]
SW: drop bacula-* from GRML_FULL

Bacula was removed from Debian/testing as of 2021-11-23 due to #997139.
It's unclear, whether bacula is of any further use on a live system
as-is (also given that the bacula version in Debian is lagging behind
upstream quite a lot; and there also exists bareos nowadays, though not
present in Debian as such). If someone should be missing bacula from
Grml, I'd like to know.

Not only drop the software packages, but also drop the hostname
workaround for /etc/bacula/bacula-fd.conf in our GRMLBASE/05-hostname

14 months agoSW: replace exfat-utils with exfatprogs in GRML_FULL
Michael Prokop [Tue, 11 Jan 2022 06:31:24 +0000 (07:31 +0100)]
SW: replace exfat-utils with exfatprogs in GRML_FULL

See and

17 months agoSW: drop slurm from GRML_FULL
Michael Prokop [Wed, 13 Oct 2021 15:40:35 +0000 (17:40 +0200)]
SW: drop slurm from GRML_FULL

slurm got removed from Debian/testing on 2021-10-08 due to

Given that this prevents builds of grml-testing in our daily
ISOs, let's remove the package, at least for now.

17 months agoSW: add f2fs-tools to GRML_SMALL + GRML_FULL
Michael Prokop [Tue, 5 Oct 2021 07:48:43 +0000 (09:48 +0200)]
SW: add f2fs-tools to GRML_SMALL + GRML_FULL

Thanks: Arun for the suggestion

17 months agoSW: drop ifenslave from GRML_SMALL and GRML_FULL
Michael Prokop [Mon, 27 Sep 2021 09:41:46 +0000 (11:41 +0200)]
SW: drop ifenslave from GRML_SMALL and GRML_FULL

Quoting /usr/share/doc/ifenslave/NEWS.Debian.gz:

| ifenslave (2.10) unstable; urgency=medium
|   This version of the ifenslave package no longer provides /sbin/ifenslave. The
|   /sbin/ip command from the iproute2 package supports creating bonding masters
|   and enslaving other interfaces to it.
|  -- Guus Sliepen <>  Tue, 08 May 2018 22:47:07 +0200

ifenslave is no longer in Debian/testing since 2021-09-14 due to RC
bugs, and therefore we don't have any recent Debian/testing based daily
ISOs anymore. Given that iproute2 supports network bonding, let's drop
ifenslave from our package list.

Related to

17 months agoRelease new version 0.39.1 v0.39.1
Michael Prokop [Mon, 27 Sep 2021 08:55:11 +0000 (10:55 +0200)]
Release new version 0.39.1

17 months agoisolinux: fix toram=... variable usage within isolinux configs
Michael Prokop [Mon, 27 Sep 2021 08:35:16 +0000 (10:35 +0200)]
isolinux: fix toram=... variable usage within isolinux configs

Fixup for commit 9453222c0, where we introduced usage of
$fixed_squashfs_name.  This variable was set up only *after*
adjust_boot_files function got invoked for the isolinux configuration
files. As a result the isolinux configuration files ended up with their
template placeholder settings included ("toram=%SQUASHFS_NAME%").

Fix ordering, but also warn in adjust_boot_files() if the the
$fixed_squashfs_name + $fixed_release_info variables are unset.

Thanks: Chris Hofstaedtler for the bug report

19 months agoGRMLBASE/15-initsetup: provide workaround for failing rsyslog
Michael Prokop [Tue, 24 Aug 2021 08:14:21 +0000 (10:14 +0200)]
GRMLBASE/15-initsetup: provide workaround for failing rsyslog

Previous versions of the rsyslog package provided its rsyslog systemd
unit file as /lib/systemd/system/rsyslog.service. Starting with rsyslog
v8.2108.0-1, the file is provided as
/usr/lib/systemd/system/rsyslog.service though. This change is related
to the "dh_installsystemd: Prefer /usr/lib/systemd/ to /lib/systemd"
change from debhelper v13.4, which furthermore seems to be related to
the usrmerge situation.

Now executing `systemctl preset-all` fails though:

| # systemctl preset-all
| [...]
| Failed to preset unit, file /etc/systemd/system/syslog.service already exists and is a symlink to /lib/systemd/system/rsyslog.service.

By manually removing the /etc/systemd/system/syslog.service symlink, the
appropriate symlink (from /etc/systemd/system/syslog.service towards
/usr/lib/systemd/system/rsyslog.service) gets set up as expected again.

Reported towards Debian as #992847, but until it's fixed in the upstream
packaging, we need a workaround in our build tools.

19 months agoUpdate DEBIAN_STABLE's apt sources.list configuration for bullseye
Michael Prokop [Mon, 23 Aug 2021 09:27:32 +0000 (11:27 +0200)]
Update DEBIAN_STABLE's apt sources.list configuration for bullseye

Related fix for commit 07181b4c86f. Now that bullseye is the new Debian
stable release, also adjust the backports entry accordingly.

FTR, when using "stable-backports" instead of "bullseye-backports",
apt warns about:

| W: Conflicting distribution: stable-backports InRelease (expected stable-backports but got bullseye-backports)

We might not worry about this, but it might be confusing for users,
so until we've a better approach for this, let's keep it as-is.

Thanks: d630 for the bug report

20 months agoRelease new version 0.39.0 v0.39.0
Michael Prokop [Sun, 25 Jul 2021 15:25:24 +0000 (17:25 +0200)]
Release new version 0.39.0

20 months agoImmediately bail out on errors when generating the ISO fails
Michael Prokop [Fri, 16 Jul 2021 16:21:13 +0000 (18:21 +0200)]
Immediately bail out on errors when generating the ISO fails

For example when the file system is (close to) full and trying to
generate the ISO, the $MKISOFS command line fails with exit code 32, but
we continue to operate on the ISO filename with the isohybrid related
actions and might overwrite the ISO by resetting it.

20 months agoProvide information how ISO was generated in file conf/buildinfo.json
Michael Prokop [Wed, 14 Jul 2021 01:09:25 +0000 (03:09 +0200)]
Provide information how ISO was generated in file conf/buildinfo.json

Relevant changes:

* Depend on "jo" tool, used for generating the json output in

* Do not rewrite $SQUASHFS_NAME content, instead handle its fixed output
  format via $fixed_squashfs_name

* Same for $RELEASE_INFO content, handled via $fixed_squashfs_name now

* Always set $SQUASHFS_BINARY if unset, to be able to log
  a proper command line, even if mksquashfs stage gets skipped

FTR: the generated file is accessible on the live system under


20 months agoRelease new version 0.38.5 v0.38.5
Michael Prokop [Tue, 13 Jul 2021 14:03:27 +0000 (16:03 +0200)]
Release new version 0.38.5

20 months agonetboot creation: no longer compress the tarball + only generate sha256 checksum...
Michael Prokop [Tue, 13 Jul 2021 13:44:46 +0000 (15:44 +0200)]
netboot creation: no longer compress the tarball + only generate sha256 checksum file

Compressing the tarball takes several seconds, while there's usually
no change in file size, as pretty much all its files are already
compressed. By no longer compressing the tarball we reduce build time.

Also no longer generated sha1 and sha512 checksum files, we agreed
to only rely on sha256 checksum files nowadays.

Related to

20 months agoNo longer produce md5, sha1 + sha512 checksums, but only sha256
Michael Prokop [Tue, 13 Jul 2021 13:43:36 +0000 (15:43 +0200)]
No longer produce md5, sha1 + sha512 checksums, but only sha256

We no longer rely on those checksum files and it increases build
time. It should be enough to generate just the sha256 checksum file.

Related to

20 months agoGRMLBASE/98-clean-chroot: also nuke *.xz files
Michael Prokop [Tue, 13 Jul 2021 13:42:43 +0000 (15:42 +0200)]
GRMLBASE/98-clean-chroot: also nuke *.xz files

Files like /var/log/apt/eipp.log.xz are present nowadays

20 months agoRelease new version 0.38.4 v0.38.4
Michael Prokop [Mon, 12 Jul 2021 07:49:08 +0000 (09:49 +0200)]
Release new version 0.38.4

20 months agoSW: add speedtest-cli to GRML_FULL
Michael Prokop [Mon, 12 Jul 2021 06:38:56 +0000 (08:38 +0200)]
SW: add speedtest-cli to GRML_FULL

FTR: requires only 106 kB of additional disk space

Thanks: Darshaka Pathirana for the suggestion

20 months agoSW: add inxi to GRML_FULL
Michael Prokop [Mon, 12 Jul 2021 06:37:14 +0000 (08:37 +0200)]
SW: add inxi to GRML_FULL

Thanks: Darshaka Pathirana for the suggestion

20 months agoetc/grml/fai/config/files/etc/hosts/GRMLBASE: sync IPv6 entries with Debian
Michael Prokop [Fri, 9 Jul 2021 13:52:45 +0000 (15:52 +0200)]
etc/grml/fai/config/files/etc/hosts/GRMLBASE: sync IPv6 entries with Debian

Quoting from Debian netbase's changelog (see

| netbase (5.1) unstable; urgency=low
| [...]
| * Removed ip6-localnet and ip6-mcastprefix from the default /etc/hosts
|   created by postinst because they have no purpose. (Closes: #688090)
| [...]
| netbase (4.30) unstable; urgency=low
|   * On new installs add localhost as an alias for ::1. (Closes: #427067)
| [...]
| netbase (4.35) unstable; urgency=low
|   * Do not add ff02::3 to /etc/hosts because it is not actually assigned.
|     (Closes: #499800)

FTR: netbase 5.1 pre-dates Debian/jessie AKA oldoldstable (which shipped
netbase 5.3)

Development time sponsored by Sipwise GmbH

20 months agoSW: drop rng-tools from GRMLBASE
Michael Prokop [Fri, 9 Jul 2021 12:20:34 +0000 (14:20 +0200)]
SW: drop rng-tools from GRMLBASE

This was noticed via a dependency on mksh (rng-tools, being a
transitional dummy package nowadays, actually Pre-Depends on mksh).
This saves us ~1,671 kB and we already ship haveged. If we really want
to provide such a feature (to feature an entropy gathering daemon to
support hardware randon number generators), then we should probably look
into rng-tools5 instead.

20 months agoRelease new version 0.38.3 v0.38.3
Michael Prokop [Fri, 9 Jul 2021 07:15:25 +0000 (09:15 +0200)]
Release new version 0.38.3

20 months agoSW: add wireless-regdb to GRML_FULL
Michael Prokop [Fri, 9 Jul 2021 05:31:44 +0000 (07:31 +0200)]
SW: add wireless-regdb to GRML_FULL

Seems to be relevant for certain wireless network devices,
start with shipping it for GRML_FULL (whether it's relevant
for GRML_SMALL to be determined yet).

20 months agoSW: add jq to GRML_FULL
Michael Prokop [Thu, 8 Jul 2021 15:16:31 +0000 (17:16 +0200)]
SW: add jq to GRML_FULL

This is certainly a useful tool that we should include by default

21 months agoRelease new version 0.38.2 v0.38.2
Michael Prokop [Mon, 7 Jun 2021 08:44:34 +0000 (10:44 +0200)]
Release new version 0.38.2

21 months agoSW: drop comgt from GRML_FULL
Michael Prokop [Fri, 4 Jun 2021 10:55:47 +0000 (12:55 +0200)]
SW: drop comgt from GRML_FULL

The comgt package was orphaned in 2021 (see and its last
upload dates back to 2016. It shouldn't really matter in 2021 anymore,
but if it really does then let's find out.

21 months agoSW: drop wvdial from GRML_FULL
Michael Prokop [Fri, 4 Jun 2021 10:43:41 +0000 (12:43 +0200)]
SW: drop wvdial from GRML_FULL

The wvdial package was orphaned in 2018 (see and my
assumption is that Point-to-Point protocols aren't really relevant for
Grml users anymore nowadays. It was requested in 2012 (see commit
9c06220097) for GRML_FULL, but if someone really cares about this in
2021 as well it's time to find out (and then we should discuss whether
it's also relevant for GRML_SMALL?).

Removing wvdial package and its dependencies frees ~2.710 kB of disk space.

21 months agoSW: add firmware-ath9k-htc to GRMLBASE
Michael Prokop [Mon, 31 May 2021 05:30:10 +0000 (07:30 +0200)]
SW: add firmware-ath9k-htc to GRMLBASE

Only ~168kB of additional disk space and required for USB wireless adapters,
and licensed under GPL-2(+)

22 months agoRelease new version 0.38.1 v0.38.1
Michael Prokop [Fri, 7 May 2021 15:49:10 +0000 (17:49 +0200)]
Release new version 0.38.1

22 months agoRefresh lintian overrides to reflect current state
Michael Prokop [Fri, 7 May 2021 15:41:24 +0000 (17:41 +0200)]
Refresh lintian overrides to reflect current state

22 months agoBump Standards-Version to 4.5.1
Michael Prokop [Fri, 7 May 2021 15:36:48 +0000 (17:36 +0200)]
Bump Standards-Version to 4.5.1

23 months agoRevert "grml-live: clean up MIRROR_DIRECTORY if provided."
Michael Prokop [Sat, 24 Apr 2021 21:34:41 +0000 (23:34 +0200)]
Revert "grml-live: clean up MIRROR_DIRECTORY if provided."

This reverts commit c78f58bfee79af61276e3e91457a1b0faa55bbf5.

While deleting the bind-mount destination of mirror directories is fine
in theory, we end up deleting empty base directories as well, which
is unexpected and unwanted behavior.

See for the related
discussion, this issue needs further attention yet before we can
include this in a new release of grml-live.

23 months agoSW: add ntfs-3g to GRML_SMALL
Michael Prokop [Sat, 24 Apr 2021 10:49:37 +0000 (12:49 +0200)]
SW: add ntfs-3g to GRML_SMALL

FTR: this adds 3,162 kB of additional disk space (mainly due to libfuse2
libgnutls30 dependencies).

Acked-by: Chris Hofstaedtler
Thanks: Evgeni Golov for the suggestion

2 years agoMerge remote-tracking branch 'origin/github/pr/103'
Michael Prokop [Wed, 24 Mar 2021 12:53:44 +0000 (13:53 +0100)]
Merge remote-tracking branch 'origin/github/pr/103'

2 years agogrml-live: clean up MIRROR_DIRECTORY if provided.
Mihai Moldovan [Wed, 24 Mar 2021 11:44:14 +0000 (12:44 +0100)]
grml-live: clean up MIRROR_DIRECTORY if provided.

Be like a ninja.

2 years agoMerge remote-tracking branch 'origin/github/pr/102'
Michael Prokop [Mon, 22 Mar 2021 23:11:11 +0000 (00:11 +0100)]
Merge remote-tracking branch 'origin/github/pr/102'

2 years agogrml-live: fix typo in (e)error command.
Mihai Moldovan [Mon, 22 Mar 2021 22:12:08 +0000 (23:12 +0100)]
grml-live: fix typo in (e)error command.

2 years agoRelease new version 0.38.0 v0.38.0
Michael Prokop [Wed, 10 Mar 2021 16:32:50 +0000 (17:32 +0100)]
Release new version 0.38.0

2 years agoGRMLBASE/01-packages: also detect and report unknown package names
Michael Prokop [Wed, 10 Mar 2021 13:59:50 +0000 (14:59 +0100)]
GRMLBASE/01-packages: also detect and report unknown package names

If FAI doesn't know package names during its dirinstall run, it reports:

| WARNING: These unknown packages are removed from the installation list

... in fai.log and software.log. This happens e.g. if a package was
removed from a Debian repository and is no longer known therefore. What
FAI reports through its install_packages.list are only packages that
were asked for installation *and* exist as such (so not a "unknown
package package"), but failed to install - so this sadly doesn't help

One option would be to set FAI_DISABLE_PACKAGE_NAME_CHECK=1 (which
corresponds to FAI install_packages's -N cmdline option), but then the
installation fails hard with unknown packages, which isn't what we want
as default behavior. But provide this disabled(!) configuration option
in GRMLBASE.var, just in case someone is looking for it.

As a solution for our use case, let's handle this via our existing
GRMLBASE/01-packages script, which checks for missing packages already.
Now we also check FAI's software.log for the 'These unknown packages'
error message and report them via package_errors.log.

This work was funded by Grml-Forensic.

2 years agoGRUB templates: provide menu entry for UEFI Firmware Settings
Michael Prokop [Wed, 10 Mar 2021 13:58:41 +0000 (14:58 +0100)]
GRUB templates: provide menu entry for UEFI Firmware Settings

When running in EFI mode, it's as simple as executing "fwsetup".


2 years agoGRUB templates: do not set root/chainloader but just exit for boot from next device
Michael Prokop [Wed, 10 Mar 2021 13:55:23 +0000 (14:55 +0100)]
GRUB templates: do not set root/chainloader but just exit for boot from next device

This pretty much never works for me, while exiting GRUB
switches to the next device in the boot order, so let's
just "exit" GRUB and name the menu entries accordingly.


2 years agoUse 1m as new default squashfs block size
Michael Prokop [Wed, 10 Mar 2021 08:29:41 +0000 (09:29 +0100)]
Use 1m as new default squashfs block size

The default block size of mksquashfs is 128k, while we used 256k since 2009.
When increasing the block size further, we increase build time, but also
decrease the file size (and therefore the resulting ISO).

Nowadays rotating media (CD/DVD) aren't so much in usage anymore, while
(USB) flash drives and direct ISO boot (both from disk as well as via
OOB management) are way more common. Latency maybe is no longer so
relevant as it used to be, so let's see if this turns out to be a
problem. On the other side smaller ISOs decrease download times as well
as disk usage (esp. when used as /boot/grml via grml-rescueboot).
Overall it is a trade off that's worth consideration, let's give it a try.

Some non-scientific benchmarks give the following build times:

* block size 256k: 2min 19sec, 383MB
* block size 1m:   3min 30sec, 363MB

Buffer/cache memory usage of the booted ISO slightly increases (91MB
used and 170MB buff/cache with block size 1m, vs. 94MB used and 143MB
buff/cache with block size 256kb), but might be neglectable. (And once
again, this was another non-scientific benchmark.)

Further options that might be worth consideration are 1) -Xdict-size
(while -Xdict-size 100% is the default already, so noting really to do
for us here), and 2) `-Xbcj x86`, which further increases compression
time, but also has a bit of savings.

FTR, Jonathan Carter did some benchmarks related to squashfs in 2015, see
And Fedora is considering usage of `-b 1M -Xdict-size 1M -no-recovery`
(which would be identical to what we have, note that -no-recovery
doesn't seem to influence file size), see

Thanks: Mihai Moldovan <>

2 years agoGRMLBASE/16-depmod: no longer rely on /boot/* file
Michael Prokop [Tue, 9 Mar 2021 17:54:09 +0000 (18:54 +0100)]
GRMLBASE/16-depmod: no longer rely on /boot/* file

The content was moved into Debian's debug package with kernel
5.8.10-1 and newer, see

| commit 26a6ecc287bdbe56ae5dd4fbbd32c76b57b9e690 (origin/waldi/update-5.8)
| Author: Bastian Blank <>
| Date:   Tue Aug 4 17:19:42 2020 +0200
|     Move into debug package

Now it only contains a place holder:

| # cat /boot/
ffffffffffffffff B The real is in the linux-image-<version>-dbg package

Due to this, we get >134k entries like:

| depmod: WARNING: /lib/modules/5.10.0-4-amd64/kernel/arch/x86/events/rapl.ko needs unknown symbol x86_match_cpu

… resulting in a ~16MB log file (FAI's shell.log).

To avoid this, let's skip usage of depmod's `-e -F /boot/*'.

Note: It's probably not worth checking for 'The real is in
the' inside the /boot/* file and only if it's not present
then consider using it, given that this string might change over time.

FTR: We usually also don't have the Module.symvers available for usage
with depmod's `-E` option, as the Module.symvers is part of the kernel
source package.


2 years agoMerge remote-tracking branch 'origin/github/pr/98'
Michael Prokop [Tue, 9 Mar 2021 17:08:24 +0000 (18:08 +0100)]
Merge remote-tracking branch 'origin/github/pr/98'

2 years agoMerge remote-tracking branch 'origin/github/pr/97'
Michael Prokop [Tue, 9 Mar 2021 17:05:32 +0000 (18:05 +0100)]
Merge remote-tracking branch 'origin/github/pr/97'

2 years agogrml-cheatcodes.txt: reflow, no actual change.
Mihai Moldovan [Mon, 8 Mar 2021 20:24:03 +0000 (21:24 +0100)]
grml-cheatcodes.txt: reflow, no actual change.

2 years agogrml-cheatcodes.txt: update fromiso doc.
Mihai Moldovan [Mon, 8 Mar 2021 20:20:54 +0000 (21:20 +0100)]
grml-cheatcodes.txt: update fromiso doc.

This adds support for file system overrides and makes clear that the
device path prefix is actually optional.

2 years agodocs/grml-live.txt: fix markdown issue, escape *.
Mihai Moldovan [Mon, 8 Mar 2021 17:37:56 +0000 (18:37 +0100)]
docs/grml-live.txt: fix markdown issue, escape *.

Otherwise, the two consecutive asterisks are treated as a
<strong>...</strong> segment, which is not what we mean here.

2 years agogrml-live: isohybrid is the default, reflect that.
Mihai Moldovan [Mon, 8 Mar 2021 14:59:21 +0000 (15:59 +0100)]
grml-live: isohybrid is the default, reflect that.

While isolinux's "manifold" mode was used by default a long time ago,
Grml switched to the isohybrid method in late 2011, mostly due to manifold
being incompatible with UEFI systems.

Documentation and configuration files weren't updated at that time,

Do it now.

2 years agoProvide apt sources.list file to support 'bullseye' as Debian suite
Michael Prokop [Mon, 8 Mar 2021 08:05:06 +0000 (09:05 +0100)]
Provide apt sources.list file to support 'bullseye' as Debian suite

Requires new repository layout quoting from

| over the last years we had people getting confused over <suite>-updates
| (recommended updates) and <suite>/updates (security updates).  Starting
| with Debian 11 "bullseye" we have therefore renamed the suite including
| the security updates to <suite>-security.
| An entry in sources.list should look like
|   deb bullseye-security main
| For previous releases the name will not change.

2 years agoMerge remote-tracking branch 'origin/github/pr/95'
Michael Prokop [Mon, 8 Mar 2021 07:19:33 +0000 (08:19 +0100)]
Merge remote-tracking branch 'origin/github/pr/95'

2 years agoGRUB: drop loopback usage for balder10/FreeDOS.
Mihai Moldovan [Sat, 6 Mar 2021 20:06:00 +0000 (21:06 +0100)]
GRUB: drop loopback usage for balder10/FreeDOS.

Looks like a relic from the bad, old days.

It's certainly not needed any longer, since the initrd16 command can
load the file just fine and newer grub versions are not able to load
compressed files in such a manner, since the length (+2880) refers to
the uncompressed size. Grub will see that the file is smaller than that
and error out. If we were to give it the compressed size, decompression
would fail due to the buffer being too small.

2 years agogrml-cheatcodes.txt: drop trailing whitespace char
Michael Prokop [Fri, 22 Jan 2021 13:13:47 +0000 (14:13 +0100)]
grml-cheatcodes.txt: drop trailing whitespace char

Git-Dch: ignore

2 years agogrml-cheatcodes.txt: fix URL for initramfs-tools manpage
Michael Prokop [Fri, 22 Jan 2021 13:10:29 +0000 (14:10 +0100)]
grml-cheatcodes.txt: fix URL for initramfs-tools manpage

The tool switched section and the URL lead to 404

2 years agogrml-cheatcodes.txt: remove several unsupported boot options
Michael Prokop [Fri, 22 Jan 2021 13:07:00 +0000 (14:07 +0100)]
grml-cheatcodes.txt: remove several unsupported boot options

E.g. in grml-autoconfig commit 0fb27baed a bunch of features
were finally deprecated, so let's remove those here as well
and while it, get rid of some very outdated ones or that
are part of upstream kernel docs anyways.

Also drop the deprecated mem=... docs, with this configuration
we can't even boot nowadays.

2 years agogrml-cheatcodes.txt: document getfile.retries boot option
Michael Prokop [Fri, 22 Jan 2021 13:00:56 +0000 (14:00 +0100)]
grml-cheatcodes.txt: document getfile.retries boot option

This is useful, when the netscript boot option was specified but
times out before network is available.

2 years agoRelease new version 0.37.2 v0.37.2
Michael Prokop [Fri, 22 Jan 2021 11:01:25 +0000 (12:01 +0100)]
Release new version 0.37.2

2 years agoMerge remote-tracking branch 'origin/github/pr/94'
Michael Prokop [Fri, 22 Jan 2021 10:43:16 +0000 (11:43 +0100)]
Merge remote-tracking branch 'origin/github/pr/94'

2 years agoinitramfs-tools: use upstream's xz handling to support multithreading
Michael Prokop [Fri, 22 Jan 2021 09:59:28 +0000 (10:59 +0100)]
initramfs-tools: use upstream's xz handling to support multithreading

initramfs-tools versions >=0.136 support multithreading in
xz compression usage (see upstream commit 41d9ceb3).

While at it fix header comment, to refer to the actual
script (which was renamed in commit 6e778099).

FTR: we're still using xz (and not using e.g. zstd) because
it still seems to be the combination of small file size
*and* decompression speed now that we have multithreading
support (though zstd might be an interesting option in the future),
also see

2 years agoGRUB: remove erroneous quotes around kernelopts
Michael Lass [Sun, 27 Dec 2020 17:20:27 +0000 (18:20 +0100)]
GRUB: remove erroneous quotes around kernelopts

kernelopts are used by grml-rescueboot to communicate kernel arguments
from the host's grub to the grub within the grml ISO. E.g., the host
grub boot entry will contains something like:

    kernelopts=" arg1 arg2 blacklist=foo etc "
    export kernelopts

Currently, grub within the grml ISO will pass this entire string as one
single argument to the kernel. Remove the quotes such that the arguments
are interpreted as intended.


2 years agoRelease new version 0.37.1 v0.37.1
Michael Prokop [Tue, 25 Aug 2020 09:49:56 +0000 (11:49 +0200)]
Release new version 0.37.1

2 years agoUpdate lintian-overrides for new EFI boot files
Michael Prokop [Tue, 25 Aug 2020 09:48:32 +0000 (11:48 +0200)]
Update lintian-overrides for new EFI boot files

Fixup for commit 518eb395d865 where templates/EFI/BOOT/ was
split into templates/EFI/debian/BOOT/ + templates/EFI/ubuntu/BOOT/

2 years agoAdd bsdmainutils to DEBORPHAN whitelist
Michael Prokop [Wed, 12 Aug 2020 21:44:15 +0000 (23:44 +0200)]
Add bsdmainutils to DEBORPHAN whitelist

Fixes Jenkins issue:

| Package bsdmainutils is missing

2 years agoSecure Boot: update grubx64.efi.signed to fix BootHole issue
Michael Prokop [Wed, 12 Aug 2020 15:24:08 +0000 (17:24 +0200)]
Secure Boot: update grubx64.efi.signed to fix BootHole issue

Fixes the BootHole, see + +

2 years agoSW: add mmdebstrap to GRML_FULL + GRML_SMALL
Michael Prokop [Sun, 2 Aug 2020 11:07:32 +0000 (13:07 +0200)]
SW: add mmdebstrap to GRML_FULL + GRML_SMALL

It requires only ~250kB of disk space and it's much faster
than debootstrap and we plan to use it as default within
grml-debootstrap anyway.

Thanks: Helmut Grohne for the suggestion

2 years agoRelease new version 0.37.0 v0.37.0
Michael Prokop [Sat, 18 Jul 2020 20:12:00 +0000 (22:12 +0200)]
Release new version 0.37.0

2 years ago/e/n/i: move sourcing of /etc/network/interfaces.d/ to begin of file
Michael Prokop [Sat, 18 Jul 2020 14:03:58 +0000 (16:03 +0200)]
/e/n/i: move sourcing of /etc/network/interfaces.d/ to begin of file

netcardconfig doesn't properly handle this section and it disappears
when configuring network devices then.

Rewriting netcardconfig is on our agenda (see, until we get there
let's make sure the status quo works as good as possible.

Take over wording based on what ifupdown's postinst script uses.

2 years agoSW: add grub-efi-amd64-signed + shim-signed to GRML_FULL (AMD64 only)
Michael Prokop [Sat, 18 Jul 2020 11:05:23 +0000 (13:05 +0200)]
SW: add grub-efi-amd64-signed + shim-signed to GRML_FULL (AMD64 only)

This adds support for EFI PXE boot support via grml-terminalserver.

While they are part of the depends in grml-terminalserver, they aren't
strictly needed (alternative depends), so ensure we have those packages
available OOTB for EFI based PXE boot with grml-terminalserver.

2 years agoProvide setup files for EFI boot in netboot package
Michael Prokop [Fri, 17 Jul 2020 22:19:12 +0000 (00:19 +0200)]
Provide setup files for EFI boot in netboot package

The shim + grubnetx64 files need to be available via tftp,
using for example a dhcpd configuration which includes:

| # UEFI boot with DHCPv4
| option architecture-type code 93 = unsigned integer 16;
| subnet netmask {
|   next-server;
|   range;
|   class "pxeclients" {
|     match if substring (option vendor-class-identifier, 0 ,9) = "PXEClient";
|     if option architecture-type = 00:07 {
|       filename "shim.efi";
|     } else {
|       filename "pxelinux.0";
|     }
|   }
| }

... or a dnsmasq configuration which includes:

| domain-needed
| bogus-priv
| expand-hosts
| dhcp-range=,,6h
| dhcp-option=1,  # subnet mask
| dhcp-option=3,     # default gateway
| dhcp-option=6,     # domain name server
| dhcp-option=28,  # broadcast address
| dhcp-option=42,     # timeserver preference
| dhcp-option=252,"\n"         # proxy config
| dhcp-match=BIOS,option:client-arch,0
| dhcp-boot=tag:BIOS,pxelinux.0
| dhcp-match=UEFI,option:client-arch,7
| dhcp-match=UEFI,option:client-arch,9
| dhcp-boot=tag:UEFI,shim.efi
| dhcp-leasefile=/var/lib/misc/dnsmasq.leases
| dhcp-authoritative

or quoting from

| dhcp-boot=pxelinux.0
| dhcp-match=set:efi-x86_64,option:client-arch,7
| dhcp-boot=tag:efi-x86_64,bootx64.efi

Then EFI boot via PXE with GRUB is supposed to work fine,
while pxelinux provides PXE boot for BIOS based systems.

This is related to the EFI boot support within grml-terminalserver,
see commit 3154dc (`Support UEFI PXE boot with DHCPv4`).

This work was funded by Grml-Forensic.

2 years agoGRUB: don't display BIOS only addons when running in EFI mode
Michael Prokop [Fri, 17 Jul 2020 20:03:41 +0000 (22:03 +0200)]
GRUB: don't display BIOS only addons when running in EFI mode

There's no point in displaying the BIOS only addons when
running in EFI mode.

This work was funded by Grml-Forensic.


2 years agoSupport EFI capable ipxe.efi boot addon
Michael Prokop [Fri, 17 Jul 2020 20:02:22 +0000 (22:02 +0200)]
Support EFI capable ipxe.efi boot addon

2 years agoBe more verbose about boot addons installation
Michael Prokop [Fri, 17 Jul 2020 20:01:46 +0000 (22:01 +0200)]
Be more verbose about boot addons installation

Otherwise it's a bit unclear whether the boot addons get installed

2 years agoSupport usage of boot/addons via symlink to corresponding git repository
Michael Prokop [Fri, 17 Jul 2020 19:57:46 +0000 (21:57 +0200)]
Support usage of boot/addons via symlink to corresponding git repository

It's annoying when you are running grml-live from the git repository,
as the installed grml-live-addons package doesn't matter then,
because the templates are pointing to the git repository.
This can be handled via a symlink, support its usage and mention
it in the docs.

2 years agoStore logfiles also when FAI's dirinstall fails
Michael Prokop [Fri, 10 Jul 2020 11:31:45 +0000 (13:31 +0200)]
Store logfiles also when FAI's dirinstall fails

With the ongoing bsdmainutils transition grml32-small_sid failed
to build and we don't have any log files for debugging in our jenkins
builds. Ensure to store logfiles also when the fai dirinstall run

2 years agoscripts/GRMLBASE/52-mdadm: unconditionally clear 64-md-raid-assembly.rules
Michael Prokop [Fri, 10 Jul 2020 09:14:57 +0000 (11:14 +0200)]
scripts/GRMLBASE/52-mdadm: unconditionally clear 64-md-raid-assembly.rules

Similar to what we did in commit 31cd53a8b for LVM,
if /lib/udev/rules.d/64-md-raid-assembly.rules was removed by a
prior run of the unpatched script,
the patched script will fail to create the placeholder file.

This work was funded by Grml-Forensic.

2 years agoRelease new version 0.36.0 v0.36.0
Michael Prokop [Wed, 24 Jun 2020 09:35:13 +0000 (11:35 +0200)]
Release new version 0.36.0

2 years agoRefresh Secure Boot support, supporting new 'debian' method
Michael Prokop [Fri, 19 Jun 2020 13:10:56 +0000 (15:10 +0200)]
Refresh Secure Boot support, supporting new 'debian' method

Secure Boot mode wasn't reliably working, e.g. failing to boot in EFI
mode with disabled Secure Boot, but also hard to debug.

Now with our move from our own Grml kernel packages to the official
Debian kernel ones (which are signed and intended for usage with enabled
Secure Boot) it makes sense to support a proper Secure Boot chain
without hacks like we used to do (like relying on and old GRUB binary
from Ubuntu which supported booting unsigned kernels).

We do NOT enable Secure Boot support by default *yet* though, since we
need to get more testing of this and right now we're in the middle of an
RC version (2020.06-rc1) and the upcoming new stable version of Grml.

Relevant changes:

* minimize templates/secureboot/grub.cfg: while it's certainly nice
  to display only entries that are actually working under Secure Boot,
  it's annoying to have to maintain yet another place of boot menus.

  Also if something fails with detection of Secure Boot then it's annoying
  to have to debug this, instead let's display an error message, inform
  the user about it and ask for debugging information.

  Instead introduce a new GRUB theme (/boot/grub/grml-theme/sb-theme.txt)
  which displays a message that we're running in Secure Boot mode.
  While at it, unify indention in existing /boot/grub/grml-theme/theme.txt.

* move templates/EFI/BOOT towards templates/EFI/ubuntu/BOOT/ to be able
  to support debian and ubuntu methods at the same time

* ship GRUB binaries in templates/EFI/debian/, similar to the ones in

* switch Ubuntu's grubx64.efi.signed from grubx64.efi.signed to gcdx64.efi.signed;
  they differ in what GRUB's $prefix variable is set to:
  * gcdx64.efi.signed uses boot/grub/
  * grubx64.efi.signed uses EFI/ubuntu/
  -> the code in grml-live itself was adjusted accordingly and this also
  enables us to generalize the Secure Boot methods debian + ubuntu to
  use the same code path

* drop templates/boot/grub/grmlenv.cfg: everything what's relevant
  can be taken care of from inside templates/secureboot/grub.cfg,
  so let's avoid another indirection.

  We also moved the detection of Secure Boot into templates/secureboot/grub.cfg
  and reworked it: while Ubuntu's patches have a C function grub_efi_secure_boot(),
  there's no ready-to-use way to detect Secure Boot. But the wrmsr
  command is amongst the list of GRUB's disabled_mods and we can
  distingiush between exit code 18 (wrong invocation/argument usage) and 30 (Secure Boot forbits loading module).

* mention secure boot method in execution prompt/summary to be aware of
  its (non) presence ahead of execution

* update etc/grml/grml-live.conf to properly reflect current state of
  Secure Boot support

Thanks: Jordan Uggla for feedback

This work was funded by Grml-Forensic.

2 years agoSW: add qrencode to GRML_SMALL and GRML_FULL
Michael Prokop [Mon, 15 Jun 2020 18:28:45 +0000 (20:28 +0200)]
SW: add qrencode to GRML_SMALL and GRML_FULL

It adds only 166 kB of additional disk space and it's certainly
useful to use `echo ... | qrencode -t ANSI` also on the plain
console (that's why I went for the "shell" section in GRML_FULL).

2 years agoSW: add tmate to GRML_SMALL + GRML_FULL
Michael Prokop [Mon, 15 Jun 2020 18:23:27 +0000 (20:23 +0200)]
SW: add tmate to GRML_SMALL + GRML_FULL

Adds 1,293 kB of additional disk space.

2 years agoDo not depend on /proc for calculating runtime
Michael Prokop [Fri, 5 Jun 2020 15:44:41 +0000 (17:44 +0200)]
Do not depend on /proc for calculating runtime

For example when running grml-live inside a docker
environment, /proc doesn't necessarily exist.
Instead use seconds since the epoch as base for calculating runtime.

Development time sponsored by Sipwise GmbH

2 years agoRelease new version 0.35.4 v0.35.4
Michael Prokop [Fri, 5 Jun 2020 11:34:09 +0000 (13:34 +0200)]
Release new version 0.35.4

2 years agoAdjust layout of "Predictable Network Interface Names" boot option
Michael Prokop [Fri, 5 Jun 2020 11:30:59 +0000 (13:30 +0200)]
Adjust layout of "Predictable Network Interface Names" boot option

* We use lowercase naming in GRUB
* The help text inside syslinux shouldn't be too long to fit
  on the screen

2 years agoMerge remote-tracking branch 'origin/github/pr/88'
Michael Prokop [Fri, 5 Jun 2020 11:28:27 +0000 (13:28 +0200)]
Merge remote-tracking branch 'origin/github/pr/88'

2 years agoAdd boot option pnet (Predictable Network Interface Names)
Darshaka Pathirana [Wed, 3 Jun 2020 16:13:16 +0000 (18:13 +0200)]
Add boot option pnet (Predictable Network Interface Names)

We plan to use Predictable Network Interface Names by default.

To make that switch easier we added a new boot option "pnet".

The kernel command line option "net.ifnames=0" is currently in every
boot option (except "pnet") but should be removed when Predictable
Network Interface Names works for us.

See: grml/grml#127