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:
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 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:
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
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):
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:
Stáhnul jsem a zkompiloval zdrojáky a na serveru spustil server:
(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:
(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í:
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
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
No comments:
Post a Comment