Je květen, nejkrutější měsíc ze všech. Prší, sobota řádí jak divá a na večer se něco chystá. Každopádně jsem si mezi nekonečnými nesmyslnými projekty konečně našel trochu času i na to, co mě vážně baví, a rozhodl se pořádně se podívat na zub dlouho odkládanému a jen v hlavě připravovanému praktickému testu. Vtipnou až ironickou shodou spíše nešťastných náhod to zrovna vychází i tak, že je to teprve pár dní (v podstatě přesně týden), co vyšel letos mnou tolik očekávaný Debian 7.0 Wheezy.
Nějaké to vyprávění o GNU/kFreeBSD tady už slibuji dost dlouho, snad někdy od podzimu 2011, kdy jsme v budníku dávali krom nového serveru do pořádku celou dinosauří farmu. A právě někdy v té době se GNU/kFreeBSD začalo dostávat trochu do popředí a strhávat na sebe pozornost. Obecně vzato je to projekt Debianu, který namísto tradičního linuxového jádra používá jádro z FreeBSD a snaží se tak kombinovat všechny výhody debianí distribuce právě se sílou FreeBSD. A na rozdíl od projektu GNU/Hurd se to celkem, zdá se, i daří. Namísto složitého portování jednotlivých balíčků totiž dosahují funkčnosti fikaným naportováním glibc na systémová volání BSD jádra, takže dochází jen k minimu konfliktů a programy tam mohou fungovat jako na jakémkoliv jiném systému založeném na glibc. A přestože je to už nějaký pátek, co je Debian s tímto jádrem tlačen kupředu, Wheezy je prakticky první vydání, které je stabilní (pro úplně původní 6.0.0 Squeeze GNU/kFreeBSD jako stable k dispozici nebylo a objevuje se tam až někdy od 6.0.5 nebo tak).
Z výše popsaného způsobu portování je hned jasné, že tento hybridní systém rozhodně není všelékem, protože si s sebou kvůli GNU táhne spoustu GPL rakoviny. Přesto ovšem díky svému čistému jádru umožňuje spoustu prima věcí, například BSD jaily nebo nativní používání ZFS, o čemž se v současné době může linuxovým komunistům pořád jen zdát.
A právě pokus s ZFS byl tím prvním, co jsem prováděl na obyčejném nepoužívaném x86_64 písíčku, na která se zaměřuje hlavně DragonFlyBSD. Je známo, že ZFS potřebuje ohromné množství operační paměti a vůbec ještě nejlepší je, pokud jsou paměťové moduly ECC. To samozřejmě běžné stolní počítače nemají, tak jsem byl velmi zvědavý, jaký potenciál by mohl mít čtyřjádrový stroj s 4 GB DDR2 paměti. Naneštěstí jsem neměl k dispozici rovnoměrně velké disky, ale všechny byly 7200otáčkové SATA2. Při vytvoření úplně nejběžnějšího pole (ve smyslu RAID0) dosahovaly skutečné přenosové rychlosti čtení i zápisu 8GB souboru přibližně 81 MB/s, v RAID-Z byl zápis 76 MB/s a čtení 73 MB/s, v degradovaném stavu velmi slušných 74 MB/s pro zápis a 72 MB/s pro čtení. Následné resilverování letělo rychlostí 139 MB/s a bylo prakticky hned hotové. Všechny tyto pokusy si ve svém průběhu ukousnuly přibližně 3.5 GB operační paměti. Při troše odlaďování by se jistě dalo dosáhnout ještě lepších výsledků.
No a právě při pokusu o odlaďování to začalo být zajímavé. Jak se dá dočíst na různých fórech a v různých článcích, které se tímto zabývaly, je pro uživatele velmi matoucí, jak k prostředí GNU/kFreeBSD vlastně přistupovat - zda se chová více jako FreeBSD, nebo jako běžný GNU/Linux. A protože FreeBSD jádro na rozdíl od toho linuxového není až tak úplně samostatné, jsou zde k dispozici příkazy z obou prostředí - a k velké smůle většinou nefunguje správně ani jeden z nich. Jako největší zklamání bych zatím viděl to, že zde neexistuje žádný /boot/loader.conf, přes který by šlo jádro řídit během bootu. Dá se někde dočíst, že se to dá částečně obejít zápisem takovýchto informací do konfiguračních souborů GRUBu, což je ovšem minimálně trochu zvrhlé a strašně rychle se v tom dá ztratit přehled. Ta jednodušší nastavení lze ovšem zapsat jako sysctl příkazy v debianích rc-skriptech.
Další záchytný bod, který s tím tak trochu souvisí, je samotné dodávané jádro. Je nějakým způsobem optimalizované a sestavené pro běh v tomto hybridním prostředí a moc se s ním už čarovat nedá. Tak například taková binární kompatibilita pro linuxové aplikace - přestože se můžete ptát, k čemu by to mohlo být dobré, když si člověk už rovnou může nainstalovat GNU/Linux - linuxová kompatibilita je už přímo zadrátovaná v jádře, přesto je problém linuxový program spustit, a to nejen že chybí utilita brandelf (opět se s tím dá vypořádat přes sysctl), ale očividně to celé stojí a padá právě na programy neočekávaném portu glibc a především na debianí multiarch strategii (možnost instalovat balíčky různých architektur - typicky běh 32bitových aplikací na 64bitovém systému). Druhým příkladem by mohl být pokus rozjet USB wifi, s nezdarem - jádro si stěžovalo na nemožnost nahrát firmware a nahrávač firmware byl samozřejmě vestavěný přímo v jádře. Kompilace vlastního jádra, která by mohla minimálně druhý jmenovaný zážitek napravit, je tu enormě náročná - opět kvůli tomu, že není snadné určit, zda se systém chová jako obecný Debian, nebo jako jakékoliv FreeBSD.
Je velká škoda, že tento projekt nemá zrovna nejlepší podporu hardwaru, která je v Debianu dělaná na míru Linuxu a BSD tu nemá moc šanci. Přesto Debianu GNU/kFreeBSD velice fandím, protože se mi líbí, že pracuje daleko rychleji než Linux, v několika ohledech také daleko víc vydrží a především přináší neuvěřitelnou jednoduchost v používání - tím ovšem nemyslím jen samotný balíčkovací systém APT, ale propracovaná nastavení a automatickou konfiguraci, díky které je možné rozjet například i složitější webhostingový server během deseti minut (bez nutnosti manuální editace konfiguračních souborů, jako je tomu často u klasických BSD systémů).
Ovšem největší potenciál by tento hybridní systém mohl mít v malých podomácku sestavených NAS tvořených maličkou ITX deskou s nějakými 16 GB RAM a velkým diskovým polem. Ta téměř automatická konfigurace Samby nebo AFP by z celého procesu opět udělala jen několikaminutovou záležitost.
Oproti očekávání se stabilní vydání od verzí zkoušených kolem podzimu 2011 zase tolik nezměnilo, ale musím říct, že navzdory tomu, jak to na první pohled vypadá, se jedná o skutečně použitelný systém a nezbývá než doufat, že se bude nadále jen zlepšovat a všechny jeho zbylé mouchy budou nějakým kouzelným virtualizačním kouskem vychytány.