Diskless LINUX Client - Mini HOWTO? =================================== Inhalt: --------- 1.0 Anlass b.z.w. Intro 1.1 Was fuer eine Umgebung hatte der Autor ? 1.2 Was braucht man? 2.0 Erstellen des Bootrom Images 2.1 Woher bekomme ich die Software dazu ? 2.2 Installieren der Software 2.3 Konfigurieren des Bootrom Images 2.4 Der 1. Test mit der Diskette 3.0 Boot Server einrichten 3.1 BOOTP Konfiguration mittels DHCP 3.2 Test des DHCP/BOOTP Servers 3.3 TFTPD Konfiguration 3.4 Test der Bootimage uebertragung 1.0) Anlass dies zu schreiben: --------------------------------- Hi, vor einiger Zeit dachte ich daran einen "Diskless" PC zum "Internet-Surfen" und als Fernwartungscomputer fuer meinen Server aufzusetzen. Ein Diskless hat eine reihe Vorteile, unteranderem ist die Gerauschentwicklung eher gering, er besteht aus nicht allzuvielen Teilen (Mainbord, Netzwerkkarte, Grafikkarte, Gehause, Tastatur, Maus, Monitor) - man kann ruhig seinen alten 486'er aus dem Karton holen, er besitzt keine sabotierbaren Laufwerke (sehr praktisch fuer Internetcafes etc.), und er ist relativ wartungsfrei - wenn er einmal lauft (z.B. stoert es nicht ihn einfach auszuschalten). Zu den Nachteilen sollte man sicherlich den erzeugten, doch recht erheblichen Netzwerkverkehr - b.z.w. die daraus entstehende Langsamkeit, zaehlen. Die vor und Nachteile sollte jeder fuer sich selber abwaegen, wenn man aber ein wehnig Netzwerk- & Serverkapazitaet und einen aelteren PC uebrig hat, ist es sicherlich eine ineresante Sache sich mit diesem Thema zu beschaeftigen. Mit diesem MiniHOWTO? will ich kein umfassendes Wissen zu den angeschnittenen Themen vermitteln, vielmehr soll es eine Art "Kochrezept" nach dem Motto "man nehme" sein. Es beschreibt die Arbeitsgaenge von den ersten schritten bis zum ersten mal Linux ueber NFS booten. 1.1) Was fuer eine Umgebung hatte der Autor ? ---------------------------------------------- Der Client ist ein 486 DX 2 mit 80 MHz 12Mb (zu wehnig !!!) RAM und einer Realtek 8139A Netzwerkkarte. Auf dem (Boot)Server und dem Client lauft SuSe 6.1 mit dem 2.2.5 Kernel. [Boot-Server = Server von dem der Client sein Betriebsystem bekommt] Rechner | Name | Domain | IP - Addresse | MAC Adresse =================+==============+============+===================+==================== Server | tsei-host | tsei.mdn | 192.168.0.1 | k.A. -----------------+--------------+------------+-------------------+-------------------- Diskless client | x-term | tsei.mdn | 192.168.0.9 | 00:35:18:5A:A8:9B 1.2) Was braucht man ? ----------------------- - Rechner >= 486 66MHz (es geht auch wehniger - aber ...) - 100Mbit Netzwerk (10Mbit gehen auch ...) - Netzwerkkarte die IN den Kernel von Linux einkopiliert werden kann !!! (z.B. Realtek 8139, viele Karten der Firma 3com, Intel ... am besten in der SuSe Hardware Datenbank Informieren) - LINUX (SuSe) - Programm Netboot - Einen EPROM Brenner, oder man kennt jemanden der einen hat. - natuerlich ein EPROM (Conrad ca. 15DM) - Einen Betriebsbereiten LINUX Rechner (Server) zum erstellen des BootromImages und als NFS Server zum exportieren des Betriebsystems - RAM Speicher > 16MB - Zum Testen ein Diskettenlaufwerk 2.0) Erstellen des Bootrom Images ---------------------------------- Ohne Festplatte hat der Rechner normalerweise keine Informationen wie und woher er sein Betriebssystem bekommen soll. Dazu hat man die Moeglichkeit auf (fast) jede Netzwerkkarte ein Bootrom (32k EPROM) zu stecken - dies enthaelt dann die benoetigten Informationen. Ein solches Bootrom ist im Fachhandel fuer ueber 100DM erhaeltlich, man hat aber auch die Moeglichkeit es selber zu erstellen. Dazu benoetigt man zum einen einen EPROM Brenner (Ein Geraet welches in der anschaffung mit 300-400DM zu Buche schlaegt), und zum anderen eine Software die einem bei der Erstellung des Images (welches auf das EPROM gebrannt wird) hilft. Die Anschaffung eines solchen EPROM Brenners lohnt sich sicherlich bei einer geringen Stueckzahl nicht, man sollte sich daher das EPROM bei einem Besitzer eines solchen Brenners brennen lassen. 2.1) Woher bekomme ich die Software dazu ? ------------------------------------------- Die Software "Netboot" mit der wir unser Bootrom erstellen wollen findet sich unter: http://www.han.de/~gero/netboot.html Unteranderem finden sich dort auch eine Mailinglist, und eine Beschreibung zu disem Programm. 2.2) Installieren der Software ------------------------------- Nach dem download und entpacken muss das Programm compiliert und installiert werden. Dies macht man mit: ./configure make clean make make install Das Progrmamm Netboot ist nun installiert. Man kann nun mit der Erstellung des Bootroms beginnen. 2.3 Konfigurieren des Bootrom Images ------------------------------------- Der Vorteil von Netboot ist, dass es praktisch mit JEDER Netzwerkkarte zusammenarbeitet. Dazu braucht man nur einen DOS-PAKET-DRIVER (*.com format). Dieser sollte sich auf der Treiber- Diskette der Netzwerkkarte befinden. (Bei der Realtek 8139A Netzwerkkarte, welche bei mir zum Einsatz gekommen ist war dieser leider sehr viel groesser als 32kb (ca. 500 Kb), und somit zu gross fuer das EPROM. Abhilfe schaffte ein download von der Firma Realtek, welche einen passenden DOS-Paket-Driver zur verfuegung stellt.) Diesen Packetdriver kopiert man am besten auf den Rechner an dem man das Bootrom Image erstellt. Das Progrmamm zur erstellung des Images wird wie folgt gestartet: make bootrom Ein Dialog oeffnet sich zwischen Benutzer und Programm, welcher wie folgt aussehen kann: make[1]: Entering directory '/usr/src/netboot/makerom' Bootrom configuration Programm, Version 0.7 (netboot) The folowing 3 kernels are available: (1) standart kernel (recommended) (2) minimal kernel for small bootroms (3) kernel for 16-Bit x86 processors Select the kernel you wish to use: 1 Do you want the bootrom look for boot drives first (y/n) ? n The folowing 8 paket drivers are available: (0) user defined packet driver (1) WD80x3 and clones (2) NE2100 (3) NE2000 and clones (4) NE1000 and clones (5) ArcNet cards (6) 3Com 3C509 (7) 3Com 3C503 (8) 3Com 3C501 Select the paket driver you wish to use : 0 Enter the full path name of the paket driver: /tmp/e2000.doc Enter command line arguments for packet driver: 0x60 10 0x300 Do you want to use the ANSI display driver (y/n) ? n Do you want to use packet driver debug program (y/n) ? n Do you want to specify an additional programm (y/n) ? n Das Programm erzeugt 2 Dateien, welche im Hauptverzeichnis des Netboot Programms liegen. Die eine ist "image.rom" - sie stellt ein Image dar, welches direkt mittels des EPROM - Brenners auf ein EPROM gebrannt werden kann. Die andere ist das selbe Image, nur in einen Diskloader verpackt, so das diese Datei (zu Testzwecken) auf eine Diskette kopiert werden kann. Dies geschieht mit dem Befehl cp image.flo /dev/fd0 (ACHTUNG - auf der Diskette werden alle Daten gloescht !) 2.4 Der 1. Test mit der Diskette ----------------------------------- Zum Testen, ob das BootROM - Image funktionsfaeig ist, wird der Diskless von der eben erstellten diskette ( datzu - nur zum testen - sich irgentwoher ein Diskettenlaufwerk leihen, und in den Diskless einbauen) gebootet. Dabei sollten folgende oder aehnliche Meldungen kommen: Disk loader for net boot Uncompressing... done Packet driver for RTS8139, version 3.02 Copyright 1997 (c), Realtek Semiconductor Inc. Line Speed 100 Mbps Half Duplex System: [345]86 processor, PCI bus, Two 8259s Packet driver software interrupt 0x62 Interrupt number 0xC I/O Port 0xF800 My Ethernet address is 00:20:18:8A:A8:9A Found Packet driver at int 62 Free Memory: 13 Boot-Rom V0.8.1, Copyright (C) 1995-1998 G. Kuhlmann BOOTP: Sending Requests (press ESC to abort): ........................... Wenn eine solche oder aehnliche Ausgabe zu sehen ist, war die Erstellung des BootROM - Images erfolgreich. Der Diskless Rechner versucht jetzt einen BOOTP/DHCP Server zu finden. 3.0 Boot Server einrichten --------------------------- In diesem Kapitel widmen wir uns der Servereinrichtung. Der Server hat unteranderem folgende Aufgaben der Diskless gegenueber: * Vergabe der IP-Adresse * Bereitstellen des Kernel Images * Bereitstellen des Filesystems Dise einzelnen Aufgaben werden mittels DHCP, TFTP und NFS umgesetzt. 3.1 BOOTP Konfiguration mittels DHCP ------------------------------------- Die BOOTP Funktionalitaet auf dem Server setzen wir mittels DHCP um. Vorraussetzung fuer einen funktionierenden DHCP Server ist ein korrekt konfigurierter DNS Server. Dazu instalieren wir den DHCP daemon, und editieren die "/etc/dhcp.conf". Fuer einen Diskless Client sollte z.B. folgendes in dieser Datei stehen: option domain-name "tsei.mdn"; option domain-name-servers 192.168.0.1; host x-term { hardware ethernet 00:35:18:5A:A8:9B; fixed-address x-term.tsei.mdn; server-name "tsei-host.tsei.mdn"; filename "bootImage"; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.0; } ist auf eigene Beduerfnisse anzupassen ... 3.2 Test des DHCP/BOOTP Servers -------------------------------- Wenn man jetzt versucht den Client zu booten, sollten die Ausgaben wie folgt aussehen: Disk loader for net boot Uncompressing... done Packet driver for RTS8139, version 3.02 Copyright 1997 (c), Realtek Semiconductor Inc. Line Speed 100 Mbps Half Duplex System: [345]86 processor, PCI bus, Two 8259s Packet driver software interrupt 0x62 Interrupt number 0xC I/O Port 0xF800 My Ethernet address is 00:20:18:8A:A8:9A Found Packet driver at int 62 Free Memory: 13 Boot-Rom V0.8.1, Copyright (C) 1995-1998 G. Kuhlmann BOOTP: Sending Requests (press ESC to abort): ok Lokal IP: 192.168.0.9 Server IP: 192.168.0.1 (tsei-host.tsei.mdn) File name: bootImage TFTP: Timeout TFTP: Timeout TFTP: Timeout TFTP: Timeout 3.3 TFTPD Konfiguration ------------------------ Zur uebertragung des Boot-Images wird das TFTP-Protokoll (Trivial File Transfer Protocol) benutzt. Der TFTP daemon wird mittels des inetd daemons gestartet. Um den TFTP daemon zu aktivieren, muss in die "/etc/inetd.conf" folgende Zeile eingetragen werden. tftp dgram udp wait nobody /usr/sbin/tftp in.tftpd /tftpboot/ die "/tftpboot/" option gibt den Pfad zu den Kernelimages an. Dieser Pfad, einschliesslich die dort enthaltenen Files, muessen weltweit lesbar sein. 3.4 Test der Bootimage uebertragung ------------------------------------ Um zu testen ob unsere Konfiguration bis hier hin OK war, werden wir einfach den Server Kernel "missbrauchen", und ihn mit dem Programm "mknbi-linux" zu einem Netboot faehigen Image wandeln. Dies fuert beim booten des Clients zu einem Kernel Panic, was nicht weiter schlimm ist, da der Server Kernel natuerlich nicht an sein Root Filesystem kommt. Zum testen ist er allerdings eine gute Sache. das Image wird wie folgt erstellt: mknbi-linux -d rom -i rom -k /boot/vmlinuz -o /tftpboot/bootImage das Programm hat nun einen Netboot faehigen kernel im TFTP verzeichniss abgelegt.