Linux über das Netzwerk booten mit 3com Netzwerkkarte 3c905C-TX

Vorbemerkungen und Ziele

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.

Vorbereitung des Kernels

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.

TFTP- und DHCP-Server einrichten

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.


Sebastian Niehaus

Home

Last modified: Sat Oct 24 13:02:32 CEST 2009
$Id: netboot.html,v 1.12 2009/10/24 11:02:43 niehaus Exp $