Další volbou v našem testu distribucí na dual-opteron server byl Redhat
Enterprise Linux. Protože je ale jeho cena vcelku vysoká (obsahuje i podporu),
rozhodli jsme se pro jednu z volných distribucí odvozených z RHEL. Vybírali
jsme mezi Tao Linuxem, Whitebox Linuxem a CentOS. Nakonec jsme zvolili Tao.
Tao Linux
Tao Linux je volně dostupná neoficiální verze RedHat Enterprise Linuxu. Je
vytvořena rekompilací volně dostupných zdrojových balíčků RHEL a následného
nahrazení obsahu, který spadá pod copyrightovou ochranu (jde převážně o loga
RedHatu). Dále obsahuje navíc správce balíků yum
(obdoba
debianí aplikace apt, náhrada za up2date) a vlastní verze instalátoru.
Příprava
Naším cílem bylo jednak nainstalovat funkční minimální systém na již popsaný
diskový layout (více např. zde). S tím bude
trochu problém, protože Tao Linux (potažmo RHEL) v sobě nemá zakomponovanou
podporu ani pro xfs
, ani pro lvm2
. Dalším cílem je
vytvořit funkční build-environment pro následný vlastní rebuild RHEL, případně
dalších balíků (backporty z Fedory, porty z jiných distribucí atd.)
Instalace
Tao Linux je k dispozici pro architektury i386, amd64, ia64 a s390. Můžete
ho stáhnout jako jedno DVD nebo jako set 3 binárních CD a 3 CD se zdrojovými
balíky. Nejprve jsme stáhli instalační DVD z mirroru Tao Linuxu.
Před instalací jsme v BIOS
u vypnuli podporu pro SCSI
disky, kde se stále nacházel funkční Mandrakelinux 10.0 Official. Pak jsme
spustili instalaci z DVD. Můžete vybrat mezi grafickým a textovým režimem
instalace. Po zkušenostech z instalace Mandrakelinuxu jsme měli připravenou
myš, takže jsme zvolili grafický režim.
Jelikož jsme chtěli pokud možno co největší build-environment a zároveň co
nejmenší vlastní systém, rozhodli jsme se provést instalaci nadvakrát. Nejprve
jsme nainstalovali kompletní systém na zvláštní oddíl na IDE disku, následně
jsme na jiný oddíl na IDE disku nainstalovali minimální instalaci. Vzhledem k
faktu, že Tao Linux nemá podporu pro xfs
ani lvm2
,
nainstalovali jsme obě instalace na normální ext2
oddíly s tím,
že je po přidání podpory pro xfs
a lvm2
přesuneme na
konečné destinace.
Bootování
V Tao Linuxu je standardním bootovacím nástrojem GRUB
. Po
nainstalování GRUB
u na začátek oddílu s Tao Linuxem a následným
bootem ale došlo k chybě - GRUB
se zasekl a nenašli jsme způsob,
jak se s touto chybou vypořádat. Rozhodli jsme se tedy, že bootování bude
obstarávat lilo
. Abychom systém vůbec nabootovali, zapnuli jsme v
BIOS
u opět podporu SCSI
disků a nabootovali do
Mandrakelinuxu. Přidali jsme pak do lila
záznam o kernelu Tao
Linuxu a rebootovali. Lilo
nezaznamenalo žádné problémy a úspěšně
jsme nabootovali Tao Linux. Takovéto řešení ale není dvakrát flexibilní -
kvůli změně kernelu nejprve nabootovat do Mandrakelinuxu, pak teprve do cílového
systému, nemluvě o potřebě mít nainstalován další systém. Rozhodli jsme se
tedy lilo
portovat pro Tao Linux. Naneštěstí lilo
není obsaženo ani v RHEL, ani ve Fedora Core 2. Pro funkční lilo
ale potřebujete jenom funkční binárku a konfigurační soubor
/etc/lilo.conf
. Rozhodli jsme se tedy dodat staticky
zkompilovanou binárku určenou pro i386, kterou jsme zkompilovali na jiném i386
serveru. Ta fungovala bez problémů, nainstalovali jsme tedy lilo
na začátek oddílu s Tao Linuxem. Lilo není portováno a nelze přímočaře zkompilovat
nativně pro amd64 a v amd64 verzi Tao Linuxu (resp. RHEL) zase nejsou x86 knihovny
(tzv. pure64 environment), proto byla nutná statická binárka.
Pomocí utility ntsysv
jsme povypínali veškeré (pro nás) zbytečné služby,
jako autodetekci hardware, cups, atd...
Lokální build-environment
Na speciální oddíl jsme nainstalovali maximální instalaci Tao Linuxu, která má
sloužit jako lokální build-environment. Zatím ale existuje jako samostatná
spustitelná instalace. Připojili jsme tedy tento oddíl do minimálního systému
do /misc/chroot/tao
a smazali všechny zbytečné věci. Ponechali jsme
jenom tyto adresáře: /bin
, /dev
, /etc
,
/home
, /lib
, /proc
, /root
,
/sbin
, /tmp
, /usr
a /var
.
Přístup do adresáře /misc/chroot
je povolen pouze uživateli build
.
Ten existuje jak v normálním systému, tak v chrootu, kde je určen ke kompilaci
zdrojových balíčků. Pro vstup do chrootu pak root použije
bash# env -i TERM=$TERM /usr/sbin/chroot /misc/chroot/tao /bin/su -
Případně
bash# env -i TERM=$TERM /usr/sbin/chroot /misc/chroot/tao /bin/su - build
Updaty a zdroje balíčků
Standardně se v RHEL řeší otázka updatování software přes
up2date
. Tato služba ale je součástí podpory, takže ve free verzi
RHEL, kterou Tao Linux je, není k dispozici. Toho si ale jsou jeho tvůrci
vědomi a oproti RHEL přidali nástroj yum
, celým názvem Yellow
Dog Updater, Modified. Jedná se o podobný frontend pro rpm
,
jako urpmi
známé z Mandrakelinuxu, nebo apt
používané v Debianu, ovšem pro deb
balíčky. Provádí indexaci
balíčků a ukládá jejich metadata (např. informace o závislostech) do
zvláštních souborů. Klienti pak tyto soubory stahují a na jejich základě
dochází k rozhodnutí, jestli je třeba stáhnout novou verzi balíčku, jaké další
balíčky se musí kvůli závislostem doinstalovat atd... Yum
dokáže
získávat tyto metadata (stejně jako samotné balíčky) přes protokoly
http
, ftp
a z lokálního filesystému. Výchozí
konfiguraci jsme upravili jenom minimálně - místo předvoleného serveru jsme
zvolili co nejbližší mirror (http://wftp.tu-chemnitz.de/pub/linux/tao/).
Pak jsme již bez problémů updatovali systém voláním
bash# yum check-update
bash# yum update
Build balíčků
Vzhledem k faktu, že RHEL (a potažmo Tao linux) je enterprise distribuce, je
výběr software zúžený (např. Midnight Commander zde nenajdete). Naštěstí je
architektura distribuce do velké míry kompatibilní s Fedora Core 2 (RHEL totiž
vychází z volně dostupných distribucí, konkrétně RHEL3 je založen na RedHatu 9),
takže množství chybějících balíků lze portovat z FC2. Při kompilaci zdrojových balíčků
ale v různých případech (i při rekompilaci původních balíčků - tedy z Tao Linuxu nebo
z RHEL) docházelo k chybám. Jejich přesný zdroj nám zůstal neznámý, ale po přepnutí
locales
z utf8 na iso-8859-2 se balíčky kompilovaly bez potíží. Je vidět,
že podpora pouze utf8 ještě není zcela hotová a odladěná. Dalším nešvarem při kompilaci
bylo, že zkompilované binárky nebyly stripované. Odpovědný skript se musel ručně editovat
a upravit.
Kompilace kernelu
Rekompilace kernelu byla pro zvolený diskový layout nutná. Dále jsme se chtěli
zbavit nepotřebných ovladačů a initrd, zakompilovat MD driver a device mapper
(obsluhuje lvm2
) staticky - hlavně pro bezchybnou autodetekci
RAID
ových polí kernelem při bootu. Kernel se zkompiloval v
pořádku a nenastaly žádné komplikace.
Přidání podpory pro xfs
a lvm2
Jednou z nevýhod RHEL je, že nepodporuje xfs
. K jeho podpoře je
třeba mít zakomponovaný ovladač v jádře a dále user-space utility pro
vytváření a správu xfs
(xfsprogs
), případně pro
zálohování (xfsdump
). Xfsprogs
se naštěstí dají
sehnat velmi jednoduše - z Fedora Core 2. Po stažení a kompilaci v
build-environmentu se balíček bez problémů nainstaloval. Horší to ale bylo s
xfsdump
. Zdrojový balíček určený přímo pro AMD64 jsme nikde
nenašli (vyjma několika neoficiálních buildů, které ale požadovaly množství
závislostí, které v RHEL nejsou). Nakonec jsme tedy sáhli k oficiálnímu
release od SGI. Při pokusu o jeho kompilaci ale došlo k chybám typu
x86_64 not supported
a podobně. Po zevrubném zkoumání jsme přišli
na to, že balíček počítal s tím, že bude kompilován na i386, a byly zde již
nacachované hodnoty specifické právě pro i386. Po úpravě zdrojáků a odstranění
těchto hodnot již proběhla kompilace v pořádku.
Nyní jsme mohli smazat Mandrakelinux, který byl na SCSI
discích,
nahradit ho Tao Linuxem, build-environment také přesunout na oddíl (na
IDE
disku) s xfs
a /var
s
/home
na mirrorované lvm
oddíly (podrobnosti zde).
Boot přes lilo
z RAID-1, autodetekce RAID svazků a lvm2 kernelem i
všechny ostatní aspekty bootu proběhly správně.
Software v distribuci
Testovali jsme hlavně následující software:
- ssh server openssh 3.6.1p2-18
- apache http server httpd 2.0.46-32
- php php 4.3.2-14
- sql server postgresql 7.3-3
Apache jsme testovali na několika virtuálních serverech se statickými i
dynamicky generovanými stránkami pomocí převážně php
, dále
mod_perl
i cgi
skriptů. Pak jsme ho nasadili i do
ostrého provozu - chvíli na něm běžel mirror distrowatch.com. Během provozu se
nevyskytovaly žádné problémy.
Následně jsme testovali postgresql
. Nejdříve jsme prověřili
základní funkčnost, pak jsme postgresql
použili při generování
dynamických stránek pomocí aplikace pro rezervace ubytování využívanou
komerčním portálem www.motylek.com
.
Z ostatního důležitého software zde můžu jmenovat např.:
- kernel 2.4.21-15
- glibc 2.3.2-95
- gcc 3.2.3-42
- mysql 3.23.58-2
Software mimo distribuci
Jak jsem již zmínil, Redhat Enterprise Linux (a tedy i Tao Linux) není co do
množství softwaru zrovna nejrozsáhlejší distribuce. Často se tedy stává, že je
potřeba dodat software, který se v ní nevyskytuje. Zde plní svou funkci Fedora
Core 2, ze které RHEL také částečně vychází. Většina zdrojových balíčků z FC2
se na Tao Linuxu bez problémů zkompilují. Navíc ve FC fungují dobře
bezpečnostní updaty, takže pokud včas zkompilujete nové verze (např. po
oznámení v security konferenci), je i bezpečnost vyřešena.
Další zdroje software jsou podobné jako u ostatních distribucí. Existují různé
neoficiální zdroje (zde se ale často stává, že balíček není připraven pro
kompilaci na AMD64 a nastávají podobné problémy, jako s
xfsdump
em), člověk může zkusit zkompilovat balíčky z jiných
distribucí a pokud ani zde neuspěje, může zkompilovat a použít software přímo
z mainstreamu. Některý software jinak v dnešní době stále neseženete.
K tomuto software patří např. Java. Po zkušenostech s Mandrakelinuxem jsme se
rozhodli pro 32-bitovou, ale na druhou stranu testovanou a funkční verzi Javy.
Konkrétně jsme použili kompilát od SUNu, J2SE verze 1.4.2.
Kompilace OpenOffice.org
Vedoucímu projektu lokalizace OpenOffice.org se rozbil jeho server pro
kompilování OO.o na platformu AMD64. Po oboustranné dohodě jsme se rozhodli mu
poskytnout náš server (viz zde) pro vývoj na této
platformě. Po doinstalování potřebných devel balíků (kompilace probíhala v
normálním systému, ne v build-environmentu) bylo vše připraveno a několik týdnů
Tao Linux zuřivě kompiloval moduly OO.o do nativních amd64 binárek.
Závěr
S distribucí jsme byli po funkční stránce spokojeni. Jedná se o poměrně
konzervativní distribuci. Mezi plusy rozhodně patří velmi svědomitý vývoj a
intenzivní testování, které je pro enterprise distribuce klíčové. Dále je tato
distribuce velmi dlouho podporována - 7 let, tedy od data uvolnění v říjnu
2003 až do října 2010. Přestože u nás zatím není RHEL moc rozšířený, protože
uživatelé non-enterprise RedHatu často přecházejí na Fedoru a na rozdíl od USA
zde mají poměrně silné pozice ostatní distributoři (hlavně Mandrake a SUSE),
plní roli průmyslového standardu, je tedy podporovaná ostatními výrobci
linuxového software, jako např. Oracle.