Jump to content
Read the Funtoo Newsletter: Summer 2023 ×
  • entries
  • comments
  • views

Funtoo Newsletter, Summer 2023



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 (harvester/2023-08)

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.

[!IMPORTANT] Currently,ramdisk supports 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-sources will prevent you from merging the new kernel if you happen to use the as-yet-unsupported USE flags such as btrfs. If you are one of these people using an unsupported setup, don't worry -- we'll be adding support for btrfs, lvm, etc. soon. For now, run emerge with --exclude debian-sources to get all updates minus the new kernel. Make sure there is a bug open on the bug tracker for the ramdisk capability 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.

Existing issues:

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.

What's Included

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 linuxrc script 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,ext4 will 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! 🙂

Summer Harvest

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-12 added, along with updated binutils.
  • Introduction of funtoo-ramdisk (see previous section)
  • Linux 6.4: debian-sources-6.4.13_p1
  • Reworking of libreoffice-bin to remove unnecessary deps.
  • Updated NVIDIA drivers.
  • FL-11523: forward-port rtl89 Wi-Fi to address flakiness issue
  • docker, docker-cli, docker-compose, docker-buildx, containerd, runc updates/fixes (thanks siris)
  • ZFS 2.2.0_rc4 with Linux 6.4 compatibility, with 2.2.0 final soon to follow.
  • zathura document viewer autogen (thanks to cuantar)
  • pgplot update (thanks to cuantar)
  • gocryptfs, jq, meilesearch, nix, lowdown, mdbook autogens (thanks to invakid404)
  • libxcb, libcpuid hotfixes (thanks to invakid404)
  • go-1.21.1 (thanks siris)
  • Inkscape 1.3 and updates to boost to allow this.
  • typeprof build failure (thanks borisp)
  • geany reworked ebuilds (thanks grouche)
  • firefox-117.0, thunderbird-115.1.1 (thanks borisp)
  • Updated libbson, mongo-c-driver, cri-tools (thanks geaaru)
  • Multiple python module fixes/maintenance (drobbins)
  • lightdm-mini-greeter autogen (thanks izder456)
  • ibus-skk and dependencies, remove ibus-pinyin and pyzy (thanks madman10k)
  • Add feature to allow PEP 517 python modules autogens to be determined automatically (drobbins)
  • Fixes of kit-fixups git 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.


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...