Portál AbcLinuxu, 21. května 2025 13:56
Zdravim
Po nenalezeni zadneho obecneho systemu pro sprovozneni tlustych klientu jsem se vrhl do tvorby systemu vlastniho.
Ve zkratce: Tlusty klient je vykonny bezdiskovy pocitac, bootuje ze site a / pripojuje pres sit. Veskere programy bezi lokalne. Zajímavé? Čtěte dále...
V tuhle chvili jsem ve stavu kdy mam jadro, to nabootuje, pripoji rootfs, nabehnou vsechny sluzby, grafika, vsechno funguje. Konfiguraci mam resenou lehce podobne jako LTSP. Jako jedna z prvnich sluizeb (po siti) si skript zjisti IP adresu kompu a podle toho spusti skript. Skriptu je tamnekolik: all - spusti se vsude, 192.168.1.10 - pro konkretni pocitac, prozatim jen podle IP adresy a nakonec default v pripade nenalezeni konkretni konfigurace. Potrebuju doresit 2 problemy.
1) Konfigurace X serveru:
S tim, ze nemuzu mit jen tak nainstalovane nvidia i ati binarni drivery jsem se prozatim smiril. Planuju to provozat na mixu intel, starsich ati (opensource) a starsich nvidia grafikach. Pochopitelne vsemozny monitory. No chci aby to bylo univerzalni. Cili otazka zni, je mozne napsat xorg.conf tak, aby jel vsude s akceleraci? Proste univerzalni pro vsechny? Nebo jestli existuje nejakej autodetekcni program? Dodnes si pisu konfigurak sam na miru. Nebo druhe reseni, nejakym zpusobem vzdy pri bootu prepisovat /etc/X11/xorg.conf podle zrovna bootujiciho kompu. Kdyz jich bude bootovat naraz vicero, tak se to muze pohadat. Asi by i slo spustit X a vnutit mu jiny konfig nez /etc/X11/xorg.conf, ale to je na muj vkus uz moc velky zasah do spoustecich skriptu a to se mi nelibi. Nebo to nejak resit pomoci symlinku. Nejaky napad?
2) Sdílení adresáře /var:
Jak známo, /var nelze sdílet mezi různými instancemi systému a musí být r/w. V tuhle chvili jsem na něm nedělal žádnou změnu, čili je r/w a sdílenej všemi klienty. To má za následek, že klient sice nastartuje bez zjevného problému, ale při regulérním shutdownu se snaží mazat pidy, o kterých si myslí že jsou jeho a přitom jsou sdílený. Napadlo mě vytvořit nějaká skelet /var a ten při přihášení nového klienta kopírovat na /var-192.168.1.2 a klient by si to potom bindoval na /var. Potíž je, že některé adresáře uvnitř chci mít sdílené, např db balíčkovacího systému. Standardní /var má i několik set mega. Také je možnost jen vyjmenovat adresáře, které nechci sdílet a skript by už používal skelety pro každý zvlášť a bindoval taky každý zvlášť. Nějaký nápad?
Zatím je to řešené pro Arch Linux, ale není větší probém to překopat na jakoukoliv distribuci, nechci aby to bylo moc distribučně závislé. Ve výsledku to bude spíš návod a sada jednoůčelových skriptů než nějakej ucelenej balík.
Připomínky vítány.
Zdeněk
Tiskni
Sdílej:
Sdílení adresáře /var:
/var
na RAMdisku a odtud symlinky, kam je potřeba (třeba k balíkům).
Také je možnost jen vyjmenovat adresáře, které nechci sdílet a skript by už používal skelety pro každý zvlášť a bindoval taky každý zvlášť. Nějaký nápad?Osobně mi přijde lepší vyjmenovat adresáře, které mají být sdílené, s tím, že po zkopírování skeletonu
/var
se jednotlivé sdílené podadresáře připojí na to správné místo.
Něco jako
for DIR in cache/apt/ cache/debconf/; do mkdir -p /var/$DIR mount server/$DIR /var/$DIR done
A nakonec databaze balicku: Pokud touzis po tom, ze z libovolneho klienta nainstalujes balicek a ostatni klienti jej budou mit okamzite k dispozici, tak na to zapomen. Nevim, jak to funguje na Archu, ale mnoho balickovacich systemu ukryva do balicku postinstalacni skripty ci prepisuje konfiguraky.To by ale nemuselo vadit, pokud ten disk na síti bude pro roota (který instaluje ty balíky) r/w a všechny stroje budou používat stejný adresář
/etc
. Vzhledem k tomu, že ty stroje nemají mít disk, nemůže postinstalační skript udělat nic, co by se neprojevilo na ostatních strojích.
Přepisování konfiguráků ... nevím, jak jinde, ale v Debianu se instalátor ptá, jestli přepsat nebo ponechat. Navíc dává možnost srovnat obsah původního a nového, což by se dalo použít, pokud by určitý konfigurák měl více verzí pro různé stroje.
Section "ServerLayout" Identifier "X.org Configured" Screen "Screen-ati" Screen "Screen-nvidia" Screen "Screen-i810" Screen "Screen-vesa" InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSectionSpoleha se to na fakt, ze pritomna je jen jedna grafika a tudiz inicializace vsech ostatnich screenu zkonci chybou. Na ATI 7000 to funguje, ale na i910 to nahodi 640x480 a basta fidly. Porad se nemuzu rozhodnout zda jit cestou naproste autodetekce (at uz formou super-multi.xorg.conf nebo nejakyho programu co vyplivne konfig nebo skriptu co zjisti typ graficky a podle toho pouzije pripraveny konfig) nebo druha moznost mit pripraveny konfigy pro kazdej komp zvlast? Nebo to nejak zkombinovat? Rad bych aby to bylo prijatelne reseni pro vsechny a ne jen pro me,protoze bych to logicky smeroval jen na pocitace, kde to pobezi, coz jsou cca 4 mozne kombinace vga-monitor. Zdenek
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.