Souborový systém v userspace
Pokud jste chtěli vytvořit nový souborový systém, musel být jeho kód součástí jádra (a běžet v tzv. kernelspace) a tedy jeho případné chyby by kromě bezpečnosti dat ohrožovaly bezpečnost a stabilitu celého zbytku systému. Navíc odladit jakýkoliv kód v jádře není zrovna jednoduché. Proto vytvořil Miklos Szeredi záplatu pro projekt FUSE (fuse.sourceforge.net), souborový systém v userspace, která exportuje funkcionalitu souborových systémů z prostředí jádra do prostředí obyčejných uživatelských procesů a umožňuje tak implementovat souborový systém jako ,,obyčejný'' uživatelský proces.
Původně byl FUSE vytvořen pro velice slibný (virtuální) souborový systém AVFS (www.inf.bme.hu/~mszeredi/avfs), ale dnes jej používá několik dalších nadějných systémů, např. FunFS nebo EncFS.
Nové "kruhové" roury
Jednou z novinek v 2.6.11, je nová implementace rour (pipes), které běžně používá snad každý z nás. Po dlouhou dobu je pro výměnu dat mezi zapisovacím a čtecím koncem roury používán buffer o velikosti pouhé jedné stránky paměti (4 kB na architektuře i386). Pokud zapisovací proces zapíše víc, bude blokován, dokud čtecí proces nepřečte tolik, aby se do bufferu vlezl zbytek.
Nová Linusova implementace používá pro buffer více stránek (ve výchozím nastavení 16) ve formě kruhového bufferu a díky tomu by měla přinést zlepšení průchodnosti dat rourou (procesy budou méně blokovány), ve výsledku tedy znatelné zrychlení přenosu. Použití této "kruhové" roury bude programátorům umožněno novým systémovým voláním splice. Uživatelé používající rouru klasicky skrze interpret příkazů (např. pro bash pomocí metaznaku |) si budou muset na nové roury počkat v nové verzi tohoto interpretu.
Linus má ale s mechanizmem kruhového bufferu ještě větší plány, nejenom pro roury, ale obecně pro přenos dat přes jádro. Například více čtenářů a zapisovačů pomocí počítání referencí (bez kopírování dat), něco jako nástroj tee, ale přímo v jádře. Nebo roury, které implementují přímý přístup do paměti nějakého zařízení. Máme se tedy na co těšit.
Čtyřúrovňové stránkování paměti
Jednou z prvních věcí přidaných do jádra po verzi 2.6.10 byla záplata Nicka Piggina implementující čtyřúrovňové stránkování paměti pomocí tabulek stránek. Vedle tabulky první úrovně PGD, čtvrté úrovně PTE (jediných u 32-bitových architektur, např. i386) a třetí úrovně PMD (Intel PAE mód u procesorů novějších Pentia Pro) tak přibyla tabulka druhé úrovně PUD. Pokud netušíte, o čem je řeč, podívejte se např. na lwn.net/Articles/106177 a lwn.net/Articles/116954.
Pro 32-bitové architektury omezené na 4 GB fyzické i virtuální paměti (v PAE módu 64 GB fyzické) to nemá žádný význam, ale u 64-bitových architektur (např. x86-64) to výrazně zvyšuje velikost virtuální paměti každého procesu z 512 GB na 128 TB, což by mohlo zase na nějakou dobu každému stačit.
Přijetí této záplaty ale také něco vypovídá o aktuálním vývojovém modelu jádra. Před řadou 2.6 by taková fundamentální změna vůbec nemohla být aplikována do jader "stabilní" řady, muselo by se počkat na další řadu. Nový způsob vývoje jádra tedy zcela jistě přináší nové vlastnosti k uživatelům mnohem rychleji než předchozí, a bez potřeby zpětných úprav distributorů. Otázka do diskuze zní, je to pro uživatele dobré nebo špatné?
Knihy o linuxovém jádře
Začátkem roku vyšly nové edice dobře známých a výborných knih o linuxovém jádře, "Linux Device Drivers" a "Linux Kernel Development". Nové edice obou těchto knih popisují jádra řady 2.6, konkrétně jsou aktualizovány k verzi 2.6.10.
Linux Device Drivers, 3rd Edition, od autorů J. Corbeta, A. Rubiniho a G. Kroah-Hartmana podrobně a v příkladech vysvětluje vytváření ovladačů snad všech typů zařízení, která je možné pod Linuxem provozovat. Kniha je volně ke stažení na lwn.net/Kernel/LDD3/ ve formátu PDF.
Linux Kernel Development, 2nd Edition, od Roberta Lovea je praktickým a nenásilným pohledem na návrh a implementaci nové řady jádra, jednoduše řečeno velice přehledně popisuje jak to všechno funguje. Domovská stránka knihy je na rlove.org/kernel_book/.
Yaird
Podobně jako hotplug-ng má být nástupcem balíku hotplug, Yaird (Yet Another mkInitRD) Erika van Konijnenburga má ambice nahradit mkinitrd. Zatímco mkinitrd je shellový skript, který se spoléhá na nahrané moduly jádra a konfigurační soubory modulů, Yaird je napsán v Perlu a plně využívá algoritmy hotplugu a virtuální souborový systém sysfs (a vyžaduje tak jádro řady 2.6).
mkinitrd a Yaird jsou nástroje k vytvoření tzv. initrd, initial ramdisku. Tento ramdisk obsahuje malý kořenový souborový systém se všemi potřebnými moduly ovladačů pro připojení skutečného kořenového souborového systému. Jádro si při bootování připojí tento initrd a skripty na něm potom připojí skutečný kořenový souborový systém.
Tento mechanizmus bootování hojně využívají distribuční jádra, protože umožňuje vytvořit malé jádro jen s nezbytnými moduly, které bootuje na mnoha HW konfiguracích, přičemž všechny ostatní moduly se nahrají až v závisloti na přítomném HW.
Yaird je zatím vhodný jen pro testování, dostupný na www.xs4all.nl/~ekonijn/yaird/ ve verzi 0.0.4.