pxelinux

cosmo

Well-Known Member
Hallo,

fuer Neuinstallation verwende ich das pxeboot via pxelinux.

Nun moechte ich zusaetzlich zu FreeBSD noch die Moeglichkeit haben, NetBSD, OpenBSD, Debian usw. zu installieren.
Dazu wuerde ich einfach in der pxelinux.cfg/default zusaetzliche Eintraege machen:
Code:
label FreeBSD
  kernel freebsd.0

label OpenBSD
  kernel openbsd.0

usw.
Das boot-Verzeichnis fuers FreeBSD liegt bisher direkt unter /pxe. Ich moechte fuer jedes OS ein eigenes Verzeichnis unter /pxe erstellen, in dem dann der Loader und boot liegen. Wenn ich aber z.B. das boot-Verzeichnis von FreeBSD nach /pxe/FreeBSD/ verschiebe, findets der PXE-Loader ueber NFS nicht mehr, weil ja /pxe exportiert ist.

Hat jemand eine Idee, wie man das machen koennte?

Gruss,
cosmo
 
Hi,

ich vermute du musst mfsroot.gz erstellen (ich glaube sie heisst loopback datei) um danach die exportierte root per rc.local zu mounten.

Ich kenne auch nur unter Linux,auf der Arbeit hab ich FreeBSD (FreeSBIE) nicht getestet oder weiss ich gar nicht mehr ob ich doch getestet habe.


Code:
label FreeBSD
 kernel freebsd
 initrd   mfsroot.gz

Ein Beispiel ist die Freesbie,hoffe das hilft irgendwie weiter.
 
Es wäre nicht schlecht wenn du das auch dokumentierst und kleines howto schreibst, wäre ich dir sehr dankbar.
Wenn du Hilfe brauchst kannst du auch mir eine PN schicken oder email.

Gruss Menuhin
 
Die FreeBSD-Installation ueber PXE booten funktioniert bereits tadellos.

Ich habe einfach einen Eintrag
Code:
label FreeBSD
  kernel freebsd.0
in der pxelinux.cfg/default. Ins /pxe-Verzeichnis habe ich das /boot-Verzeichnis der mini-ISO (glaub ich), den pxeloader nach freebsd.0 kopiert. /pxe ist das Root-Verzeichnis fuer TFTP und ebenfalls ueber NFS exportiert.

Muss ich aber daheim nochmal nachschauen. Sobald alles funktioniert, werd ichs dann ausfuehrlich dokumentieren.

Problem ist halt jetzt, dass der pxeloader ueber NFS nach /boot sucht. Hab ich nur die FreeBSD-Dateien in /pxe, ist das ja kein Problem. Was aber, wenn ich /boot von mehreren OSes brauche?

Hat das bereits jemand realisiert oder eine Idee dazu, wie man das machen koennte?
 
Wie weit geht dein Bootvorgang?Login?
Wie mountest du die Root?Macht der Kernel das?
Wie sieht deine konf aus?

Du könntest auch eigenen Kernel für Diskless bauen (anpassen) eine Konf findest du im
" /usr/src/sys/i386/conf/"
wenn du die Kernelquellen installiert hast.

Ich würde sagen erst mal FreeBSD und danach die anderen einzeln.

Der Kernel sucht nicht nur nach /boot sondern nach die ganze /root sonst würdest du kein login und
init würde gar nicht starten du würdest nicht mal in single user modus landen.
Die /root kann und soll in /diskless/freebsd stehen z.B , notfalls die /home in /diskless/home so kenn ich das.
Afaik die initrd oder mfsroot.gz hat die root gemounted bei uns.
Die mfsroot.gz brauchst du nicht erstellen sie ist auch dabei bei bootonly cd.

Ich muss erhrlich zugestehen das ich mich wundere dass der kernel ausreicht.
Teste mal dies,sperr mal die Freigabe /root und sehe ob es trotzdem bootet.
Ich vermute das du so wie du jetzt hast den export gar nicht brauchst oder täusche ich mich.

Das einzige Problem ist bei unterschiedliche Hardware sprich Harwareerkennung, Einrichten von X bei
mehrere PC`s.

Ich hoffe das hilft dir weiter.
 
Wie gesagt, ich kann ueber PXE erfolgreich die Installation starten, wie wenn ich direkt von der Bootonly-ISO starten wuerde.

Ich will (vorerst) kein Diskless-System bauen, lediglich im pxelinux die Moeglichkeit schaffen, verschiedene Betriebssysteme installieren zu koennen. FreeBSD kann ich bereits erfolgreich ueber PXE installieren.

Mein Problem ist nun, wie in meinem letzten Post beschrieben, das /boot-Verzeichnis.
 
Nö,
sry wenn auch du Live CD(Installations CD) nur starten willst, brauchst du trotzdem ein kernel und eine initrd so kenn ich das,
auf diese weise hab ich sogar die MovIX am laufen gekriegt und glaub mir ich habe knoppix und mehrere linux derivate so am laufen gekriegt die vorgehensweise ist die gleich ob es linux ist oder bsd.
Auf dem Server sind auch mehrere images knoppix, movix,suse etc.
Ich sag noch mal dein problem ist nicht der /boot verzeichniss sondern der ganze image also /root.

Kannst du mir nur veraten was der sinn ist die Möglichkeit verschiedene Systeme per pxe zu installieren.
 
ls /pxe
Code:
boot
freebsd.0
pxelinux.0
pxelinux.cfg
cat pxelinux.cfg/default
Code:
default FreeBSD
LABEL FreeBSD
  KERNEL freebsd.0
cat boot/loader.conf
Code:
mfsroot_load="YES"
mfsroot_type="mfs_root"
mfsroot_name="/boot/mfsroot"
vfs.root.mountfrom="ufs:/dev/md0c"

Damit bootet das bei mir definitiv ueber PXE und ich kann installieren.

Kannst du mir nur veraten was der sinn ist die Möglichkeit verschiedene Systeme per pxe zu installieren.
- PXE, um nicht auf Floppy/CD angewiesen zu sein.
- Verschiedene Systeme, weil ich verschiedene Systeme in meinem Netz habe.
 
cat boot/loader.conf
Code:
mfsroot_load="YES"
mfsroot_type="mfs_root"
mfsroot_name="/boot/mfsroot"
vfs.root.mountfrom="ufs:/dev/md0c"


Da haben wirs der lädt die initrd trotzdem.
Teste mal dies bitte:

append initrd=mfsroot.gz

Die mfsroot.gz muss in gleichen verziehniss sein wie der kernel,verschiebe den /boot verzeichniss nach /root z.B und poste mal hier ob es geht.

Gruss Menuhin

EDIT: du muss die root angeben in pxe, z.B. nfsroot=192.168.2.1:/diskless/freebsd auch in die append zeile.
 
Zuletzt bearbeitet:
Da haben wirs der lädt die initrd trotzdem.
Teste mal dies bitte:

append initrd=mfsroot.gz

Die mfsroot.gz muss in gleichen verziehniss sein wie der kernel,verschiebe den /boot verzeichniss nach /root z.B und poste mal hier ob es geht.
Ich hab das Gefuehl, ich steh irgendwie gewaltig auf'm Schlauch.

Mit dem Eintrag
Code:
label FreeBSD
  kernel freebsd.0
funktioniert das tadellos, wenn sowohl freebsd.0 als auch das von der CD stammende /boot-Verzeichnis direkt unter /pxe liegen.

Ich hab nun die beiden mal nach /pxe/FreeBSD verschoben und die pxelinux.cfg/default abgeaendert:
Code:
label FreeBSD
  kernel FreeBSD/freebsd.0
  append initrd=/pxe/FreeBSD/boot/mfsroot.gz nfsroot=10.0.0.2:/pxe/FreeBSD

Der nfsroot-Parameter scheint keine Wirkung zu haben. Wenn ich nun uber PXE boote, bekomme ich halt das
Code:
can't load 'kernel'
Gebe ich dann ein
Code:
show boot.nfsroot.path
bekomme ich
Code:
/pxe/

Wieso ich das boot-Verzeichnis unter /pxe/FreeBSD in root umbenennen soll, verstehe ich nicht. Habs mal getan, bringt aber keine Veraenderung.


Kannst du mir bitte genauer erklaeren, was du meinst, bzw. was ich falsch mache?

MfG
cosmo
 
Der Kernel und die Initrd können in /pxe liegen die müssen nicht in /pxe/FreeBSD liegen.

Code:
label FreeBSD
kernel freebsd.0
append initrd=mfsroot.gz nfsroot=10.00.2/pxe/FreeBSD

Achte darauf das die initrd also mfsroot.gt die nfsroot auch danach mountet
Ich glaube das du die mfsroot.gz entpacken muss, mountest und in die /etc/rc.local den mount point angeben musst.
z.B.
Code:
mount 10.0.0.2:/pxe/FreebSD      /path_to_my/root

Das ist aus dem Kopf , sonst kannst du von FreeSBIE abgucken oder googeln.
can´t load kernel

Das hat nichts damit zu tun mit dem nfsroot, erstmal wird der kernel und die initrd geladen danach wird die nfsroot gemountet.
Wenn er diese Meldung rausschmeisst, heisst der findet den Kernel nicht, also bei dir freebsd.0

Was du noch machen kannst ist dein /boot Verzeichniss umzubennen in /FreeBSD aber du muss deine configs auch ändern.
 
Hmm. Irgendwie krieg ich das nicht gebacken.
Werd mal bei den Syslinuxern fragen.
Danke fuer die Hinweise.
 
Zurück
Oben