Commit b30d1cad authored by Christian Hesse's avatar Christian Hesse 😜
Browse files

mkarchiso: add version information

To date the iso version was used for iso volume information and iso file name.
In my custom builds I do use it a lot more:

* Inside the root fs: The system knows about its own version. I use this to:
  -> report the version to a server (poor man's inventory)
  -> let the system update itself

* On the iso fs: The files are served via rsync, running systems transfer
  version file first to check for available update.

* A grub environment file on the iso fs: Booting the iso from grub allows
  to create cow directory per version:

    loopback loop archlinux.iso
    load_env -f (loop)/arch/grubenv
    linux (loop)/arch/boot/x86_64/vmlinuz-linux ... \
        cow_directory=archlinux/${VERSION} ...

So let's just create these files.
parent d153b486
......@@ -118,6 +118,19 @@ Optionally install archiso's mkinitcpio hooks:
make install-initcpio
Optional Features
The iso image contains a grub environment block holding the iso version. This allows to boot the iso image from grub
with a version specific cow directory to mitigate overlay clashes.
.. code:: grub
loopback loop archlinux.iso
load_env -f (loop)/arch/grubenv
linux (loop)/arch/boot/x86_64/vmlinuz-linux ... \
cow_directory=archlinux/${VERSION} ...
initrd (loop)/arch/boot/x86_64/initramfs-linux-lts.img
......@@ -834,11 +834,19 @@ _set_overrides() {
_msg_info "Done!"
_export_gpg_publickey() {
gpg --batch --output "${work_dir}/pubkey.gpg" --export "${gpg_key}"
_make_version() {
install -d -m 0755 -- "${isofs_dir}/${install_dir}"
_msg_info "Creating files with iso version..."
printf '%s\n' "${iso_version}" > "${airootfs_dir}/version"
printf '%s\n' "${iso_version}" > "${isofs_dir}/${install_dir}/version"
printf '%.1024s' "$(printf '# GRUB Environment Block\nVERSION=%s\n%s' "${iso_version}" \
"$(printf '%0.1s' "#"{1..1024})")" > "${isofs_dir}/${install_dir}/grubenv"
_msg_info "Done!"
_make_pkglist() {
install -d -m 0755 -- "${isofs_dir}/${install_dir}"
......@@ -867,6 +875,7 @@ _build_profile() {
[[ -n "${gpg_key}" ]] && _run_once _export_gpg_publickey
_run_once _make_custom_airootfs
_run_once _make_packages
_run_once _make_version
_run_once _make_customize_airootfs
_run_once _make_pkglist
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment