Tuesday, April 19, 2005

Cooker@official - Tlustý klient hautů

Občas mám doma pracovní notebook a hraju si na něm s linuxem. Asi nejvíc používám live distribuci Slax (upravená 4.2, pětka má bohužel mouchy). Teď se mi navíc povedlo rozchodit bootování ze sítě, a tak už nejsem omezený na live distra. Zkouším si novinky v Cookeru, zatímco na hlavním stroji brouzdá žena po netu v MDK 10.1 (a na harddisku notebooku nebyl změněn jediný bit).




Tlustý klient?

Tlustý klient bootuje ze serveru a data má na serveru uskladněná, ale výpočetní sílu používá svoji.
Narozdíl od tenkého klienta, který v podstatě jen zobrazuje to, co mu server posílá.
Jelikož oba stroje mají srovnatelný výkon (Athlon 1800, 512 RAM x Celeron 1700, 256 RAM), připadlo mi použití tenkého klienta jako plýtvání zdroji.




Jak na to?
Nejprve jsem zkoušel použít průvodce drakTermServ od Mandraku, ale ten předpokládá, že se nasdílí celý / serveru, kam se pomocí ClusterNFS dá i zapisovat. To se mi podařilo celkem bez problémů zprovoznit, ale jen do chvíle, kdy jsem chtěl i na klientovi zprovoznit 3D akceleraci grafiky a totálně se v tom zamotal (nVidia server x ATI klient). Navíc jsem chtěl vyzkoušet i jinou distribuci. Proto jsem drakTermServ spolu s ClusterNFS zavrhl a zkoušel to jinak.

Na opuštěný oddíl hda6 (který se od nějaké doby mountuje jako /mnt/gentoo ;-)) jsem nainstaloval Mandriva Cooker. V něm jsem nainstaloval drakTermServ a nechal jsem vytvořit obraz pro bootování ze sítě. V adresáři /var/lib/tftpboot se tedy vytvořily soubory boot-3c59x.2.6.11-6mdk.nbi a initrd-3c59x.2.6.11-6mdk.img. Ale nefungovaly - z několika důvodů.

Protože síťová karta v notebooku je od firmy 3COM a poněkud nekompatibilní, bylo potřeba upravit zaváděcí obraz utilitou imggen:


cd /var/lib/tftpboot/

mv boot-3c59x.2.6.11-6mdk.nbi boot-3c59x.2.6.11-6mdk.nbi.new

./imggen -a boot-3c59x.2.6.11-6mdk.nbi.new boot-3c59x.2.6.11-6mdk.nbi

rm -f boot-3c59x.2.6.11-6mdk.nbi.new

Další problém byl s initrd. Předně neobsahoval modul mii, na kterém je závislý modul 3c59x a potom předpokládá, že NFS server poskytuje adresář /. Určitě by bylo lepší upravit jen initrd, každopádně já jsem postupoval cestou poněkud jinou. Věděl jsem, že drakTermServ volá příkaz


mknbi-set -v -k /boot/vmlinuz-2.6.11-6mdk -r 3c59x

mknbi-set jsem našel v /usr/bin a zjistil, že je to ve skutečnosti skript, který zase v jednom místě volá další skript mkinitrd-net. A ten jsem upravil k obrazu svému - přidal modul mii:


# seems we've moved nfs into the kernel now

if [ -d "/lib/modules/$kernel_ver/kernel/fs/nfs" ]; then

modules="mii $modules sunrpc lockd nfs" # Always require nfs for nfs mount

fi

Potom jsem ještě zašel do /usr/lib/mkinitrd-net/initrd-skel/, kde se nachází vzorové soubory pro tvorbu initrd a změnil v souboru udhcpc-post natvrdo adresář pro mount NFS na /mnt/gentoo.
Teď jsem tedy znovu spustil příkaz



mknbi-set -v -k /boot/vmlinuz-2.6.11-6mdk -r 3c59x


a Cookera vypnul a nabootoval zpět do Official. Tam jsem překopíroval boot a initrd z /mnt/mdk/var/lib/tftpboot do /var/lib/tftpboot.

Od předchozího pokusu mi v systému zůstal nakonfigurovaný tftp, dhcp a NFS server, v jejichž konfigurácích stačilo udělat drobné změny, aby si odpovídaly verze kernelu a tak podobně.
Jako poslední jsem upravil soubor /etc/fstab u klienta (ve skutečnosti tedy /mnt/gentoo/etc/fstab):


192.168.1.1:/mnt/gentoo / nfs rsize=1024,wsize=1024,noac,nolock,intr 0 0

Teď už jen připojit notebook kabelem, v biosu upřednostnit boot ze sítě et voila!
Mandriva sice při detekci nového hardwaru chvilku přemýšlela, ale všechno si bez problému našla a za chvilku jsem byl v KDE.

Jediné, co mi ještě chybělo byl swap, protože 256 MB RAM opravdu není mnoho. Swapovat přes NFS je prý nebezpečná záležitost, takže jsem použil NBD (Network Block Device) od Pavla Machka.
Vytvořil jsem soubor do kterého bude klient swapovat:


dd if=/dev/zero of=ntbswapfile bs=1048576 count=512

su

mkswap ntbswapfile

Stáhnul jsem a zkompiloval zdrojáky a na serveru spustil server:


nbd-server 9000 /home/hajma/ntbswapfile

(zvláštní je, že dokumentace uvádí volbu -l soubor, kde v souboru je seznam IP, ze kterých lze přistupovat na server, ale při použití této volby program zdechne)
a na klientovi klienta:


modprobe nbd

nbd-client 192.168.1.1 9000 /dev/nbd0

(klient má ještě volbu -swap, která je vyloženě dělaná na swapování, ovšem vyžaduje úpravu jádra. S tím si budu hrát jindy, zatím se mi to nehryže)
A zapnul swapování:



swapon /dev/nbd0

Teď jenom nastavit, aby se síťovka odpojovala až po odpojení fs a nastavit přístup na web a je to.

Update: Stačilo z /etc/rc.d/rc0.d (potažmo rc6.d) vyhodit linky K..nfslock, K..netfs a K..network

Wednesday, April 6, 2005

deltarpm

Posledních pár dní jsem přemýšlel nad vytvářením diffů mezi jednotlivými rpm balíčky pro případ updatů a hrál jsem si s bdiff a bsdiff.
Najednou koukám, že v MDK Cookeru už to je.
Snad se to uchytí a místo 150MB updatů KDE budu stahovat třeba jenom 1/3...



Dobrá práce, MDK!


Monday, April 4, 2005

Spořka's not dead!

Přestěhovali jsme se, tak jsem zašel do spořky změnit si adresu...


Já: Dobrý den

Paní: Dobrý den, jak Vám mohu pomoci?

Já: No, ehm, přestěhoval jsem se, takže bych chtěl změnit adresu na posílání výpisů a tak ...

...předávám občanku a platební kartu jako identifikaci (takovej ten papírek s číslem účtu, co mi vždycky nacpou, zahazuju, nemám rád nabobtnalou dokladovku), diktuju novou adresu

Já: ehm, když jsem se stěhoval minule, tak mi pořád ještě chodily nějaký výpisy, teď mi je donesl člověk, co tam bydlí, asi to bude kvůli týhle kartě, kterou mám ještě od vás, můžete na to juknout?

Paní: Nojo, je tam ulice ..., tak to taky změníme?

Já: Nojo...

Já: No a eště prosímvás změňte tu adresu na zasílání pinů a tak...

Paní: Klik, klik

...(pár podpisů)...
Já: Jo, a je ještě nutný si nechat posílat ty výpisy? Je to docela mrhání peněz (mejch)...

Paní: No, prý někdy letos by to mohlo bejt zrušitelný, optejte se průběžně...

Já: Tak, jo, díky, naschle

Paní: nashledanou

Ale ten inetbanking maj fakt dobrej a že nemám IE mi taktně naznačej jenom na začátku a potom to není vůbec poznat ;-)