Debian Netboot
aus C't-Server Wiki, der freien Wissensdatenbank
so ich mal wieder :)
ich werde hier im laufe der naechsten tage meine schritte dokumentieren...
das ganze funktioniert folgendermassen...
es gibt 2 moeglichkeiten netboot zu verwenden, einmal, um auf clientrechnern ein betriebssystem zu installieren, das werde ich an dieser stelle nicht erklaeren, wer sich dafuer interssiert sei dies hier empfohlen. ich habe es selber gestestet und es geht sogar ohne internetanschluss wenn man siche einen apache aufsetzt und den als mirror von hand eingibt oder eine preseed.conf benutzen, die dem kernel als append option mit uebergeben wird, dann macht es das alles vollautomatisch. ich werde hier diskless boot erklaeren, und zwar wie man clients, die keine festplatten (auch thin-clients genannt) haben ueber netzwerk bootet.
eine kleine motivation wozu der ganze aufwand.... mit hilfe von diskless boot kann man sehr viele clients mit einem betriebssystem versorgen. die clients haben so immer den neuesten stand was zbsp: sicherheitsrelevante sachen angeht. desweiteren haben alle auch immer das aktuellste betriebssystem wenn man es auf dem server tauscht. eine zentrale datenhaltung wird mit thin-clients auch realisiert uind zu guter letzt spart es kosten, da die clients ja keine festplatten haben muessen.
wir brauchen zuersteinmal eine PXE faehige netzwerkkarte, ohne die geht gar nichts! damit bekommt unser rechner beim booten (booten ueber LAN) von einem DHCP Server eine IP zugewiesen.
Inhaltsverzeichnis |
dhcp server
dhcp server installieren mit
apt-get install dhcpd
und /etc/dhcpd.conf anpassen
authoritative; allow bootp; allow booting; default-lease-time 600; max-lease-time 7200; ddns-update-style none; ddns-updates off; group { filename "/pxelinux.0"; next-server 192.168.0.1; use-host-decl-names on; subnet 192.168.0.0 netmask 255.255.255.0 { option domain-name "meine-domain.de"; option broadcast-address 192.168.0.255; option default-ip-ttl 120; pool { range 192.168.0.10 192.168.0.30; allow unknown-clients; } } host tftpclient1 { hardware ethernet xx:xx:xx:xx:xx:xx; fixed-address 192.168.0.31; } host tftpclient2 { hardware ethernet xx:xx:xx:xx:xx:xx; fixed-address 192.168.0.32; } }
authoritative; allow bootp; allow booting; ganz wichitge einstellungen, da dadurch das booten erlaubt wird
next-server ist der tftpserver, dieser stellt den bootloader bereit, in der datei pxelinux.cfg/default ist dieser bootloader. in dieser datei steht dann welcher kernel gebootet werden soll und wo das betriebssystem liegt. ich verwende einen nfs-server. dieses kann auch wiederum ein anderer host sein. auf diesem host ist in einem ordner unser betriebssystem und von dort holt sich der kernel alles noetige was er braucht. dazu spaeter mehr...
der pool ist da um allen unbekannten clients ips zu geben, falls man ueberhaupt unbekannte clients zulassen moechte. man kann auch die option host benutzen um einem festen host einen hostnamen und eine ipadresse anhand der mac-adresse zu geben, so das diese(r) client(s) alle immer dieselbe ip und hostnamen bekommen.
tftp server
tftp server installieren mit
apt-get install tftp-hpa
tftp ist ein tiny tfp server, er kennt nur anonyme benutzer und ist dafuer zustaendig, das unsere clients einen bootloader bekommen. im bootloader steht wo sich unser client sein betriebssystem herholen soll, im prinzip wie grub oder lilo. der tftp server stellt den ordner /tftpboot bereit, dort befinden sich unser bootloader pxelinux.0 und der der ordner mit der konfiguration /pxelinux.cfg/default ausserdem liegt hier der zu bootende kernel der geladen wird. der inhalt der dieser datei /pxelinux.cfg/default
default kernel_32 prompt 1 timeout 30 display msg.txt label kernel_32 kernel linux32bit_boot append ip=dhcp append auto rw root=/dev/nfs nfsroot=/tftpboot/nfsroot/32bit_rootfs/ nfsaddrs=kernel ip=255.255.255.255:autoconf label kernel_64 kernel linux64bit_boot append ip=dhcp append auto rw root=/dev/nfs nfsroot=/tftpboot/nfsroot/64bit_rootfs/ nfsaddrs=kernel ip=255.255.255.255:autoconf
default kernel_1 gibt den default kernel an der geladen werden soll die msg.txt liegt im /tftpodner sie ist ein guter test fuer den anfang um zu sehen ob alles funktioniert. einfach datei anlegen und irgendetwas was wie eine erfolgsmeldung klingt reinschreiben. die label beinhalten alle optionen wie das root verzeichnis unseres betriebssystem das wir booten wollen, also die nfs-freigabe.
nfs server
ist dafuer da, dem client sein root-verzeichnis (/) bereitzustellen, da wir ja nur thin-clients haben installieren
apt-get install nfs-common
hier weiss ich grad nicht, muss ich mal nachsachuen was man nochmal installieren muss
anpassen von /etc/exports
/tftpboot/nfsroot/32bit_rootfs *(rw,sync,no_root_squash) /tftpboot/nfsroot/64bit_rootfs *(rw,sync,no_root_squash)
der knifflige teil
da wir ja thin clients haben und die natuerlich alle reibungslos laufen sollen, muss man noch einige sehr wichitge dinge beachten!!! wir brauchen scripte die uns auf unserem server ein dateisystem fuer swap anlegen. diese muss an der richtigen stelle im /etc/boot.d/ stehen ausserdem muessen wir unsere fstab so anpassen das unser root-verzeichnis (/) der nfs- freigabe entspricht
192.168.0.1:/tftpboot/nfsroot/32bit_rootfs / nfs defaults 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 proc /proc proc defaults 0 0 usbfs /proc/bus/usb usbfs noauto 0 0 sysfs /sys sysfs noauto 0 0 /dev/cdrecorder /media/cdrecorder subfs fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=utf8 0 0 /dev/fd0 /media/floppy subfs fs=floppyfss,procuid,nodev,nosuid,sync 0 0 /dev/loop1 none swap sw 0 0
wie man sieht wird der swap an ein loop device gemountet. die ramfilesystem-datei vom server wird an das loop device gebunden
inm prinzip macht das script beim booten folgendes:
dd if=/dev/zero of=/var/swap bs=1k count=Xk mkswapfs /var/swap losetup /dev/loop0 /var/swap mount /dev/loop0 swap
man koennte auch zbsp die einzenen home-dirs der clients noch auslagern
autor(en)
moleman 12:46, 29. Aug 2006 (CEST)