Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Skripting: Argumente an Init aus Initramfs uebergeben
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
s|mon
Apprentice
Apprentice


Joined: 04 Jul 2004
Posts: 209
Location: Bayern [de]

PostPosted: Sat Apr 06, 2013 5:10 pm    Post subject: Skripting: Argumente an Init aus Initramfs uebergeben Reply with quote

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
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6747

PostPosted: Sun Apr 07, 2013 12:06 pm    Post subject: Reply with quote

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
View user's profile Send private message
s|mon
Apprentice
Apprentice


Joined: 04 Jul 2004
Posts: 209
Location: Bayern [de]

PostPosted: Mon Apr 08, 2013 5:39 pm    Post subject: Reply with quote

Danke - werd ich kommendes Wochenende gleich mal ausprobieren.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum