Commit graph

1427 commits

Author SHA1 Message Date
nl6720
57589df1d6
Merge remote-tracking branch 'origin/merge-requests/386'
By Dariusz Pelowski
* origin/merge-requests/386:
  .automated_script.sh: add proper HTTP status checking

See merge request https://gitlab.archlinux.org/archlinux/archiso/-/merge_requests/386
2024-06-05 11:43:18 +03:00
Dariusz Pelowski
75e57093e6 .automated_script.sh: add proper HTTP status checking
When a download attempt fails with an HTTP error, the body of the failed
request will be written to the output file with a 0 exit status, causing the
execution of an error message as a script.

This issue is resolved by adding the --fail option to curl.

Co-authored-by: David Runge <dvzrv@archlinux.org>
2024-06-05 11:18:45 +03:00
nl6720
4b709bcd5f
Add changelog for 78 2024-05-23 10:58:18 +03:00
David Runge
2a5e4e3aa0 Merge branch 'remove-deps' into 'master'
configs/releng/packages.x86_64: Remove wezterm-terminfo

See merge request archlinux/archiso!384
2024-05-23 07:45:58 +00:00
David Runge
3c6cff25bb
configs/releng/packages.x86_64: Remove wezterm-terminfo
The wezterm-terminfo package is replaced by the ncurses package.

Signed-off-by: David Runge <dvzrv@archlinux.org>
2024-05-22 22:48:58 +02:00
nl6720
c0a4c39f21
mkarchiso: use FAT32 as early as possible
mkfs.fat selects FAT32 for file systems of at least 512 MiB size, but a
FAT32 file system can already be created at 36 MiB size (assuming 512
byte logical sector size).
2024-05-18 13:53:27 +03:00
nl6720
8d07ca3541
configs/releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf: use xz -9e
Use higher compression for the initramfs.

Now that mkinitcpio moves the compressed kernel modules and firmware
files to the early uncompressed initramfs, we can compress the main
initramfs image slightly more without it increasing the built time too
much. This will increase the memory required for decompression from
9 MiB to 65 MiB (assuming the kernel's decompressor works the same as
the xz tool), but that should not be an issue for any system targeting
Arch.

This reduces the initramfs size by ~250 KiB, which will save ~500 KiB
for the whole ISO.
2024-05-18 12:06:03 +03:00
nl6720
ead84ee9c0
mkarchiso: do not pad the ISO when it is not necessary
If the ISO exceeds the max size of a CD (900 MiB), the 300 KiB padding
needed for CDs can be removed.
2024-05-18 11:32:09 +03:00
nl6720
1ae3ff6ff6
mkarchiso: increase the additional free space added to efiboot.img
Less than 1 MiB (but rounded up to one) is needed to account for file and
directory entries, especially when using FAT32. Otherwise the ISO build could stop with:

    Disk full

The rest of the increase is to allow more space for adding custom files
after the fact, i.e. when repacking the ISO. E.g. for the purposes of
adding a signed boot loader for Secure Boot or similar. See
https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot#ISO_repacking
2024-05-13 09:30:14 +03:00
nl6720
2febfabd6c
scripts/run_archiso.sh: use 4 MiB OVMF files
Use `OVMF_CODE.4m.fd` and `OVMF_VARS.4m.fd` instead of the old 2 MiB
`OVMF_CODE.fd` and `OVMF_VARS.fd`.
2024-05-09 17:53:09 +03:00
nl6720
e567a2ab26
mkarchiso: do not place the pkglist.x86_64.txt file inside the bootstrap tarball's root.x86_64 directory
Keep it inside the archive, but separate from the `root.x86_64` directory
to avoid polluting it.
2024-05-09 17:30:03 +03:00
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