Der Rechner, der genutzt werden sollte, hat einen SCSI-Adapter (Tekram DC-395U), der nur nach Kernelpatchen unterstützt wird. Nach dem Booten können die Daten auf den Installations-CDs nicht gelesen werden.
Da ich auf die Daten auf dem rechner nicht lange verzichten wollte, wollte ich sicher gehen, daß das System nach Umstellung vo einer alten SuSE auf ein "modernes" Debian Woody zuverlässig wieder hochkommt.
Zunächst sollte man sich einen Kernel kompilieren: er sollte alles beinhalten, was für den Start des Systemes nötig ist, insbesondere sollten die Unterstützung für beim Start benötigte Dateisysteme (ext2, ext3, nfs, ...) sowie eventuell benötigte Hardware (beispielsweise Netzwerkkarten) einkompiliert sein. Dies als Module in eine initial ramdisk zu legen, halte ich beim Netzwerkboot für keine gute Idee (ich kann aber nicht ausschließen, daß es tatsächlich möglich sein könnte).
Mein fertig kompilierter Kernel liegt nun im Verzeichnis /boot bereit:
niehaus@toxic:/tmp$ ls -aFl /boot/vmlinuz-2.4.18tekramscsi -rw-r--r-- 1 root root 1056112 Aug 1 23:23 /boot/vmlinuz-2.4.18tekramscsi niehaus@toxic:/tmp$
Im nächsten Schritt geht es nun darum, aus diesem Kernel ein Netboot-Image zu erstellen. dazu gibt es unter Debian das Paket mknbi (make network boot image). Nötige Argumente sind das Device auf dem zu bootenden Rechner, welches als Root-Partition gemountet werden soll (in meinem Fall eine Festplattenpartition) sowie der bereits oben genannte Kernel, aus dem das Boot-Image erstellt werden soll. Über weitere Optionen gibt die man-page Auskunft. Das Boot-Image selber wird über die Standardausgabe ausgegeben (und sinnvollerweise in eine Datei umgeleitet.
niehaus@toxic:/tmp$ mknbi-linux --rootdir=/dev/hda1 /boot/vmlinuz-2.4.18tekramscsi > Tekram-mknbi Warning: The --ip option was not used; you may need it if you use NFSroot. Please see the documentation. niehaus@toxic:/tmp$
Da ich nicht das Root-Verzeichnis per NFS mounten möchte, muß ich die IP-Adresse des NFS-Servers nicht angeben und kann die ausgegebene Warnung getrost ignorieren.
Das Boot-Image liegt nun als Datei "Tekram-mnkbi" vor, ist aber noch nicht mit der 3com Netzwerkkarte 3c905C-TX mit MBA ROM nutzbar. Um es nutzbar zu machen, benötig man das Programm imggen (Hier ein weiterer Link). Beim einfachen Aufruf gibt es einige Hinweise zur Benutzung:
niehaus@toxic:/tmp$ ~/imggen Image Creator for MBA ROMs v2.00, Date: Aug 23, 2003 Copyright 2002-2003 emBoot Incorporated. http://www.emboot.com/. Design and Coding by Nick Kroupetski . All rights reserved. Usage: imggen [OPTION] inputfile outputfile -a, Add MBA/BootWare support -r, Remove MBA/BootWare support from image file -i, Show information on an image -h, This help screen This Utility will patch any Linux or MKNBI patched kernel so that it can be booted using any MBA/BootWare ROM niehaus@toxic:/tmp$
Aus dem oben vorbereiteten Kernel wird nun das für den MBA nötige Boot-Image erzeugt:
niehaus@toxic:/tmp$ ~/imggen -a Tekram-mknbi Tekram-MBA-bootimage Image Creator for MBA ROMs v2.00, Date: Aug 23, 2003 Copyright 2002-2003 emBoot Incorporated. http://www.emboot.com/. Design and Coding by Nick Kroupetski . All rights reserved. In filename: Tekram-mknbi Out filename: Tekram-MBA-bootimage Adding MBA support... Copyright String Len: 175 Copyright checksum: 0x3d53 Original Image size in K: 1037 Image Size Adjustment: 0 Protected image size in K: 1037 MBA support has been succesfully added niehaus@toxic:/tmp$
Das Boot-Image mit dem Namen Tekram-MBA-bootimage ist nun fertig und kann mittels TFTP-Server zur verfügung gestellt werden, zusätzlich muß dem zu bootenden Computer eine IP-Adresse zugeweisen werden und er muß wissen, welches Boot-Image er sich vom TFTP-Server laden muß: dieses erledift ein DHCP-Server.
Dieser Abschnitt ist noch ausbaubar. Ich habe einfach einmal die entsprechenden Konfigurationsdateien "fallengelassen", zunächst einmal die Kondiguration des ISC DHCP-Servers.
niehaus@toxic:/tmp$ cat /etc/dhcp3/dhcpd.conf # Sample configuration file for ISC dhcpd for Debian ddns-update-style none; option domain-name ""; default-lease-time 600000; max-lease-time 720000000; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.10 192.168.0.90; option broadcast-address 192.168.0.255; option routers 192.168.0.97; option domain-name-servers 192.168.0.97; } host narcotic { hardware ethernet 00:02:1C:F7:26:78; option routers 192.168.0.97; server-name "toxic.niehaus.dynodns.net"; option domain-name-servers 192.168.0.97; fixed-address 192.168.0.99; filename "Tekram-MBA-bootimage"; }
In der Datei /etc/inetd muß nun noch der TFTP-Server aktiviert werden. Die entsprechende Zeile sieht bei mir nun folgendermaßen aus;
niehaus@toxic:/tmp$ grep tftp /etc/inetd.conf tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /boot
Der TFTPd ist nun so konfiguriert, daß das Netzwerk-Boot-Umage im Verzeichnis /boot des TFTP-Servers gesucht wird. Die Datei Tekram-MBA-bootimage muß also noch dorthin kopiert werden.
Nun den inetd und den DHCP-Server neu starten um sicherzugehen, daß die geänderte Konfiguration eingelesen wird. Den zu bootenden Rechner so konfigurieren, daß per Netzwerk gebootet wird und dem Netzwerk-Boot sollte nichts mehr entgegen stehen.
Last modified: Sat Oct 24 13:02:32 CEST 2009
$Id: netboot.html,v 1.12 2009/10/24 11:02:43 niehaus Exp $