Diskless X Server: "how to" vodič

Jerry Kendall

    
  

28. decembar 1996.

Uz pomoć nekih prijatelja sa FreeBSD-hackers liste, napravio sam diskless X terminal. Pravljenje X terminala je prvo zahtevalo da se napravi sistem bez diska sa minimalnim skupom alata koji se mountuje preko NFSa. Isti postupak je korišćen da se naprave 2 odvojena diskless sistema. Prvi je altair.kcis.com, X terminal bez diska koji radi na mom starom 386DX-40 računaru. Ima hard disk od 340 megabajta, ali nisam želeo da ga menjam. Tako da se mašina bootuje sa antares.kcis.com mašine, preko Etherneta. Drugi sistem je 486DX2-66. Napravio sam diskless FreeBSD instalaciju (kompletnu) koja ne koristi lokalni disk. U ovom slučaju server je Sun 670MP pod SunOSom 4.1.3. Ista konfiguracija je korišćena za obe mašine.

Siguran sam da ima dosta stvari koje treba dodati ovom dokumentu. Molim vas, pošaljite mi sve komentare.


1. Kreiranje boot diskete (na diskless sistemu)

Pošto mrežni boot loaderi neće da rade sa nekim TSR MS-DOS programima, najbolje je napraviti posebnu boot disketu, ili, ako možete, napraviti MS-DOS meni koji će (pomoću config.sys/autoexec.bat datoteka) upitati koju konfiguraciju želimo da učitamo pri startu sistema. Ovo potonje je metod koji ja koristim i radi sjajno. Evo mog MS-DOS (6.x) menija.

Пример 1. config.sys

[menu]
menuitem=normal, normal
menuitem=unix, unix
[normal]
....
normal config.sys stuff
...
[unix]

Пример 2. autoexec.bat

@ECHO OFF
goto %config%

:normal
...
normal autoexec.bat stuff
...
goto end

:unix
cd \netboot
nb8390.com

:end

2. Instalacija programa za boot preko mreže (na serveru)

Prevedite 'net-boot' programe koji se nalaze u /usr/src/sys/i386/boot/netboot. Trebalo bi da pročitate komentare na početku Makefile fajla. Podesite po potrebi. Napravite rezervnu kopiju originala za svaki slučaj. Kad se prevođenje završi, trebalo bi da imate 2 MS-DOS izvršna fajla, nb8390.com i nb3c509.com. Jedan od ova dva programa je ono što ćete pokrenuti na diskless mašini. Služiće da učita kernel sa boot servera. Sada stavite oba programa na MS-DOS boot disketu koju ste ranije napravili.


3. Koji program pokrenuti? (na diskless mašini)

Ako znate koji set čipova vaša Ethernet kartica koristi, ovaj korak je lak. Ako imate NS8390 set čipova, ili neki baziran na NS8390 čipu, uzmite nb8390.com. Ako imate karticu baziranu na 3Com 509 čipu, uzmite nb3C509.com boot program. Ako niste sigurni kakvu karticu imate, pokušajte sa jednim, ako prijavi “No adapter found”, pokušajte sa onim drugim. Ako ovo ne upali, moraćete sami da se snađete.


4. Podizanje sistema preko mreže

Podignite diskless sistem bez config.sys/autoexec.bat fajlova. Pokušajte da pokrenete boot program za vašu mrežnu karticu.

Moja mrežna kartica radi u WD8013 16bitnom modu, pa ja koristim nb8390.com.

C:> cd \netboot
C:> nb8390

Boot from Network (Y/N) ?  Y

BOOTP/TFTP/NFS bootstrap loader     ESC for menu

Searching for adapter..
WD8013EBT base 0x0300, memory 0x000D8000, addr 00:40:01:43:26:66

Searching for server...

U ovom trenutku, moj diskless sistem pokušava da nađe mašinu koja će služiti kao boot server. Prepišite addr liniju u gornjem listingu, trebaće vam taj broj kasnije. Resetujte diskless mašinu i podesite config.sys i autoexec.bat da rade ovaj posao automatski. Na primer pomoću menija. Ako koristite nb3c509.com umesto nb8390.com, listing će biti isti kao gornji. Ako ste dobili poruku “No adapter found” kod Searching for adapter... poruke, proverite da li ste dobro podesili opcije u Makefile-u.


5. Omogućite sistemima da se podignu preko mreže (na serveru)

Proverite da li su tftp i bootps podešeni u /etc/inetd.conf fajlu. Evo mog podešavanja:

tftp   dgram   udp wait    nobody  /usr/libexec/tftpd  tftpd /tftpboot
#
# Additions by who ever you are
bootps  dgram  udp  wait  root  /usr/libexec/bootpd bootpd /etc/bootptab

Ako promenite nešto u /etc/inetd.conf fajlu, pošaljite HUP signal inetd demonu. Da bi ovo učinili, nađite ID procesa inetd sa ps -ax | grep inetd | grep -v grep. Zatim mu pošaljite HUP signal sa kill -HUP <pid>. Ovo će naterati inetd da ponovo pročita svoj konfiguracioni fajl.

Da li ste zabeležili addr liniju iz ispisa boot loadera na mašini bez diska? Sada će vam biti potrebna.

Dodajte sledeće u /etc/bootptab (možda ćete morati da kreirate fajl).

altair:\
        :ht=ether:\
        :ha=004001432666:\
        :sm=255.255.255.0:\
        :hn:\
        :ds=199.246.76.1:\
        :ip=199.246.76.2:\
        :gw=199.246.76.1:\
        :vm=rfc1048:

Evo značenja ovih redova:

altair ime sistema bez diska, bez imena domena.
ht=ether tip hardvera, u ovom slučaju 'ethernet'.
ha=004001432666 hardverska adresa (broj koji ste zabeležili).
sm=255.255.255.0 subnet maska.
hn govori serveru da treba klijentu da pošalje njegov hostname.
ds=199.246.76.1 govori klijentu gde je domain server.
ip=199.246.76.2 govori klijentu koja mu je IP adresa.
gw=199.246.76.1 govori klijentu koji je podrazumevani gateway.
vm=... samo ostavite ovo kako jeste.

Примедба: Vodite računa da upišete IP adrese ispravno, gornji primer je moja konfiguracija.

Kreirajte direktorijum '/tftpboot' na serveru, koji će sadržati konfiguracione fajlove za sisteme bez diska koje će server opsluživati. Ovi fajlovi će nositi ime 'cfg.<ip>' gde je <ip> IP adresa diskless sistema. Konfiguracioni fajl za 'altair' je /tftpboot/cfg.199.246.76.2. Njegov sadržaj je:

rootfs 199.246.76.1:/DiskLess/rootfs/altair
hostname altair.kcis.com

Red hostname altair.kcis.com govori računaru bez diska njegovo puno ime domena.

Red rootfs 199.246.76.1:/DiskLess/rootfs/altair govori računaru bez diska gde mu se nalazi root fajlsistem koji će mountovati preko NFSa.

Примедба: NFS root fajlsistem će biti mountovan kao read only.

Hijerarhija za sistem bez diska može biti re-mountovana da bi se dozvolilo pisanje po fajl sistemu, ukoliko je to potrebno.

Ja koristim moj stari 386DX-40 kao posvećeni X terminal.

Hijerarhija za 'altair' izgleda ovako:

/
/bin
/etc
/tmp
/sbin
/dev
/dev/fd
/usr
/var
/var/run

Evo i liste samih fajlova:

-r-xr-xr-x  1 root  wheel  779984 Dec 11 23:44 ./kernel
-r-xr-xr-x  1 root    bin  299008 Dec 12 00:22 ./bin/sh
-rw-r--r--  1 root  wheel     499 Dec 15 15:54 ./etc/rc
-rw-r--r--  1 root  wheel    1411 Dec 11 23:19 ./etc/ttys
-rw-r--r--  1 root  wheel     157 Dec 15 15:42 ./etc/hosts
-rw-r--r--  1 root    bin    1569 Dec 15 15:26 ./etc/XF86Config.altair
-r-x------  1 bin     bin  151552 Jun 10  1995 ./sbin/init
-r-xr-xr-x  1 bin     bin  176128 Jun 10  1995 ./sbin/ifconfig
-r-xr-xr-x  1 bin     bin  110592 Jun 10  1995 ./sbin/mount_nfs
-r-xr-xr-x  1 bin     bin  135168 Jun 10  1995 ./sbin/reboot
-r-xr-xr-x  1 root    bin   73728 Dec 13 22:38 ./sbin/mount
-r-xr-xr-x  1 root  wheel    1992 Jun 10  1995 ./dev/MAKEDEV.local
-r-xr-xr-x  1 root  wheel   24419 Jun 10  1995 ./dev/MAKEDEV

Ne zaboravite da pokrenete MAKEDEV all u dev direktorijumu.

Moj /etc/rc za altair izgleda ovako:

#!/bin/sh
#
PATH=/bin:/
export PATH
#
# configure the localhost
/sbin/ifconfig lo0 127.0.0.1
#
# configure the ethernet card
/sbin/ifconfig ed0 199.246.76.2 netmask 0xffffff00
#
# mount the root filesystem via NFS
/sbin/mount antares:/DiskLess/rootfs/altair /
#
# mount the /usr filesystem via NFS
/sbin/mount antares:/DiskLess/usr /usr
#
/usr/X11R6/bin/XF86_SVGA -query antares -xf86config /etc/XF86Config.altair >/dev/null 2>&1
#
# Reboot after X exits
/sbin/reboot
#
# We blew up....
exit 1

Svi komentari su dobrodošli, kao i sva pitanja.


This, and other documents, can be downloaded from ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.