© 2006 - 2024 | Tobias Powalowski | Arch Linux Developer tpowa
Last update: 27.02.2024 10:39
Archboot is a most advanced, modular Arch Linux boot/install image creation utility to generate
reproducible bootable media for UKI/CD/USB/PXE, designed for installation or rescue operation.
The additional ISOs and UKIs focus on being small, fast and (power)user friendly.
Arch Linux Distribution | Download | Release | B2SUM | Archive | Forum |
---|---|---|---|---|---|
ARM - aarch641 | Browse | Packages | Check | Browse | Check |
RISC-V - riscv642 | Browse | Packages | Check | Browse | |
X64 - x86_643 | Browse | Packages | Check | Browse | Check |
1 The ISO supports aarch64, Apple Mac M1 and higher for virtual machines eg. Parallels Desktop, UTM and VMware
2 The ISO supports riscv64 and needs U-Boot to launch. Recommended only for testing in a virtual machine.
3 The ISO supports x86_64. Use it for real machines and/or virtual machines.
The Unified Kernel Image can be booted from your UEFI firmware or bootloader like any other <EFI> file.
AARCH64 | RISCV64 | X86_64 | |
---|---|---|---|
Kernel |
Image-aarch64 | .sig Image-aarch64.gz | .sig |
vmlinuz-riscv64 | .sig | vmlinuz-x86_64 | .sig |
Initrd |
initrd-aarch64.img | .sig initrd-latest-aarch64.img | .sig initrd-local-aarch64.img | .sig |
initrd-riscv64.img | .sig |
initrd-x86_64.img | .sig initrd-latest-x86_64.img | .sig initrd-local-x86_64.img | .sig |
Microcode | amd-ucode.img | .sig |
amd-ucode.img | .sig intel-ucode.img | .sig |
Type | RAM to boot |
WiFi support |
LAN support |
Package cache for installation |
Size AARCH64 |
Size RISCV64 |
Size X86_64 |
---|---|---|---|---|---|---|---|
date | 700M | ✔ | ✔ | ✖ | 368M | 458M | 493M |
date-latest | 2000M | ✖ | local DHCP server needed |
>= 4G RAM needed |
172M | 224M | |
date-local | 2700M | ✔ | ✔ | ✔ | 662M | 897M |
Boot Mode | AARCH64 | RISCV64 | X86_64 |
---|---|---|---|
UEFI/UEFI_CD booting with GRUB |
✔ | ✖ | ✔ |
UEFI_MIX* booting with GRUB |
✖ | ✖ | ✔ |
Secure Boot with the included fedora signed shim |
✔ | ✖ | ✔ |
MBR BIOS with GRUB |
✖ | ✖ | ✔ |
MBR with U-Boot |
✖ | ✔ | ✖ |
* Firmware 32bit / OS 64bit
A hybrid image file is a standard CD/DVD-burnable image and also a raw disk image.
Use this command with USB thumb drive: |
---|
# dd if=<image> of=/dev/<device> bs=1M |
Caveat: |
---|
|
Please read Roderick Smith’s guide for initial shim setup first.
The included tools for key management: mokutil, sbsigntools, sbctl and mkkeys.sh
On initial Secure Boot setup MOK manager is launched:
Add the hash of grub and kernel from ISO in MOK manager: |
---|
/EFI/BOOT/GRUB<ARCH>.EFI and /boot/vmlinuz-<ARCH> |
The setup script supports the following Secure Boot layout:
Create and backup your own keys with Microsoft certificates: |
---|
# secureboot-keys.sh -name=<yournametoembed> <directory> |
In order to reset the MOK setup:
Reset MOK: |
---|
# mokutil --reset |
VC 1-6 | VC 11 | VC 12 | |
---|---|---|---|
Usage | Login console | Log messages | Systemd Journal |
Terminal Keys | ALT+F1-F6 | ALT+F11 | ALT+F12 |
Graphical Keys | CTRL+ALT+F1-F6 | CTRL+ALT+F11 | CTRL+ALT+F12 |
Use left/right SUPER | Windows | Command | Search | Apple key or ALT+⇽ or ALT+⇾ to toggle consoles.
Serial console is enabled on ttyS0, ttyAMA0 and ttyUSB0.
Connect with ssh as root user: |
---|
$ ssh root@archboot.local |
GNU screen is launched on login and last session will be reattached.
Connect with your favourite browser: |
---|
http://archboot.local:7681 |
GNU screen is launched on login and last session will be reattached.
The interactive scripts are launched on first login.
Your locale, console font and keymap will be configured by the localize script.
Pacman will be configured by the pacsetup script.
Gnome, Plasma, Sway and Xfce are supported.
VNC Client | Connect | archboot.local |
---|---|
Xorg Password | archboot |
Wayland Password | <none> |
Quickinst experts installation: |
---|
# quickinst <directory> |
You can always bump your image to latest available possibilities.
For all options use: |
---|
# update -help |
Archboot provides 2 additional scripts for doing those tasks.
internal backup / copying using tar: |
---|
# copy-mountpoint.sh -h |
internal or external backup / copying using rsync: |
---|
# rsync-backup.sh -h |
Attention: This will render all data on your device inaccessible! |
---|
# restore-usbstick.sh <device> |
You can also run archboot-setup.sh for system configuration on an installed system.
Install your corresponding archboot package for getting the archboot-setup.sh script.
Please check the forum threads or project page for posted fixes and workarounds.
Get latest fixes from GIT: |
---|
# update -update |
radeon.modeset=0
, i915.modeset=0
, amdgpu.modeset=0
or nouveau.modeset=0
noapic
, nolapic
, acpi=off
, pci=routeirq
, pci=nosmp
or pci=nomsi
Archboot | Archiso | |
---|---|---|
Developer(s) | tpowa | arch-releng team |
Arch Install Scripts | ✔ | ✔ |
Interactive Basic Setup / Installation | ✔ | ✖ |
Archinstall | ✖ | ✔ |
Unified Kernel Image UKI provided and bootloader support |
✔ | ✖ |
Secure Boot MOK support with Microsoft certificates supported by fedora's signed shim |
✔ | ✖ |
HTTP Browser Terminal - TTYD | ✔ | ✖ |
Systemd on early userspace | ✔ | ✖ |
Offline installation support1 | ✔ | ✖ |
Internal update feature | ✔ | ✖ |
Accessibility support | ✖ | ✔ |
Mobile broadband modem management service (modemmanager) |
✖ | ✔ |
EXT3, F2FS, JFS, NILFS support | ✖ | ✔ |
Man/Info Pages | ★ | ✔ |
Real Machine boot to prompt2 | 52 seconds | 100 seconds |
Virtual Machine boot to prompt3 | 19 seconds | 24 seconds |
Virtual Machine systemd-analyze3 | 18 seconds | 73 seconds |
Minimum RAM to boot in MiB3 | 780 | 930 |
Free RAM on system in MiB3 | 2912 | 2588 |
Imagesize in MiB | 224 - 897 | 978 |
ROOTFS size in MiB | 727 | 1900 |
ROOTFS packages | 199 | 426 |
ROOTFS Type | btrfs on ZRAM | squashfs |
Default Shell | Bash | Zsh |
Nano editor with syntax highlighting | ✔ | ✖ |
Neovim editor with lastplace plugin | ✔ | ✖ |
Detect high resolution screen size | ✔ | ✖ |
Show journal on Virtual Console 12 | ✔ | ✖ |
Enable windowkeys on Virtual Consoles | ✔ | ✖ |
Text browser | Elinks | Lynx |
IRC client | Weechat | Irssi |
IRC and text browser preconfigured | ✔ | ✖ |
Chromium browser | ★ | ✖ |
Firefox browser | ✔ | ✖ |
GParted partitioner | ✔ | ✖ |
Gnome desktop | ✔ | ✖ |
Gnome Wayland desktop | ✔ | ✖ |
KDE/Plasma desktop | ✔ | ✖ |
KDE/Plasma Wayland desktop | ✔ | ✖ |
Sway Wayland compositor | ✔ | ✖ |
Xfce desktop | ✔ | ✖ |
VNC installation support | ✔ | ✖ |
Default Font Terminus | ✔ | ✖ |
Release build speed | 6 min 11 sec 3 ISOs & 3 UKIs |
6 min 26 sec 1 ISO |
Image assembling | grub-mkrescue | xorriso |
UEFI bootloader | Grub | Grub |
BIOS bootloader | Grub | Syslinux |
Reproducibility | ✔ | ✖ |
Easy custom live CD creation | ✖ | ✔ |
★ Optional | 1 Only local image | 2 Acer R11 Chromebook 4GB RAM
3 QEMU (4GB RAM, kvm and virtio backend), normal image
Add archboot repository to /etc/pacman.conf: |
---|
[archboot] # GeoIP Server = https://archboot.com/pkg |
If you want to build aarch64 or riscv64 images replace x86_64 with the architecture of your choice in the commands and files below.
Create the initrd with your chosen profile: |
---|
# archboot-cpio.sh -c /etc/archboot/<profile>.conf -g initrd.img |
Add your used kernel and initrd to your bootloader.
In order to build images you will need around 3G free space on disk.
This script creates every installation media with latest available core/extra packages and boot/ directory with kernel and initrds.
Building a new release: |
---|
# archboot-x86_64-release.sh <directory> |
Rebuilding a release (reproducibility): |
---|
# archboot-x86_64-release.sh <directory> \ |
Explanation of the image tools / toolchain.
Create an archboot container for image creation: |
---|
# archboot-x86_64-create-container.sh <directory> |
To enter the container run: |
---|
# systemd-nspawn -D <directory> |
Modify your container to your needs. Then run archboot-x86_64-iso.sh for image creation in container.
Option | Explanation |
---|---|
_KERNEL="" | defines used kernel |
_HOOKS=() | Array that defines the used hooks |
Function | Explanation |
---|---|
_map <function> <args> | redo <function> on <args> |
_dir <directory> | Only creates <directory> on <rootfs> |
_full_dir <directory> | Copies the <full directory> as is to <rootfs> |
_binary <binary> | Adds <binary> to rootfs, PATH is added, libraries are detected, symlinks are resolved |
_file <file> | Adds <file> as is to rootfs, symlinks are resolved |
_file_rename <file> <file_rootfs> | Adds <file> as is to rootfs <file_rootfs> |
_symlink <linkname> <linkedfile> | Adds symlink <linkname> to <linkedfile> on <rootfs> |
_mod <module> | Adds kernel <module> to <rootfs> |
_all_mods -f <exclude_pattern> <pattern> | Adds all kernel modules <pattern> to <rootfs>, use -f flag to exclude modules |
Script for image creation from running system or for use in archboot container.
ISO Type | Run command: |
---|---|
Normal | # archboot-x86_64-iso.sh -g |
Latest | # archboot-x86_64-iso.sh -p=x86_64-latest -g |
Local | # archboot-x86_64-iso.sh -p=x86_64-local -g |
You need to configure all your settings in the configuration file: /etc/archboot/defaults
Create server release: |
---|
# archboot-x86_64-server-release.sh |
Create pacman chroot tarball: |
---|
# archboot-pacman-aarch64-chroot.sh <build-directory> |
# archboot-pacman-riscv64-chroot.sh <build-directory> |
Afterwards you only have to run for each release:
Create server release: |
---|
# archboot-aarch64-server-release.sh |
# archboot-riscv64-server-release.sh |
The /etc/archboot/defaults file defines old images purging after 1 month.
You can run QEMU tests at different stages of ISO creation.
Install the edk2-armvirt package.
UEFI GPT mode: |
---|
$ qemu-system-aarch64 -drive file=<isofile>,if=virtio,format=raw \ |
MBR mode: |
---|
$ qemu-system-riscv64 -M virt \ |
Use ssh root@localhost -p 2222 to connect to machine from your running host.
kernel and initrd testing: |
---|
$ qemu-system-x86_64 -kernel <kernel> -initrd <initrd> \ |
BIOS MBR mode: |
---|
$ qemu-system-x86_64 -drive file=<isofile>,if=virtio,format=raw \ |
64bit UEFI / 64bit running system: |
---|
$ qemu-system-x86_64 -drive file=<isofile>,if=virtio,format=raw \ |
32bit UEFI / 64bit running system: |
---|
$ qemu-system-x86_64 -drive file=<isofile>,if=virtio,format=raw \ |
Copy OVMF_VARS.secboot.fd to a place the user has access to it: |
---|
# cp /usr/share/archboot/ovmf/OVMF_VARS.secboot.fd <directory> |
The file already includes a basic set of keys from fedora ovmf package.
64bit UEFI / 64bit running system: |
---|
$ qemu-system-x86_64 -drive file=<isofile>,if=virtio,format=raw \ |
32bit UEFI / 64bit running system: |
---|
$ qemu-system-x86_64 -drive file=<isofile>,if=virtio,format=raw \ |
KVM virtio network for tap0: |
---|
-device virtio-net-device,netdev=eth0 \ |
KVM virtio harddisk: |
---|
-drive file=yourimagefile,if=virtio,format=raw |
Start a hwsid SSID for wireless testing purposes: |
---|
# archboot-hwsim.sh <SSID> |