Samsung SMT-7020S - Etherboot und USB Boot

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Allgemein

Das Ziel dieser beschreibung ist es mit GRUB als bootloader wahlweise etherboot oder Linux von USB-stick zu booten.

Vorgesehen ist 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 ?


ETHERBOOT einrichten

Hintergrundinfos und links

Wenn hier "PXE boot" steht dann ist damit Netzwerk boot gemeint. Das kann entweder über der Netzwerkkarte (geht nicht beim Samsung 7020s) oder per Etherboot image stattfinden. Siehe dazu auch http://de.wikipedia.org/wiki/Preboot_Execution_Environment


Infos zu etherboot einrichtung (wir machen das ggf. ein bischen anderes - aber gute hintergrundinfos).

http://syslinux.zytor.com/pxe.php   (pxelinux infos)
http://www.rrze.uni-erlangen.de/dienste/arbeiten-rechnen/linux/howtos/booten/pxe.shtml
http://syslinux.zytor.com/wiki/index.php/PXELINUX
http://www.vdr-portal.de/board/thread.php?postid=657188#post657188

NFS boot :

http://www.faqs.org/docs/Linux-mini/NFS-Root.html

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 nutzen) installieren


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

Jetzt muss man sich entscheiden zwischen der nutzung von einen DHCP Server oder Etherboot mit Feste IP-Adressen. Am besten vorher beides durchlesen. Zu Feste IP's siehe weiter unten unter "PXE mit feste IP-Adressen".


PXE mit DHCP-server

jetzt die konfiguration für den DHCP server für PXE boot. ACHTUNG !! ggf. 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 feste IP-Adressen

ACHTUNG !! Das hier muß man nur machen wenn man sich für Feste IP-Adressen entschieden hat und DHCP nicht benutzt/eingerichtet hat. Mit Feste IP's hat man den nachteil das man PRO CLIENT (also pro Samsung) selber eine eigene Etherboot datei erstellen muß und diese dann auf dem DOM bringen. Es hat aber den vorteil das man den DHCP Server nicht anfassen muß, z.B. weil man das nicht kann weil er nicht abschaltbar ist, jemand anderes gehört, o.ä.

DHCP ist viel flexibler !

Tipp : Vorkonfigurierte Etherboot-images mit den daten von unten sind in mein 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 das wir später auf den DOM bringen.

Im Browser http://www.rom-o-matic.net/5.4.3/ 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	(beschleuningt das booten um 3 sekunden)
 

Jetzt müssen wir die korrekten IP-Adressen einrichten. ACHTUNG !! Hier muß 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 folgende infos beutzt 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's 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:/srv/zendeb,rsize=32768,wsize=32768,agpgart,video=i810fb:vram:4,xres:800,yres:600,bpp:16,hsync1:30,hsyc2:55,vsync1:50,vsync2:85
IPAPPEND 1

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


Kernel für Netzwerk boot anpassen

Jetzt den (ZenDeb) kernel anpassen für Network boot.

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 das "*" 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 (evt. ohne "make clean") :

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

Dann den NEUEN Netzwerk-boot-kernel ins tftp root dir kopieren :

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


/etc/fstab anpassen für Netzwerk boot

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

proc /proc proc defaults 0 0
tmp tmp tmpfs defaults 1 2
none / tmpfs defaults 0 0

ggf. auch NFS mount für /video oder /media einrichten.

Dann vieleicht "/srv/zendeb/etc/vdr/sysconfig" einstellung "NETWORK" ändern in "AUS" (war notwendig im VMware test - sonst kein kompletter boot möglich)


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

Downloads

TODO: Downloadlinks kommen noch !

  • Fertiges USB+Etherboot DOM
  • Tar mit inhalt von dem DOM zum selbermachen.


Vorarbeiten

!!! VORHER CHECKEN / TUN !!!

  • 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 Feste IP-Adressen arbeiten wollen, siehe weiter oben unter "PXE mit feste IP-Adressen".
  • "Ubuntu Desktop edition" oder "Knoppix" boot-cd besorgen. Ich benutze hier Ubuntu 8.04 Desktop.


DOM anschliessen inkl. 5V - anleitung hier :

TODO: irgendwo gab es ein gutes bild von dem DOM wie man strom anschliesst.


Ohne garantie - nur aus der erinnerung ;)

Auf der rückseite gibt es Zwei lötpads - einer davon ist eckig und eine davon ist rund. Auf dem Eckigen kommt 5V, der andere muß nicht angeschlossen werden da es strom über den IDE slot bekomt.


Vorgefertigtes Boot Image

Alternativ vorgefertigtes DOM einspielen ;) DOM image install :

sudo dd if=dom-boot-grub-general.img of=/dev/sda


Alles selber zu fuß einrichten

Du hast gesehen das es ein fertiges image gibt ? Und das passt nicht ? OK, dannn los ...


Wir wollen jetzt Grub installieren auf das DOM.

Als erstes Knoppix/Ubuntu Dekstop booten und einen Terminal shell starten

Dann feststellen welches device das richtige ist :

mount
ls -la /dev/sd*

Wenn das device bekannt ist und nicht /dev/sda ist, dann an allen stellen in diesem beitrag "/dev/sda" ersetzen durch eurer device.


Zuerst den DOM einrichten mit cfdisk

sudo cfdisk /dev/sda

Die erste Partition so groß machen wie es geht und bootbar markieren. änderungen schreiben mit "write"

Das sieht dann ungefähr so aus mit "sudo fdisk -l /dev/sda" :

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          97       97744+  83  Linux

(Größe passt nicht genau da es von einem experiment unter vmware ist !)

Dann filesystem auf den ersten partition erstellen

sudo mkfs.ext2 /dev/sda

den DOM boot 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

Boot laufwerk befüllen

sudo cp -vr /tmp/usb-stick/boot/* /tmp/dom-boot/

Das sieht dann z.b. wie folgt aus.

/tmp/dom-boot/ :

lrwxrwxrwx  1 root root       1 2008-05-16 16:13 boot -> .
lrwxrwxrwx  1 root root      19 2008-05-16 16:16 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:17 grub
drwx------  2 root root   12288 2008-05-16 16:05 lost+found
lrwxrwxrwx  1 root root      23 2008-05-16 16:16 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-16 16:16 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


link erstellen damit grub funktioniert (ist im listing oben schon enthalten) :

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

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

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

sudo vi /tmp/dom-boot/grub/menu.lst
  • rootdelay ist bei USB-boot notwendig damit der kernel zeit hat die USB module zu laden
  • ggf. /dev/sda1 bei USB boot anpasen 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


Jetzt müssen wir gut aufpassen fehler hier bedeuten das 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 zuweisen.

Also mit sudo vi /tmp/dom-boot/boot/grub/device.map editieren, der inhalt sollte so aussehen :

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

(wir gehen davon aus das /dev/sda das DOM ist auf dem jetzigen boot-rechner. /dev/hda ist später auf den Samsung das korrekte device)

und dann grub in /dev/sda1 installieren

sudo grub --config-file=/tmp/dom-boot/boot/grub/device.map 
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.

Falls wir die Etehrboot images selber angepast haben oder mein tar nicht benutzt hat dann müssen wir jetzt die Etherboot + Kernel images installieren von dem USB stick oder wo auch immer sie jetzt liegen.

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/


Tja, das sollte alles sein. Jetzt können wir den ersten boot wagen. Am besten auf dem PC wo 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 !