Grundsätzlich möchte ich eine ARGV-ähnliche Verwendung in der PXE-Befehlszeile, kann jedoch keine Dokumentation dazu sehen.
im grunde möchte ich so etwas weitergeben
Scientific-Linux-6 HOSTNAME VLAN
Dann in% pre einige APIs treffen, um die Netzwerkinformationen zu erhalten, die ich brauche, um sie an die KS-Konfiguration anzuhängen. Dieser Teil ist einfach, wenn ich die Parameter habe.
Schließlich möchte ich in% post einen Kochlauf starten und den Gurt zum Kochserver booten. Dies muss auch Hostname / Domainname kennen (im Grunde Hostname -f nicht in die Luft jagen), aber dies sollte nicht so schlimm sein, wenn ich die oben genannten vervollständigen kann. Leider war dies mein ursprüngliches Ziel, aber dann schlug es fehl, als mir klar wurde, dass ich den Hostnamen noch nicht festgelegt hatte.
Folgendes habe ich bisher gelernt.
$ cat linux-install/msgs/param.msg
09Kernel Parameter Help07
Some kernel parameters can be specified on the command line and will be
passed to the running kernel. This does not include options to modules
such as ethernet cards or devices such as CD-ROM drives.
To pass an option to the kernel, use the following format:
0flinux <options>07
If a different installation mode is desired, enter it after the option(s).
For example, to install on a system with 128MB of RAM using expert mode,
type the following:
0flinux mem=128M expert07
To pass options to modules, you will need to use the expert mode to disable
PCI autoprobing. When the installation asks for your device type that needs
an option or parameter passed to it, there will be a place to type those
in at that time.
Süss!? Das heißt also, auf PXE kann ich gehen wie ...
scientific-linux-6 linux ARGV_APPEND
Recht?
Dann habe ich diese Präsentation und einige andere Erwähnungen gefunden
Stick this at the top of the %pre section, and it will take anything of the form var=value
from /proc/cmdline and turn it into a variable you can use directly
set -- `cat /proc/cmdline`
for I in $*; do case "$I" in *=*) eval $I;; esac; done
Das heißt also, ich kann sagen
scientific-linux-6 linux HOSTNAME=foo.example.com, VLAN=ddd
Recht?
Dann in% pre Das heißt, ich kann
Klicken Sie auf meine API, um IP, Maske und Gateway abzurufen und das Netzwerk in etwas Ähnliches zu ändern
network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0
--gateway=10.0.2.254 --nameserver=10.0.2.1
Wie beschrieben Hier
Dann werden wir in% post für unseren Koch-Kunden-Lauf eingerichtet.
Meine Frage ist. Klingt es so, als würde das funktionieren? Gibt es einen besseren Weg? Sicher hat das schon jemand anderes gemacht?
Update (Lösung basierend auf Antwort implementiert)
In der PXE-Befehlszeile habe ich Optionen übergeben
$ hotbox linux prefix_varname="foo" prefix_another_var="bar"
(Alles, was danach linux
auf / proc / cmdline gesetzt wird, hotbox
war das PXE-Label.) Dann habe %post
ich in / proc / cmdline (in Ruby) nach allen Variablen gesucht, die mit / prefix _ * / übereinstimmen, und sie in einen Hash umgewandelt. Dies führte dazu, dass der Küchenchef es auf der Grundlage der Ergebnisse einer Webanforderung zur weiteren Konfiguration weitergab.
Hinweis: Razor war nicht da, als ich das alles gemacht habe. Ich persönlich war mit Rasiermesser nicht zufrieden und wir verwenden immer noch mehr oder weniger die oben genannte Methode.
Antworten:
Mit einfachen booleschen Optionen habe ich ein
grep
In durchgeführt/proc/cmdline
, was sehr einfach ist. Für Schlüsselwertoptionenset
scheint der Trick praktisch zu sein, obwohl ich ihn nicht ausprobiert habe. Spezifische Antworten auf Ihre Fragen:1) Ja, das klingt so. Ich habe sehr ähnliche Dinge mit Kickstart und gemacht
/proc/cmdline
.2) Nein, ich glaube nicht, dass es einen besseren Weg gibt. Der Kernel stellt seine Befehlszeilenoptionen in zur Verfügung
/proc/cmdline
, und Kickstart bietet keine allgemeinen Mechanismen für den Umgang mit Kernel-Befehlszeilenoptionen.3) Ja, das wurde schon mal gemacht. Probieren Sie es aus und kommen Sie zurück, wenn Sie es nicht zum Laufen bringen können.
Ein paar zusätzliche Gedanken:
1) Setzen Sie kein Komma zwischen die Befehlszeilenoptionen (trennen Sie sie einfach durch Leerzeichen).
2) Bei pxelinux kann es hilfreich sein, eine
append
Linie zu verwenden. Zum Beispiel:3) Netzwerkeinstellungen (wie das von Ihnen angegebene Beispiel für den Hostnamen) werden häufig besser von DHCP bereitgestellt.
quelle
Ich konnte es mit den folgenden Befehlen zum Laufen bringen, um alle Schlüsselwertpaare in Variablen zu analysieren:
quelle
Das sollte sein
Und vielleicht möchten Sie das umgeben mit:
Es wird also keine Probleme mit der Interpolation von Schuster- / Gepardenvorlagen geben.
quelle