Fragen zu diskless / netboot

Errorsmith

Kompiliertier
Hi

Ich probier gerade ein wenig mit zwei diskless Clients herum.

Ich kann nun entweder übers Netz die FreeBSD Installation laden, oder aber ein vorbereitetes root-fs. Um das zu ändern muß ich aber auf dem Server die dhcpd.conf ändern.
Ich hätte gern ein Menü in der Art:
1. FreeBSD x86
2. FreeBSD amd64
3. FreeBSD lokal installieren

Die zweite Frage wäre, ob man via pxe auch eine live-CD beziehungsweise deren Image laden kann, so daß der Client eine Umgebung bekommt die er nicht verändern kann.

Geht das mit dem normalen pxe und wenn ja: Wo muß ich mich da einlesen?

Grüße,
Errorsmith
 
Ich antworte mir mal einfach selber ;)
Es geht, allerdings nicht mit dem nativen pxeboot vom FreeBSD Loader sondern indem man den gpxelinux.0 aus den syslinux utils einsetzt. Mit dem kann man ein Menü erzeugen, indem der Benutzer auswählen kann was er laden möchte. Hier steht recht gut beschrieben wie das geht:
http://www.wonkity.com/~wblock/docs/html/pxe.html

Was ich noch nicht gelöst habe:
Nachdem pxeboot geladen wurde, schickt es eine Anfrage an den DHCP Server und will (unter anderem) wissen wo es sein rootfs herbekommt. Dazu setzt man in der dhcpd.conf den Wert:
Code:
...
    option     root-path     "/usr/data/tftpboot/clients/freebsd80releasex86";
...

Dadurch kann ich aber nur eine ganz bestimmte FreeBSD Variante laden und habe nicht die Möglichkeit den Benutzer auswählen zu lassen.

Falls jemand Ideen hat, wäre ich für Tips dankbar...

Grüße,
Errorsmith
 
reicht es nicht die menu.src anzupassen

in dem Sinn:

label meine ISO1
zu meiner ersten Release und Auswahl

label meine ISO2
zu meiner zweiten Release und Auswahl

und so weiter

die ISO's unterscheiden sich doch vom Namen und dhcpd und pxe sollten sie unterscheiden und die images unter
//usr/tftpboot/images/meine_erste_iso
/usr/tftpboot/images/menie_zweite_iso
u.s.w
Gruß
 
Last edited:
Hi

Das würde funktionieren wenn ich nur die Installtions CDs anbieten würde, in diesem Stil :
Code:
label fbsd80releaseamd64
  menu label FreeBSD 8.0 RELEASE amd64
  kernel memdisk
  initrd http://192.168.23.4/images/fbsd80release_amd64.iso.gz
  append iso raw

label fbsd80releasex86
  menu label FreeBSD 8.0 RELEASE x86
  kernel memdisk
  initrd http://192.168.23.4/images/fbsd80release_x86.iso.gz
  append iso raw

Der Punkt wo es nicht funktioniert is wenn ich eine Diskless Umgebung anbieten möchte. Der Einfachheit halber teste ich im Moment nur mit einer x86 und einer x64 Variante. Die anderen Versionen füge ich hinzu wenn ich das zum Laufen kriege. Das sieht bei mir so aus:
Code:
label freebsdamd64
    menu label FreeBSD 64 Bit
    pxe clients/freebsd-amd64/boot/pxeboot
label freebsdx86
    menu label FreeBSD 32 Bit
    pxe clients/freebsd-x86/boot/pxeboot


Und egal was ich tue: Der pxeboot macht eine eigene, zusätzliche dhcp Abfrage und lädt grundsätzlich das System das durch die Einstellung "root-path" vorgegeben ist.

Das einzige was ich bisher finden konnte, war das pxeboot ein Defaultsetting für root-path hat, das heißt wenn ich für jedes Release und jede Variante ein eigenes pxeboot kompilieren würde, mit jeweils angepaßtem root-path, dann könnte ich das entsprechend über das Menü reinladen. Klingt aber nach recht viel Arbeit und ist mir eigentlich zu viel herumgehacke... Eine Möglichkeit den Parameter "von außen" zu konfigurieren habe ich allerdings noch nicht gefunden, also muß ich da vielleicht einfach durch?


Grüße,
Errorsmith
 
Last edited:
Danke. Die hab ich schon durch. Insbesondere die letzte kenne ich fast auswendig. :D
Damit bekomme ich aber nur ein beliebiges FreeBSD System zum laufen, indem ich eben pxeboot via tftp übergebe, und dieses dann den Kernel (und alles andere) via NFS zieht. Wo es dies findet, sagt die gesetzte Variable "root-path" in der erweiterten DHCP Abfrage. Mein Problem ist aber das ich (mindestens) zwei FreeBSD Systeme anbieten möchte: Als Beispiel hatte ich ja 8.0-RELEASE amd64 und 8.0-RELEASE x86 genannt. Wünschenswert wäre es wenn ich auch zusätzlich z.B. eine 9er Version anbieten könnte.

tftp berechtigte User brauche meiner Ansicht nach nicht:
Der tftp bietet nur die pxeboot Dateien an. Dies erfolgt ohne jegliche Autentifizierung. Das heißt jeder Rechner der im selben LAN ist kann diese anfordern und das soll auch so sein. Das deckt sich ja auch hiermit:
man page zu tftpd said:
The use of tftp(1) does not require an account or password on the remote system.

Im Anschluß an den pxe Vorgang passiert eins der folgenden:

Falls der User eine Installation / Rescue CD wählt:
Die Installations/iso-Images lädt gpxelinux.0 von einem http Server (tftp geht auch, ist aber elend langsam) in die memdisk. Das funktioniert soweit und ist auch ohne Authentifizierung konfiguriert. Ich kann also die Install CDs booten oder irgendeine Linux LiveCD.

Falls der User ein Diskless System auswählt:
Das diskless System hat ein NFS root. Das funktioniert auch alles einwandfrei, ich kann nur nicht frei wählen welches FreeBSD ich booten möchte. Ich bin an die Vorgabe des rootfs vom dhcpd gebunden. Da versuche ich gerade einen Weg drumherum zu finden.
Jegliche Benutzerauthentifizierung soll übrigens nach dem Booten des Diskless Systems stattfinden. Jeder Rechner soll ohne weiteres Installationsimages abfragen können oder eben in ein diskless System booten. Ich halte das in einem kleinen LAN mit einer überschaubaren Anzahl an vertrauenswürdigen Nutzern für vertretbar.

Oder hab ich die Frage jetzt falsch verstanden?

Also kurz und knapp:
Das geht:
- Booten via pxe ins Auswahlmenü
- Booten einer LiveCD
- Booten einer Install CD
- Booten eines diskless Systems: 8.0-RELEASE amd64 (und anmelden am System, X starten)

Das geht nicht:
- Ein anderes FreeBSD als im dhcp vorgegeben starten (9.2RC, 8.0-RELEASE x86, 7.2-RELEASE als Beispiele)

Grüße,
Errorsmith
 
Das ist ein guter Ansatz, danke.
Ich weiß das es mit gpxe geht, ob pxelinux das kann schau ich mal.
Das Problem dabei ist das die Doku dazu...hm...naja... sagen wir mal sie ist besser als nichts. :rolleyes: Es gibt zwar theoretisch ein wiki, aber das ist down.

Ich hab in dem Zusammenhang auch schon mit gpxe experimentiert, das weigert sich aber zumindest auf dem Testrechner (eine virtualbox Instanz) komplett zu booten.

Irgendwie hab ich das Gefühl ich mache hier etwas völlig abstruses, exotisches und unsinniges: Es gibt kaum Doku dazu und die paar Seiten die es gibt sind entweder Mirror von anderen Seiten oder verweisen gegenseitig auf einander oder sind hoffnungslos veraltet (FreeBSD 5 und vorher).

Grüße,
Errorsmith
 
Irgendwie hab ich das Gefühl ich mache hier etwas völlig abstruses, exotisches und unsinniges

Wieso? Das System soll gefälligst das machen, was man will und nicht umgekehrt. Man bekommt viel Durchblick, wenn man etwas schwieriges gemeistert hat.

Rob
 
Ich weiß ;)
Naja. Hab mir den Ablauf nochmal angesehen. Das mit den dhcp Options funktioniert so erstmal nicht. Das pxeboot von freebsd macht ja eine eigene Abfrage. Die Abfrage Optionen von syslinux helfen mir da erst mal nicht weiter. Vom Ansatz her könnte man höchstens prüfen ob pxeboot in irgendeiner Art einen eindeutigen identifier in der Abfrage übergibt anhand dessen ich zuordnen kann welches freebsd da geladen werden soll. Kann ich aber von Arbeit aus nicht machen. Muß daher bis morgen warten...
Grüße,
Errorsmith
 
Back
Top