.titleBar { margin-bottom: 5px!important; }

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

Dieses Thema im Forum "Freetz" wurde erstellt von ao, 27 Aug. 2011.

  1. ao

    ao Aktives Mitglied

    Registriert seit:
    15 Aug. 2005
    Beiträge:
    2,078
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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!
     
  2. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  3. ao

    ao Aktives Mitglied

    Registriert seit:
    15 Aug. 2005
    Beiträge:
    2,078
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  4. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  5. Suchiman

    Suchiman Mitglied

    Registriert seit:
    8 Apr. 2011
    Beiträge:
    320
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #5 Suchiman, 29 Aug. 2011
    Zuletzt bearbeitet: 29 Aug. 2011
    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
    
     
  6. ao

    ao Aktives Mitglied

    Registriert seit:
    15 Aug. 2005
    Beiträge:
    2,078
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #6 ao, 30 Aug. 2011
    Zuletzt bearbeitet: 30 Aug. 2011
    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!
     
  7. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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,
     
  8. Suchiman

    Suchiman Mitglied

    Registriert seit:
    8 Apr. 2011
    Beiträge:
    320
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
    
     
  9. Silent-Tears

    Silent-Tears IPPF-Promi

    Registriert seit:
    3 Aug. 2007
    Beiträge:
    7,456
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BI
    Und hat noch was genau mit Freetz zu tun? Ich mein, das sieht auf meinem Linux-Server - ohne Freetz- exakt genauso aus.
     
  10. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hast hatte ich auch schon am Anfang geschrieben. Vielleicht verschiebt es jemand nach Allgemein, mit dem Titel "PXE MultiBoot"
     
  11. TommyLee

    TommyLee Neuer User

    Registriert seit:
    28 Feb. 2007
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Köln
    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
     
  12. JoJo1988

    JoJo1988 Neuer User

    Registriert seit:
    8 Jan. 2009
    Beiträge:
    21
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  13. TommyLee

    TommyLee Neuer User

    Registriert seit:
    28 Feb. 2007
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Köln
    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...
     
  14. JoJo1988

    JoJo1988 Neuer User

    Registriert seit:
    8 Jan. 2009
    Beiträge:
    21
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  15. TommyLee

    TommyLee Neuer User

    Registriert seit:
    28 Feb. 2007
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Köln
    #15 TommyLee, 7 Juni 2013
    Zuletzt bearbeitet: 7 Juni 2013
    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.
     
  16. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  17. TommyLee

    TommyLee Neuer User

    Registriert seit:
    28 Feb. 2007
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Köln
    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...
     
  18. JoJo1988

    JoJo1988 Neuer User

    Registriert seit:
    8 Jan. 2009
    Beiträge:
    21
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  19. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.