🌎 External changes:
- 🚀 Upgrade SystemRescue to v12.00 and archzfs to v2.3.1.
- ➕ Add a no-firewall boot entry to the GRUB and SYSLINUX menus.
(If you'd like to vote for this to become the default boot entry,
leave a 👀 reaction on this release.)
- 🪶 Replace Firefox with the more lightweight GNOME Web (`epiphany`).
- ✂️ Remove packages `b43-fwcutter`, `darkhttpd`, `discount`, `dkms`,
`geany`, `irssi`, `keepassxc`, `linux-atm`, `qtpass`, `xorg-bdftopcf`,
`xorg-mkfontscale`, `xorg-sessreg`, `xorg-smproxy`, `xorg-x11perf`,
`xorg-xcmsdb`, `xorg-xcursorgen`, `xorg-xdriinfo`, `xorg-xgamma`,
`xorg-xkbevd`, `xorg-xkbprint`, `xorg-xkbutils`, `xorg-xlsatoms`,
`xorg-xlsclients`, `xorg-xpr`, `xorg-xrefresh`, `xorg-xsetroot`,
`xorg-xvinfo`, `xorg-xwd`, `xorg-xwud`, `yubikey-manager`, and
`yubikey-personalization-gui`.
- 🛠️ Fix reference to Featherpad (now Mousepad) left behind in
`issue(5)` by v11.02+2.2.6.
- 🛠️ Make the image's volume label ISO-9660-compliant.
Closes#17.
Adds empty sysresccd_custom.cfg and /boot/grub/custom.cfg files that
are included from the regular boot menus (syslinux and grub). These
are intended for the user to customize.
Having dedicated files for this allows completely replacing the files.
This is easier than requiring careful patching with potential conflicts
with different versions of SystemRescue.
The upcoming systemrescue-usbwriter should work mostly independent of SystemRescue .iso version
and one systemrescue-usbwriter version should work for a wide range of SystemRescue versions.
For this to work, it has to exactly determine compatibility without any crude guesswork.
The necessary info for this is stored in the imageinfo file.
It also contains a "FORMAT_EPOCH" field that allows to explicitly declare incompatibility to older
versions of systemrescue-usbwriter in case automatic compatibility detection based on syslinux
version etc. doesn't work.
These embedded checksums can help against accidental image corruption,
for example due to bad cache data, broken mirror servers or bad media.
They are not digital signatures and do *not* help against bad actors
manipulating the .iso image.
Images can be checked manually with the "checkisomd5" command. This
is done automatically when using the Fedora media writer or the upcoming
systemrescue-usbwriter.
The latest Arch updates changed mount behavior during build, at least that
is what I'm seeing on my machine. So only do the second unmount if the
chroot /dev is still mounted. Otherwise the build script would abort due to
the error returncode.
Initializing the pacman key database during boot can take considerable time
and there is no locking during this time against concurrent file access.
This can lead to problems when installing packages soon after reboot.
This also speeds up the boot process.
Additional disk space requirement is about 1 MByte.
Fixes#290
-d option for build.sh
Regular build: 3m49s for 684M ISO
Devel build: 46s for 857M ISO
-> 80% reduction of build time in devel mode
(measured just on my devel vm, not on a broad set of hardware)
It has been superseded by native mkinitcpio (since v16) solution:
- systemd-tmpfiles (via /usr/lib/tmpfiles.d/mkinitcpio.conf fragment) creates /run/initramfs directory during boot.
- Before shutdown, mkinitcpio-generate-shutdown-ramfs.service (enabled by default) populates /run/initramfs using sd-shutdown hook.
Albeit not strictly required, drop it from build.sh too.
See:
2fa0eb25d4e785ee2cee7123888493
This prevents huge dependency downloads by pacman when the SystemRescue version gets older
by using a snapshot repo from the day the SystemRescue version is released.
The classic rolling repos from Arch are also available as option. Activate with the
"--config /etc/pacman-rolling.conf" option to pacman.
To allow switching on a per-command basis, two different sets of remote package databases
are required. But the local package database must be the same for both variants. This
is achived by using two different DBPaths in the pacman config files and bind-mounting
the local part together. pacman does not accept symlinks for this, so it must be a bind mount.
The repo snapshot date is determined automatically by a query to the archive mirror.
You can also set a different snapshot date with the -s option.
Before always the current packages were used. Use defined snapshots instead,
because a future commit will switch pacman within the image to use the snapshot too.