From: Raphael Becker (beckerra_at_rumms.uni-mannheim.de)
Date: 06. Apr 2000
Hallo zusammen,
ich hab ein kleines (kniffeliges) Problem mit meinem Laptop, der unter
Slackware7 (Kernel 2.2.12) läuft, und zwar folgendes:
Der Kernel versucht noch _vor_ dem Starten von init eine Reihe von
Modulen zu laden und tut dies auch teilweise (halt alles, was geladen
werden kann, weil vorhanden). BTW: Bei meinen SuSE-Systemen hab ich
sowas noch nicht beobachtet, daß Module _vor_ init geladen werden.
Ich verwende einen Slackware-Defaultkernel.
Das hat zum Beispiel zur Folge, daß auch das Modul "parport_pc"
geladen wird, jedoch im "polling"-Modus (??), d.h. ohne IRQ.
Da ich nicht plane, einen Drucker anzuschließen, sondern gerne PLIP
damit machen möchte (was ja an sich schon funktioniert) und PLIP
zwingend einen IRQ für das Modul parport_pc verlangt, habe ich ein
kleines Problem.
========================
Wenn ich den init-Mechanismus von Slackware verstanden habe (ich denke
schon, ich bin alles Schritt für Schritt durchgegangen), dann wird
beim booten in Runlevel 3 (Multiuser, kein X) von "init" aus zunächst
/etc/rc.d/rc.S und danach /etc/rc.d/rc.M gestartet, die folgenden
Auszüge aus /etc/inittab belegen das offenbar (AFAIK):
# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:
# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S
# Script to run when going multi user.
rc:2345:wait:/etc/rc.d/rc.M
rc.S startet (wie bei den meisten anderen Distris auch) nur Sachen wie
"swapon", Testen der Filesysteme, PCMCIA und so weiter.
Extern werden (ganz zum Schluß) rc.modules, rc.pcmcia, rc.serial,
rc.sysvinit (so ne Art Kompatiblitätsscript für "echte" Init-Scripte)
ausgeführt (als "include")
In rc.modules wird nach den Modul-Dependencies direkt parport, lp und
plip initialisiert (wobei ich lp auskommentiert habe).
Der wichtige Part sieht so aus:
### PC parallel port support (loaded by default if not built-in) ###
if cat /proc/ksyms | grep "\[parport_pc\]" 1> /dev/null 2> /dev/null ;
then
echo "parport0 is built-in, not loading module" #> /dev/null
read junk
else
if [ -r /lib/modules/`uname -r`/misc/parport_pc.o ]; then
# Generic setup example:
#/sbin/modprobe parport_pc
# Hardware specific setup example (required for PLIP and better
# performance in general):
/sbin/insmod parport_pc io=0x378 irq=7
fi
fi
Der Abschnitt vor "else" wird nie ausgeführt, was ja an sich auch in
Ordnung ist, das "insmod" im "else"-Zweig scheitert aber offenbar,
d.h. es wird kein IRQ zugewiesen, obwohl der insmod-Befehl ausgeführt
wird (siehe auch Bildschirmausgabe unten).
Das darauffolgende Laden von plip scheitert dann am fehlenden IRQ von
parport_pc.
Der Output der Stelle im Skript sieht so aus:
parport0: PC-style at 0x378 [SPP,PS2]
plip: parport0 has no IRQ.
plip: no devices registered
/lib/modules/2.2.13/net/plip.o: init_module: Device or resource busy
Nunja, danach bootet das System "normal" weiter, überschüttet mich mit
Fehlermeldungen (Netzwerk nicht gefunden etc) zB /etc/rc.d/rc.inet1:
# rc.inet1 This shell script boots up the base INET system.
[es folgen viele ifconfig, route und sonstige Netzwerk-Basics]
Nunja, wenn dann auch Sendmail nicht mehr versucht auf den DNS
zuzugreifen und ich endlich einloggen kann, dann reicht ein händisches
# rmmod parport_pc
# insmod parport_pc io=0x378 irq=7
# insmod plip
# /etc/rc.d/rc.inet1
und mein System läuft einwandfrei, incl alle routen, interfaces etc
pp).
Große Preisfrage: Warum wird parport geladen, jedoch mit falschen/ohne
Parameter?
Es ist ja ganz offensichtlich geladen, denn sonst könnte ich es ja
nicht per rmmod entfernen.
Wieso funktioniert das alles, wenn ich es Schritt für Schritt auf der
Console eingebe und nicht aus den Startscripten heraus (die ja genau
das enthalten, was ich auch eingebe)?
Wieso weigert sich parport_pc, mit IRQ zu starten, wenn ich ihn
explizit _im_ _Skript_ angebe? Wieso tut er es dann ohne zu murren,
wenn ich es von Hand eingebe?
Ich hab mal ein paar wichtige Dateien aus /etc ge-tar-gzip-t und auf
http://home.pages.de/~rhb/etc.tar.gz (~34 kB) abgelegt. Wer mal Lust
hat darin zu blättern ... vielleicht hab ich was Elementares übersehen
Danke schonmal für alle Hinweise.
Gruß
Raphael Becker
-- Hi! I'm a .signature virus! Copy me into your ~/.signature to help me spread! http://signature.home.pages.de/
Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET