PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : modulfreier kernel


26.03.01, 13:39
Hallo zusammen,

habe mir letztens einen neuen Kernel komiliert, allerdings voellig ohne Module. geht auch alles soweit, nur verstehe ich nicht, warum linux beim starten versucht, mit modprobe module nachzuladen, insbesondere da ich die dinge (z.B. vfat) ohnehin fest eingebunden habe. Der Grund dafuer ist wahrscheinlich, dass vorher ein Kernel mit Modulen installiert war. Ich habe nun einfach aus den /etc/rcX.d die entsprechenden Teile entfernt, aber wuerde nun gerne wissen, ob es vielleicht einen eleganteren Weg gibt...

ri

26.03.01, 13:56
hast du suse? dann kommt das root-filesystem in der ersten bootphase von einer init-ramdisk. find ich persönlich ziemlich blöd.
steht in lilo.conf was von initrd?

26.03.01, 16:02
hast du mal ein depmod -a ausgeführt?

------------------
Searching
Seek And Destroy

27.03.01, 16:13
Hallo und danke fuers prompte Antworten!

@ marsellus: Nein, ich habe Debian installiert. Wegen lilo.conf schaue ich mal nach; ich sitze hier leider in der Uni an einem dieser besch..... Windoff-Rechner.

@ thenktor: probiere ich nachher gleich aus.

ri

29.03.01, 10:11
Also:

depmod -a liefert:
QM_modules: Function not implemented

beim Hochfahren erscheinen die folgenden Meldungen:

depmod: QM_modules: Function not implemented
Loading modules: binfmt_aout modprobe: Can't open dependencies file /lib/modules/2.2.15/modules.dep
........

Das er die Module nicht laden kann bzw. nicht mal modules.dep findet ist ja klar, schliesslich sind keine Module implementiert. Aber warum versucht er ueberhaupt, Module zu laden???

ri

29.03.01, 13:35
Vielleicht solltest DU mal in den Startdateien nachschauen, ob da Module reingeladen werden wollen, die Du früher als Module hattest, jetzt aber fest implementiert hast...
Diese Einträge solltest Du entfernen

29.03.01, 23:32
Tu mal folgendes:
erstmal, 2.2.15 ist nicht aktuell, hol dir 2.2.19 (nein, nicht 2.4, der wird von potato nicht 100%ig unterstützt).
Dann machst du nach
make bzImage noch
make modules und
make modules_install

Dann müsstest du ein /lib/modules/2.2.19 Verzeichnis haben. Dann kannst du die anderen Verzeichnisse löschen. Dann noch depmod -a und update-modules und alles müsste passen.

HTH,
HansWurst

30.03.01, 09:12
Nochmal danke!

@HansWurst: Es soll ein Kernel OHNE Module werden. Aus diesem Grund macht
make modules
make modules_install
keinen Sinn. Er liefert dann auch die Fehlermeldung:
QM_Modules not implemented (oder so aehnlich)

@georgm: Welche Startdateien? Meinst du die /etc/rc?.d ?? Die habe ich mir gestern jedenfalls noch mal genauer zu Gemuete gefuehrt und festgestellt, dass dort ein Eintrag auf den Kerneldaemon (kerneld) verzeichnet ist. Was macht der da???
Ausserdem habe ich mir die /etc/modules.conf mal angesehen: hier sind ebenfalls Module eingetragen, die beim Starten geladen werden sollen.
Wie kriege ich dieses ganze Zeugs weg? Kann ich es einfach loeschen? Oder kriege ich dann Problem, wenn ich einen Kernel mit Modulen kompilieren will?
Warum werden beim kompilieren die /etc/rc?.d nicht aktualisiert?

ri

PS: Wo schon dabei bin.... warum steht linuxconf in der /etc/rc?.d ?? Wieso ist es ueberhaupt moeglich, dass sich Programme bei der Installation in die Startdateien eintragen duerfen? Gleiches passiert naemlich auch, wenn ich Crossfire installiere. Das erinnert mich doch stark an Windows....

30.03.01, 09:41
Hi red.iceman,

ich hatte auch unter Suse 7.1 nach Kernelkompilierung (modulfrei) das Problem, dass beim Booten usbmgr immer meckerte.

Da habe ich kurzerhand aus /etc/init.d die Datei usbmgr nach /tmp verschoben.
Seitdem versucht das System nicht mehr beim Hochfahren das usb Modul zu laden.

Beste Grüße,
Holger

30.03.01, 14:56
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von red.iceman:
Hi HolgerW,

das geht natuerlich. Soweit wie ich das bisher verstanden habe, enthaelt die /etc/init.d die Programme, die beim Start hochgefahren werden KOENNTEN. Welche davon genutzt werden, steht anscheinend in den /etc/rc?.d, je nach runlevel. Wenn ich nun aber einen neuen Kernel kompiliere, sollte diese Verzeichnisse doch eigentlich mit aktualisiert werden, oder nicht?! Wenn nicht, wie entstehen diese Verzeichnisse ueberhaupt?
Und warum koennen sich dort einfach irgendwelche Programme ohne mein Wissen eintragen?

ri[/quote]


Hi,

/etc/init.d wird leider offensichtlich nicht aktualisiert. Sonst hätte nach meiner Kernelneukompilierung ohne Module die Datei usbmgr gar nicht mehr stehen dürfen.

Grüße,
Holger

30.03.01, 16:01
Hi!

Ich blaub ich habe die Lösung:
in der Datei /etc/rc.d/boot steht das hier:

------------------------

MODULES_DIR=/lib/modules/`uname -r`
if test -x /sbin/depmod -a -d $MODULES_DIR ; then
for i in $MODULES_DIR/* $MODULES_DIR/*/* /etc/conf.modules ; do
test -e $i &#0124;&#0124; continue
if test $i -nt $MODULES_DIR/modules.dep ; then
rm -f $MODULES_DIR/modules.dep
break
fi
done
if test ! -e $MODULES_DIR/modules.dep ; then
echo -n Setting up $MODULES_DIR
/sbin/depmod -a > /dev/null 2>&1
rc_status -v -r
fi
fi

-------------------------
und diese Datei wird ja beim Start ausgelesen;
folglich, wenn man diesen Eintrag auskommentiert,
dann wird linux gar nicht mal versuchen die module zu laden/ modprobing zu machen.

Teste ich gleich mal...

Zucker.

30.03.01, 16:16
Hi!

Nee, hat nicht geklappt;

übrigens; ich habe eine _leere_ Datei /lib/modules/2.4.2/modules.dep erstell -

jetzt bekomm ich zwar nicht den Fehler von vorhin, aber einen anderen:

modprobe: QM_MODULES: Funktion not implemented

Hmm...
:-(

Zucker

30.03.01, 23:01
Hi HolgerW,

das geht natuerlich. Soweit wie ich das bisher verstanden habe, enthaelt die /etc/init.d die Programme, die beim Start hochgefahren werden KOENNTEN. Welche davon genutzt werden, steht anscheinend in den /etc/rc?.d, je nach runlevel. Wenn ich nun aber einen neuen Kernel kompiliere, sollte diese Verzeichnisse doch eigentlich mit aktualisiert werden, oder nicht?! Wenn nicht, wie entstehen diese Verzeichnisse ueberhaupt?
Und warum koennen sich dort einfach irgendwelche Programme ohne mein Wissen eintragen?

ri

31.03.01, 10:58
also, am besten du löscht mal die /lib/modules/deine kernelversion, sonst kommt dann was durcheinander, und bei debian schreibt der die module die beim start geladen werdenn sollen in die /etc/modules , da löscht du einfach die einträge, und schon müsstes gehen, dann kannste auch noch das paket modutils deinstallieren, da sind die ganzen proggies zur module verwaltung drin, brauchste ja dann sowieso nich mehr
ff -- viel vergnügen

01.04.01, 14:33
Hi neo2k,

bin gerade hier in den Computerpool der Uni gekommen, um euch mitzuteilen, dass man eigentlich nur die modutils deinstallieren muss! Aber wie ich sehe, warst du schneller...;-)
Jedenfalls funktioniert es so. Trotzdem hab ich noch eine kleine Frage dazu (bin unersaettlich):
1.) wenn ich z.B. 2 Kernel habe (z.B. einen alten und einen neuen), wovon einer mit und der andere ohne Modulen ist, dann braeuchte ich die Module natuerlich noch. Gibt es dann eine Moeglichkeit zu sagen: kernel1 mit Modulen hochfahren, Kernel2 ohne?
2.) Nun diese Frage ist nicht neu, ich stelle sie bloss immer wieder in der Hoffnung, dass mir das irgendjemand erklaeren kann: Warum darf sich ein Programm beim installieren in die /etc/rc?.d (?=Runlevel) eintragen? Ich verstehe es noch, wenn es sich um Systemprogramme handelt wie modutils u.a., aber Spiele?????

Vielen Dank schon mal an alle, die geantwortet haben!!

ri

pitu
02.04.01, 16:08
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von marsellus:
hast du suse? dann kommt das root-filesystem in der ersten bootphase von einer init-ramdisk. find ich persönlich ziemlich blöd.
steht in lilo.conf was von initrd?[/quote]


Das musst du mir mal erklaeren. Bei der installation ja, aber bei jedem booten ????

thorsten

------------------
Thorsten Wandersmann
SuSE GmbH, Nuernberg

05.04.01, 09:38
bei meiner letzten 7.0 installation hatte ich
&nbsp; initrd=/boot/initrd
in lilo.conf
und die wurde auch jedesmal geladen

pitu
05.04.01, 14:42
Die initrd ist kein root-filesystem.

Initial Ramdisk bedeutet, dass der Kernel, bevor er komplett geladen ist, an einer bestimmten Stelle auf der Platte ein Image in den speicher laedt, und die module, die darin abgespeichert sind, laedt.

normalerweise wird dies nicht benoetigt, es sei denn, man bootete von SCSI oder aus dem Netzwerk.

In diesem Fall befindet sich in der initrd das modul fuer den SCSI-Treiber bzw der Netzwerktreiber.

Die initrd verhindert damit sozusagen, das man die Treiber fest in den Kernel kompilieren muss.

Das ist alles. ein root-filesystem ist das nicht.

thorsten

------------------
Thorsten Wandersmann
SuSE GmbH, Nuernberg

05.04.01, 15:38
ich hatte folgendes in /usr/src/linux/Documentation/initrd.txt gefunden:


When using initrd, the system typically boots as follows:
1) the boot loader loads the kernel and the initial RAM disk
2) the kernel converts initrd into a "normal" RAM disk and frees the memory used by initrd
3) initrd is mounted read-write as root
4) /linuxrc is executed (this can be any valid executable, including shell scripts; it is run with uid 0 and can do basically everything init can do)
5) linuxrc mounts the "real" root file system
6) linuxrc places the root file system at the root directory using the pivot_root system call
7) the usual boot sequence (e.g. invocation of /sbin/init) is performed on the root file system
8) the initrd file system is removed