A long time in the making...
tl;dr New iso, it's certified crap but has lots of new features/changes, please test it.
While not ready for a "general" release (i.e., this release is not intended for general public consumption), the new iso is finally at a stage where it can start being tested by Source Mage developers (i.e., people who know what they're doing within our ecosystem, and have likely experienced previous iso installs). At present, only a release for x86_64 is available, but x86 will follow soon, and hopefully later on releases for "new" architectures such as ARM, MIPS, and so on.
The new iso was made entirely using the new cauldron command and framework. The builds are now repeatable, minus a few small exceptions for specific spells (several have fixes in the grimoire, but they haven't yet propagated to a stable grimoire release -- I always base iso "releases" on stable grimoire and stable sorcery releases only). There is also much greater flexibility in specifying how the isos are to be produced. I'll delve into the cauldron features later, as those will be more interesting when one wants to create a new iso of their own. From now, I will focus on the features of enchantment, the new installer framework, and the "updates" on the iso itself.
The new installer framework provides a single, consistent API for different installer front-ends, which are called enchanters. Currently, only the shell
enchanter (visually and functionally similar to the 0.10 iso series installer) is implemented, but implementing a menu-based enchanter (using dialog) as well as a web-based (html) enchanter are in the TODO list (and others can be requested/submitted). The shell
enchanter has been implemented as a single command, with all separate install functionality provided as subcommands (e.g., enchantment isokernel
to install the kernel used in the iso runtime), but shell aliases are provided as shortcuts (as described in the enchanter's welcome screen and interface). As the enchanters are just front-ends to the enchantment "library" backend, the functionality of the enchanters can be controlled via the interfaces to the backend. The end-user now has great control through manipulation of environment variables. All environment variables are provided with default settings, loaded from a centralized set of config files (under /etc/enchantment
). Everything can be overridden either by editing a config file, or by setting the appropriate environment variable in the running shell. Such environment variables include settings for where to install to, where to pull the list of spells to install from, desired kernel version, and more. A full list of the environment variables, as well as all recognized enchanter commands, can be found in the enchantment(8)
manpage (man enchantment
).
In addition to the changes in the installer interface, there are various changes to the iso runtime itself. The present iso developer preview release has a 4.1.14 kernel, with modules for nearly every network hardware device you might possibly use, as well as supporting various filesystems, etc. There is also full support for net functionality in userspace via wpa_supplicant, ping, etc. Do note, however, that this experimental release uses busybox to provide as much of the userspace functionality as possible, so some commands or command flags/arguments may differ from what you are used to. Which commands can/should be provided by busybox, and which should not, is still an area of experimentation and will likely be tweaked for future releases. Currently, man pages and other docs (/usr/share/doc
) are included in the iso for all spells that provide them.
Another big change in the iso, and this is in part due to having a newer kernel which supports newer filesystems, is the use of an overlayfs. This allows for having a read-only iso9660 filesystem as a base, but then being able to modify or create files directly over top of that base during runtime. This removes the need for having tmpfs hacks via /tmp
, as well as the need for non-standard, non-mainline, or just slow union filesystems.
The basesystem chroot tarball included in the iso is also different. It is now compressed with xz (as is the iso itself), and comes in at around 57 MB, but it's smallness is also due to being more minimal than it was previously. Both the iso runtime and the system tarball are produced completely from scratch, only providing exactly those files that are installed by the spells included in them (this has even caught some subtle bugs in our grimoire that have been around for a long time), and the system tarball includes only those spells that are exactly needed for compiling code via a C/C++ compiler. Not even a linux kernel or its sources/headers are included in the system tarball (the sources are in the iso runtime, or you can provide your own), so you would likely need to install those first before building as several spells do rely on having kernel headers in /usr/include
in order to build.
For booting, the iso uses a more modern syslinux environment, complete with a background image and a menu interface. It is quite easy to adapt the isolinux config to boot the iso content from a usb key (using syslinux from vfat or extlinux from an ext-formatted partition with the same config file, just given a different name), and syslinux is also capable of booting from (U)EFI machines in addition to traditional BIOS.
Finally, the new iso now uses an initramfs rather than an initrd, meaning it is much easier to change it and mess about with it, and it also loads a little faster. The init script in the initramfs has also received a major overhaul, though work on it is still ongoing, and it can now present a basic menu for advanced boot options in case a proper boot setup can't be autodetected. You can also specify directly whether to attempt to boot from a removable optical medium (cdrom, dvd, bluray) or attempt to find an attached usb disk (usb external hard-disk, usb key), forego autodetection and load the initramfs menu, or go directly into a shell in the initramfs by specifying an appropriate kernel boot option in the bootloader (bootcd, bootusb, bootmenu, or bootshell).
There are many improvements in the pipeline already for both cauldron (which I'll talk more about later) and enchantment. I have a TODO list in my local git repo that I can share if there is enough interest. Otherwise I'll just implement items off it as I can and you'll find out about them in future releases.
Please help with the further development of the iso (more specifically, the cauldron and enchantment components used in making the isos) by testing them on different hardware and also testing various combinations of configuration options and commands.
submitted by cauldron / grimoire on 2015-12-24 /