diff --git a/FUNDING.yml b/FUNDING.yml
new file mode 100644
index 0000000..e828143
--- /dev/null
+++ b/FUNDING.yml
@@ -0,0 +1,2 @@
+custom: ['http://cash.app/$nchevsky', 'http://paypal.me/nchevsky', 'https://account.venmo.com/u/nchevsky']
+github: nchevsky
diff --git a/README.md b/README.md
index 472d113..6550243 100644
--- a/README.md
+++ b/README.md
@@ -1,69 +1,75 @@
-# SystemRescue
-
-## Project website
-Homepage: https://www.system-rescue.org/
-
-## Project sources
-This git repository contains SystemRescue sources files. This is based on
-https://gitlab.archlinux.org/archlinux/archiso/
-
-## Building SystemRescue
-SystemRescue can be built for x86_64 or i686 architectures. It must be built
-on archlinux if you want to build a 64bit edition, or archlinux32 if you want
-to create a 32bit edition. The following packages must be installed on the
-build system: archiso, grub, isomd5sum, mtools, edk2-shell, hugo.
-
-You need to use a modified version of archiso for the build to work. This
-version is provided in the custom `sysrescuerepo` repository. See the
-`pacman.conf` file in the source. Either copy the `sysrescuerepo` section
-into your `/etc/pacman.conf` or replace the whole `/etc/pacman.conf` file with
-the one from the source. Install archiso afterwards.
-
-The package list contains packages which are not part of the official binary
-package repositories from Arch Linux. These packages are also provided in the
-`sysrescuerepo` repository. If you want to rebuild them, see
-[systemrescue-custompkg](https://gitlab.com/systemrescue/systemrescue-custompkg).
-Create a local repository out of them with `repo-add`, host it on a webserver
-and then adapt pacman.conf.
-
-The build process requires the systemrescue-website repository which is included
-as git submodule. So when checking out this repository, make sure to check out
-the submodule too. This can be done for example with
-`git clone --recurse-submodules https://gitlab.com/systemrescue/systemrescue-sources.git`
-
-The build process can be started by running the build.sh script. It will create
-a large "work" sub-directory and the ISO file will be written in the "out"
-sub-directory.
-
-## Building SystemRescue with docker
-If you are not running archlinux, you can run the build process in docker
-containers. You need to have a Linux system running with docker installed
-and configured. You can use the scripts provided in the `docker` folder of
-this repository.
-
-You must export the environment variable named `sysrescuearch` before you
-run the two helper scripts. It should be set as either `x86_64` or `i686`
-depending on the target architecture for which you want to build the ISO image.
-
-After this, you need to run the script which builds a new docker image, and
-then the script which uses this docker image to builds the ISO image. The second
-script will pass the arguments it receives to the main `build.sh` script.
-
-For example you can build a 64bit version of SystemRescue in docker using these commands:
-```
-export sysrescuearch="x86_64"
-./docker/build-docker-image.sh
-./docker/build-iso-image.sh -v
+# Overview
+
+**SystemRescue+ZFS** is a fork of the [SystemRescue](http://www.system-rescue.org/) distribution (based on [Arch Linux](https://archlinux.org/)) with the following improvements:
+
+- [ZFS](https://github.com/archzfs/archzfs/) supported out of the box
+- [Serial console](#serial-console) enabled for all boot options, including [Memtest86+](https://www.memtest.org/)
+- EFI boot progress indicators for the kernel/initramfs/system stages
+- [ISO image](https://github.com/nchevsky/systemrescue-zfs/releases) below 1 GiB in size
+
+# Serial console
+
+A serial terminal is enabled out of the box on `ttyS0`/`COM1` at 115,200 baud. If these settings are unsuitable, adjust the configuration of the appropriate bootloader and the [kernel](https://www.kernel.org/doc/html/latest/admin-guide/serial-console.html), then [build](#building) a new image.
+
+## Bootloader
+
+| [GRUB](https://www.gnu.org/software/grub/manual/grub/grub.html) (EFI boot) | [SYSLINUX](https://wiki.syslinux.org/wiki/index.php?title=SYSLINUX) (legacy boot) |
+| --- | --- |
+| 📍 [`efiboot/grub/grubsrcd.cfg`](efiboot/grub/grubsrcd.cfg)
`serial --unit=0 --speed=115200 …` | 📍 [`syslinux/sysresccd_head.cfg`](syslinux/sysresccd_head.cfg)
`SERIAL 0 115200` |
+
+## Kernel
+
+📍 [`build.sh`](build.sh)
`consoles='console=ttyS0,115200 …'`
+
+# Building
+
+```sh
+$ sudo ./build.sh [-d] [-v]
```
-## Including your SystemRescueModules
-If you want to include your own [SystemRescueModules][srm], place their srm files
-in the [srm](./srm) directory of the repository before running the build script.
+- `-d`: Use fast compression, significantly speeding up development builds.
+- `-v`: Print more information while building (strongly recommended).
+
+## Dependencies
-[srm]: https://www.system-rescue.org/Modules/
+[Arch Linux](https://archlinux.org/download/) with the following packages installed:
+- `arch-install-scripts`
+- `archiso` from the custom [SystemRescue repository](https://sysrescuerepo.system-rescue.org/) ⚠️
+- `base-devel`
+- `edk2-shell`
+- `grub`
+- `hugo`
+- `isomd5sum`
+- `mtools`
-## Project sponsors
+## Rebuilds
-Infrastructure for SystemRescue is sponsored by:
+The state of successful [build steps](#steps) is persisted in `work/build.make_*` files. If such a file exists for a given build step, `build.sh` skips that step indefinitely. State files must be manually deleted for any steps that one wants reexecuted.
+
+### Full rebuild
+
+```sh
+$ sudo rm work/build.make_*
+```
-| [](https://www.fastly.com) | [](https://www.netcup.eu) |
+### Partial rebuild
+
+Delete the state file for the desired step **and any downstream steps**. For example, if you have customized the GRUB configuration, you must remove `build.make_efi` and its successors `build.make_efiboot` and `build.make_iso`.
+
+## Steps
+
+1. `make_pacman_conf`
+2. `make_basefs`
+3. `make_documentation`
+4. `make_packages`
+5. `make_customize_airootfs`
+6. `make_setup_mkinitcpio`
+7. `make_boot`
+8. `make_boot_extra`
+9. `make_syslinux`
+10. `make_isolinux`
+11. `make_efi`
+12. `make_efiboot`
+13. `make_prepare`
+14. `make_imageinfo`
+15. `make_iso`
diff --git a/VERSION b/VERSION
index 6dbdb95..9ed52ec 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-11.02
+11.02+2.2.6
diff --git a/airootfs/etc/issue b/airootfs/etc/issue
index feed99a..376a504 100644
--- a/airootfs/etc/issue
+++ b/airootfs/etc/issue
@@ -1,14 +1,14 @@
-\e[01;31m ========= \e[01;37mSystemRescue %ISO_VERSION% (%ISO_ARCH%)\e[01;31m ======== \e[01;37m\l\e[00;37m/6\e[01;31m =========
- \e[00;31mhttps://www.system-rescue.org/
+\e[01;31m============== \e[01;37m%ISO_APPLICATION% %ISO_VERSION%\e[01;31m --- \e[01;37m\l \e[01;31m==============
+ \e[01;31m%ISO_URL%
-\e[00;31m*\e[01;31m Console environment\e[00;37m :
- Run \e[01;37msetkmap\e[00;37m to choose the keyboard layout (also accessible with the arrow up key)
- Run \e[01;37mmanual\e[00;37m to read the documentation of SystemRescue
+\e[00;31m*\e[01;31m Console environment:\e[00;37m
+ Run \e[01;37msetkmap\e[00;37m or press ↑ to choose the keyboard layout.
+ Run \e[01;37mmanual\e[00;37m to read the SystemRescue documentation.
-\e[00;31m*\e[01;31m Graphical environment\e[00;37m :
- Type \e[01;37mstartx\e[00;37m to run the graphical environment
- X.Org comes with the XFCE environment and several graphical tools:
- \e[00;31m-\e[00;37m Partition manager: .. \e[01;37mgparted\e[00;37m
- \e[00;31m-\e[00;37m Web browser: ........ \e[01;37mfirefox\e[00;37m
- \e[00;31m-\e[00;37m Text editor: ........ \e[01;37mfeatherpad\e[00;37m
+\e[00;31m*\e[01;31m Graphical environment:\e[00;37m
+ Run \e[01;37mstartx\e[00;37m to start the graphical environment.
+ X.Org comes with the XFCE environment and several graphical tools:
+ \e[00;31m-\e[00;37m Partition manager: \e[01;37mgparted\e[00;37m
+ \e[00;31m-\e[00;37m Web browser: \e[01;37mfirefox\e[00;37m
+ \e[00;31m-\e[00;37m Text editor: \e[01;37mfeatherpad\e[00;37m
diff --git a/airootfs/root/.config/xfce4/panel/launcher-5/15552316104.desktop b/airootfs/root/.config/xfce4/panel/launcher-5/15552316104.desktop
index 9c8ba6f..bf1f34e 100644
--- a/airootfs/root/.config/xfce4/panel/launcher-5/15552316104.desktop
+++ b/airootfs/root/.config/xfce4/panel/launcher-5/15552316104.desktop
@@ -1,18 +1,12 @@
[Desktop Entry]
-Name=FeatherPad
+Name=Mousepad
GenericName=Text Editor
-Comment=Lightweight Qt5 text editor
-Exec=featherpad %F
-Icon=featherpad
+Comment=Simple Text Editor
+Exec=mousepad
+Icon=org.xfce.mousepad
Terminal=false
Type=Application
MimeType=text/plain;
-Categories=Qt;Utility;TextEditor;
+Categories=Utility;TextEditor;
X-KDE-StartupNotify=false;
Keywords=Text;Editor;Plaintext;
-Actions=new-window;
-X-XFCE-Source=file:///usr/share/applications/featherpad.desktop
-
-[Desktop Action new-window]
-Name=New Window
-Exec=featherpad --win
diff --git a/airootfs/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/airootfs/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
index 3b70200..0f6535a 100644
--- a/airootfs/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
+++ b/airootfs/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
@@ -59,9 +59,6 @@
-
-
-
diff --git a/airootfs/root/customize_airootfs.sh b/airootfs/root/customize_airootfs.sh
index 05832bf..3ec083d 100755
--- a/airootfs/root/customize_airootfs.sh
+++ b/airootfs/root/customize_airootfs.sh
@@ -26,11 +26,8 @@ sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf
sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf
sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf
-# PulseAudio takes care of volume restore
-ln -sf /dev/null /etc/udev/rules.d/90-alsa-restore.rules
-
# config symlink
-mkdir /etc/sysrescue/
+mkdir -p /etc/sysrescue/
ln -sf /run/archiso/config/sysrescue-effective-config.json /etc/sysrescue/sysrescue-effective-config.json
# Services
@@ -60,8 +57,17 @@ systemctl mask ldconfig.service
mkdir -p /etc/systemd/system-generators/
ln -sf /dev/null /etc/systemd/system-generators/systemd-gpt-auto-generator
+# remove kernel headers (no longer needed once zfs-dkms has been installed)
+mkdir -p /etc/pacman.d/hooks
+ln -s /dev/null /etc/pacman.d/hooks/71-dkms-remove.hook # suppress automatic removal of zfs-dkms
+pacman --noconfirm -Rs linux-lts-headers
+rm /etc/pacman.d/hooks/71-dkms-remove.hook
+
# setup pacman signing key storage
/usr/bin/pacman-key --init
+pacman-key --recv-keys 3A9917BF0DED5C13F69AC68FABEC0A1208037BE9 DDF7DB817396A49B2A2723F7403BD972F75D9D76 # archzfs (experimental, stable)
+pacman-key --lsign-key 3A9917BF0DED5C13F69AC68FABEC0A1208037BE9 # archzfs (experimental)
+pacman-key --lsign-key DDF7DB817396A49B2A2723F7403BD972F75D9D76 # archzfs (stable)
/usr/bin/pacman-key --populate
rm -f /etc/pacman.d/gnupg/*~
diff --git a/airootfs/usr/share/sysrescue/bin/build-zfs-srm b/airootfs/usr/share/sysrescue/bin/build-zfs-srm
deleted file mode 100755
index 6b5a4a2..0000000
--- a/airootfs/usr/share/sysrescue/bin/build-zfs-srm
+++ /dev/null
@@ -1,248 +0,0 @@
-#! /usr/bin/env bash
-#
-# build-zfs-srm - build ZFS support for SystemRescue
-#
-# This script builds a SystemRescue Module (SRM) file that adds support
-# for the ZFS file system to a running instance of SystemRescue.
-#
-# Author: Daniel Richard G.
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-# SystemRescue cannot be distributed with ZFS support due to licensing
-# issues, but users are free to build ZFS for SystemRescue themselves.
-# As the build process is non-trivial, it has been elaborated in this
-# script as a service to the SystemRescue community.
-#
-# Usage:
-# ./build-zfs-srm [--latest]
-#
-# By default, this script will build the version of ZFS that was current
-# (in the AUR repo) at the time of the host system's release. If the
-# --latest option is given, then it will instead build the latest version
-# available now (when the script is run).
-#
-# Note that the build is performed reproducibly; i.e. re-running the
-# build in the same environment should yield exactly the same output
-# file. Thus, builds performed with --latest will produce different
-# output as new ZFS versions become available, whereas builds performed
-# without should (in theory) remain unchanged in perpetuity.
-#
-# For more information, refer to
-# https://www.system-rescue.org/scripts/build-zfs-srm/
-#
-
-use_latest_zfs=no
-
-while [ -n "$1" ]
-do
- case "$1" in
- --latest) use_latest_zfs=yes ;;
- -h|--help) echo "$0: see comment header of script for usage info"; exit 0 ;;
- -*) echo "$0: error: unrecognized option \"$1\""; exit 1 ;;
- *) echo "$0: error: unrecognized argument \"$1\""; exit 1 ;;
- esac
- shift
-done
-
-# Sanity checks
-if [ ! -f /etc/arch-release ] || ! /usr/bin/pacman --version >/dev/null 2>&1
-then
- echo "$0: error: this script must be run on SystemRescue / Arch Linux"
- exit 1
-fi
-if [ $(id -u) -ne 0 ]
-then
- echo "$0: error: this script must be run as root"
- exit 1
-fi
-if [ $(awk '$1=="MemAvailable:"{print $2}' /proc/meminfo) -lt 3500000 ] && \
- ! make --version >/dev/null 2>&1
-then
- echo "$0: error: not enough RAM available for build, ~4 GB needed"
- exit 1
-fi
-
-set -e -u
-
-# Use this timestamp for reproducibility
-t_epoch=$(stat -c '%Y' /etc/os-release)
-t_date=$(date -d @${t_epoch} -R)
-
-# Are we in an actual live running instance of SystemRescue?
-# (The expected alternative is an "archlinux" Docker container)
-in_live_system=$(test "_$(findmnt -n -o SOURCE /)" = _airootfs && echo true || echo false)
-
-srm_file=/tmp/$(. /etc/os-release && echo ${ID}-${VERSION_ID}-zfs.srm)
-srm_info=${srm_file%.srm}.txt
-
-cat <&2
- env "$@"
-}
-
-# Install some prerequisites
-run_command pacman -Sy --needed --noconfirm base-devel git
-
-reinstall_if_missing()
-{
- local pkg="$1"
- local file="$2"
- test -f ${file} || run_command pacman -S --noconfirm ${pkg}
-}
-
-# Many packages in the SystemRescue ISO have had files removed to save on
-# space, but we will need to restore some of them to build ZFS. Reinstall
-# the following packages as needed:
-reinstall_if_missing curl /usr/include/curl/curl.h
-reinstall_if_missing glibc /usr/lib/libc_nonshared.a
-reinstall_if_missing libtirpc /usr/include/tirpc/rpc/xdr.h
-reinstall_if_missing linux-api-headers /usr/include/linux/limits.h
-reinstall_if_missing openssl /usr/include/openssl/evp.h
-reinstall_if_missing pam /usr/include/security/pam_modules.h
-reinstall_if_missing systemd-libs /usr/include/libudev.h
-reinstall_if_missing util-linux-libs /usr/include/uuid/uuid.h
-reinstall_if_missing zlib /usr/include/zlib.h
-
-if ${in_live_system}
-then
- # More disk space is available in a tmpfs
- work_dir=/tmp/zfsbuild
-else
- work_dir=/home/zfsbuild
-fi
-if [ ! -d ${work_dir} ]
-then
- run_command useradd --create-home --home-dir ${work_dir} zfsbuild
-fi
-
-run_as_user()
-{
- local cmd="$1"
- setpriv \
- --reuid=zfsbuild \
- --regid=zfsbuild \
- --init-groups \
- --no-new-privs \
- --reset-env \
- bash -e -x -c "${cmd}"
-}
-
-cd ${work_dir}
-
-# Build these two essential ZFS packages from the AUR
-for aur_pkg in \
- zfs-dkms \
- zfs-utils
-do
- if [ ! -d ${aur_pkg} ]
- then
- run_as_user "git clone https://aur.archlinux.org/${aur_pkg}.git"
- fi
- if [ ! -f ${aur_pkg}.repro.stamp -a ${use_latest_zfs} = no ]
- then
- run_as_user "cd ${aur_pkg} && rev=\$(git rev-list -n 1 --first-parent --before=@${t_epoch} HEAD) && git checkout \${rev}"
- touch ${aur_pkg}.repro.stamp
- fi
- if [ ! -f ${aur_pkg}.pgp.stamp ]
- then
- run_as_user ". ${aur_pkg}/PKGBUILD && gpg --recv-keys \${validpgpkeys[*]}"
- touch ${aur_pkg}.pgp.stamp
- fi
- if [ ! -f ${aur_pkg}.build.stamp ]
- then
- run_as_user "cd ${aur_pkg} && makepkg --clean"
- run_as_user "cd ${aur_pkg} && git rev-parse HEAD" > ${aur_pkg}.commit.txt
- touch ${aur_pkg}.build.stamp
- fi
-done
-
-# Install more prerequisites
-run_command pacman -S --needed --noconfirm \
- dkms linux-lts linux-lts-headers squashfs-tools
-
-# Tweak DKMS configuration
-x=/etc/dkms/framework.conf
-if ! grep -q '^dkms_tree=' $x && ${in_live_system}
-then
- # More disk space is available in a tmpfs
- mkdir -p /tmp/dkms
- (echo; echo 'dkms_tree="/tmp/dkms"') >> $x
-fi
-if ! grep -q '^sign_file=' $x
-then
- # Do not sign the kernel modules as this breaks reproducibility
- (echo; echo 'sign_file="/nope"') >> $x
-fi
-
-if ! ${in_live_system}
-then
- # The Docker container does not extract/install man pages from
- # packages, but we want the SRM to include those
- perl -pi -e '/^NoExtract\s*=/ && m! usr/share/man/! and s/^/#/' \
- /etc/pacman.conf
-fi
-
-# Kernel module builds need the kernel file in the standard location
-x=/run/archiso/bootmnt/sysresccd/boot/x86_64/vmlinuz
-y=/boot/vmlinuz-linux-lts
-if [ -f $x -a ! -f $y ]
-then
- run_command ln -s $x $y
-fi
-
-# Do not pass the -j option to pahole(1) as it breaks reproducibility
-# https://github.com/acmel/dwarves/issues/42
-perl -pi -e 's/^(\s*)(extra_paholeopt=".* -j")/${1}true $2/' \
- /lib/modules/*-lts/build/scripts/pahole-flags.sh
-
-# Install the newly-built ZFS packages, and let DKMS do its thing
-run_command pacman -U --needed --noconfirm \
- zfs-utils/zfs-utils-*.pkg.tar.zst \
- zfs-dkms/zfs-dkms-*.pkg.tar.zst
-
-# Generate list of files in the zfs-utils package
-pacman -Ql zfs-utils \
-| sed 's!^zfs-utils /!!' \
-| grep -v '/$' \
-> zfs-utils.files.txt
-
-# mksquashfs(1) uses this
-export SOURCE_DATE_EPOCH=${t_epoch}
-
-# Create the SRM file
-rm -f ${srm_file}
-(cd / && tar cf - --sort=name \
- usr/lib/modules/*-lts/updates/dkms/* \
- usr/lib/modules/*-lts/modules.* \
- -T ${work_dir}/zfs-utils.files.txt) \
-| run_command mksquashfs - ${srm_file} -comp xz -tar -exports
-
-tee ${srm_info} </dev/null || echo unknown)
-zfs-utils version: $(. zfs-utils/PKGBUILD && echo ${pkgver}-${pkgrel})
-* AUR Git commit : $(cat zfs-utils.commit.txt 2>/dev/null || echo unknown)
-SRM file location: ${srm_file}
-SRM file size : $(stat -c '%s' ${srm_file}) bytes
-SRM file SHA-1 : $(sha1sum < ${srm_file} | awk '{print $1}')
-SRM file SHA-512 : $(sha512sum < ${srm_file} | awk '{print $1}')
-
-Please visit https://www.system-rescue.org/Modules/ for instructions on
-loading the SRM file into a running instance of SystemRescue.
-
-END
-
-# EOF
diff --git a/build.sh b/build.sh
index 26428dc..e590683 100755
--- a/build.sh
+++ b/build.sh
@@ -5,12 +5,13 @@ set -e -u
script_path=$(readlink -f ${0%/*})
version_file="${script_path}/VERSION"
-iso_name=systemrescue
+consoles='console=ttyS0,115200 console=tty0'
+iso_application="SystemRescue+ZFS"
iso_version="$(<${version_file})"
-iso_mainver="${iso_version%-*}"
-iso_label="RESCUE${iso_mainver//.}"
-iso_publisher="SystemRescue "
-iso_application="SystemRescue"
+iso_name=$(echo "$iso_application" | tr '[:upper:]' '[:lower:]')
+iso_label="${iso_application}_${iso_version}"
+iso_url="https://github.com/nchevsky/systemrescue-zfs"
+iso_publisher="Nick Chevsky <${iso_url}>"
install_dir=sysresccd
image_info_file="${install_dir}/.imageinfo"
work_dir=work
@@ -26,7 +27,7 @@ snapshot_date=""
default_kernel_param="iomem=relaxed"
documentation_dir="/usr/share/sysrescue/html"
mkinitcpio_comp_algo="xz"
-mkinitcpio_comp_opts="--threads=0 --verbose"
+mkinitcpio_comp_opts="-9e --threads=0 --verbose"
mkinitcpio_comp_algo_devel="zstd"
mkinitcpio_comp_opts_devel="--threads=0 --fast --verbose"
@@ -42,7 +43,6 @@ case ${arch} in
mirrorlist_url='https://archlinux.org/mirrorlist/?country=all&protocol=http&use_mirror_status=on'
archive_prefix='https://archive.archlinux.org/repos/'
archive_mirrorlist_file='mirrorlist-snapshot-x86_64'
- mkinitcpio_comp_opts="--threads=0 --lzma2=preset=9e,dict=128MiB --verbose"
;;
i686)
efiarch="i386-efi"
@@ -51,7 +51,6 @@ case ${arch} in
mirrorlist_url='https://archlinux32.org/mirrorlist/?country=all&protocol=http&use_mirror_status=on'
archive_prefix='https://archive.archlinux32.org/repos/'
archive_mirrorlist_file='mirrorlist-snapshot-i686'
- mkinitcpio_comp_opts="--threads=0 --verbose"
;;
*)
echo "ERROR: Unsupported architecture: '${arch}'"
@@ -129,9 +128,14 @@ determine_snapshot_date() {
# Helper function to run make_*() only one time per architecture.
run_once() {
+ echo -e "\n================================================================================"
+ echo -e "$1\n================================================================================"
if [[ ! -e ${work_dir}/build.${1} ]]; then
$1
touch ${work_dir}/build.${1}
+ echo -e "\nDone."
+ else
+ echo -e "\nSkipped. To rebuild this step, delete ${work_dir}/build.${1}."
fi
}
@@ -161,8 +165,8 @@ make_documentation() {
fi
# is the documentation up to date? ignore for beta and test versions
- if ! echo "${iso_version}" | grep -i -q "beta\|test" && \
- ! grep -q "${iso_version}" website/content/Changes-x86/_index.md; then
+ if ! echo "${iso_version%+*}" | grep -i -q "beta\|test" && \
+ ! grep -q "${iso_version%+*}" website/content/Changes-x86/_index.md; then
echo "ERROR: current version not in changelog. Did you update the website submodule?"
exit 1
fi
@@ -173,7 +177,7 @@ make_documentation() {
rm -rf website/content/Download
# parameters are all relative to --source dir
- /usr/bin/hugo --source "website/" --config "config-offline.toml" --gc --verbose \
+ /usr/bin/hugo --source "website/" --config "config-offline.toml" --gc --logLevel info \
--destination "../${work_dir}/${arch}/airootfs/${documentation_dir}"
RET=$?
@@ -201,7 +205,8 @@ make_customize_airootfs() {
cp ${version_file} ${work_dir}/${arch}/airootfs/root/version
- sed "s|%ARCHISO_LABEL%|${iso_label}|g;
+ sed "s|%ISO_APPLICATION%|${iso_application}|g;
+ s|%ISO_URL%|${iso_url}|g;
s|%ISO_VERSION%|${iso_version}|g;
s|%ISO_ARCH%|${arch}|g;
s|%INSTALL_DIR%|${install_dir}|g" \
@@ -304,6 +309,8 @@ make_syslinux() {
mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux
for _cfg in ${script_path}/syslinux/*.cfg; do
sed "s|%ARCHISO_LABEL%|${iso_label}|g;
+ s|%CONSOLES%|${consoles}|g;
+ s|%ISO_APPLICATION%|${iso_application}|g;
s|%ISO_VERSION%|${iso_version}|g;
s|%ISO_ARCH%|${arch}|g;
s|%DEFAULT_KERNEL_PARAM%|${default_kernel_param}|g;
@@ -335,6 +342,8 @@ make_efi() {
cp -a /usr/lib/grub/${efiarch} ${work_dir}/iso/boot/grub/
cp ${script_path}/efiboot/grub/font.pf2 ${work_dir}/iso/boot/grub/
sed "s|%ARCHISO_LABEL%|${iso_label}|g;
+ s|%CONSOLES%|${consoles}|g;
+ s|%ISO_APPLICATION%|${iso_application}|g;
s|%ISO_VERSION%|${iso_version}|g;
s|%ISO_ARCH%|${arch}|g;
s|%DEFAULT_KERNEL_PARAM%|${default_kernel_param}|g;
@@ -394,7 +403,7 @@ make_imageinfo() {
echo "# SystemRescue imageinfo - used by systemrescue-usbwriter to check compatibility" >"${work_dir}/iso/${image_info_file}"
echo "NAME=SystemRescue" >>"${work_dir}/iso/${image_info_file}"
- echo "VERSION=${iso_version}" >>"${work_dir}/iso/${image_info_file}"
+ echo "VERSION=${iso_version%+*}" >>"${work_dir}/iso/${image_info_file}"
echo "ARCH=${arch}" >>"${work_dir}/iso/${image_info_file}"
echo "SYSLINUX_VERSION=${syslinux_ver}" >>"${work_dir}/iso/${image_info_file}"
echo "" >>"${work_dir}/iso/${image_info_file}"
diff --git a/efiboot/grub/grubsrcd.cfg b/efiboot/grub/grubsrcd.cfg
index 9435c30..b9d3811 100644
--- a/efiboot/grub/grubsrcd.cfg
+++ b/efiboot/grub/grubsrcd.cfg
@@ -10,7 +10,7 @@ if [ -z "$srcd_skip_init" ]; then
# Display settings
if loadfont /boot/grub/font.pf2 ; then
- set gfxmode=640x480
+ set gfxmode=800x600,auto
set color_normal=black/cyan
set color_highlight=black/light-gray
set menu_color_normal=black/cyan
@@ -39,60 +39,75 @@ fi
# like $archiso_param to be visible in the GRUB editor
eval "
-menuentry 'Boot SystemRescue using default options' {
+menuentry 'Boot %ISO_APPLICATION% %ISO_VERSION% using default options' {
set gfxpayload=keep
- linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM%
+ echo 'Loading kernel...'
+ linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% %CONSOLES%
+ echo 'Loading initramfs...'
initrd /%INSTALL_DIR%/boot/intel_ucode.img /%INSTALL_DIR%/boot/amd_ucode.img /%INSTALL_DIR%/boot/%ISO_ARCH%/sysresccd.img
+ echo 'Booting...'
}
-menuentry 'Boot SystemRescue and copy system to RAM (copytoram)' {
+menuentry 'Boot %ISO_APPLICATION% %ISO_VERSION% and copy system to RAM (copytoram)' {
set gfxpayload=keep
- linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% copytoram
+ echo 'Loading kernel...'
+ linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% %CONSOLES% copytoram
+ echo 'Loading initramfs...'
initrd /%INSTALL_DIR%/boot/intel_ucode.img /%INSTALL_DIR%/boot/amd_ucode.img /%INSTALL_DIR%/boot/%ISO_ARCH%/sysresccd.img
+ echo 'Booting...'
}
-menuentry 'Boot SystemRescue and verify integrity of the medium (checksum)' {
+menuentry 'Boot %ISO_APPLICATION% %ISO_VERSION% and verify integrity of the medium (checksum)' {
set gfxpayload=keep
- linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% checksum
+ echo 'Loading kernel...'
+ linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% %CONSOLES% checksum
+ echo 'Loading initramfs...'
initrd /%INSTALL_DIR%/boot/intel_ucode.img /%INSTALL_DIR%/boot/amd_ucode.img /%INSTALL_DIR%/boot/%ISO_ARCH%/sysresccd.img
+ echo 'Booting...'
}
-menuentry 'Boot SystemRescue using basic display drivers (nomodeset)' {
+menuentry 'Boot %ISO_APPLICATION% %ISO_VERSION% using basic display drivers (nomodeset)' {
set gfxpayload=keep
- linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% nomodeset
+ echo 'Loading kernel...'
+ linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% %CONSOLES% nomodeset
+ echo 'Loading initramfs...'
initrd /%INSTALL_DIR%/boot/intel_ucode.img /%INSTALL_DIR%/boot/amd_ucode.img /%INSTALL_DIR%/boot/%ISO_ARCH%/sysresccd.img
+ echo 'Booting...'
}
-menuentry 'Boot SystemRescue with serial console (ttyS0,115200n8)' {
+menuentry 'Boot %ISO_APPLICATION% %ISO_VERSION% without activating md raid or lvm (nomdlvm)' {
set gfxpayload=keep
- linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% console=tty0 console=ttyS0,115200n8
- initrd /%INSTALL_DIR%/boot/intel_ucode.img /%INSTALL_DIR%/boot/amd_ucode.img /%INSTALL_DIR%/boot/%ISO_ARCH%/sysresccd.img
-}
-
-menuentry 'Boot SystemRescue, do not activate md raid or lvm (nomdlvm)' {
- set gfxpayload=keep
- linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% nomdlvm
+ echo 'Loading kernel...'
+ linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% %CONSOLES% nomdlvm
+ echo 'Loading initramfs...'
initrd /%INSTALL_DIR%/boot/intel_ucode.img /%INSTALL_DIR%/boot/amd_ucode.img /%INSTALL_DIR%/boot/%ISO_ARCH%/sysresccd.img
+ echo 'Booting...'
}
menuentry 'Boot a Linux operating system installed on the disk (findroot)' {
set gfxpayload=keep
- linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% findroot
+ echo 'Loading kernel...'
+ linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% %CONSOLES% findroot
+ echo 'Loading initramfs...'
initrd /%INSTALL_DIR%/boot/intel_ucode.img /%INSTALL_DIR%/boot/amd_ucode.img /%INSTALL_DIR%/boot/%ISO_ARCH%/sysresccd.img
+ echo 'Booting...'
}
menuentry 'Stop during the boot process before mounting the root filesystem' {
set gfxpayload=keep
- linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% break
+ echo 'Loading kernel...'
+ linux /%INSTALL_DIR%/boot/%ISO_ARCH%/vmlinuz archisobasedir=%INSTALL_DIR% $archiso_param %DEFAULT_KERNEL_PARAM% %CONSOLES% break
+ echo 'Loading initramfs...'
initrd /%INSTALL_DIR%/boot/intel_ucode.img /%INSTALL_DIR%/boot/amd_ucode.img /%INSTALL_DIR%/boot/%ISO_ARCH%/sysresccd.img
+ echo 'Booting...'
}
source /boot/grub/custom.cfg
menuentry 'Memtest86+ memory tester for UEFI' {
insmod fat
- set gfxpayload=800x600,1024x768
- linux /EFI/memtest.efi keyboard=both
+ set gfxpayload=640x480,800x600,1024x768,auto
+ linux /EFI/memtest.efi keyboard=both %CONSOLES%
}
menuentry 'Start EFI Shell' {
diff --git a/packages b/packages
index b771be0..92b2c1f 100644
--- a/packages
+++ b/packages
@@ -1,5 +1,4 @@
acpi
-alsa-utils
amd-ucode
archinstall
arch-install-scripts
@@ -57,7 +56,6 @@ expac
ext4magic
f2fs-tools
fatresize
-featherpad
file
findutils
firefox-esr-bin
@@ -67,7 +65,7 @@ fsarchiver
galculator
gawk
geany
-ghex
+systemrescue+zfs/ghex
git
gnu-netcat
gnupg
@@ -110,11 +108,12 @@ libisoburn
libldm
libvncserver
linux-atm
-linux-firmware
+systemrescue+zfs/linux-firmware
linux-firmware-bnx2x
linux-firmware-qlogic
linux-firmware-marvell
linux-lts
+linux-lts-headers
lm_sensors
localepurge
lshw
@@ -142,6 +141,7 @@ mkinitcpio
mkinitcpio-nfs-utils
mlocate
moreutils
+mousepad
ms-sys
mtools
mtr
@@ -179,7 +179,6 @@ parted
partimage
pass
patch
-pavucontrol
pciutils
pcre
perl
@@ -194,7 +193,6 @@ ppp
pptpclient
procps-ng
psmisc
-pulseaudio-alsa
pv
python
python-llfuse
@@ -203,7 +201,7 @@ python-pythondialog
python-yaml
qemu-guest-agent
qemu-img
-qtpass
+systemrescue+zfs/qtpass
rclone
rdesktop
rdiff-backup
@@ -239,12 +237,10 @@ sudo
syslinux
sysstat
tar
-tcl
tcpdump
testdisk
thunar-archive-plugin
timeshift
-tk
tmux
traceroute
tree
@@ -253,7 +249,6 @@ udftools
udpcast
unrar
unzip
-usb_modeswitch
usbutils
util-linux
vi
@@ -273,9 +268,7 @@ wqy-microhei
wvdial
x11vnc
xarchiver
-xfburn
xfce4
-xfce4-pulseaudio-plugin
xfce4-screenshooter
xfce4-taskmanager
xfsdump
@@ -292,6 +285,7 @@ yay
yubikey-manager
yubikey-personalization-gui
zerofree
+zfs-dkms
zip
zsh
zstd
diff --git a/pacman.conf b/pacman.conf
index e147c94..633357d 100644
--- a/pacman.conf
+++ b/pacman.conf
@@ -76,6 +76,13 @@ Server = https://sysrescuerepo.system-rescue.org/$arch
SigLevel = Optional TrustAll
# ==== END sysrescuerepo ====
+[archzfs]
+Server = https://github.com/archzfs/archzfs/releases/download/experimental
+SigLevel = TrustAll
+
+[systemrescue+zfs]
+Server = http://oss.blazis.com/pacman/$repo/$arch
+
[core]
Include = /etc/pacman.d/mirrorlist
diff --git a/syslinux/sysresccd_head.cfg b/syslinux/sysresccd_head.cfg
index 231f348..18c609c 100644
--- a/syslinux/sysresccd_head.cfg
+++ b/syslinux/sysresccd_head.cfg
@@ -1,6 +1,6 @@
SERIAL 0 115200
UI boot/syslinux/vesamenu.c32
-MENU TITLE SYSTEM-RESCUE %ISO_VERSION% %ISO_ARCH% (www.system-rescue.org)
+MENU TITLE %ISO_APPLICATION% %ISO_VERSION%
MENU BACKGROUND #c000a8a8
TIMEOUT 300
diff --git a/syslinux/sysresccd_pxe.cfg b/syslinux/sysresccd_pxe.cfg
index f9f3187..f99049f 100644
--- a/syslinux/sysresccd_pxe.cfg
+++ b/syslinux/sysresccd_pxe.cfg
@@ -8,7 +8,7 @@ ENDTEXT
MENU LABEL Boot SystemRescue (NBD)
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver} %DEFAULT_KERNEL_PARAM%
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver} %DEFAULT_KERNEL_PARAM% %CONSOLES%
SYSAPPEND 3
LABEL sysresccd_nfs
@@ -19,7 +19,7 @@ ENDTEXT
MENU LABEL Boot SystemRescue (NFS)
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/sysresccd/bootmnt %DEFAULT_KERNEL_PARAM%
+APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/sysresccd/bootmnt %DEFAULT_KERNEL_PARAM% %CONSOLES%
SYSAPPEND 3
LABEL sysresccd_http
@@ -30,7 +30,7 @@ ENDTEXT
MENU LABEL Boot SystemRescue (HTTP)
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ %DEFAULT_KERNEL_PARAM%
+APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ %DEFAULT_KERNEL_PARAM% %CONSOLES%
SYSAPPEND 3
INCLUDE boot/syslinux/sysresccd_tail.cfg
diff --git a/syslinux/sysresccd_sys.cfg b/syslinux/sysresccd_sys.cfg
index 146b9cc..80e1e50 100644
--- a/syslinux/sysresccd_sys.cfg
+++ b/syslinux/sysresccd_sys.cfg
@@ -7,7 +7,7 @@ ENDTEXT
MENU LABEL Boot SystemRescue using default options
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM%
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% %CONSOLES%
LABEL sysresccd_copytoram
TEXT HELP
@@ -16,7 +16,7 @@ ENDTEXT
MENU LABEL Boot SystemRescue and copy system to RAM (copytoram)
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% copytoram
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% %CONSOLES% copytoram
LABEL sysresccd_checksum
TEXT HELP
@@ -25,7 +25,7 @@ ENDTEXT
MENU LABEL Boot SystemRescue and verify integrity of the medium (checksum)
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% checksum
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% %CONSOLES% checksum
LABEL sysresccd_nomodeset
TEXT HELP
@@ -34,16 +34,7 @@ ENDTEXT
MENU LABEL Boot SystemRescue using basic display drivers (nomodeset)
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% nomodeset
-
-LABEL sysresccd-serial
-TEXT HELP
-Use a serial console.
-ENDTEXT
-MENU LABEL Boot SystemRescue with serial console (ttyS0,115200n8)
-LINUX boot/%ISO_ARCH%/vmlinuz
-INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% console=tty0 console=ttyS0,115200n8
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% %CONSOLES% nomodeset
LABEL sysresccd-nomdlvm
TEXT HELP
@@ -53,7 +44,7 @@ ENDTEXT
MENU LABEL Boot SystemRescue, do not activate md raid or lvm (nomdlvm)
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% nomdlvm
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% %CONSOLES% nomdlvm
LABEL sysresccd_findroot
TEXT HELP
@@ -62,7 +53,7 @@ ENDTEXT
MENU LABEL Boot a Linux operating system installed on the disk (findroot)
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% findroot
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% %CONSOLES% findroot
LABEL sysresccd_break
TEXT HELP
@@ -71,7 +62,7 @@ ENDTEXT
MENU LABEL Stop during the boot process before mounting the root filesystem
LINUX boot/%ISO_ARCH%/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/%ISO_ARCH%/sysresccd.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% break
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% %DEFAULT_KERNEL_PARAM% %CONSOLES% break
INCLUDE boot/syslinux/sysresccd_custom.cfg
diff --git a/syslinux/sysresccd_tail.cfg b/syslinux/sysresccd_tail.cfg
index 605c2e6..4ec9e14 100644
--- a/syslinux/sysresccd_tail.cfg
+++ b/syslinux/sysresccd_tail.cfg
@@ -11,6 +11,7 @@ APPEND hd0 0
LABEL memtest
MENU LABEL Run Memtest86+ (RAM test)
LINUX boot/memtest
+APPEND %CONSOLES%
# http://hdt-project.org/
#LABEL hdt