Samsung SMT-7020S - Etherboot und USB Boot

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Allgemein

Das Ziel dieser Beschreibung ist es, auf dem originalen DOM (Disk On a Module) der Samsung SMT-7020s ein Grub Boot Laufwerk einzurichten. Das kann dann wahlweise per Etherboot oder USB booten. Bei USB kann man von jeglichen USB-Devices booten, die sich als Mass-USB melden, also z. B. USB-Sticks und -Festplatten.

Ich habe mich für ZenDeb/ZenVDR entschlossen und diese Anleitung geht davon aus, dass ihr das auch benutzt.

Etherboot ist das "Günstigste", wenn man mal von Kauf des Servers absieht. ;) Der Server war aber bei mir schon vorhanden. Alternativ kann man einen 4-GB-USB-Stick besorgen.

Wenn ein USB-Stick oder Etherboot genutzt wird, dann muss die Hardware nicht modifiziert werden. Das vermeidet, Strom abzuknapsen o.ä, um Linux zu booten. Da keine Festplatte im Gehäuse ist, wird es auch nicht so warm und damit leiser :)

Vorgesehen ist es, verschiedene Etherboot Disks zu integrieren - damit man mehr Möglichkeiten hat.

Offene fragen/ TODO's

  • Braucht ZenDeb einen Swapfile ? Wenn ja, wie bei Etherboot (Netzwerkboot) lösen? Ein USB-Stick?
  • /etc/resolv.conf ist nicht da, vermutlich wegen NETWORK="AUS"
  • Die Powertaste am Frontpanel funktioniert nicht, gibt eine Fehlermeldung raus.
  • Viking : bei mir ist bei Kameraschwenks ein Ruckeln zu sehen. Die CPU ist aber nicht überlastet. Was kann das sein? Es ist noch kein SAT-Kabel angeschlossen. Kann es das sein? Habe schon tvtime als Deinterlacer versucht, macht keinen Unterschied !?

Hintergrundinfos und Links

Wenn hier "PXE boot" steht, dann ist damit Netzwerk-boot gemeint. Das kann entweder über eine Einstellung der Netzwerkkarte (geht nicht beim Samsung 7020s) oder per Etherboot-Image stattfinden. Siehe dazu auch Preboot_Execution_Environment


Infos zu Etherboot-Einrichtung (wir machen das gegebenenfalls ein bisschen anderes - aber gute Hintergrundinformationen).

Grub Manual :

NFS boot :

Downloads

dom-boot-grub-general.tar.bz2 - Mit Inhalt des DOMs zum Selbermachen.


dom_grub_20080605.img.bz2 - Fertiges USB+Etherboot DOM.


md5sum zum überprüfen

  • dom_grub_20080605.img.bz2 : e14c7b14500410882cbfb0648611ab5a
  • dom-boot-grub-general.tar.bz2 : 8f3fc2046e3bd246c5809b67d556ee4d


Ob das Image OK ist, kann man auch so testen:

bzip2 -d dom_grub_20080605.img.bz2
fdisk -l dom_grub_20080605.img

Das sollte dann so aussehen:

You must set cylinders.
You can do this from the extra functions menu.

Disk boot_grub_20080605.img: 0 MB, 0 bytes
4 heads, 32 sectors/track, 0 cylinders
Units = cylinders of 128 * 512 = 65536 bytes

                 Device Boot      Start         End      Blocks   Id  System
boot_grub_20080605.img1   *           1         496       31728   83  Linux


ZenDeb-ISO von det und Updates von Decembersoul - das ist das, was ich benutzt habe:

ZenDeb-ISO V2b
Decembersoul update 20080122

ZenDeb einrichten auf Server für Netzwerkboot

Als erstes SMT_S100-V2b.iso herunterladen an einen Ort wo Platz ist.

Dann Verzeichnisse anlegen:

mkdir -p /srv/zendeb/
mkdir /srv/zendeb/media
mkdir /srv/zendeb/proc
mkdir /srv/zendeb/sys

Dann installieren:

mkdir /tmp/zendebiso
mount -o loop /ort-wo-zendeb-iso-liegt/SMT_S100-V2b.iso /tmp/zendebiso/
cd /srv/zendeb/
tar xzf /tmp/zendebiso/samsung.tar.gz
umount /tmp/zendebiso

Dann die Verzeichnisse für Media anlegen:

mkdir /srv/zendeb/media/movies
mkdir /srv/zendeb/media/music
mkdir /srv/zendeb/media/pictures
mkdir /srv/zendeb/media/mp3
mkdir /srv/zendeb/media/video
mkdir /srv/zendeb/media/epgimages


/etc/fstab anpassen für Netzwerk-Boot

Jetzt die /srv/zendeb/etc/fstab (von dem zendeb im NFS export!) wie folgt ändern (den Rest auskommentieren):

proc /proc proc defaults 0 0
tmp tmp tmpfs defaults 1 2
none / tmpfs defaults 0 0
/dev/hda1           /boot          ext2     defaults,noatime 1    1

ggf. auch NFS mount für /video oder /media einrichten - siehe dazu Samsung_SMT-7020S_-_Etherboot_und_USB_Boot#.2Fetc.2Ffstab_anpassen.


Dann in "/srv/zendeb/etc/vdr/sysconfig" die Einstellung "NETWORK" ändern in "AUS" - sonst gibt es eine Menge Fehlermeldungen beim Booten. Das Netzwerk ist sowieso vorher korrekt eingerichtet.


Wenn wir weitere NFS-Laufwerke unter ZenDeb mounten möchten (macht Sinn), dann gibt es, soweit ich das beurteilen kann, einen Fehler im RCStart Skript. Es geht davon aus, dass keine Netzwerkverbindungen zu dem Zeitpunkt da sind, was normalerweise auch korrekt ist. Die NFS-Laufwerke werden gemountet bevor portmap gestartet wurde und dann dauert es unerträglich lange ;)

Also in Zeile 159 von "/etc/init.d/RCStart" vor dem "execute mount -a" das hier einfügen:

# Viking: nfs bugfix, otherwise NFS mount takes verly long
ifconfig eth0 >/dev/null 2>&1 && portmap

resolv.conf anlegen

Damit die Namensauflösung funktioniert, brauchen wir eine korrekte /etc/resolv.conf

Dazu bitte euren gültigen Namesserver eintragen in /srv/zendeb/etc/resolv.conf - das sieht dann z. B. so aus:

domain home
nameserver 62.72.64.237
nameserver 62.72.64.241
nameserver 128.128.128.128

Kernel für Netzwerkboot anpassen

Jetzt den (ZenDeb) Kernel anpassen für Netzwerkboot.


Tipp: In dem Boot-tar unter "Download" findet ihr den heute (29.05.2008) aktuellen Kernel für ZenDeb mit Netzwerkboot eingebaut. Ihr müsst sie also gegebenenfalls nicht selber kompilieren !


Dies klappt (zumindest bei mir) bei ZenDeb direkt, ansonsten die zu der Distribution dazugehörige Kernel Compile-Doku lesen!

cd /usr/src/linux
make menuconfig

Dann bei diesen Optionen es so einstellen, dass "*" am Anfang der Zeile steht (nicht "M") damit wird es fest im Kernel integriert und nicht als Modul kompiliert:

Networking / Networking Options / IP: kernel level autoconfiguration
                                  IP: DHCP support
File systems / Network File systems / Root file system on NFS
Device drivers / Network device support / Ethernet (10 or 100M) / Intel(R) Pro/100+ Support

und Kompilieren (eventuell ohne "make clean"):

make clean && make >make.log 2>&1 
make install

Dann den NEUEN Netzwerkbootkernel ins tftp root dir kopieren :

sudo cp /srv/zendeb/boot/vmlinuz-2.6.17.6-det /var/lib/tftpboot/

ETHERBOOT einrichten

PXE boot auf dem Server vorbereiten

NFS-Server installieren und z. B. unter /srv/zendeb die ZenDeb Distribution ablegen.

Dann folgende Zeile in die Datei /etc/exports hinzufügen :

/srv/zendeb       192.168.0.0/255.255.255.0(rw,async,no_root_squash,no_all_squash)

(hier ggf. IP's und Freigabe anpassen)

und NFS-Server aktualisieren :

sudo exportfs -a

Dann den tftpd--Server (unbedingt tftp-hpa oder atftpd) installieren.

DHCP oder Feste IP-Adressen für PXE nutzen ?

Jetzt muss man sich entscheiden zwischen der Nutzung eines DHCPServers oder Etherboot mit fester IP-Adresse. Am besten vorher beides durchlesen. Zu festen IP's siehe weiter unten unter "PXE mit festen IP-Adressen".

PXE mit DHCP-Server

jetzt die Konfiguration für den DHCP-Server für PXE boot. ACHTUNG !! gegebenenfalls zuerst einen alten DHCP Server jetzt deaktivieren - der in einen Router o.ä. enthalten ist !!! Dann DHCP-Server installieren und im config (z. B. /etc/dhcp3/dhcp.conf oder /etc/ltsp/dhcpd.conf) dann so was wie das hier eintragen:

group {

 filename "/pxelinux.0";
 use-host-decl-names on;
 
 subnet 192.168.0.0 netmask 255.255.255.0 {
   # tftp server
   next-server                 192.168.0.2;
   option broadcast-address    192.168.0.255;
   option routers              192.168.0.1;
   option domain-name          "example.com";
   option domain-name-servers  192.168.0.1;
   option perform-mask-discovery       false;
   option router-discovery             false;
   option default-ip-ttl               10;
 }

Möchte man auf einen Server mehrere verschiedene PXE-Files booten können (z. B. auf einen Ubuntu LTSP Server), dann kann man über die eindeutige MAC Adresse eine bestimmte Datei zuweisen :

host test-pc1 {
      hardware ethernet 00:0c:29:2f:c6:33;
      filename "/pxelinux.0";
}

PXE mit festen IP-Adressen

ACHTUNG !! Das hier muss man nur machen, wenn man sich für feste IP-Adressen entschieden hat und DHCP nicht benutzt/eingerichtet hat. Mit festen IPs hat man den Nachteil, dass man PRO CLIENT (also pro Samsung) selber eine eigene Etherboot-Datei erstellen und diese dann auf den DOM bringen muss. Es hat aber den Vorteil, dass man den DHCP-Server nicht anfassen muß, z. B. weil man das nicht kann, weil er nicht abschaltbar ist, jemand anderem gehört o.ä.

DHCP ist viel flexibler !

Tipp : Vorkonfigurierte Etherboot-Images mit den Daten von unten sind in meinem tar enthalten! Ein mal mit tftp-server 192.268.0.1 und ein mal mit 192.168.0.99


Wir Erstellen jetzt ein Boot-Image, dass wir später auf den DOM bringen.

Im Browser http://www.rom-o-matic.net/etherboot/etherboot-5.4.3/contrib/rom-o-matic/ aufrufen und die Einstellungen wie folgt vornehmen:

NIC/ROM type: eepro100:82562em
ROM output format: .zlilo

Dann "Configure" anklicken und einige Einstellungen wie folgt vornehmen:

ASK_BOOT: -1	(beschleunigt das Booten um 3 Sekunden)
 

Jetzt müssen wir die korrekten IP-Adressen einrichten. ACHTUNG !! Hier muss jeder selber die für sein Netz gültige Adressen eintragen. Ggf. die Adresse im vorhandenen DHCP-Server reservieren oder welche nutzen, die außerhalb des DHCP-Bereichs liegen! Das hier sind jetzt Adressen die ich nutze:

Bei "USE_STATIC_BOOT_INFO" den Haken setzen, damit die folgenden Infos benutzt werden
STATIC_CLIENT_IP: 192.168.0.5		(diese ist pro Samsung im Haus anders)
STATIC_SUBNET_MASK: 255.255.255.0
STATIC_SERVER_IP: 192.168.0.1
STATIC_GATEWAY_IP: 192.168.0.1
STATIC_BOOTFILE: /pxelinux.0-1.61

dann (ganz unten oder ganz oben) "Get ROM" klicken und speichern z. B. auf einen USB-Stick unter dem Namen:

eb-5.4.3-eepro100-IP.zlilo

Später unten bei Grub "installieren" wir dieses dann auf dem DOM.

Da wir Grub nutzen, können wir jetzt weitere Etherboot-Images auf dem selben Weg erstellen, z. B. wenn wir mehrere Samsungs haben ;)

PXE boot file installieren

Dann brauchen wir den pxelinux.0 von der neuesten version hier laden. Ich habe für DHCP die version 3.63 von http://www.kernel.org/pub/linux/utils/boot/syslinux/ benutzt :

wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.63.tar.bz2
tar -xvjf syslinux-3.63.tar.bz2 syslinux-3.63/pxelinux.0

und pxelinux.0 in den tftp root legen (ubuntu = /var/lib/tftpboot).

sudo cp -v syslinux-3.63/pxelinux.0 /var/lib/tftpboot/


Alte pxelinux.0 version laden + installieren unter einen anderen namen - wird nur benötigt für Feste IP-Adressen mit Etherboot :

wget http://www.kernel.org/pub/linux/utils/boot/syslinux/Old/syslinux-1.61.tar.bz2
tar -xvjf syslinux-1.61.tar.bz2 syslinux-1.61/pxelinux.0
sudo cp -v syslinux-1.61/pxelinux.0 /var/lib/tftpboot/pxelinux.0-1.61

Tipp: das ist auch die datei die wir oben im Etherboot image mit Feste IP's eingestellt hatten !

Wir legen die datei ab unter anderen namen damit man ggf. beides (Feste IP und DHCP) gemeinsam verwenden kann.


Dann im tftp root (/var/lib/tftpboot) ein verzeichnis pxelinux.cfg anlegen

sudo mkdir /var/lib/tftpboot/pxelinux.cfg

und eine datei pxelinux.cfg/default anlegen mit folgender inhalt :

LABEL linux
KERNEL vmlinuz-2.6.17.6-det
APPEND root=/dev/nfs nfsroot=192.168.0.1:/data/nfsroot/zendeb,tcp,timeo=60,rsize=8192,wsize=8192
IPAPPEND 1

(Evt. die IP-adressen und /srv/zendeb auf die genutze NFS server + freigabe anpassen.)

"tcp,timeo=60" war bei mir notwendig ansonten brachte NFS immer wieder die meldungen :

kernel: nfs: server 192.168.0.1 not responding, still trying
kernel: nfs: server 192.168.0.1 OK

wsize und rsize kann ect. erhöht werden auf 32768 - einfach mal ausprobieren und (später) auf dem samsung dann überprüfen was genommen wurde mit: nfsstat -m

DOM mit Grub Einrichten für Ether- und USB-boot

Vorarbeiten

!!! VORHER CHECKEN / BESORGEN !!!

  • USB-Stick mit Grub bzw. die benötigten Dateien vorhanden (siehe download) ? Oder per NFS mounten ? Oder auf eine Festplatte ? Sonst ist kein Grub einrichtbar !
  • Entscheiden, ob wir per DHCP oder mit fester IP-Adressen arbeiten wollen, siehe weiter oben unter "PXE mit festen IP-Adressen".
  • "Ubuntu Desktop Edition" oder "Knoppix" Boot-CD besorgen. Ich benutze hier Ubuntu 8.04 Desktop.

DOM anschliessen und Linux-CD booten

Damit wir das DOM neu beschreiben können, müssen wir es an einem anderen Rechner an den ersten IDE-Port (Primary IDE) anschliessen.


DOM anschliessen inkl. 5V - Anleitung hier:

DOM mit Strom versorgen

Nur so als Tipp, man braucht nur 5 V anzulegen, null kommt von dem IDE-Stecker. Und noch ein Tipp, schimpft aber nicht auf mich, wenn es schief geht! Und man muss auch nicht löten, man kann mit etwas Vorsicht einfach ein Kabel durch das 5-V-Loch stecken und umbiegen. Es darf nur keinen Kontakt zu anderen stellen haben!!


Ubuntu Desktop oder Knoppix CD einlegen und booten. Dann Terminal Shell starten.


Jetzt müssen wir feststellen, welches Device das DOM ist. Das kann man z. B. mit

ls /dev/sd*

Wenn nur das DOM angeschlossen ist, sollte hier nur /dev/sda auftauchen. Ansonsten mit

fdisk -l /dev/sda

Schauen wie gross das Device ist. Es sollte 32 MB gross sein !


Wenn das korrekte DOM-Device gefunden wurde und nicht /dev/sda ist, dann an allen stellen in diesem Beitrag "/dev/sda" ersetzen durch eurer device.


Achtung, für Nicht-Ubuntu-User. Das sudo ist ggf. bei anderen Linux Distributionen nicht notwendig bzw. verhindert die Ausführung. Notfalls das hier eingeben, dann klappt es wieder ;)

Bei Ubuntu NICHT !!

alias sudo=' '

Vorgefertigtes Boot-Image

Statt alles zu Fuß zu machen, kann man hier einfach ein vorgefertigtes DOM-Image einspielen.

Als erstes oben unter Samsung_SMT-7020S_-_Etherboot_und_USB_Boot#Downloads das DOM-Image runterladen und z. B. auf einen USB-Stick ablegen.


Dann den USB-Stick mit dem DOM-Image einlegen - er wird dann automatisch gemountet unter /media

Wechseln auf den USB-Stick (XXX ersetzen durch den korrekten Namen):

cd /media/X
bzip2 -d dom_grub_*.bz2


DOM image install (das Datum 20080601 ggf. anpassen):

sudo dd if=dom_grub_20080601.img of=/dev/sda


Nur interessant, wenn ihr USB-Boot machen wollt:

Zur Zeit ist USB-Boot im DOM-Image auf /dev/sda3 eingestellt. Und zwar weil ich das so brauche - es gibt auf mein USB-Stick drei Partitionen und die dritte ist die mit ZenDeb. Das ist wahrscheinlich bei euch nicht korrekt und ihr könnt das entweder jetzt sofort anpassen oder später.


Grub menu.lst jetzt anpassen für USB-Boot

Zuerst das DOM mounten:

mkdir /tmp/dom-boot ; sudo mount /dev/sda1 /tmp/dom-boot

und dann mit

sudo vi /tmp/dom-boot/grub/menu.lst

die menu.lst anpassen. In der Zeile, die mit "kernel" anfängt, müssen wir das "root=/dev/sda3" ändern in "root=/dev/sda1".


Grub beim Booten für USB-Boot anpassen

Man kann aber auch beim Booten vom Samsung im Grub-Menü das Device anpassen - achtung !! die Änderung ist nicht permanent !! Man muss also nach erfolgreichem Booten die menu.lst auf dem DOM nochmal anpassen!

Das macht man so. Im Grub Boot-Menü drückt man die Taste "e", dann wählt man mit den Pfeiltasten die Zeile, die mit "kernel" anfängt aus, und drückt noch mal "e". Jetzt kann man mit Pfeiltaste links zurückgehen bis "root=/dev/sda3" und ändern in das korrekte Device, z. B. "root=/dev/sda1". Wenn man fertig mit der Änderung ist, drückt man die Enter-Taste und kann mit der Taste "b" die geänderte Konfiguration booten.

Nach dem ersten erfolgreichen Boot bitte folgende Zeile in die /etc/fstab hinzufügen :

/dev/hda1           /boot          ext2     defaults,noatime 1    1


und dann das DOM unter /boot mounten + Änderungen permanent machen mit

sudo vi /boot/grub/menu.lst


Siehe aber auch weiter unten [[Samsung_SMT-7020S_-_Etherboot_und_USB_Boot#.2Fetc.2Ffstab_anpassen] für weitere Anpassungen an fstab.

Von zen2vdr Updaten auf das USB+Etherboot Imag von hier

Noch nicht getestet, könnte aber klappen ...


Wenn man jetzt zen2vdr auf dem DOM hat und zu dieses USB+Etherboot Image wechseln möchte dann könnte dies klappen :

Im script /etc/forcedflash.sh die zeile :

wget http://zen.htpc-forum.de/development/zen2vdr.img.bz2 -O - | bunzip2 > zen2vdr.img

ändern in :

wget "http://vdr.pczett.de/index.php?dir=iso/detch%20Testversion2/&file=dom_grub_XXXXXX.img.bz2" -O - | bunzip2 > zen2vdr.img

ACHTUNG !!! XXXXXX durch die aktuelle datei oben unter download ersetzten und anführungszeichen nicht vergessen !

und dann /etc/forcedflash.sh starten.


Alles selber zu fuß einrichten

Nur zur Info, es gibt oben ein fertiges DOM-Image, das man einspielen kann.


Wir wollen jetzt Grub aufs DOM installieren.

Ich gehe davon aus, dass das DOM wie oben beschrieben angeschlossen ist, dass die Linux-CD gebootet ist und wir das korrekte device (/dev/sda) gefunden haben.


DOM partitionieren

Zuerst den DOM einrichten mit cfdisk

sudo fdisk /dev/sda

Die erste Partition so groß machen wie es geht und bootbar markieren, dazu folgendes eingeben:

  • "n", "p", "1", "Enter", "Enter"
  • "a", "1"
  • "w"

Mit dem "w" werden die Änderungen geschrieben.


Das sieht dann ungefähr so aus mit

sudo fdisk -l /dev/sda
Disk /dev/hda: 32 MB, 32505856 bytes
4 heads, 32 sectors/track, 496 cylinders
Units = cylinders of 128 * 512 = 65536 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         496       31728   83  Linux


Dann das Filesystem auf den ersten Partition erstellen

sudo mkfs.ext2 /dev/sda1

DOM Mounten und Befüllen

Dann DOM boot device mounten :

mkdir /tmp/dom-boot ; sudo mount /dev/sda1 /tmp/dom-boot


Dann den USB-Stick oder was auch immer, wo das Grub etc. enthalten ist, mounten

mkdir /tmp/usb-stick ; sudo mount /dev/sdY1 /tmp/usb-stick

Damit die Beispiele funktionieren, könnt ihr aber auch einen Link auf das jeweilge (automatisch) gemountete Medium setzen.

ln -s /media/XXXXXXX /tmp/usb-stick

(XXXXXXX ersetzen durch das korrekte Verzeichnis)


Bootlaufwerk befüllen mit dem tar vom Download oben:

cd /tmp/dom-boot/
sudo tar -xvjf /tmp/usb-stick/dom-boot-grub-general.tar.bz2 


Das sieht dann z. B. wie folgt aus:

/tmp/dom-boot/ :

lrwxrwxrwx  1 root root       1 2008-05-29 14:32 boot -> .
lrwxrwxrwx  1 root root      19 2008-05-29 14:32 config -> config-2.6.17.6-det
-rw-r--r--  1 root root   37301 2008-05-16 16:16 config-2.6.17.6-det
-rw-r--r--  1 cjac cjac   23932 2008-05-29 10:22 eb-5.4.3-eepro100-IP-99.zlilo
-rw-r--r--  1 cjac cjac   23928 2008-05-29 10:23 eb-5.4.3-eepro100-IP.zlilo
-rw-r--r--  1 root root   24605 2008-05-19 14:28 eb-5.4.3-eepro100.zlilo
drwxr-xr-x  2 root root    1024 2008-05-29 10:27 grub
drwx------  2 root root   12288 2008-05-16 16:05 lost+found
lrwxrwxrwx  1 root root      23 2008-05-29 14:32 System.map -> System.map-2.6.17.6-det
-rw-r--r--  1 root root  683052 2008-05-16 16:16 System.map-2.6.17.6-det
lrwxrwxrwx  1 root root      20 2008-05-29 14:32 vmlinuz -> vmlinuz-2.6.17.6-det
-rw-r--r--  1 root root 1578353 2008-05-16 16:16 vmlinuz-2.6.17.6-det

/tmp/dom-boot/grub :

-rw-r--r-- 1 root root    197 2008-05-16 16:16 default
-rw-r--r-- 1 root root     60 2008-05-16 16:16 device.map
-rw-r--r-- 1 root root   8056 2008-05-16 16:16 e2fs_stage1_5
-rw-r--r-- 1 root root   7904 2008-05-16 16:16 fat_stage1_5
-rw-r--r-- 1 root root     16 2008-05-16 16:16 installed-version
-rw-r--r-- 1 root root   8608 2008-05-16 16:16 jfs_stage1_5
-rw-r--r-- 1 root root   1171 2008-05-29 09:42 menu.lst
-rw-r--r-- 1 root root   7324 2008-05-16 16:16 minix_stage1_5
-rw-r--r-- 1 root root   9632 2008-05-16 16:16 reiserfs_stage1_5
-rw-r--r-- 1 root root    512 2008-05-16 16:16 stage1
-rw-r--r-- 1 root root 108356 2008-05-16 16:16 stage2
-rw-r--r-- 1 root root 729088 2008-05-16 16:16 startup.mpeg
-rw-r--r-- 1 root root   9276 2008-05-16 16:16 xfs_stage1_5


Eventuell Link erstellen, damit Grub funktioniert (ist im Listing oben schon enthalten)

cd /tmp/dom-boot/
sudo ln -s . boot

(wenn der Link vergessen wird, dann gibt's Probleme ;) - siehe http://www.gnu.org/software/grub/grub-faq.en.html#q11)


Grub menu.lst anpassen

grub /tmp/dom-boot/grub/menu.lst ggf. anpassen mit :

sudo vi /tmp/dom-boot/grub/menu.lst
  • rootdelay ist bei USB-Boot notwendig, damit der Kernel genug Zeit hat, die USB-Module zu laden.
  • ggf. /dev/sda1 bei USB-Boot anpassen, wenn ihr ein anderes Device nutzt !
  • ggf. timeout anpassen ;)
default         saved
timeout         1
color cyan/blue white/blue

title           USB boot, Debian, Kernel 2.6.17.6-det
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.17.6-det root=/dev/sda1 ro rootdelay=10
savedefault

title           Etherboot DHCP - eepro100
root            (hd0,0)
kernel          /boot/eb-5.4.3-eepro100.zlilo
savedefault

title           Etherboot Feste-IP - Server 192.168.0.1 - eepro100
root            (hd0,0)
kernel          /boot/eb-5.4.3-eepro100-IP.zlilo
savedefault

title           Etherboot Feste-IP - Server 192.168.0.99 - eepro100
root            (hd0,0)
kernel          /boot/eb-5.4.3-eepro100-IP-99.zlilo
savedefault


Grub installieren

Jetzt müssen wir gut aufpassen. Fehler hier bedeuten, dass das DOM hinterher nicht bootet oder das wir was anderes kaput machen !

Also ACHTUNG !!!

In /boot/grub/device.map ist eine Liste der Devices, die im Rechner vorhanden sind. Hier muß das DOM korrekt eingeordnet werden! Das wird von grub dazu benutzt, die BIOS Drives auf den real vorhandenen Disks zu "mappen", also zu zuweisen.

Also mit

sudo vi /tmp/dom-boot/boot/grub/device.map 

das device.map editieren, der inhalt sollte so aussehen:

(hd0)   /dev/hda
(hd1)   /dev/sda

Wir gehen davon aus, dass /dev/sda das DOM auf dem jetzigen Boot-Rechner ist. /dev/hda ist später auf der Samsung das korrekte Device. Wir stellen hier ein wie es nachher aussieht, wenn das DOM in der Samsung SMT drin steckt !


Dann grub in /dev/sda1 installieren. Wir arbeiten jetzt mit einen Trick, damit wir nicht Grub auf das falsche Device schreiben. Und zwar ist es so, dass es auf unserem Boot-Device kein /boot Verzeichnis gibt, /boot ist nur ein link. Deshlab liegt Grub auch direkt unter /grub/stage1

sudo grub --config-file=/tmp/dom-boot/boot/grub/device.map 
find /grub/stage1

Das sollte nur ein Device auflisten, und zwar das auf dem DOM:

(hd0,0)


Grub wird auf hd0 gefunden, weil Grub beim Starten eine Laufwerkserkennung startet und die Liste intern selber aufbaut. Ubuntu benutzt nur /dev/sd* devices und da wir jetzt gerade auf /dev/sda installieren, findet es grub auf hd0.

(Zur Kontrolle kann man dann auch mal find /boot/grub/stage1 eingeben um zu sehen, ob er mehr findet.)


Auf jeden Fall installieren wir jetzt Grub in hd0 (oder auf was auch immer unter dem ersten "find" gefunden wurde !):

root (hd0,0)
setup (hd0)

Dann sollte das hier kommen:

 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  16 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
Done.


Damit ist grub installiert :)


Eventuell Etherboot Images auf DOM kopieren

Falls ihr die Etherboot-Images selber angepasst habt oder mein tar nicht benutzt hat, dann müssen wir jetzt die Etherboot + Kernel Images vom USB-Stick aus installieren.

Stick ggf. mounten und die oben erstellten Etherboot-Images kopieren:

sudo cp -vi eb-5.4.3-eepro100-IP.zlilo /tmp/dom-boot/
sudo cp -vi eb-5.4.3-eepro100.zlilo /tmp/dom-boot/
 

Den Zendeb Kernel (oder welchen auch immer ihr verwenden wollt für USB-Boot):

sudo cp -dpv /srv/zendeb/boot/* /var/lib/tftpboot/


DOM umounten und booten

Zuletzt dann umounten:

sudo umount /dev/sda1


Tja, das sollte alles sein. Jetzt können wir den ersten Boot wagen. Am Besten auf dem PC, an dem ihr gerade das DOM einrichtet. Dann sieht man schon mal ob Grub korrekt eingerichtet ist ! Wenn ihr Glück habt und ein eepro100 in dem Rechner eingebaut ist, könnt ihr vieleicht sogar den Etherboot testen.

/etc/fstab anpassen

Egal wie man jetzt gebootet hat, muß man hinterher /etc/fstab anpassen.

damit man grub auch nachträglich anpassen kann oder andere kernels an der richtigen stelle abgelegt werden müssen wir /boot mounten. Dazu bitte folgende zeile in die /etc/fstab hinzufügen :

/dev/hda1           /boot          ext2     defaults,noatime 1    1

und testen mit

mount /boot


Weiterhin habe ich /media und meine Video verzeichnisse von dem VDR server per NFS gemounted. Dazu /etc/fstab von ZenDeb erweitern um folgende zeilen :

192.168.0.1:/srv/zendeb-media  /media        nfs      timeo=60,intr,rsize=8192,wsize=8192
192.168.0.1:/srv/video         /media/video  nfs      timeo=60,intr,rsize=8192,wsize=8192

und testen mit :

mount /media
mount /media/video


wsize und rsize kann ect. erhöht werden auf 32768 - einfach mal ausprobieren und dann überprüfen mit:

nfsstat -m


WORK IN PROGESS - FreeVDR einrichten

Dies ist nur der Anfang eines Tests den ich mache. Also am Besten nicht beachten ;)


Als erstes freeVDR-1.0-beta.iso downloaden an einen Ort wo Platz ist.


Verzeichnisse anlegen :

mkdir -p /srv/freevdr
mkdir /srv/freevdr/boot
mkdir /srv/freevdr/media
mkdir /srv/freevdr/proc
mkdir /srv/freevdr/sys

FreeVDR installieren

mkdir /tmp/freevdriso
mount -o loop /ort-wo-zendeb-iso-liegt/freeVDR-1.0-beta.iso /tmp/freevdriso/
cd /srv/freevdr/
cp /tmp/freevdriso/HISTORY .
cp /tmp/freevdriso/README .
for i in /tmp/freevdriso/freevdr_base*.tar.bz2 ; do tar xjf $i; done


Updates einspielen - dazu bitte hier nachsehen ob es was gibt : FreeVDR Updates Verzeichnis

Und dann mit tar einspielen :