Commit Graph

83 Commits

Author SHA1 Message Date
nl6720
eb5720331b
configs/: move custom mkinitcpio.conf files to /etc/mkinitcpio.conf.d/
This allows to retain a pristine /etc/mkinitcpio.conf in the rootfs.
2023-06-21 16:20:16 +03:00
nl6720
bf79d7be9e
mkarchiso: prevent interference from xorriso startup files
Options set in xorriso startup files (~/.xorrisorc) could interfere with the xorriso command run by mkarchiso.
For example, if ~root/.xorrisorc contains -dummy on, then the ISO file will be empty.

Pass -no_rc as the first option to xorriso to prevent interference and unintended behavior.

Fixes #153.
2023-06-15 14:19:34 +03:00
nl6720
1d1f9a0fc8
mkarchiso: run _cms_sign_artifact only once
Since `_build_buildmode_netboot` runs `_build_iso_base` which runs
`_prepare_airootfs_image`, the call to `_cms_sign_artifact` in
`_build_buildmode_netboot` can be removed.

Fixes #197
2023-06-01 09:58:22 +03:00
nl6720
c50ffaf48b
Add changelog for 71 and update AUTHORS.rst 2023-05-28 10:48:08 +03:00
nl6720
1637dc3590
Update configs/{baseline,releng}/pacman.conf
Update pacman.conf to match the one shipped with pacman 6.0.2-7.

The community repository is gone. See
https://archlinux.org/news/git-migration-completed/
2023-05-25 16:35:56 +03:00
Sorin Pânca
32b32bd615 Add support for mDNS. 2023-05-22 15:58:50 +03:00
nl6720
b5e7f5afc5
mkarchiso: add a -r option to delete the working directory
`-r` will instruct to delete the working directory at the end of a
`mkarchiso` run.

If the specified directory already exists, then it will not be deleted
and instead produce a warning.

Implements #211
2023-05-17 21:46:19 +03:00
nl6720
7f1632334b
CHANGELOG.rst: remove stray git conflict marker
Fixes 8cc0e9e5b0
2023-05-17 17:36:59 +03:00
nl6720
493aa90fd2
configs/releng/packages.x86_64: add more terminfo packages
Add foot-terminfo and wezterm-terminfo packages to allow using their
terminfo entries for installations via SSH.
2023-05-17 16:12:01 +03:00
nl6720
8cc0e9e5b0
mkarchiso: read SOURCE_DATE_EPOCH from file early
When restarting an interrupted build, SOURCE_DATE_EPOCH needs to be
available before `profiledef.sh` is read, since it may reference it.

Fixes 7c6f266ec9
2023-05-17 15:23:44 +03:00
nl6720
ce8fdedbf7
Use UUIDs in all boot loader configuration files
Relying on the volume UUID instead of its LABEL avoids collisions of
multiple ISOs created in the same month.

Fixes #202
2023-05-17 15:23:18 +03:00
shivanandvp
14b2e44d90
mkarchiso: Fix the cp command arguments to retain mkarchiso's behavior prior to the GNU Coreutils update. Fixes Issue #214 2023-05-17 04:08:33 -05:00
nl6720
db2b78fd30
Merge remote-tracking branch 'origin/merge-requests/322'
By Antonio V
* origin/merge-requests/322:
  Fixed subdirectories copy from grub/ to the ISO
  Subdirectories from grub/ are copied to the ISO

Fixes https://gitlab.archlinux.org/archlinux/archiso/-/issues/215

See merge request https://gitlab.archlinux.org/archlinux/archiso/-/merge_requests/322
2023-05-17 11:11:33 +03:00
Antonio V
2b2f212845 Added classes for Memtest86+ and UEFI Shell menuentries 2023-05-14 15:20:07 +00:00
Antonio V
42f645edc3 Fixed subdirectories copy from grub/ to the ISO 2023-05-14 15:17:35 +00:00
nl6720
798562bbfd
Merge remote-tracking branch 'origin/merge-requests/235'
By Zig Globulin
* origin/merge-requests/235:
  wait for networkd online before curl invocation

See merge request https://gitlab.archlinux.org/archlinux/archiso/-/merge_requests/235
2023-05-13 16:22:24 +03:00
nl6720
20fc8030a3
configs/baseline/profiledef.sh: compress more
* Use LZMA extreme compression level,
* enable experimental compressed fragments feature to create a smaller image,
* enable experimental data deduplication.

This decreases the baseline profile's `airootfs.erofs` size by about ~16 MiB.
2023-03-17 19:35:59 +02:00
Zig Globulin
f60525103d wait for networkd online before curl invocation
1) wait for network-online.target before invoking curl
   as there's no synchronization with network setup for this script
2) don't hide curl errors - it may be easier to debug the issues
3) add log and comments
2023-03-02 16:29:17 +02:00
nl6720
5c36c85bd5
Add changelog for 70 2023-02-27 20:29:03 +01:00
David Runge
29f4b0071b
Add changelog entry for terminal_output fix 2023-02-27 20:03:01 +01:00
nl6720
1da743cc4e
README.transfer.rst: update instructions
Convert the file to reStructuredText markup.
Fixes #39.

Rewrite the instructions where possible or otherwise update them.
E.g. fix the changed boot loader paths, etc.

The "Manual formatting (BIOS only)", previosly "PC-BIOS (ISOHYBRID-MBR)",
method is not tested and it is not clear if it still even works.
2023-02-24 11:28:43 +02:00
nl6720
a0941539c0
Move SYSLINUX directory from /syslinux/ to /boot/syslinux/
This allows to reduce the number of top-level directories by one and
matches with the GRUB directory move.

Most boot loader related things will now be in the /boot/ directory.

Fixes #207
2023-02-24 10:33:37 +02:00
nl6720
c8474f8dbe
Move the .uuid file to /boot/grub/YYYY-mm-dd-HH-MM-SS-00.uuid
To prevent the file from being accidentally missed when someone copies
the ISO's contents, let's not place it in a directory that starts with a
dot. Since all GRUB related files are in /boot/grub/, put it there too.

Instead of using a more unique UUID for the file name, use
`YYYY-mm-dd-HH-MM-SS-00.uuid` which matches the ISO's modification date
in UTC,i.e. its "UUID". If multiple ISOs would be generated in the exact
same second, the ISO 9660 modification date (i.e. its "UUID") would be
the same, so there would be not way to distinguish between the volumes
anyway. This also makes the file look less suspicious to the casual
glance.
2023-02-24 10:22:41 +02:00
nl6720
d96a356995
mkarchiso: write grubenv in _make_common_bootmode_grub_cfg
Add all variables that we replace with values in configuration files.

Keep `${isofs_dir}/${install_dir}/grubenv` with fewer variables for
backwards compatibility. It will be removed in the future.
2023-02-24 10:22:36 +02:00
nl6720
b94d7c4ce5
Move grub files from /EFI/BOOT/ to /boot/grub/ on ISO 9660
Move the location of GRUB files so that there is boot-platform
(BIOS vs EFI) neutral place for GRUB-specific files (e.g. configuration
files, background images, etc.).

The EFI binaries are obviosly staying in the default/fallback boot path
`/EFI/BOOT/BOOT*.EFI`, otherwise there will be no UEFI booting.

The /boot/grub/ directory will be used to store BIOS (i386-pc) GRUB
bootsector images, if we get to that.

It is also a requirement for implementing `loopback.cfg` support, since
the file's path must be `/boot/grub/loopback.cfg`.

Implements #206
2023-02-22 18:28:27 +02:00
nl6720
f5ade898f9
Do not duplicate grub.cfg in efiboot.img
Instruct the embeded grub.cfg to search for a volume with a
`/.disk/%UUID_SEARCH_FILENAME%.uuid` file and load `/EFI/BOOT/grub.cfg`
from it.

This avoid duplicating GRUB configuration files in two places (ISO 9660
and FAT) and ensures there is no confusion about which is the _correct_
configuration file.

Since nothing besides EFI binaries is copied to `efibootimg`, the
`_make_common_bootmode_grub_copy_to_efibootimg` function is removed.

Fixes #208
2023-02-22 18:28:24 +02:00
nl6720
7c6f266ec9
configs/*/profiledef.sh: honor SOURCE_DATE_EPOCH
Ensure the **correct** date is used in `iso_label` and `iso_version`.
2023-02-22 18:03:13 +02:00
nl6720
28d2bc11e3
mkarchiso: do not place memtest86+ in netboot artifacts
Move memtest86+ to `/boot/memtest86+/` on ISO 9660. That directory is
not copied to netboot artifact output.

Netboot boot menu https://ipxe.archlinux.org/releng/netboot/archlinux.ipxe
does not have entries for memtest and archiso-manager removes these files
(not the EFI one, though) before uploading the release files anyway.
2023-02-10 08:29:37 +02:00
nl6720
5587e031f3
Preload GRUB's NTFS, exFAT and UDF modules
There are claims that some UEFI allegedly natively support NTFS.
Preload the required GRUB modules to support booting from NTFS on such
systems.

Additionally preload the exFAT and UEF modules, because, why not?
2023-02-02 11:49:16 +02:00
nl6720
3f95d391ef
configs/*/grub/grub.cfg: search for a .uuid file in /.disk/ and use the volume it's on
Search for `/.disk/%UUID_SEARCH_FILENAME%.uuid` and pass the UUID of the
volume it's on as `archisodevice`. mkarchiso will replace
`%UUID_SEARCH_FILENAME%` with a hardcoded value generated using
`SOURCE_DATE_EPOCH` durring ISO build.

This allows to prepare an UEFI bootable installation medium by simply
copying the directory structure without having to touch `grub.cfg`.

Relying on the volume UUID instead of its LABEL also avoids collisions
of multiple ISOs created in the same month.

Fixes #202
2023-02-02 11:49:16 +02:00
nl6720
ab3d78860e
Update URLs
* Update mkinitcpio-archiso project link,
* Update code of conduct link,
* Update arch-releng mailing list link,
* Use HTTPS where possible,
* Replace dead link.
2023-01-29 11:11:38 +02:00
nl6720
cd621f5f4a
Add changelog for 69 2022-12-24 10:33:18 +02:00
Christian Hesse
6e1be91961 archiso/mkarchiso: write "uninitialized" to /etc/machine-id
This is a new value introduced in systemd v247. It makes sure a new
machine-id is generated, but is handled as first boot as well.

See "First Boot Semantics" in machine-id(5) for details.
2022-12-22 16:41:07 +01:00
nl6720
55a1b132a0
configs/baseline/profiledef.sh: use LZMA compression for the EROFS image
Now that xz 5.4 is out and erofs-utils is built with LZMA support, it is
possible to compress the EROFS image with LZMA for higher compression.
`mkfs.erofs` trows a few warnings about using experimental features, but
they should not be an issue.

Nothing changes for the releng profile, for now at least.
2022-12-17 20:11:09 +02:00
nl6720
2da65f64ad
mkarchiso: check if the code signing files specified with option -c exist
Look for the files in `*_validate_options` and error out early if they do
not exist.
2022-12-10 12:08:50 +02:00
nl6720
2c3420204e
mkarchiso: open the ARCHISO_GNUPG_FD, ARCHISO_TLS_FD and ARCHISO_TLSCA_FD file descriptors only for reading
Nothing should ever be written to these files, so let's make sure it cannot happen.
2022-12-06 13:12:53 +02:00
nl6720
d31f38843a
mkarchiso: do not try to use an non existent GPG public key file
The `bootstrap` build mode never calls `_export_gpg_publickey`, so even if
the GPG key is passed with the `-g` option and thus the `gpg_key` variable
is set, the `${work_dir}/pubkey.gpg` file will not exist.
This has not caused any issue so far because the `ARCHISO_GNUPG_FD` file
descriptor opens the file for both reading and writing, which means the
file gets created if it does not exist.

Assign the exported public key file name to a `gpg_publickey` variable in
`_export_gpg_publickey` and check for it when the file is used.

Since the exist status of the gpg command cannot be checked, look for the
exported public key file instead.
2022-12-06 12:55:13 +02:00
Jonathan Liu
9d391c0925 Add Memtest86+ to x86_64 UEFI GRUB boot menu
Implements #203.
2022-12-03 20:56:18 +11:00
nl6720
ee4e4a96d2
Add changelog for 68 2022-10-30 10:39:45 +02:00
nl6720
e0e4d200c1
configs/releng/airootfs/etc/mkinitcpio.conf: replace the deprecated archiso_kms hook with kms
The archiso_kms hook was moved from mkinitcpio-archiso to the mkinitcpio project.

See 7bfe4861ea and dec17db532
2022-10-25 12:18:56 +03:00
nl6720
2f9cfdf42f
configs/: remove "Copy to RAM" boot entries since it is automatic now
The default is now copytoram=auto which enables copying to RAM when the rootfs image size is less than 4 GiB and free RAM exceeds the rootfs image size + 2 GiB.

See https://gitlab.archlinux.org/mkinitcpio/mkinitcpio-archiso/-/issues/13 and https://gitlab.archlinux.org/mkinitcpio/mkinitcpio-archiso/-/merge_requests/26.

Implements #177.
2022-10-22 17:31:46 +03:00
nl6720
11971619a6
mkarchiso: do not sign .sig files
Make sure existing sig files are deleted before creating new ones and make sure to not sign any sig files.

This allows retrying failed mkarchiso runs without ending up with files such as vmlinuz.ipxe.sig.ipxe.sig.

Fixes #198
2022-10-13 13:37:14 +03:00
nl6720
f4f0a3a5ec
configs/: Do not explicitly enable qemu-guest-agent.service
qemu-guest-agent.service will be started by the /usr/lib/udev/rules.d/99-qemu-guest-agent.rules udev rule.

Fixes #199
2022-10-06 15:56:18 +03:00
David Runge
fbc72247b8
Add changelog for version 67
CHANGELOG.rst:
Add changelog for version 67.
2022-09-25 19:59:58 +02:00
Anton Hvornum
326cfed7cc
Add the ability to generate rootfs signatures using openssl CMS module if `-c` is given.
(gitlab ci)

Added a CA structure to the codesigning certificates.
This to test the functionality of optional CA being in the signing message.

(mkarchiso)
Removed the ``sign_netboot_artifacts`` variable and instead
we'll now rely on ``if [[ -v cert_list ]]; then``.

Added ``ARCHISO_TLS_FD`` and ``ARCHISO_TLSCA_FD`` environment variables
to override the certificates used. This is so that third party CA's can
be used during building in a meaningful way without distrupting the
CA trust that is shipped by default.

_cms_sign_artifact() was added which signs the rootfs using OpenSSL CMS.
The files will be saved as "${artifact}.cms.sig". That would be for instance
"${isofs_dir}/${install_dir}/${arch}/airootfs.sfs.cms.sig".
2022-09-25 19:54:41 +02:00
David Runge
5f135b4342
Add changelog entry for ordering pacman-init after time-sync.target
CHANGELOG.rst:
Add changelog entry for ordering pacman-init after time-sync.target
2022-09-25 15:43:41 +02:00
nl6720
ced3d3ffa3
Order pacman-init.service before archlinux-keyring-wkd-sync.service
archlinux-keyring-wkd-sync.service needs an initialized pacman keyring to work.

Add BindsTo=etc-pacman.d-gnupg.mount to stop pacman-init.service if the mount unit suddenly enters inactive state.
2022-09-01 09:41:00 +03:00
nl6720
674f004170
Add changelog for 66 2022-08-28 15:19:52 +03:00
Christian Hesse
aef242720d mkarchiso: touch clock-epoch for extra hint on date and time
This helps on systems with screwed or broken RTC.
2022-08-26 14:46:59 +02:00
nl6720
7bc4c54245
mkarchiso: preload more GRUB modules and disable shim_lock verifier
--disable-shim-lock is required to support Secure Boot with custom signatures without using shim.
Otherwise GRUB will trow an error when trying to boot a kernel:

    error: shim_lock protocol not found.
    error: you need to load the kernel first.

The modules GRUB will use need to be preloaded otherwise the EFI binaries cannot be signed and used for Secure Boot.
See https://bugs.archlinux.org/task/71382.
GRUB will trow en error:

    error: verification requested but nobody cares

These changes are done to support Secure Boot using custom keys (not shim) by simply extracting the boot loader
(BOOTx64.EFI and BOOTIA32.EFI), kernel, UEFI shell, signing them and then repacking the ISO.

For example.
Extract the files:

    $ osirrox -indev archlinux-YYYY.MM.DD-x86_64.iso \
        -extract_boot_images ./ \
        -extract /EFI/BOOT/BOOTx64.EFI BOOTx64.EFI \
        -extract /EFI/BOOT/BOOTIA32.EFI BOOTIA32.EFI \
        -extract /shellx64.efi shellx64.efi \
        -extract /shellia32.efi shellia32.efi \
        -extract /arch/boot/x86_64/vmlinuz-linux vmlinuz-linux

Make the files writable:

    $ chmod +w BOOTx64.EFI BOOTIA32.EFI shellx64.efi shellia32.efi vmlinuz-linux

Sign the files:

    $ sbsign --key db.key --cert db.crt --output BOOTx64.EFI BOOTx64.EFI
    $ sbsign --key db.key --cert db.crt --output BOOTIA32.EFI BOOTIA32.EFI
    $ sbsign --key db.key --cert db.crt --output shellx64.efi shellx64.efi
    $ sbsign --key db.key --cert db.crt --output shellia32.efi shellia32.efi
    $ sbsign --key db.key --cert db.crt --output vmlinuz-linux vmlinuz-linux

Copy the boot loader and UEFI shell to the EFI system partition image:

    $ mcopy -D oO -i eltorito_img2_uefi.img BOOTx64.EFI BOOTIA32.EFI ::/EFI/BOOT/
    $ mcopy -D oO -i eltorito_img2_uefi.img shellx64.efi shellia32.efi ::/

Repack the ISO using the modified El Torito UEFI boot image and add the signed boot loader files, UEFI shell and
kernel to ISO9660:

    $ xorriso -indev archlinux-YYYY.MM.DD-x86_64.iso \
        -outdev archlinux-YYYY.MM.DD-x86_64-Secure_Boot.iso \
        -boot_image any replay \
        -append_partition 2 0xef eltorito_img2_uefi.img \
        -map BOOTx64.EFI /EFI/BOOT/BOOTx64.EFI \
        -map BOOTIA32.EFI /EFI/BOOT/BOOTIA32.EFI \
        -map shellx64.efi /shellx64.efi \
        -map shellia32.efi /shellia32.efi \
        -map vmlinuz-linux /arch/boot/x86_64/vmlinuz-linux

Boot the resulting archlinux-YYYY.MM.DD-x86_64-Secure_Boot.iso.
2022-08-19 10:22:40 +03:00