Funtoo Newsletter, June-August (Summer) 2023
Welcome to the current installment of the Funtoo Newsletter. This newsletter combines multiple months -- June through all of August -- so, essentially our summer newsletter, for those of you in the northern hemisphere.
We're going to hit all the key technical changes in this newsletter:
- Funtoo Linux 1.4 Deprecation (re-announce)
- The End of Genkernel -- Welcome "Funtoo Ramdisk"
Massive updates from Summer Harvest (
I'm planning a follow-up newsletter for community and development news, since this newsletter got too long. This follow-up newsletter will cover:
- The Forums -- Back from the Dead? Maybe!
- Dev Corner: All the Epics! (What's going on with bug tracker)
Let's cover the important technical stuff now.
Funtoo Linux 1.4 Deprecation
Announced in our previous newsletter, but worth repeating here -- Funtoo Linux 1.4 will be "retired" by the end of 2023. See the previous newsletter for more details -- but for now, just know that you should upgrade to "next-release" if you are not running it already.
The best way to upgrade is by performing a new install of Funtoo Linux some time before the new year.
It is technically possible to upgrade from 1.4 to next, especially on server systems with minimal packages, but we don't recommend it.
The End of Genkernel -- Welcome "Funtoo Ramdisk"
For the longest time -- almost since the beginning of the project -- Funtoo has had a forked version of Gentoo's
genkernel which we used to build our official kernel and initramfs. For an equally long time, I have wanted to completely rewrite
genkernel from the ground up. There was always some distraction that prevented me from doing this, and we were able to keep
genkernel hobbling along for around a decade -- but it was time to do something about it. What were some problems with genkernel? Several. Many people haven't really liked it because it built your kernel and your initramfs -- this made it cumbersome to use. There has been a long-held desire to separate this functionality. It has also amassed a ton of features and become very complex and its code base is difficult to refactor and improve. So we needed a better foundation going forward.
After September 11, 2023, when
harvester/2023-08 updated are merged into Funtoo Linux, Funtoo Linux will have a new initramfs building tool called
ramdisk, which will be utilized by the new debian-sources 6.4.13_p1 ebuild to build your initramfs.
genkernel is no longer used.
ramdisksupports standard Funtoo Linux installs only -- so a root filesystem of xfs or ext4, and no LVM, cryptsetup, btrfs, etc. Work is under way to add in this functionality. In the meantime, you will see that
debian-sourceswill prevent you from merging the new kernel if you happen to use the as-yet-unsupported
USEflags such as
btrfs. If you are one of these people using an unsupported setup, don't worry -- we'll be adding support for
lvm, etc. soon. For now, run
--exclude debian-sourcesto get all updates minus the new kernel. Make sure there is a bug open on the bug tracker for the
ramdiskcapability you need. This will allow us to officially add Funtoo support for this functionality, and also include it in our install docs. This will also allow you to test the new functionality to help us to officially support it going forward.
As a quick introduction to ramdisk, I will include an excerpt of the README from its official
funtoo-ramdisk pypi page (https://pypi.org/project/funtoo-ramdisk/😞
The Funtoo ramdisk tool, called ramdisk is a stand-alone tool to create an initial RAM disk filesystem (initramfs) for booting your Linux system.
The internal initramfs logic is based on the logic found in Gentoo Linux’s genkernel tool, but has been rewritten to be simpler and more efficient.
What's not included
Nearly all “extra” genkernel features are intentionally not yet implemented. This tool doesn’t build your kernel or modules.
It also currently doesn’t support dmraid, zfs, btrfs, encrypted root, or LiveCD or LiveUSB booting. [yet]
Why not? Because one of the main design goals of this project is to create a very elegant and easy-to-understand initramfs whose core logic is not cluttered with tons of complicated features. To start from a clean slate, we are starting from very minimal functionality and then will very carefully add back various features while keeping the code clean, simple, elegant and effective.
So, what does Funtoo’s ramdisk tool actually offer? Here’s a list:
genkernel-style initramfs without the cruft. In comparison to genkernel’s initramfs, the shell code is about 10x simpler and a lot cleaner and has been modernized. About 100 lines of shell script, with another 215 lines of functions in a support file.
Copies over the modules you specify – and automatically figures out any kernel module dependencies, so any depended-upon modules are also copied. This eliminates the need to track these dependencies manually.
Rootless operation. You do not need enhanced privileges to create the initramfs.
You can read the
linuxrcscript and actually understand what it does. It is written to be easy to understand and adapt. So it’s not just short, but easy to grasp.
Enhanced module loading engine on the initramfs which is significantly faster than genkernel. This effectively eliminates the “watching the stream of useless modules being loaded” issue with genkernel. Modern systems with NVMe drives will load just a handful of modules to boot – all without requiring any special action from the user.
“kpop” functionality allows for building ramdisks with just the modules you need. For example, ramdisk
--kpop=nvme,ext4will create a ramdisk that can boot on NVMe ext4 root filesystems, and only include these necessary modules, leaving all other modules to be loaded by your Funtoo Linux system.
Effective Python-based command to actually build the ramdisk, which is called:
ramdisk. This gives us an extensible platform for the future.
Enhanced ini-style system for selecting modules to include on your initramfs.
Enhanced ini-style system for selecting module groups to autoload on the initramfs.
Support for xz and zstd compression.
As you can see,
ramdisk is an exciting and innovative project which will continue to deliver new goodness related to booting. I hope you enjoy it! 🙂
With the close of summer comes the merging of our development work from the
harvester/2023-08 branch. This is a branch where we can make possibly breaking changes and work out kinks before things hit end users. Thanks to all who contributed to the summer harvest this round. Here is a brief and incomplete summary of changes in harvester, plus any hotfixes added to the
master branch during this time:
gcc-12added, along with updated binutils.
funtoo-ramdisk(see previous section)
- Linux 6.4: debian-sources-6.4.13_p1
libreoffice-binto remove unnecessary deps.
- Updated NVIDIA drivers.
- FL-11523: forward-port rtl89 Wi-Fi to address flakiness issue
- ZFS 2.2.0_rc4 with Linux 6.4 compatibility, with 2.2.0 final soon to follow.
zathuradocument viewer autogen (thanks to
pgplotupdate (thanks to
mdbookautogens (thanks to
libcpuidhotfixes (thanks to
- Inkscape 1.3 and updates to boost to allow this.
typeprofbuild failure (thanks
geanyreworked ebuilds (thanks
Multiple python module fixes/maintenance (
ibus-skkand dependencies, remove
Add feature to allow PEP 517 python modules autogens to be determined automatically (
kit-fixupsgit pre-commit hooks.
Many thanks to all who contributed.
OK, that's it for now -- stay tuned for an additional community/newsletter supplement that will cover more topics.