Current build leaves ~800K free of 31M in the FAT filesystem, adding 9M.
Going beyond 65535 sectors of 512-byte is a bit special,
but works for EFI. Image size is reported a zero in boot catalog,
but xorriso does a good job, and writes right value in hybrid-partition.
Tested booting in qemu in both modes (cd-rom and hybrid) and works fine.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@gmail.com>
A new option -g <keyid> is added to build.sh set the key id. If it is set, the squashfs files will be signed
by gpg and the gpg key will be added to archiso.img. In order to use this option, a gpg agent must be running.
Since build.sh is executed as root, it may be necessary to set the GNUPGHOME environment variable, for
example
$ su -c "GNUPGHOME=/home/youruser/.gnupg /path/to/build.sh -g yourkeyid"
If the ARCHISO_GNUPG_FD environment variable is set, its contents will be interpreted as an open file
descriptor and its contents will be used to create a keyring in the initramfs in /gpg.
Having files on btrfs subvolumes requires to give mount options. Add
boot params archisoflags= and cow_flags= for this purpose. Boot
parameters could look like this:
... archisodevice=/dev/sdaX archisoflags=subvolume=isos
cow_device=/dev/sdaX cow_flags=subvolume=persist ...
Signed-off-by: Christian Hesse <mail@eworm.de>
Currently, when booting loopmounted iso file, it is necessary to
specify not only img_dev and img_loop (which should be sufficient),
but also archisolabel or archisodevice. With this patch, archisodevice
is directly populated with the correct loop device, and it is not
necessary to specify the label when booting from loopmounted iso,
which makes for leaner and cleaner grub.cfg.
We received an IP address from DHCP server and configure it statically.
This is required if we continue to use network connectivity to access
the root device (for example via NBD or NFS).
The lease is not updated, though. This can cause trouble in networks
with low lease times. So let's flush the addresses if root filesystem
has been copied to RAM. A dhcp client in main system can handle the
network connectivity then.
Signed-off-by: Christian Hesse <mail@eworm.de>
Umount detaches the loop device automatically, but let's make it
explicit to be sure. Additionally losetup gives:
losetup: /dev/loop0: detach failed: No such device or address
This is kind of expected, let's silent the error message.
Signed-off-by: Christian Hesse <mail@eworm.de>
I see cases where a stale loop device stays around and fills up my
partition as image file is still in use and does not get unlinked.
Explicitly detach loop device on umount to fix that.
Signed-off-by: Christian Hesse <mail@eworm.de>
This is the first attemp to test overlayfs in archiso.
The current dm-snapshot mode is keep and is enabled by default,
while the new mode is enabled via "-s sfs" to mkarchiso.
No new boot parameters are added, since archiso hooks detects
if the .sfs file is for dm-snapshot (airootfs.img inside)
or for overlayfs.
Persistence is supported in overlayfs mode using the same options
(cowlabel or cowdevice), but warning while in dm-snapshot mode,
only one file is used (airootfs.cow), in overlayfs mode internal
files for workdir/ and upperdir/ are allocated, so you can not use
VFAT or NTFS.
To test this, you need to enable [testing] in pacman.conf from
releng profile and edit build.sh then add "-s sfs" in make_prepare()
Look at:
setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" prepare
Replace with:
setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -s sfs -D "${install_dir}" prepare
The build requires just half of space that the build for dm-snapshot,
since there is no ext4 img ;)
Just to remember: there is no space gain in .sfs (just about 2M)
There is at least one thing during boot with machine-id service:
Dec 24 03:31:39 archiso systemd-machine-id-commit[183]: Failed to unmount transient /etc/machine-id file in our private namespace: Invalid argument
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@gmail.com>
Copying big amount of data results in bad performance as data is
written in chunks of 4kiB (8 * 512 bytes).
The default is not changed but can be overwritten.
Signed-off-by: Christian Hesse <mail@eworm.de>
This makes systemd generate a machine-id on early boot and prevents it from thinking we need
any "first boot" setup. We really don't want systemd thinking that, since we carefully prepared
our root file system.
This also ensures every live environment has a unique machine id.
Remove unused feature, just to save space
sizeof ext4 image (empty): 4.3M vs 403K (du airootfs.img)
sizeof used space (empty): 48M vs 20K (df)
Thanks Christian Hesse for initial tip.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@gmail.com>