Dreambox:Howto:Netzwerkboot

Aus TuxBoxWIKI
Wechseln zu: Navigation, Suche


Einleitung

Dieser Artikel beschreibt, wie man eine Dreambox über LAN (per NFS) booten lässt. Im diesem Artikel wird der Vorgang auf Basis einer Openembedded Build-Umgebung für eine DM7020 erklärt (passt zu 99,9% auch bei DM7025 ff.). Prinzipiell kan man mit jeder Dreambox über einen entsprechenden Kernel aus dem Netz per bootp/tftp booten und auch jedes beliebige (zum Boxmodell passende) root Dateisystem kann verwendet werden, es müssen nur jeweils die Pfade entsprechend angepasst werden.

Annahmen

Folgende Annahmen werden getroffen:

  • IP-Adresse der Dreambox: 192.168.0.99
  • IP-Adresse des Servers: 192.168.0.2
  • Pfad zu OpenEmbedded: /srv/oe/dm7020/build/tmp/rootfs/boot

Diese Daten sind an die lokalen Gegebenheiten anzupassen. Die Befehle in diesem Howto sind auf ein Debian-System ausgelegt, bei anderen Distributionen können die Dateien an anderer Stelle liegen.

Voraussetzungen

Benötigt werden:

  • ein lauffähiges Openembedded auf dem Server
  • Ein TFTP-Server
  • Ein DHCP-Server
  • Die MAC-Adresse der Dreambox
  • Ein Terminalprogramm (minicom, Hyperterminal, Tera Term Pro)
  • Eine Verbindung vom PC zur Box per LAN und Nullmodem-Kabel

Konfiguration

/etc/hosts

Zunächst muss der Server wissen, unter welchem Namen er die Dreambox erreichen kann. Dafür benötigt man einen Eintrag in der Datei /etc/hosts auf dem Server. Dort wird die IP-Adresse für die Box und der gewünschte Hostname eingetragen, z.B.

192.168.0.99 dm7020

TFTP-Server

In der Datei /etc/inetd.conf wird folgendes eingetragen:

tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /srv/oe/dm7020/build/tmp/rootfs/boot

TCPD muss natürlich vorhanden sein

Der inetd wird neu gestartet

/etc/init.d/inetd restart

DHCP-Server

Ein DHCP-Server muss installiert sein. In der /etc/dhcpd.conf werden folgende Einträge vorgenommen

{
 fixed-address 192.168.0.99;
 hardware ethernet xx:xx:xx:xx:xx:xx; <<- Die MAC-Adresse der Dreambox
 allow bootp;
 server-name "192.168.0.2";
 option root-path "/srv/oe/build/tmp/rootfs,rsize=1024";
}

Der dhcpd wird neu gestartet:

/etc/init.d/dhcp3-server restart

NFS-Server

Auf dem Server muss ein NFS-Server laufen. Die /etc/exports wird folgendermaßen ergänzt

/srv/oe/ 192.168.0.0/255.255.0.0(rw,no_root_squash,sync)

Der NFS-Server wird neu gestartet:

/etc/init.d/nfs-kernel-server restart

Alternativ kann man auch durch

exportfs -a

die Exports aktualisieren.

Dateien von Box kopieren

Es werden 3 Dateien aus dem Flash-Image der Box benötigt. Im Verzeichnis /boot liegen die Dateien

  • backdrop.mvi
  • bootlogo.mvi
  • bootlogo_wait.mvi

Diese werden ins OE-Verzeichnis auf dem Server kopiert, und zwar nach

/srv/oe/build/tmp/rootfs/boot


Außerdem noch die Datei

  • /etc/network/interfaces

aus dem Flash nach

/srv/oe/build/tmp/rootfs/etc

kopieren und folgendermaßen anpassen:

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# Ethernet
auto eth0
iface eth0 inet static
        address 192.168.0.99
        broadcast 192.168.0.255
        gateway 192.168.0.1 (Euer lokales Gateway)
        netmask 255.255.255.0

Ohne diese Dateien wird die Box nicht booten.

DHCP ausschalten

Wichtig: Im Dreambox-Setup (Einstellungen, Experten, Kommunikation) muss DHCP ausgeschaltet werden und eine IP-Adresse von Hand vergeben werden. In unserem Falle die 192.168.0.99.

Box starten

Bevor die Box gebootet wird, wird das Terminalprogramm der Wahl gestartet. Alternativ kann man auch vor dem Einschalten der Box die Pfeil-Nach-Unten-Taste drücken. Als Kernel-Commandline wird nun folgendes eingegeben:

console=ttyS0,115200 root=/dev/nfs ip=dhcp rw

Bestätigen und die Box sollte vom Netzwerk booten.


Anpassungen

Will man, dass die Box grundsätzlich von NFS bootet und gar nicht erst aus dem Flash, ist folgendes zu tun:

Man begibt sich ins BIOS der Box (beim Booten im Terminalfenster sofort "S" drücken oder mit "Pfeil-Runter-Taste" einschalten und ins Setup gehen. Hier stellt man den Parameter

Kernel Command Line Override

auf "enabled" und trägt in der nächsten Zeile die command line fürs Booten aus dem Netz ein:

console=ttyS0,115200 root=/dev/nfs ip=dhcp rw

Dann speichern und rebooten.