Commit Graph

91 Commits

Author SHA1 Message Date
nl6720
cedb3d142c
configs/*/grub/grub.cfg: replace /dev/disk/by-uuid/ with UUID=
Use the shorter and more nicer looking `UUID=` *tags* instead of the
`/dev/disk/by-uuid/` paths.

This requires mkinitcpio-archiso v68.

Related to #202
2023-02-24 11:41:14 +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
f7502001b0
configs/*/grub/grub.cfg: reuse ARCHISO_HINT and ARCHISO_UUID passed from the embedded grub.cfg
The `grub.cfg` embedded in the GRUB binaries already sets `ARCHISO_HINT`
and `ARCHISO_UUID` in most cases. To avoid performing the same searches
multiple times, use the existing variables.
2023-02-22 18:28:28 +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
0f34e4429a
configs/*/airootfs/etc/ssh/sshd_config: update to match 9.2p1-1
Update /etc/ssh/sshd_config to match changes made in
42aa04744e
and 7166713c55

The only modification remains `PermitRootLogin yes`.
2023-02-07 17:38:11 +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
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
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
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
nl6720
86540647db
configs/*/grub/grub.cfg: enable serial input and output
Try to initialize a serial device and use it for input and output.

Add more comments to grub.cfg to explain what is done.

Related to #75
2022-06-26 13:16:29 +03:00
nl6720
e654106ecf
configs/*/grub/grub.cfg: auto-boot after 15 seconds
* Set the default boot entry and its timeout.
* Add classes to menu entries to allow theming them.

Fixes #179
2022-06-23 08:27:44 +03:00
nl6720
b72523e389
configs/baseline/profiledef.sh: add -E ztailpacking to airootfs_image_tool_options for mkfs.erofs
As the man page says, it saves more space, although the feature is experimental.
2022-06-18 08:47:25 +03:00
plainlinen
e51b6f6199 Use grub for uefi x64 boot modes in profiledef.sh 2022-06-09 22:39:43 -07:00
plainlinen
98de411847 Add useful grub menu entries to grub.cfg 2022-06-09 22:36:03 -07:00
nl6720
ba11c40e49
configs/: use the C.UTF-8 locale
The glibc 2.35-6 package ships with the C.UTF-8 locale included.
This means there is now a UTF-8 locale available by default and en_US.UTF-8, which requires editing /etc/locale.gen and running locale-gen, is not needed anymore.

Implements #175.
2022-06-09 08:27:50 +03:00
Pellegrino Prevete
c335d5d392
Update baseline and releng profiledef.sh to support ia32 uefi mode. 2022-05-25 14:52:22 +00:00
Pellegrino Prevete
4e20b30faf
Add GRUB configuration files to baseline and releng profiles. 2022-05-25 14:50:49 +00:00
nl6720
8c837ca23b
configs/*: add VMware and Hyper-V guest packages and enable their services
* open-vm-tools package, vmtoolsd.service and vmware-vmblock-fuse.service for VMware.
* hyperv package, hv_fcopy_daemon.service, hv_kvp_daemon.service and hv_vss_daemon.service for Hyper-V.

Related to #118.
2022-04-30 12:07:36 +03:00
nl6720
e5bdf0c6ab
configs/{baseline,releng}/: disable systemd-gpt-auto-generator
When booting the ISO, you can observe a message that systemd-gpt-auto-generator has failed:

    systemd-gpt-auto-generator[197]: Reading EFI variable /sys/firmware/efi/efivars/LoaderDevicePartUUID-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f.
    systemd-gpt-auto-generator[197]: open("/sys/firmware/efi/efivars/LoaderDevicePartUUID-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f") failed: No such file or directory
    systemd-gpt-auto-generator[197]: EFI loader partition unknown, exiting.
    systemd-gpt-auto-generator[197]: (The boot loader did not set EFI variable LoaderDevicePartUUID.)
    systemd-gpt-auto-generator[197]: Failed to open device: No such device

Seeing as it started to appear relatively recently, it may be a systemd bug.
Since we do not want any GPT partition automounting in the live environment anyway, systemd-gpt-auto-generator can simply be disabled.

Fixes #164.
2022-03-25 17:38:10 +02:00
nl6720
18bb8c2b45
configs/*/airootfs/etc/systemd/network/20-ethernet.network: add a comment to document why an interface name glob is used
This documents the changes made in !177 inside the .network files themselves.

Related to #142.
2022-01-22 19:17:34 +02:00
nl6720
56dc96ee12
configs/*/airootfs/etc/ssh/sshd_config: update to openssh 8.7p1-1
Update /etc/ssh/sshd_config to match upstream changes.
The only modification remains "PermitRootLogin yes".
2021-08-25 00:24:17 +03:00
David Runge
f4324e2f81
Remove SPDX license identifier from releng configs
configs/baseline/*:
Remove the SPDX license identifier comment from the configuration files in the profile, as they are not eligible for
copyright.
2021-07-29 20:45:08 +02:00
nl6720
8fa110e9d7
configs/*/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf: document why the drop-in file exists
Related to #142.

Add missing `ExecStart=` to baseline's /etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf.
2021-07-27 13:06:59 +03:00
nl6720
c6a1ccca4f
configs/releng/airootfs/etc/systemd/network/: move RouteMetric= from [DHCPv6] to [IPv6AcceptRA]
systemd moved the option. See 8ebafba9f9 .
Implements #123.

Document in comments why the route metrics need to be set (because of https://github.com/systemd/systemd/issues/17698 ) and use the same metric values as NetworkManager. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c

Additionally remove RouteMetric from configs/baseline/airootfs/etc/systemd/network/20-ethernet.network.
There is only one networkd configuration file in baseline, meaning, there are no other routes.
2021-07-27 13:06:59 +03:00
Giancarlo Razzolini
d75689b5f7
baseline/pacman.conf: Enable parallel downloads
Now that pacman 6 is around, enable parallel downloads to speed up the installation
process. Added to the baseline configuration to also improve the pipeline.
2021-06-29 15:20:39 -03:00
nl6720
6f671e1174
configs/*/pacman.conf: update configuration file for pacman 6
Based on accc1d2101/trunk/pacman.conf

Implements #136
2021-06-05 18:19:00 +03:00
nl6720
0b94b049e9
configs/baseline: use EROFS based image
Showcase #59.
2021-05-29 18:04:15 +03:00
Simon Wilper
31427eca7a Apply copytoram Boot Option Menu Entries also to releng 2021-05-14 19:47:25 +02:00
Simon Wilper
9c783a8e71 Reorder UEFI boot menu entries 2021-05-14 19:47:25 +02:00
Simon Wilper
bb503b9030 add optional pv tool
use pv to give feedback on copying the airootfs to RAM when copytoram
kernel parameter is given
2021-05-14 19:46:23 +02:00
nl6720
bd2b861aa3
configs/*: add VM guest packages and enable their services
* virtualbox-guest-utils-nox package and vboxservice.service for VirtualBox.
* qemu-guest-agent package and qemu-guest-agent.service for QEMU & libvirt.

Implements #118.
2021-05-11 21:47:12 +03:00
David Runge
535bc3c0da
baseline: Add bootstrap packages file
configs/baseline/bootstrap_packages.x86_64:
Add a packages file for bootstrap images using the baseline profile and add arch-install-scripts and base to it.
2021-05-09 11:38:03 +02:00
David Runge
b7fd696e1e
baseline: Add buildmodes to profiledef.sh
configs/baseline/profiledef.sh:
Add `buildmodes` array with default entry for the 'iso' buildmode.
2021-05-09 11:38:00 +02:00
nl6720
06c3218786
configs/releng/syslinux/: increase serial baud rate to 115200
Additionally enable serial in baseline profile.

Related to #75.
2021-04-30 20:50:34 +03:00
nl6720
bc67933af1
Support EROFS
EROFS, like Squashfs, is a read-only file system. It can be used to store airootfs in an image file.
Its advantage is the support for POSIX ACLs. EROFS downside is that currently it only supports LZ4 compression (LZMA support is not yet fully implemented).

A difference from Squashfs is that, EROFS stores change time (ctime) not modification time (mtime). The reverse is true for Squashfs.

Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/59
2021-03-09 16:25:45 +02:00
Michael Vorburger
e7306a309c add cloud-init to baseline 2021-01-27 14:16:43 +00:00
Michael Vorburger
744b8f13ed make baseline have working ethernet networking, like releng 2021-01-27 14:16:43 +00:00
Michael Vorburger
94dd194c22 add SSH server to baseline
inspired by https://wiki.archlinux.org/index.php/Archiso#Prepare_an_ISO_for_an_installation_via_SSH
2021-01-27 14:16:43 +00:00
Michael Vorburger
221a9211e5 use same airootfs_image_tool_options in baseline as in releng 2021-01-27 14:16:43 +00:00
nl6720
a178ff44bc
profiledef.sh: Remove www. from archlinux.org
See https://lists.archlinux.org/pipermail/arch-devops/2020-December/000474.html .
2020-12-26 20:11:06 +02:00
nl6720
863247d0a6
Keep all SYSLINUX files in /syslinux
This gets rid of the duplicate ldlinux.c32 and the useless isolinux.cfg which only points to syslinux.cfg.

Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/46 .
2020-11-30 16:00:15 +02:00
nl6720
42d9e4f983
Allow specifying ownership and mode of custom airootfs files and directories
profiledef.sh can now contain an associative array called file_permissions which can be used to set custom ownership and mode of custom airootfs files. The array's keys contain the path and the value is a colon separated list of owner UID, owner GID and access mode.
For example:

    file_permissions=(
      ["/etc/shadow"]="0:0:400"
    )

This means that mkarchiso now copies airootfs files (and directores) without permissions and anything that should be owned by a user other than root and/or if the mode should be something other than 644 for files and 755 for directories must to be listed in ${file_permission[@]} in profiledef.sh.

Fixes https://gitlab.archlinux.org/archlinux/archiso/-/issues/61 .
2020-11-30 08:46:24 +02:00
nl6720
6820f2cb69
Add modconf to HOOKS array in mkinitcpio.conf
The default mkinitcpio.conf includes modconf in HOOKS.
2020-10-29 13:36:27 +02:00
David Runge
1bd944ee7c
Remove build.sh support from profiles and mkarchiso
configs/{baseline,releng}/build.sh:
Remove `build.sh` scripts. They were deprecated with v47.

archiso/mkarchiso:
Remove all `build.sh` related functionality (i.e. `command_pkglist()`, `command_iso()`, `command_prepare()`,
`command_install()`, `command_init()`, `command_run()`).

Rename `command_build_profile()` to `_build_profile()` to be more in line with the style of the other function naming.

Change `_show_config()` to only print info about the profile and make no more use of parameters.

Remove all help output related to legacy `build.sh` commands.

Fixes #51
2020-10-29 12:32:48 +01:00
nl6720
ae0e914114
configs/baseline: support UEFI 2020-10-24 19:57:30 +03:00
nl6720
8c047047ab
Split SYSLINUX configuration into per-kernel configuration files
Slightly simplifies adding boot loader configuration for more kernels.
Unfortunately the INCLUDE statement doesn't support wildcards, so each new file must be manually included in the main syslinux configuration file (syslinux.cfg for baseline and archiso_sys.cfg for releng).
2020-09-27 20:54:11 +03:00
nl6720
136152e672
Do not rename the initramfs image
This is a breaking change. archweb, archiso-manager and various documentation must be updated.

* https://github.com/archlinux/archweb/blob/master/templates/releng/archlinux.ipxe
* https://github.com/pierres/archiso-manager/blob/master/Makefile
2020-09-27 20:54:10 +03:00
David Runge
d90184a7f0
Pass profile directory as parameter to mkarchiso
**archiso/mkarchiso**:

Change all override option parameters (i.e. `-A`, `-C`, `-D`, `-L`, `-P` and `-g`) to not directly override the global
variable they are tied to, but instead using an `override_` prefixed variable.

Add `_set_overrides()` to use `override_` prefixed variables (if set) to override those without a prefix.

Remove `-B` (a profile directory) from the list of parameters. The profile directory is now provided as separate
non-option parameter.

Add a call to `_read_profile()`, `_set_overrides()` and `command_build_profile()` to the fallthrough option of the
switch-case checking `command_name` - a non-option parameter to mkarchiso. This effectively provides the possibility to
set the profile directory using a non-option parameter, while still maintaining compatibility to legacy named arguments
used in the configs' `build.sh` scripts.

Extend the warning in regards to legacy `build.sh` based commands to mkarchiso by providing an EOL with archiso v49.

Change the help output to reflect the changes and further elaborate on the legacy commands used by `build.sh` scripts.

Change help output to be ordered alphabetically.

Add help output for `-r` and `-g` options.

Call `_set_overrides()` for legacy commands that accept one or more of the overriden options (i.e. `command_init`,
`command_install`, `command_prepare` and `command_iso`).

Various style fixes.

**configs/{baseline,releng}/build.sh**:

Change call to mkarchiso to use the profile's directory as a named argument instead of an option-argument.

**README.rst**:

Fix documentation on how to call mkarchiso with a profile directory.

Fix wording and ordering of option arguments for run_archiso documentation.

Fixes #52
2020-08-25 19:06:43 +02:00
nl6720
e9f209efbf
Deprecate build.sh scripts and old mkarchiso commands
Replace build.sh scripts with calls to mkarchiso -B "profiledir" build_profile.

Fixes https://gitlab.archlinux.org/archlinux/archiso/-/issues/37 .
2020-08-17 21:33:20 +03:00