[Debian]:initrd und intr
Hallo miteinander!
Folgendes Problem:
Ich moechte einen Kernel, z.B. "bzimage", mitsamt einem mini-root System,
z.B. "initrd.gz" von Diskette starten und ein paar bash bzw. ash-Skripte
laufen lassen (wie ueblich ueber linuxrc). linuxrc sieht wie folgt aus:
-- linuxrc --
#!/bin/ash
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
umask 022
mount -t proc -n proc /proc
trap 'echo klappt. ; exec bash' INT QUIT
for i in 1 2 3 4 5
do
echo -n "$i "
sleep 1
done
kill -2 $$
# statt exec bash
echo "klappt nicht."
exec bash
-- Skript Ende --
Starte ich jetzt von Diskette (oder was auch immer), so faehrt das System
hoch und bootet von der Ramdisk:
-- snip --
Kernelmeldungen ...
1 2 3 4^H^H 5 klappt.
bash-2.03#
-- snap --
ABER: Die Tastenkombination "ctrl-c" bringt nix, z.B. ctrl-h sieht man am
Bildschirm (auch quit=^\ will nicht klappen). Aber "kill -2 $$" klappt sehr
wohl, wie man oben sieht.
Vergleicht man das mit /etc/init.d/rcS -- also dem ersten Skript das von init
aufgerufen wird -- so funktioniert das dort ja einwandfrei (trap wird bereits
eingesetzt um QUIT INT abzufangen). Eine etwas genauere Analyse bei initrd
liefert:
-- snip --
bash-2.03# pstree -ap
(swapper,1)
|-bash(6)
| `pstree(12) -ap
|-kflushd,2)
|-(kpiod,4)
|-(kswapd,5)
|-(kupdate,3)
`-(rpciod,9)
bash-2.03# stty -a
speed 38400 baud; rows 25; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-- snap --
Ich habe dann einfach mal ^H auf intr gemapt:
-- snip --
bash-2.03# stty intr ^H
bash-2.03# stty -a
speed 38400 baud; rows 25; columns 80; line = 0;
intr = ^H; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
bash-2.03# /linuxrc
1 2 ^C^C^C3 4 5 klappt.
-- snap --
^--- meint wieder das "kill -2 $$", nicht "intr=ctrl-h"
Ein "cat /proc/interrupts" ist auch wie gewohnt. Die ueblichen keystrokes wie
^a, ^l funktionieren ebenso.
Nun die Preisfrage: Auf dem Weg vom Keyboard zum Kernel und von dort weiter,
wo bleibt das "intr" stecken? Liegt's am swapper, d.h. an initrd??
Wenn jemand eine Aufklaerung fuer dieses (Noch-)Mysterium hat, wuerde ich
mich freuen! Falls sich jemand zwecks "Nachprobieren" das anschauen moechte,
kann ich ihm gerne die entsprechenden Dateien schicken.
Gruss Jens
------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <deine emailadresse>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder: 719
Reply to: