View previous topic :: View next topic |
Author |
Message |
s|mon Apprentice
Joined: 04 Jul 2004 Posts: 209 Location: Bayern [de]
|
Posted: Sat Apr 06, 2013 5:10 pm Post subject: Skripting: Argumente an Init aus Initramfs uebergeben |
|
|
Hi,
Vorgeschichte:
folgendes init script habe ich seit einiger Zeit zuverlässig im Einsatz: http://en.gentoo-wiki.com/wiki/DM-Crypt_with_LUKS#Initramfs.27s_init
Beim Wechsel zu udev-200 hatte ich einen Tippfehler in conf.d/net und daher eine andere IP (was wiederrum mysql init nicht mochte und ich beim Start von mysql stecken blieb (vor ssh))
Dann habe ich versucht mit Kernel Parametern in den single-user mode zu kommen um meinen Fehler zu korrigieren.
Leider schlugen alle Versuche verschiedene Befehle an meine 'kerne'-Zeile in Grub anzuhängen fehl (1,single,softlevel=single,init_opts=single,init=/bin/sh).
Ich kam jedesmal wieder in runlevel-3 mit hängendem mysql raus.
Nun hab ich gesehen das dieses Init-Skript scheinbar keinerlei Parameter and das eigentliche Init übergibt und wollte dies verbessern.
Ich habe im parse_cmdl_args() eine default option eingefügt welche alle nicht vom Skript erwarteten Argumente in einem neuen Array sammelt und wollte dieses dann init übergeben
Dies scheint in einem Testskript in meiner normalen Umgebung zu funktionieren aber wohl nicht in der Umgebung vom Initramfs (unexpected "(" beim erweitern des Arrays, expected ;
Gibt es eine elegante Methode die Argumente an Init weiterzureichen? Ich möchte ungern auf diese flexibilität verzichten und wenn möglich gleich was lernen.
Danke,
s|mon
Code: |
parse_cmdl_args() {
...
ikey_swap=*)
x="`echo "${param}" | cut -d'=' -f2 | tr ":" " "`"
gv_key_swap_mode="`echo ${x} | cut -d' ' -f1`"
gv_key_swap_device="`echo ${x} | cut -d' ' -s -f2`"
gv_key_swap_filepath="`echo ${x} | cut -d' ' -s -f3`"
;;
*)
newargs=("${newargs[@]}" "$param")
;;
|
Code: |
do_switch() {
/bin/umount -l /dev
shell_checkpoint 6
exec switch_root /new-root "${uv_init}" "${newargs}"
}
|
|
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Sun Apr 07, 2013 12:06 pm Post subject: |
|
|
Arrays sind Bashismen. Eine typische initram wird aber eher dash oder busybox benutzen. Statt arrays musst Du dann Variablen benutzen. Wenn Du dabei auch Leer- und diverse Sonderzeichen sauber behandeln willst, kannst Du dazu beispielsweise das kurze Script aus app-shell/push benutzen. |
|
Back to top |
|
|
s|mon Apprentice
Joined: 04 Jul 2004 Posts: 209 Location: Bayern [de]
|
Posted: Mon Apr 08, 2013 5:39 pm Post subject: |
|
|
Danke - werd ich kommendes Wochenende gleich mal ausprobieren. |
|
Back to top |
|
|
|