[Frage] PXE MultiBoot mit Freetz, dnsmasq und tftp-Server?

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,158
Punkte für Reaktionen
2
Punkte
38
Hallo,

ich habe auf meiner FB 7170 (freetz-devel-6143) dnsmasq mit dem tftp-Server laufen.
Auf dem an der FB angestöpselten USB-Stick liegt unter dem Pfad "/var/media/ftp/uStor01/tftp/ubuntu" ein NetBoot-Paket von Ubuntu 11.04 amd64, was auch einwandfrei funktioniert. D.h. ich kann meinen neuen Server somit über die FB mit dem o.g. Ubuntu via PXE-Boot installieren.
Nun möchte ich mir noch ein paar (andere) Live-Systeme und auch memtest in ein PXE MultiBoot-Menü packen. Dazu fand ich einige Hinweise, jedoch ist dort die Rede von Isolinux.
Hat das jemand mal versucht? Ich kam bisher mit den o.g. Beschreibungen nicht so ganz klar.
Erfahrungen damit bitte hier posten! ;) Danke!
 
Wie Dir sicher klar ist, hat das überhaupt nichts mit Freetz zu tun.

Und wenn Du schon so eine schöne Beschreibung gefunden hast, dann halte Dich doch einfach daran und verwenden Isolinux.
 
Hallo Ralf,

da Freetz die Möglichkeit bietet, mit dnsmasq ein System über PXE und NetBoot zu installieren und ich im Freetz-Forum evtl. auf User mit entsprechenden Erfahrungen treffen könnte, finde ich meine Frage hier durchaus angemessen. Aber ich akzeptiere auch Deine andere Meinung.
 
Hast Du denn konkrete Probleme mit isolinux bzw. pxelinux? Das Beispiel, das laut Deiner Frage bereits läuft, nutzt pxelinux. Vermutlich reicht es schon, die Zeilen "prompt 0" und "timeout 0" zu entfernen, um das Menü zu sehen. Ansonsten schau einfach mal bei isolinux nach, was in die Datei hineingehört und fange mit einer leeren Datei an statt mit einer Datei aus verschachtelten include-Anweisungen.
 
Ja, das geht eigentlich ziehmlich einfach. Ist so ähnlich zu konfigurieren wie Grub, hier mein Beispiel dass einmal den Debian Net installer startet, eine Iso Datei (Windows PE) in den RAM lädt und startet und einmal Memtest. In meinem beispiel gehe ich davon aus dass die dinge wie menu.cfg in dem unterordner "boot-screens" liegen. Du brauchst die dateien pxelinux.0 und vesamenu.c32

Zur DNSMASQ konfiguration: DHCP Server, Boot und TFTP server aktivieren, dran denken AVM DHCP auszuschalten. Bei TFTP Root z.b. als Pfad "/var/media/ftp/uStor03/tftp" eintragen. Dann bei DHCP boot für pxelinux "pxelinux.0" eintragen, die datei muss dann in "/var/media/ftp/uStor03/tftp/pxelinux.0" liegen.

Meine menu.cfg
Code:
menu hshift 15
menu width 49

menu title Fritz!Box PXE
include boot-screens/stdmenu.cfg
default install
label install
	menu label ^Install
	menu default
	kernel linux
	append vga=788 initrd=initrd.gz -- quiet 

label Windows 7 PE
	linux memdisk
	append iso
	initrd x86.iso

label Memtest x86+
	linux memtest86+.bin
menu end

Datei mit style: stdmenu.cfg
Code:
menu background boot-screens/splash.png
menu color title	* #FFFFFFFF *
menu color border	* #00000000 #00000000 none
menu color sel		* #ffffffff #76a1d0ff *
menu color hotsel	1;7;37;40 #ffffffff #76a1d0ff *
menu color tabmsg	* #ffffffff #00000000 *
menu color help		37;40 #ffdddd00 #00000000 none
menu vshift 17
menu rows 10
menu helpmsgrow 15
# The command line must be at least one line from the bottom.
menu cmdlinerow 16
menu timeoutrow 16
menu tabmsgrow 18
menu tabmsg Press ENTER to boot or TAB to edit a menu entry

Dann machst du einen Ordner, der "pxelinux.cfg" da erstellst du die datei "default" mit folgendem inhalt. Achte darauf dass die dateien wie hier angegeben vorhanden sind.
Code:
# D-I config version 2.0
include boot-screens/menu.cfg
default boot-screens/vesamenu.c32
prompt 0
timeout 0
 
Zuletzt bearbeitet:
Hallo Suchiman,

ganz herzlichen Dank für Deine wirklich große Hilfe! :D
NetBoot funktioniert bei mir schon (hätte ich erwähnen sollen), aber mir war nicht klar, wie ich ein Menü aufbaue, so dass mehrere Optionen möglich sind und ob die SYSLINUX- bzw. PXELINUX-Dateien irgendwie zur FB passen müssen (was nicht der Fall ist, wie auch mir nun klar ist).
Mit Deiner sehr ausführlichen Beschreibung die weitere Einrichtung nun kein Problem mehr sein.
Wenn es soweit ist, setze ich diesen Thread auf [gelöst].

PS - Sorry, jetzt muss ich doch noch einmal nachfragen:
Kannst Du bitte mal Deine kompletten Pfade der Dateien unter tftp anzeigen (mittels "ls -alR"), so dass ich sehe, wo welche Dateien und Verzeichnisse liegen?

Bei mir sieht es so aus, aber PXE kann die Config-Datei so nicht finden:
Code:
root@fb1 /var/media/ftp/uStor01/tftp $ ls -alR
.:
drwxr-xr-x    4 root     root          4096 Aug 30 07:29 .
drwxr-xr-x   11 root     root          4096 Aug 30 07:29 ..
drw-r--r--    2 root     root          4096 Aug 30 07:20 boot-screens
-rwxr-xr-x    1 root     root        164504 Aug 30 07:19 memtest.bin
-rw-r--r--    1 root     root         26442 Aug 30 06:40 pxelinux.0
drw-r--r--    2 root     root          4096 Aug 30 07:20 pxelinux.cfg

./boot-screens:
drw-r--r--    2 root     root          4096 Aug 30 07:20 .
drwxr-xr-x    4 root     root          4096 Aug 30 07:29 ..
-rw-r--r--    1 root     root           323 Aug 30 06:46 menu.cfg
-rw-r--r--    1 root     root           520 Aug 30 06:48 stdmenu.cfg
-rw-r--r--    1 root     root        155792 Aug 30 06:41 vesamenu.c32

./pxelinux.cfg:
drw-r--r--    2 root     root          4096 Aug 30 07:20 .
drwxr-xr-x    4 root     root          4096 Aug 30 07:29 ..
-rw-r--r--    1 root     root           107 Aug 30 07:22 default
Mir ist das nämlich nicht klar, und bei anderen Beispielen sehen die Dateien wiederum ganz anders us.
Danke!
 
Zuletzt bearbeitet:
Es sieht soweit gut aus, die Datei "pxelinux.cfg/default" existiert bei Dir, wenn wir mal davon ausgehen, dass /var/media/ftp/uStor01/tftp das Hauptverzeichnis des TFTP-Servers ist.
Zeigt dnsmasq im Protokoll an, auf welche Dateien versucht wurde, zuzugreifen?

Fang doch mal einfach mit einer leeren Datei an.
Die Datei heißt pxelinux.cfg/default und ist bei Dir schon vorhanden.
Du hast nicht genau geschrieben, was Du alles im Menü haben willst, deswegen hier mal ein einfaches Beispiel, ohne irgend welche includes oder sonstige Dekoration:
Code:
default harddisk

# hard disk
label harddisk
  localboot 0

# memory test
label memtest
  kernel memtest.bin
Diese Datei definiert zwei Abschnitte, harddisk und memtest. Der Eintrag harddisk startet von der Festplatte, der Eintrag memtest lädt die Datei memtest.bin, die bei Dir schon im tftp-Verzeichnis vorhanden ist. Damit solltest Du am PC nach dem Einschalten beim Booten einen Prompt bekommen, wo Du "memtest" eingeben kannst, um memtest zu starten.
Wenn das soweit funktioniert, kannst Du die Datei ergänzen um Definitionen für Farben und um aus dem Ganzen ein Menü zur Auswahl zu machen. Dabei kannst Du Dich an den vorhandenen Dateien orientieren,
 
Code:
root@fritz:/var/media/ftp/uStor03/tftp# ls -alR
.:
drwxrwxrwx    4 root     root          4096 Aug 19 19:54 .
drwxrwxrwx   13 root     root          4096 Aug 30 03:35 ..
drwxrwxrwx    2 root     root          4096 Aug 19 19:55 boot-screens
-rwxrwxrwx    1 root     root       6651416 Jun 22 22:57 initrd.gz
-rwxrwxrwx    1 root     root       2189472 Jun 22 22:57 linux
-rwxrwxrwx    1 ftpuser  users        26140 Apr 18 23:25 memdisk
-rwxrwxrwx    1 ftpuser  users       160988 Oct 22  2010 memtest86+.bin
-rwxrwxrwx    1 ftpuser  users        26442 Apr 18 23:25 pxelinux.0
drwxrwxrwx    2 root     root          4096 Aug 17 21:57 pxelinux.cfg
-rwxrwxrwx    1 ftpuser  users    145586176 Aug 13 22:07 x86.iso

./boot-screens:
drwxrwxrwx    2 root     root          4096 Aug 19 19:55 .
drwxrwxrwx    4 root     root          4096 Aug 19 19:54 ..
-rwxrwxrwx    1 root     root           324 Aug 19 19:55 menu.cfg
-rwxrwxrwx    1 root     root        855410 Aug 17 18:57 splash.png
-rwxrwxrwx    1 root     root           521 Aug 17 21:58 stdmenu.cfg
-rwxrwxrwx    1 root     root           108 Aug 17 21:57 syslinux.cfg
-rwxrwxrwx    1 root     root        163116 Jun 22 22:57 vesamenu.c32

./pxelinux.cfg:
drwxrwxrwx    2 root     root          4096 Aug 17 21:57 .
drwxrwxrwx    4 root     root          4096 Aug 19 19:54 ..
lrwxrwxrwx    1 root     root            28 Aug 17 21:57 default -> ../boot-screens/syslinux.cfg
 
Und hat noch was genau mit Freetz zu tun? Ich mein, das sieht auf meinem Linux-Server - ohne Freetz- exakt genauso aus.
 
Hallo,

ich habe DNSMASQ und TFTP auf meinen Fritz.Boxen laufen. Du kannst pxe genauso nutzen, wie auf jeder anderen Plattform auch.

Ich habe unter anderem mehrere Live images / Thinclient Images / und Installationsroutinen für nahezu jedes OS auf meinen Boxen liegen. Das ganze natürlich grafisch und mit Hilfe Doku (Damit unsere Tekkies nur noch auswählen brauchen und gut ist)

Du kannst an der stelle sogar für jeden Client einen anderen Splash Screen verwenden!
macht in bestimmte Situationen durchaus Sinn.

Schau dir dazu mal die pxelinux reference an... oder ein HowTo welches du hier finden kannst: Guckst du hier

Für dich wird es erst ab der 2. Seite interesannt, da die erste Seite schon durch DNSMASQ und TFTPD erledigt wird.

Greetz
 
Hallo!

Ich habe DNSMASQ auf meiner FB7270 eingreichtet und es funktioniert soweit auch alles.

Was ich aber nicht hinbekomme, ist die Installationsdateien von einem FTP-Server zu laden. Habe schon diverse Anleitungen aus dem Internet probiert, aber irgendwie spielt es nicht. Habe versucht den FTP-Server in der Datei "menu.cfg" einzutragen.

Kann mal jemand ein Beispiel "Posten" wo der FTP-Server eingetragen wird.

Danke und Gruß
Jojo
 
ich verstehe gerade die Frage nicht :-S

Du bootest mit dem Rechner dann per PXE in das TFTP Verzeichnis...


Auf der FritzBox hast du unter tftp root das Verzeichnis angegeben in dem die TFTP Dateien liegen sollten.

bei mir auf der 7390 sieht das in etwa so aus-> tftp root: /var/media/NEW_LINK/pxe

NEW_LINK ist der Alias für deinen USB Stick... solltest du erstmal prüfen wie der bei dir heisst

Das Verzeichnis "pxe" habe ich selber angelegt, damit ich auf dem Stick eine bessere Übersicht habe... du kannst auch alles direkt ins root legen


Verzeichnisstruktur (bei mir ab /pxe):



gpxelinux.0 (oder pxelinux.0 oder welchen bootloader auch immer du verwenden willst...)
pxelinux.cfg/default.cfg


in der default.cfg wird das Menü gesteuert.

Dort werden dann deine Startimages aufgerufen... Beispiel eine Startdiskette für MSDOS..


Über die Default.cfg rufe ich nur Untermenüs auf... zum Beispiel meine Startdisketten


LABEL Netzwerk Startdisk
MENU LABEL Netboot
KERNEL memdisk raw keeppxe
APPEND initrd=Floppy/netboot.img


und schon kannst du an jedem PXE fähigen Rechner über Netzwerk die Netzwerkbootdisk laden und dort deinen FTP Server Konfigurieren...
 
Hallo!

Mit etwas Abstand gesehen, ist mein Beitag bzw. meine Frage nicht einfach zu verstehen. Entschuldigung dafür.

Jetzt noch einmal. Meine Verzeichnisstruktur sieht fast genauso aus wie bei dir. Wie oben geschrieben funktioniert sie so auch.

Hier mal meine menu.cfg so wie sie funktioniert:
Code:
menu hshift 15
menu width 49

menu title Fritz!Box PXE
include boot-screens/stdmenu.cfg
default install
label install
	menu label ^Install
	menu default
	kernel linux
	append vga=788 initrd=initrd.gz -- quiet 
menu end

Jetzt zu meinem Problem:
Ich möchte, das der TFTP sich initrd.gz von einem FTP-Server holt. Dieser befindet sich im selben Netzwerk/Intranet aber auf einer anderen Maschine und hat dann auch eine andere IP als die Fritzbox.

Habe schon im Internet geschaut aber nichts funktionierendes gefunden. Weiss aber auch nicht genau wonach ich suchen muss.

So habe ich es probiert:
Code:
menu hshift 15
menu width 49

menu title Fritz!Box PXE
include boot-screens/stdmenu.cfg
default install
label install
	menu label ^Install
	menu default
	kernel linux
	append vga=788 initrd=initrd.gz url=ftp://user:Pass@IP-Adresse/tftp/

was ich auch versucht habe:

menu hshift 15
menu width 49

menu title Fritz!Box PXE
include boot-screens/stdmenu.cfg
default install
label install
	menu label ^Install
	menu default
	kernel linux
	append vga=788 initrd=initrd.gz Method=ftp://user:Pass@IP-Adresse/tftp/
menu end

menu end

So funktioniert es nicht! In der Log-Datei steht das er im Verzeichnis /var/media/ftp/uStor01/tftp "initrd.gz" nicht finden kann. Was ja auch logisch ist, wenn dort nicht vorhanden. Er soll ja auch unter ftp:// usw. schauen....


Danke und Gruß

Jojo
 
Nutzt du pxelinux oder gpxelinux?

soweit ich mich recht erinnere kann pxelinux nur http / tftp und halt die Standart DNS und DHCP Protokolle...

wenn du FTP machen willst brauchst du gpxelinux

Guckst du hier GPXE
oder hier PXE

und Syntaktisch sollte

append vga=788 initrd=initrd.gz url=ftp://user:pass@IP-Adresse/tftp/

reichen

ein paar gute Beispiele habe ich gerade hier gefunden.
 
Zuletzt bearbeitet:
Natürlich kann der TFTP nichts von einem FTP oder sonstigen Server holen, deswegen ist er ja eine TFTP Client. Woher hast Du das mit url oder Method?

Was Du verwenden kannst, ist iPXE. Damit kann man zum einen ROMs für konkrete Netzwerk-KArten erstellen, was aber für die meisten weniger interessant ist. Man kann iPXE aber auch vom normalen PXE nachladen und dann verwenden. iPXE unterstützt das Laden von tftp, ftp, http und anderen Protokollen.

Das einfachste aber ist, die initrd dorthin zu stellen, wo auch der Kernel ist, die beiden Dateien gehören normalerweise sowieso zusammen.
 
Da stimme ich RalfFriedl grundsätzlich erstmal zu... der einfachste Weg ist in der Tat einfach alles vom tftp Server zu laden.

und iPXE hatte ich extra nicht erwähnt.. weil des eher was für professionals ist und ich denke an der Stelle nicht zielführend sein wird.

ich denke das er mit gPXE schon richtig fährt...

habe ich selber schon mit SMB und ftp genutzt...
 
Hallo und Danke für die Hilfe!

@ TommyLee: Ja, ich benutze pxelinux. Mir war aber nicht bewusst, das pxe das ftp Protokoll nicht unterstützt. Wieder was dazu gelernt.
Werde deinen Tipp mit gpxe mal probieren. Mein Englisch ist zwar etwas eingerostet, aber wenn ich deinen Link richtig übersetzt habe, dann sollte damit FTP funktionieren.

@RalfFriedl: Danke für deine Mühe, aber iPXE scheint für Profis zu sein. Das Kernel und initrd zusammengehören, weis ich. Habe mich aber nicht drum gekümmert, denn wenn initrd per FTP geladen wird, kann man auch der Kernel per FTP laden.
URL und Method: Das habe ich mir zusammengegoogelt. Bin schon seit einigen Tagen damit beschäftigt das ganze zum laufen zu bringen.

Gruß

Jojo
 
gPXE und iPXE ist fast das Gleiche, außer dass an gPXE schon zwei Jahre nichts mehr gemacht wurde. Wenn also iPXE zu komplex ist, dass ist es gPXE auch.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.