Commit graph

1416 commits

Author SHA1 Message Date
nl6720
969b91f700
mkarchiso: fix check for microcode update files in initramfs images
The existence of a ``early_cpio`` file is not enough since mkinitcpio can
and will place other files in the early uncompressed CPIO even when the
microcode hook is not used.

Fixes https://gitlab.archlinux.org/archlinux/archiso/-/issues/231
2024-05-04 15:24:12 +03:00
nl6720
34426df652
Add changelog for 77 2024-04-21 09:36:53 +03:00
nl6720
024cf1b710
configs/releng/profiledef.sh: change UEFI boot loader from GRUB to systemd-boot
While using GRUB as the UEFI boot loader has reduced the size of the ISO,
it has brought nothing but pain otherwise:

* We cannot use `gfxterm` since it is not visible on some hardware.
* GRUB has a a strange and nonsensical limitation where the EFI binary
  can be built with either support for shim or custom Secure Boot key
  support, but not both. This means you cannot repack the ISO to use
  shim + MOK since we currently use `--disable-shim-lock` to provide
  support for setups with custom keys.
* GRUB's EFI binary needs to be built with `grub-mkstandalone` instead
  of there being a ready made EFI binary in the package. This requires
  having grub installed on the host system which affects reproducibility.

This increases the size of the ISO since systemd-boot cannot boot files
from other volumes, i.e. the kernel and initramfs is duplicated in the
EFI system partition (the second partition made from `efiboot.img`).

Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/227
2024-04-19 14:26:24 +03:00
nl6720
43e4d9ce36
configs/: replace archisodevice boot parameter with archisosearchuuid
`archisosearchuuid=` first searches for a matching UUID. If that fails,
then it mounts and looks for a `/boot/${archisosearchuuid}.uuid` file in
all detected block devices (in whatever order `blkid` lists them).

This implements "file system transposition" without relaying on boot
loader specific features and does not tie us to GRUB anymore.

Related to https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio-archiso/-/merge_requests/48
Fixes https://gitlab.archlinux.org/archlinux/archiso/-/issues/217
2024-04-19 13:45:04 +03:00
nl6720
2facc4630c
configs/releng/: use mkinitcpio's microcode hook instead of external microcode images
This simplifies boot loader configuration, but custom PXE setups will
be forced to update theirs.

Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/226
2024-04-19 10:53:42 +03:00
nl6720
924a97aeb1
configs/releng/profiledef.sh: use zstd compression for bootstrap image
The zstd tool has now been around for a while, so the availability of
it should not be a concern anymore.

Unlike gzip which was used until now, zstd offers higher compression
while still being faster (and multi-threaded).
The `--auto-threads=logical` option is used just so that there is some
difference between the releng and baseline profiles.

Everyone using the official Arch Linux bootstrap tarball (previously
`archlinux-bootstrap-YYYY.MM.DD-x86_64.tar.gz` or
`archlinux-bootstrap-x86_64.tar.gz`) will need to update their scripts
and etc. to use `archlinux-bootstrap-YYYY.MM.DD-x86_64.tar.zst` or
`archlinux-bootstrap-x86_64.tar.zst` instead.

Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/130
2024-04-19 10:28:55 +03:00
nl6720
57ccf8ef57
mkarchiso: fix requirement validation logic for uefi-ia32.systemd-boot.eltorito
`uefi-ia32.systemd-boot.eltorito` has the same requirements as
`uefi-ia32.systemd-boot.esp`, not the same as `uefi-x64.systemd-boot.esp`.

Fixes: 5e72546e89 ("mkarchiso: add uefi-ia32.systemd-boot.esp and uefi-ia32.systemd-boot.eltorito boot modes")
2024-04-01 19:55:12 +03:00
nl6720
d3c8f38ead
Add configs/releng/efiboot/loader/entries/03-archiso-x86_64-memtest86+.conf
Create a boot entry for Memtest86+.

Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/228
2024-04-01 19:29:32 +03:00
nl6720
4136bfe085
mkarchiso: copy Memtest86+ for uefi-x64.systemd-boot.* boot modes
If the Memtest86+ EFI binary exists, copy it to the EFI system partition
(`efiboot.img`) and also to ISO 9660.

Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/228
2024-04-01 19:29:26 +03:00
nl6720
7b1d6a7b14
Add changelog for 76 2024-03-30 23:29:25 +02:00
nl6720
4df7306924
configs/*/profiledef.sh: set bootstrap_tarball_compression
* bootstrap will use .tar.zst with `zstd -c -T0 --long -19`,
* releng will retain .tar.gz with `gzip -cn9` for now.

This will later be changed as part of https://gitlab.archlinux.org/archlinux/archiso/-/issues/130.
2024-03-30 23:27:55 +02:00
nl6720
3b3984b484
mkarchiso: implement configurable bootstrap tarball compression
profiledef.sh gains a new option `bootstrap_tarball_compression` which
is a bash array containing the compression program and its arguments.

Related to https://gitlab.archlinux.org/archlinux/archiso/-/issues/130.
2024-03-30 23:27:55 +02:00
nl6720
3e9f0c03d6
.gitignore: add more ignored files
* more tarball matching,
* `network-config` used by cloud-init,
* anything starting with `codesigning`.
2024-03-30 22:38:41 +02:00
nl6720
dc090c1fae
mkarchiso: skip including external microcode images if the initramfs file contains early_cpio
The early uncompressed CPIO archive containing microcode update files
can be part of the initramfs file. To avoid wasting space, first check
if the initramfs file contains `early_cpio` and only copy external
microcode initramfs images if it does not.
2024-03-26 15:14:20 +02:00
nl6720
84843f5c27
mkarchiso: move /boot/grub/YYYY-mm-dd-HH-MM-SS-00.uuid to /boot/YYYY-mm-dd-HH-MM-SS-00.uuid
Once mkinitcpio-archiso implements searching for the file in early
userspace, this file's use will not be limited to just GRUB.

Related to https://gitlab.archlinux.org/archlinux/archiso/-/issues/217
2024-03-24 18:31:28 +02:00
nl6720
7dd615ea83
Revert "mkarchiso: unset LANGUAGE"
Starting with glibc 2.39, LC_ALL=C.UTF-8 overrides LANGUAGE, just like
LC_ALL=C. See https://sourceware.org/bugzilla/show_bug.cgi?id=16621 for
details.

This reverts commit 6ac2230953.
2024-02-20 14:02:10 +02:00
nl6720
2932a9def3
Makefile: build and install the mkarchiso(1) man page
rst2man from python-docutils is required to convert the man page from
reStructuredText.
2024-02-17 11:27:19 +02:00
nl6720
bedb75a8c3
Add man page for mkarchiso 2024-02-07 14:50:40 +02:00
nl6720
1f65b695d3
Add changelog for 75 2024-01-24 12:23:44 +02:00
nl6720
5d8fe01fe1
configs/releng/profiledef.sh: replace "CD" with "DVD" in iso_application
Starting with kernel 6.7, the releng ISO exceeds 900 MiB which is the
maximum size of a CD.
Adjust the description to say "DVD" instead.

Closes https://gitlab.archlinux.org/archlinux/archiso/-/issues/144
2024-01-20 16:35:14 +02:00
nl6720
5aac945f76
mkarchiso: update memtest86+ license file location
The licenses package does not ship
`/usr/share/licenses/common/GPL2/license.txt` anymore, which results in:

    /usr/share/licenses/common/GPL2/license.txt': No such file or directory

Use its replacement, `/usr/share/licenses/spdx/GPL-2.0-only.txt` instead.

Fixes https://gitlab.archlinux.org/archlinux/archiso/-/issues/225
2024-01-18 15:26:59 +02:00
nl6720
e04a40d04b
configs/releng/packages.x86_64: explicitly add ldns
Currently the ldns package is pulled in as a dependency of openssh, but
that dependency may be gone in the future.
See https://gitlab.archlinux.org/archlinux/packaging/packages/openssh/-/issues/2

Explicitly include ldns to ensure the live environment will continue to
have `drill`.
2024-01-05 17:42:18 +02:00
nl6720
a3b7121afb
Add changelog for 74 and update AUTHORS.rst 2023-12-21 11:45:08 +02:00
nl6720
56417cead4
mkarchiso: place prepared systemd-boot configuration in work directory
Keep the prepared `.conf` files in `work_dir` to avoid having to run
them through `sed` twice.

This makes sure the FAT image size calculation is more correct and also
simplifies copying the files m to both ISO 9660 and the FAT image since
the the whole `loader` directory can copied instead of copying
individual files.
2023-12-21 11:08:14 +02:00
nl6720
ebceecbd84
mkarchiso: add missing replacement for ARCHISO_UUID in /loader/entries/*.conf on ISO 9660
Fixes: 094afd169a ("mkarchiso: support %ARCHISO_UUID% variable in boot loader configuration")
2023-12-21 10:03:47 +02:00
nl6720
cb61daf8ea
configs/*/airootfs/etc/systemd/network/: add RequiredForOnline=routable
By default systemd-networkd-wait-online.service considers a network
connection to be "online" when it has reached the "degraded" state
(see networkctl(1) for the definitions).
Since "degraded" does not ensure there's a routable address, let's
change the connection's requirement to "routable" instead.

This gives a better chance that the network really is online when
network-online.target is reached.
2023-12-09 12:40:59 +02:00
nl6720
c96c2bef48
Merge remote-tracking branch 'origin/merge-requests/355'
By John Lane
* origin/merge-requests/355:
  update changelog
  Allow download automated script using TFTP

See merge request https://gitlab.archlinux.org/archlinux/archiso/-/merge_requests/355
2023-12-08 11:09:38 +02:00
John Lane
e11875e951 update changelog 2023-12-07 21:00:27 +00:00
John Lane
72c274924a Allow download automated script using TFTP 2023-12-07 21:00:27 +00:00
nl6720
977e0b0fd4
Merge remote-tracking branch 'origin/merge-requests/353'
By Anton Hvornum
* origin/merge-requests/353:
  Ensured the correct CA key and CA certificate is used during signing process. It's been working based on default assumptions from the openssl configuration, but it's worth being explicit when doing these operations. Also removed a redundant -sha256

See merge request https://gitlab.archlinux.org/archlinux/archiso/-/merge_requests/353
2023-12-07 15:53:27 +02:00
Anton Hvornum
28becbfc03 Ensured the correct CA key and CA certificate is used during signing process. It's been working based on default assumptions from the openssl configuration, but it's worth being explicit when doing these operations. Also removed a redundant -sha256 2023-12-07 12:00:47 +01:00
nl6720
60a38f0890
.gitlab/ci/build_archiso.sh: do not use "default" as the gpg Key-Type
GnuPG changed their default from RSA to ECC, so Key-Length not
a thing it supports. Instead it asks for the Key-Curve.

Avoid using the default and hardcode ed25519 (which is the current
GnuPG default).
2023-12-07 10:39:20 +02:00
nl6720
1eb7fc3c8a
Merge remote-tracking branch 'origin/merge-requests/351'
By kojq su
* origin/merge-requests/351:
  add bcachefs-tools

See merge request https://gitlab.archlinux.org/archlinux/archiso/-/merge_requests/351
2023-12-01 09:49:00 +02:00
kojq su
7b843d6f27 add bcachefs-tools 2023-12-01 09:47:54 +02:00
nl6720
e880172984
Add changelog for 73 2023-09-29 13:34:21 +03:00
nl6720
4b489cd8bc
Add configs/baseline/airootfs/etc/localtime
Make sure the ISO can be booted successfully without triggering questions from systemd-firstboot.

Fixes https://gitlab.archlinux.org/archlinux/archiso/-/issues/205
Fixes: 6e1be91961 ("archiso/mkarchiso: write "uninitialized" to /etc/machine-id")
2023-09-29 13:00:56 +03:00
nl6720
a75d7e5f7e
mkarchiso: always create /boot/grub/grubenv and /boot/grub/loopback.cfg
Even if GRUB is not used as a boot loader for the ISO, create a
`/boot/grub/grubenv` file in the ISO 9660 file system. If a
`loopback.cfg` file exists in the profile's `grub` directory, copy it
to `/boot/grub/loopback.cfg` on the ISO.

This ensures the funtionality will not be lost if the used boot loaders
are changed.
2023-09-28 10:53:45 +03:00
nl6720
4280af7474
Add configs/*/grub/loopback.cfg
See https://www.supergrubdisk.org/wiki/Loopback.cfg for details.

Only `${iso_path}` is guaranteed, so we need to search for the volume,
on which the ISO file resides, ourselves.

Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/165
2023-09-28 10:09:10 +03:00
nl6720
0cd0cc0c3b
configs/*/grub/grub.cfg: do not hardcode the architecture and platform
Construct a human readable platform identifier from GRUB's built-in
variables and use it in menu item descriptions.

Only add the menu entries for the additional tools (UEFI shell,
Memtest86+) if the files exist.

Modify baseline's `grub.cfg` to closer match releng.
2023-09-28 10:08:36 +03:00
nl6720
8fb5246de6
configs/releng/grub/grub.cfg: play init tune at the end
Move the `play` command to the end of the file so it plays after the
menu entries are shown and ready.
2023-09-28 10:08:36 +03:00
nl6720
0a3a57a88b
configs/*/grub/grub.cfg: rearrange module loading
* Do not manually load modules that will get loaded by invoking a command.
* Explicitly load serial modules.
* Move `insmod all_video` after the font is loaded.
2023-09-28 10:08:36 +03:00
nl6720
5e72546e89
mkarchiso: add uefi-ia32.systemd-boot.esp and uefi-ia32.systemd-boot.eltorito boot modes
The systemd 254.2-1 package ships with IA32 systemd-boot, so it is
possible to use for booting on IA32 UEFI.

Perhaps they will be useful in the future.
At least for now, the baseline and releng profiles are not changed to
use them. When the issues and headaches caused with GRUB reach a
critical point, then we will switch.
2023-09-24 12:06:02 +03:00
nl6720
519a5c004d
configs/releng/packages.x86_64: add bolt
bolt can be used to list and authorize Thunderbolt and USB4 devices.

Inspired by https://bbs.archlinux.org/viewtopic.php?id=288731 where a
user needed to install the package in the live environment.
2023-09-24 11:31:23 +03:00
nl6720
a4bbbfde42
Add changelog for 72 2023-08-29 22:27:03 +02:00
David Runge
6c5ab3d388
Use pcsclite for communicating with OpenPGP smartcards
As opgpcard uses pcsclite and gnupg is able to use it as well, switch
away from using gnupg's internal ccid driver.
2023-08-29 20:13:32 +02:00
David Runge
81d62d4c5d
Add sequoia-sq and openpgp-card-tools to releng profile 2023-08-29 15:04:25 +02:00
nl6720
174f818581
/etc/ssh/sshd_config.d/10-archiso.conf: keep only the modified options
The only changes we make to the default are to enable root login via a
password.

While `PasswordAuthentication yes` is the default, let's set it
explicitly to avoid potential issues in the future.
2023-08-26 10:54:26 +03:00
nl6720
d501e235bb
Move custom sshd_config to /etc/ssh/sshd_config.d/
openssh 9.4p1-2 changed /etc/ssh/sshd_config to add support for
drop-in files in /etc/ssh/sshd_config.d/.

Using drop-in files avoids needing to keep up with changes to the
default /etc/ssh/sshd_config.
2023-08-26 10:54:26 +03:00
nl6720
9bb29f3980
configs/releng/packages.x86_64: add tpm2-tools
The tools are useful for clearing, creating and reading keys and etc.
on the TPM.
2023-08-26 10:11:53 +03:00
David Runge
ddda63ba09
Remove qemu-headless from list of dependencies in GitLab CI
Remove qemu-headless since it is no longer needed to build the project
and is also no longer provided by qemu-base.
2023-08-21 15:55:06 +02:00