utiliser initrd pour le lancement du système - Installation - Linux et OS Alternatifs
Marsh Posté le 18-07-2003 à 21:34:04
ls -l /var/log/
total 39132
-rw-r----- 1 root adm 3418 2003-07-18 06:25 auth.log
-rw-r----- 1 root adm 404617 2003-07-18 21:27 daemon.log
-rw-r--r-- 1 root root 0 2003-04-16 23:27 debconf-notes.log
-rw-r----- 1 root adm 7646612 2003-07-18 21:28 debug
-rw-r--r-- 1 root root 15094 2003-07-17 07:49 dmesg
drwxrwx--- 2 root dialout 4096 2003-04-19 17:31 efax
-rw-r--r-- 1 root root 1359408 2003-07-16 00:21 faillog
-rw-r--r-- 1 root root 7044 2003-06-10 23:01 fontconfig.log
drwxr-xr-x 2 root root 4096 2003-07-17 07:50 gdm
-rw-r--r-- 1 root root 0 2003-03-23 15:47 kdm.log
-rw-r----- 1 root adm 18432492 2003-07-18 21:33 kern.log
drwxr-xr-x 2 root root 40960 2003-07-18 21:00 ksymoops
-rw-rw-r-- 1 root utmp 16539464 2003-07-17 23:54 lastlog
-rw-r--r-- 1 root root 0 2003-07-06 06:47 lp-acct
-rw-r--r-- 1 root root 0 2003-07-06 06:47 lp-errs
-rw-r----- 1 root adm 132 2003-07-17 07:49 lpr.log
drwxrws--- 2 root gdm 4096 2003-04-20 06:47 mail
-rw-r----- 1 root adm 10979102 2003-07-18 21:33 messages
drwxr-xr-x 2 root root 4096 2003-02-19 06:26 news
drwxr-xr-x 2 root root 4096 2001-09-30 17:40 ntpstats
-rw-r--r-- 1 root root 7245 2003-06-09 14:14 nvidia-installer.log
-rw-r--r-- 1 root root 1143131 2003-07-18 21:30 plgrenouille.log
-rw-r----- 1 root adm 7 2003-05-23 19:30 ppp-connect-errors
drwxr-x--- 2 root adm 4096 2003-06-08 06:26 samba
-rw-r--r-- 1 root root 2244 2003-07-18 12:56 scrollkeeper.log
-rw-r----- 1 root adm 2733 2003-06-02 06:26 setuid.changes
-rw-r----- 1 root adm 415678 2003-06-02 06:26 setuid.today
-rw-r----- 1 root adm 415678 2003-05-31 06:26 setuid.yesterday
-rw-r----- 1 root adm 317806 2003-07-18 21:33 syslog
-rw-r----- 1 root adm 6177 2003-07-17 07:57 user.log
-rw-r--r-- 1 root root 0 2003-01-18 06:26 uucp.log
drwxrws--- 3 root adm 4096 2002-09-24 22:44 webmin
-rw-r--r-- 1 root root 0 2003-02-14 00:03 wmtp
-rw-rw-r-- 1 root utmp 34176 2003-07-17 23:54 wtmp
-rw-r--r-- 1 root root 22924 2003-07-18 20:32 XFree86.0.log
Fait ton choix ...
... syslog ... messages ...
Marsh Posté le 18-07-2003 à 21:48:31
Merci Humidifier
j'avais regardé dans /var/log mais sans rien trouver avant de poster.
Et je n'ai pas trouvé après avoir réessayé
Voici ce que je fais :
au démarrage de mon PC, j'arrive à lire le message suivant :
modprobe: can't locate module
après m'être logué, je fais :
less /var/log/*
et à l'intérieur de chaque fichier lu par less, je recherche la chaine de caractère :
modp
(puisque je suis sur d'avoir au moins un message d'erreur de modprobe au démarrage).
Mais less n'a rien trouvé ...
Donc, les messages au démarrage sont stockés autre part ?
Marsh Posté le 18-07-2003 à 22:23:28
T'es sur ???
Ce que je te conseil pour voir.
cd /var/log/
cat /dev/null > syslog
reboot
Puis tu te frappe le syslog en entier pour voir.
Il y a tout à l'intérieur.
Marsh Posté le 18-07-2003 à 22:47:15
Oui, tu me proposes d'y voir plus clair en vidant le fichier /var/log/syslog
j'ai bien suivi tes instructions mais j'arrive au même résultat :
seul les messages du noyau sont enregistrés dans ce fichier et sur toutes les lignes, on peut voir un
kernel:
Il y a aussi les messages de init et cron qui apparaissent mais pas ceux concernant modprobe ou lsmod
Merci de ton aide
Ce doit pas être très simple et mes premières recherches sur google n'ont rien donné en français
En anglais, j'ai aussi essayé ceci :
get all of the startup messages linux
sans résultats pour le moment...
Marsh Posté le 18-07-2003 à 22:53:53
Dès que tu trouve post le résultat, ça peux aider.
Cho ...
Marsh Posté le 18-07-2003 à 23:24:28
Humidifier a écrit : Dès que tu trouve post le résultat, ça peux aider. |
Je poursuis mes recherches.
Peux-tu poster le contenu de ton /etc/syslog.conf ?
Ça pourrait peut-être m'aider...
Marsh Posté le 19-07-2003 à 00:55:06
T'as pas le message que tu cherches dans /var/log/messages ?
Sinon pour rechercher une expression dans les fichiers d'un dossier, un truc du genre
Code :
|
marche a peu près.
a+
Marsh Posté le 19-07-2003 à 01:17:47
marx a écrit : T'as pas le message que tu cherches dans /var/log/messages ?
|
Merci de ton aide marx
grep est très bien et je l'utilise assez souvent mais je n'obtiens pas de réponses sur modprobe (qui m'affiche pourtant un message d'erreur au démarrage, il n'y a aucun doute !)
Mais ça n'apparait pas dans /var/log/*
Mes recherches sur google m'ont permis de constater de manière certaine que tous les messages du démarrage pouvaient être stockés dans ce fichier /var/log/syslog
Je pense que le problème vient de quelque chose de mal configuré ou mal installé sur mon PC.
C'est pour ça, si votre fichier /var/log/syslog contient (ou a contenu) des messages d'erreurs autres que ceux du noyau, init et cron, pouvez-vous poster le contenu de votre fichier /etc/syslog.conf ?
Car je crois que ce fichier de configuration est une clef pour comprendre les enregistrements qui sont faits dans /var/log/syslog
Marsh Posté le 19-07-2003 à 02:42:59
*/désolé d'avoir froissé l'utilisateur averti de grep que tu es
*/mon /etc/syslog.conf [mandrake 9.1]
Code :
|
Marsh Posté le 19-07-2003 à 02:57:22
je sais plus comment on dit en anglais 'le cat inutile de l'année'
Citation : cat /dev/null > syslog |
-->
> syslog |
et voilà
Marsh Posté le 19-07-2003 à 04:18:15
++Taz a écrit : je sais plus comment on dit en anglais 'le cat inutile de l'année'
et voilà |
http://linuxfr.org/tips/107.html
Marsh Posté le 19-07-2003 à 09:43:31
S-GAIA a écrit : |
# /etc/syslog.conf Configuration file for syslogd.
#
# For more information see syslog.conf(5)
# manpage.
#
# First some standard logfiles. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail/mail.log
user.* -/var/log/user.log
uucp.* /var/log/uucp.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info -/var/log/mail/mail.info
mail.warn -/var/log/mail/mail.warn
mail.err /var/log/mail/mail.err
# Logging for INN news system
#
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
#
# Some `catch-all' logfiles.
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg *
#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
# news.=crit;news.=err;news.=notice;\
# *.=debug;*.=info;\
# *.=notice;*.=warn /dev/tty8
# The named pipe /dev/xconsole is for the `xconsole' utility. To use it,
# you must invoke `xconsole' with the `-file' option:
#
# $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
# busy site..
#
daemon.*;mail.*;\
news.crit;news.err;news.notice;\
*.=debug;*.=info;\
*.=notice;*.=warn |/dev/xconsole
Marsh Posté le 19-07-2003 à 10:43:03
S-GAIA a écrit : |
Eurf
Tu veux capturer les message du programme init je suppose?
Pask'il sont pas dans dmesg.
En faite c'est super ... con
Regarde sur ton clavier ... plus haut entre la touche "print screen" et la "touche pause/break" tu as une touche magique :
_scroll lock_
Tu appuis dessus et ca block le boot
Tu peux matter les message d'erreur de insmod !
Voila
Marsh Posté le 19-07-2003 à 15:07:55
marx a écrit : */désolé d'avoir froissé l'utilisateur averti de grep que tu es |
Mais, non pas du tout. Tu ne m'as pas froissé (ce serait dingue ! ) Et merci pour le post de ton /etc/syslog.conf
Humidifier a également posté le sien et j'ai vérifié : j'ai *exactement* le même au caractère près (normal, on a tous les 2 la même distro et aucun de nous 2 n'a modifié le contenu par défaut de ce fichier).
Pour finir, merci CSCMEUH
Dans le passé, j'avais dû essayer des trucs comme (alt+pause, pause, ctrl+arrêt défil, etc. ...)
Finallement, la bonne touche est arrêt défil (ou scroll lock pour ceux qui ont un clavier où c'est écrit en anglais).
Vraiment génial !
(mais j'ai dû tout recopier depuis l'affichage écran, vu que j'ai pas trouvé comment récupérer l'info dans un fichier )
Par contre, après il faut pas oublier de régler l'heure .
(le temps de recopier les écrans gelés et mon PC a pris 1/4 d'heure de retard)
Peut-être que l'explication de mon problème avec les contenus des fichiers logs de /var/log se trouve dans les messages de démarrage.
Voici comment j'ai procédé à l'installation :
j'ai les 7 CDs de ma Debian Woody et il y a une chose très étonnante : tous les CDs sont bootables ; le noyau qui sera installé sera différent suivant le CD inséré pour démarrer l'installation !
Tous les CDs proposent l'installation d'un noyau 2.2.20 avec des "saveurs" différentes suivant les CDs (2.2.20-compact, 2.2.20-idepci, etc. ...)
Le seul CD à ne pas proposer un noyau 2.2.20 est le CD n°5. Si on boot avec au démarrage, c'est le noyau 2.4.18-bf2 qui sera installé.
Après installation, je me suis rendu compte que debian proposait des saveurs intéressantes pour les noyaux 2.4.18. Ils ont fait des paquets .deb tout prêts qui contiennent des noyaux déjà compilés (ouf !) et optimisés suivant son processeur.
J'ai un Athon XP 1700+, donc j'ai choisi le noyau 2.4.18-k7
Mais ce noyau n'est pas directement chargeable par lilo, ce qui impose de passer par le chargement d'une image temporaire dans la ram qui permettra ensuite de charger le noyau 2.4.18-k7
Il faut donc ajouter la ligne de commande init=initrd.img
(sur mon système, cela indique le lien symbolique qui pointe vers le bon fichier img de /boot)
Mais tout cela a eu des conséquences : des messages d'erreurs sont survenus au démarrage et c'est aussi peut-être à cause de cela que toutes les infos de démarrage ne sont pas enregistrée dans /var/log
Voici ma recopie (manuelle ) de tous les messages apparus au démarrage :
- les messages d'erreurs y sont soulignés
- d'autres messages qui me semblent importants apparaissent en gras
---------------------------------------------------------
Serial driver version 5.05c (2001-07-08) with HUB-6 MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
block: 128 slots per queue, batch=32
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Cronyx Ltd Synchronous PPP and CISCO HDLC (c) 1994
Linux port (c) 1998 Building Number Three Ltd & Jan "Yenya" Kasprzak.
NET4: Linux TCP/IP 1.0 fir NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 2048 buckets, 16Kbytes
TCP: Hash tables configured (established 16384 bind 16384)
Linux IP multicast router 0.06 plus PIM-SM
RAMDISK: cramfs filesystem found at block 0
RAMDISK: Loading 2656 blocks [1 disk] into ram disk? done.
Freeing initrd memory: 2656k freed
VFS: Mounted root (cramfs filesystem)
Freeing unused kernel memory: 212k freed
warning: can't open /etc/mtab: No such file or directory
Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep
modprobe: Can't locate module *
Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
Journalled Block Device driver loaded
insmod: Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep
Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33Mhz system bus speed for PIO modes; override wiht idebus=xx
VP_IDE: IDE controller on PCU bus 00 dev 89
PCI: No IRQ known for interrupt pin A of device 00:11.1.
Please try using pci=binosirq[/g]
VP_IDE: chipset revision 6
VP_IDE: not 100% native mode: will probe irqs later
VP_IDE: Unknown VIA SouthBridge, contact Vijtech Pavlik <vojtech@suse.cz>
hda: Maxtor 6Y080P0, ATA DISK drive
hdd: CREATIVE CD2422E, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7, 0x3f6 on irq 14
ide0: probed IRQ 14 failed, using default.
ide1 at 0x170-0x177, 0x776 on irq 15
ide1: probed IRQ 15 failed, using default.
insmod: Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep
hda: 160086528 sectors (81964 MB) w/7936KiB Cache, CHS=158816/16/63
Partition check:
/dev/ide/host0/bus0/target0/lun0: [PTBL] [9964/255/63] p1 p2
insmod: Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep
ext3: No journal on filesystem on ide0(3,2)
mount: wrong fs type, bad option, bad superblock on /dev2/root, or too many mounted file systems
insmod: Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep
warning: can't open /etc/mtab: No such file or directory
INIT: version 2.84 booting
Activating Swap: 248968k swap-space (priority -1)
Checking root file system?
fsck 1.27 (8-March-2002)
/dev/hda2: clean, 34519/2443200 files, 200494/4883760 blocks
System time was Sat Jul 19 10:23:34 UTC 2003.
Setting the System Clock using the Hardware Clock as reference?
Real Time Clock Driver v1.10e
System Clock set. System local time is now Sat Jul 19 10:23:35 UTC 2003
Calculating module dependencies? spurious 8259A interrupt: IRQ7.
done.
Loading modules:
Checking all file systems?
fsck 1.27 (8-March-2002)
Setting kernel variables.
Loading the saved-state of the serial devices?
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x03f8 (irq = 3) is a 16550A
Mounting local filesystems?
nothing was mounted
Cleaning: /etc/network/ifstate.
Setting up IP spoofing protection: rp_filter.
Configuring network interfaces: done.
Setting the System Clock using the Hardware Clock as reference?
System Clock set. Local time: Sat Jul 19 12:28/35 CEST 2003
Cleaning: /tmp /var/lock /var/run.
Initializing random number generator? done.
Recovering nvi editor sessions? done.
INIT: Entering runlevel: 2
Starting system log daemon: syslogd.
Starting kernel log daemon: klogd.
Starting internet superserver: inetd.
Starting deferred execution scheduler: atd.
Starting periodic command scheduler: cron.
Debian GNU/Linux 3.0 dbnhst tty1
dbnhst login:
---------------------------------------------------------
Et voilà !
Voici la reprise des messages que j'ai mis en valeur pour des commentaires (ces messages sont classés par ordre chronologique de leur affichage) :
RAMDISK: Loading 2656 blocks [1 disk] into ram disk? done.
Freeing initrd memory: 2656k freed
>> l'utilisation du RAMDISK se termine (déchargé) et tout s'est bien passé (aucun message d'erreur jusque là)
VFS: Mounted root (cramfs filesystem)
>> montage du système de fichier virtuel
warning: can't open /etc/mtab: No such file or directory
>> pourtant ce fichier existe bien sur mon disque !! Je ne comprends vraiment pas. De plus, aucun message d'erreur n'a signalé l'échec du montage d'une partition jusqu'à présent. Cela voudrait dire qu'une instruction de montage est manquante et devrait intervenir avant cette ligne ?
Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep
>> je veux bien comprendre qu'un avertissement me signale un fichier plus récent qu'un autre, mais pourquoi faire une comparaison entre ces 2 là ?
En tout cas, il y a un seul fichier qui s'appelle modules.conf sur mon disque dur et trois fichiers modules.dep :
* /etc/modules.conf
* /lib/modules/2.4.18-bf2.4/modules.dep
* /lib/modules/2.4.18-k7/modules.dep
* /usr/lib/uml/modules/2.4.18-17um/modules.dep
modprobe: Can't locate module *
>> mon fichier /etc/modules ne contient que des lignes qui commencent par un # + une ligne totalement blanche
insmod: Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep
>> déjà vu quelque part... (même problème que le message délivré par modprobe)
mount: wrong fs type, bad option, bad superblock on /dev2/root, or too many mounted file systems
>> mais qu'est-ce que cette machine cherche à monter ? Je n'ai que deux partitions : hda1 est une partition de swap tandis que hda2 contient tous le reste sur un système de fichier ext2 En plus, vu les messages d'erreurs me signalant des fichiers plus récents que d'autres, il me semble presque sur que le système de fichier racine est *déjà* monté.
Je ne comprends pas non plus ce qu'est ce /dev2/root
warning: can't open /etc/mtab: No such file or directory
>> et ça recommence... 2ème fois que ce message apparaît. Pourtant, ce fichier existe bien sur mon disque. Alors, mon système de fichier racine, il est pas monté finallement ?
Activating Swap: 248968k swap-space (priority -1)
Checking root file system?
fsck 1.27 (8-March-2002)
/dev/hda2: clean, 34519/2443200 files, 200494/4883760 blocks
>> avec ces messages, je suppose que hda1 et hda2 n'étaient pas montées finallement... Mais alors, pourquoi et comment le système peut indiquer que des fichiers :
- sont plus récents que d'autres
- sont inexistants
si les hda1 et hda2 ne sont pas encore montées ?
Mounting local filesystems?
nothing was mounted
et pourtant, mon /etc/fstab contient tout ce qu'il faut pour le lecteur de disquette et le lecteur de CD!
De plus, le montage de mes lecteurs locaux se fait sans problème (exactement comme d'habitude) avec la commande mount
(ça résume mon état )
Plus sérieusement, je ne vois pas comment m'en sortir
Heureusement, vous être là pour me donner un petit coup de main !
Si vous pouvez m'aider pour n'importe lequel de ces messages, ce sera super !
[Edit: non, non, je ne compte pas que sur vous . Je cherche toujours de mon côté mais là ça va être plus dur que d'habitude, je pense ]
Marsh Posté le 19-07-2003 à 15:28:57
j'ai fait une erreur de manip (j'ai reposté l'intégralité de mon message précédent !)
(ne prenez pas ça pour un up! )
Marsh Posté le 20-07-2003 à 01:49:43
Perso, j'ai toujours eu des pépins avec les ramdisk en me frappant
un gel total lors du boot.
Ca doit être un pendant des lois de Murphy à mon égard.
Donc je me fais mes noyaux grace à make-kpkg, rapide, fiable et
efficace.
Suis je en train de te conseiller de faire de même ?
... faute de combatant ... voui ...
Courage je suis de tout coeur avec toi.
Si demain je perds le cheveux blotti au creux de ma main
je reviendrai à tes côtés.
Marsh Posté le 20-07-2003 à 19:03:44
Hum...
à l'intérieur de /etc/rcS.d, j'ai ajouté des lignes faisant appel à
echo
pour plus de convivialité au démarrage
du genre :
echo "" ;
echo "lancement de S05initrdtools" ;
le résultat est le suivant au démarrage :
-----------------------------
INIT: version 2.84 booting
lancement de S05initrd-tools.sh
lancement de S05keymap.sh
Loading /etc/console/bootime.kmap.gz
lancement de S10checkroot.sh
Activating Swap: 248968k swap-space (priority -1)
Checking root file system?
fsck 1.27 (8-March-2002)
/dev/hda2: clean, 34519/2443200 files, 200494/4883760 blocks
lancement de S18hwclockfirst.sh
System time was Sat Jul 19 10:23:34 UTC 2003.
Setting the System Clock using the Hardware Clock as reference?
Real Time Clock Driver v1.10e
System Clock set. System local time is now Sat Jul 19 10:23:35 UTC 2003
lancement de S20modutils
Calculating module dependencies? spurious 8259A interrupt: IRQ7.
done.
Loading modules:
lancement de S30checkfs.sh
Checking all file systems?
fsck 1.27 (8-March-2002)
lancement de S30procps.sh
Setting kernel variables.
lancement de S30setserial
Loading the saved-state of the serial devices?
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x03f8 (irq = 3) is a 16550A
lancement de S35 devpts.sh
lancement de S35mountall.sh
Mounting local filesystems?
nothing was mounted
lancement de S39ifupdown
Cleaning: /etc/network/ifstate.
lancement de S40hostname.sh
lancement de S40networking
Setting up IP spoofing protection: rp_filter.
Configuring network interfaces: done.
lancement de S45mountnfs.sh
lancement de S48console-screen.sh
lancement de S50hwclock.sh
Setting the System Clock using the Hardware Clock as reference?
System Clock set. Local time: Sat Jul 19 12:28/35 CEST 2003
lancement de S55bootmisc.sh
Cleaning: /tmp /var/lock /var/run.
lancement de S70nviboot
Initializing random number generator? done.
Recovering nvi editor sessions? done.
INIT: Entering runlevel: 2
Starting system log daemon: syslogd.
Starting kernel log daemon: klogd.
Starting internet superserver: inetd.
Starting deferred execution scheduler: atd.
Starting periodic command scheduler: cron.
Debian GNU/Linux 3.0 dbnhst tty1
dbnhst login:
---------------------------------------
Cela permet de se rendre compte que les premiers scripts de démarrage sont lancés après la ligne très importante qui est
INIT: version 2.84 booting
Vous remarquerez que cette section ne contient aucun message d'erreur ; tous les messages d'erreurs sont en amont.
Et comme Humidifier m'a aidé à le comprendre,
le seul fautif dans l'histoire, c'est bien l'image qui est chargée au démarrage : initrd.img-2.4.18-k7
Autrement dit : impossible de corriger les messages d'erreurs sans changer l'image qui est chargée, en sachant que cette image est un fichier binaire !
Je pense donc à 2 solutions :
- soit j'apprends à compiler mon propre noyau (je ne vous cache pas que ça me fait peur ; merci Humidifier pour tes encouragements à me lancer dans cette voie )
- soit j'apprends à compiler une nouvelle image pour le chargement du système, ce qui permettrait d'optimiser ce qui est chargé au démarrage (car en plus des messages d'erreurs, j'ai des fonctionnalités et des modules qui sont chargés automatiquement sans que je puisse rien faire, je l'ai bien vu avec un lsmod et dans les messages au démarrage).
Avant d'aller plus loin, quelques petites questions :
1) finalement, pourquoi ai-je besoin d'une image pour charger mon noyau 2.4.18-k7 alors que je n'en avais pas besoin pour le 2.4.18-bf2-4 ?
(je rappelle que ces 2 noyaux ont déjà été compilés par l'équipe Debian et sont installables à partir de paquets .deb)
2) que pensez-vous des solutions que je suggère pour continuer :
- faire un nouveau noyau (aie!) ?
- ou faire une nouvelle image (moins long et moins de paramètres à prendre en compte (?) ; meilleur moyen pédagogique pour s'initier à la création d'un fichier binaire (?) )
Telle que la question est posée, je pencherai pour la solution de l'image mais sans être sur de rien d'où la question
[Edit: et en même temps, je sens qu'Humidifier va me proposer la solution de compilation du noyau
mais merci d'argumenter, hein )
Mais pour revenir à mon idée, est-ce que la création d'une image n'est pas un bon moyen de se mettre dans les startings-blocs pour la compilation ultérieure d'un noyau ?]
Marsh Posté le 20-07-2003 à 23:43:02
Dès que j'ai un peu de temps (surement demain), je te détaille
ce que je fais.
Cho ...
Marsh Posté le 24-07-2003 à 00:27:11
Humidifier a écrit : Dès que j'ai un peu de temps (surement demain), je te détaille |
Merci de ta proposition pour m'aider Humidifier
Tu es toujours là pour me donner un coup de main, comme d'habitude, avec l'aide de tous les autres que je remercie.
Résumons la situation qui a tout de même avancé :
A l'origine, ce sujet s'appelait :
"obtenir tous les messages qui ont été affichés au démarrage"
J'ai renommé ce topic afin de parler des difficultés rencontrées avec initrd, générateur de tous les messages d'erreurs que j'ai au démarrage.
Grâce à votre aide,
- je peux lire les messages d'erreurs au démarrage sans avoir recours au /var/log/* qui ne liste pas tout, bien que mon fichier de configuration /etc/syslog.conf soit identique à celui d'Humidifier
Grâce à CSCMEUH, je tape sur la touche arrêt défil pour geler l'écran au démarrage et lire les messages d'erreurs
- j'ai compris que tous mes messages d'erreurs au démarrage provenaient de l'image initrd qui est chargée par lilo au démarrage.
DONC :
- je peux lire les messages d'erreurs
- je sais que ça vient d'initrd
Ceux qui souhaitent m'aider et n'ont pas lu le topic doivent se poser une question :
pourquoi utiliser initrd au démarrage ?
> parce que le noyau que j'ai ne peut être chargé directement par lilo (je ne sais pas pourquoi mais c'est comme ça)
J'utilise Debian (ne partez pas, les non débianistes ! : cela n'est pas gênant si vous avez une autre distro ; vous pouvez m'aider tout autant, c'est sûr).
Juste une chose à savoir pour les non-débianistes : debian propose des noyaux déjà compilés tout prêt. Il n'y a plus qu'à faire son choix et installer celui qu'on veut. Debian propose un noyau pour chaque type de processeur : 2.4.18-K7 pour les AMD ; c'est le noyau que j'ai installé et qui remplace le 2.4.18-bf2.4, noyau générique et non optimisé.
Debian me dit que si je veux installer le noyau 2.4.18-k7, je dois installer une image avec initrd pour que ça marche
Comme initrd me pose problème, j'ai des questions.
**************************************************************
C'est là qu'Humidier souhaitait m'aider pour me dire ce qu'il fait :
-soit compiler mon propre noyau pour ne plus avoir besoin d'initrd
- soit savoir utiliser initrd
J'ai fait mon choix : je prends la deuxième option : pas touche au noyau et utilisation d'initrd pour régler mon problème.
Comment ça marche et ce qu'il reste à faire :
initrd permet de créer une image qui sera chargée dans la mémoire vive du système. Les instructions contenues dans l'image permettront de charger le noyau...
créer une image avec initrd est très simple :
- on édite /etc/mkinitrd/mkinitrd.conf pour préparer la création du fichier image
- on créé le fichier image en tapant :
mkinitrd -o mon_fichier_image_a_creer
(mkinitrd fait tout, tout seul, en se servant du fichier de configuration /etc/mkinitrd/mkinitrd.conf)
Maintenant, il reste un problème :
comment charger ce fichier image au démarrage ?
Dans lilo, la ligne
initrd=/chemin_vers_mon_image
ne suffit pas !
(je me demande même à quoi ça sert ...)
Normalement, lilo charge l'image *AVANT* le montage du système de fichier. Donc, comme lilo ne peut pas se fier à un chemin d'accès qui n'existe pas encore, il utilise le "mapping", (je crois (il sait où se trouve l'image du disque grâce au fichier /boot/map . Ce fichier map est très important puisqu'il permet à lilo de savoir sur quels blocs du disque se trouvent le fichier image.
Bloc disque : c'est le mot clé. Il faut dire à lilo sur quels blocs disques se trouve le fichier image
Une fois le fichier /boot/map modifié avec le pointage vers les bons blocs du disque, je suppose qu'il reste /boot/boot.b à mettre à jour, comme /boot/map a changé... Là non plus, je ne sais pas comment faire
Merci de votre aide.
J'ai essayé d'avancer le plus possible.
Je pense que mon image est bonne.
Il reste le problème avec lilo.
Marsh Posté le 24-07-2003 à 01:37:29
« depmod -a » devrait permettre de faire disparaître les messages « insmod: Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep ».
Pour le fichier mtab, ce n'est pas très grave... De mon côté, ça a arrêté d'afficher ce message le jour où j'ai installé DevFS.
Regardes « man mount » pour voir à quoi sert ce fameux fichier mtab...
Ensuite là: « ext3: No journal on filesystem on ide0(3,2) », es-tu sûr d'avoir une partition en ext3 à cet endroit ?!
Si c'est de l'ext2, il faut le renseigner comme tel dans fstab.
Marsh Posté le 24-07-2003 à 07:44:13
Merci pour toutes tes indications, El_ShAmAn___
Je vais faire des essais ce soir.
[edit: j'ai supprimé toute la suite de mon post du matin devenu inutile et pour passer au post suivant]
Marsh Posté le 24-07-2003 à 20:20:43
Je viens de trouver la solution pour charger l'image que je crée avec lilo ; j'oubliais de taper :
lilo
pour que le nouveau fichier image soit pris en compte par
lilo au démarrage.
Maintenant, je suis face à un nouveau problème : impossible de créer une image qui accepte de se charger correctement.
Je vais voir quelles docs peuvent m'aider pour arranger ça.
De votre côté, avez-vous une idée ?
J'ai un écran qui défile en boucle avec des messages d'erreurs d'insmod
insmod: Note: /etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep |
et ça reprend au premier message en boucle infinie...
voici le contenu de mon /etc/mkinitrd/mkinitrd.conf qui sert à la création de l'image (contenu par défaut que je n'ai jamais modifié :
|
Et voilà, je vais continuer mes recherches sur les problèmes que j'ai. Un petit coup de main de ceux qui peuvent m'aider sera le bienvenue
Marsh Posté le 24-07-2003 à 21:06:14
Bon ben me revoilou, mais comme on n'a pas besoin de moi, plouf ...
je disparais ...
Extrait du man pour les flémards :
DESCRIPTION
The special file /dev/initrd is a read-only block device. Device /dev/initrd is a RAM disk that is initialized (e.g. loaded) by the boot
loader before the kernel is started. The kernel then can use the the block device /dev/initrd's contents for a two phased system boot-up.
In the first boot-up phase, the kernel starts up and mounts an initial root file-system from the contents of /dev/initrd (e.g. RAM disk
initialized by the boot loader). In the second phase, additional drivers or other modules are loaded from the initial root device's con-
tents. After loading the additional modules, a new root file system (i.e. the normal root file system) is mounted from a different
device.
Bref, comme je ne suis pas trés brillant, je n'y vois pas
vraiment l'intêret.
Qui me brief ?
Marsh Posté le 24-07-2003 à 21:21:49
Humidifier a écrit : |
Alut,
Je ne vais pas te briefer sur le sujet.
Mais j'ai eu un jour bien besion de ce petit initrd
J'avais un systeme de fichier racine en raid 0 sur deux disque dur differents.
Et pour activer un array raid il faut utiliser les raidtools.
Donc la manip consister a faire un ram disque, inclure les scripts qui initialisent la partition / du systeme et faire un appel a la commande pivot_root pour interchanger les partitions /.
Donc oui initrd a bien un interet dans pas mal de cas (surtout lorsque ton system de fichier racine est "exotique" : RAID, LVM, NFS)
Si non S-GAIA.
As tu essayer de mounter l'image initrd.
Essaye de faire ca :
Code :
|
Si ca marche tu peux editer les fichier qui se trouvent sur le ram disque (cree le fichier mtab par exemple) etc ...
Voila
Marsh Posté le 24-07-2003 à 21:37:24
Salut Humidifier
je n'ai pas attendu que tu postes, depuis la dernière fois et ai essayé d'avancer dans mon problème. Comme tu le vois, j'ai appris à créer une image grâce à la lecture de docs et je sais la faire amorcer par lilo.
Pour revenir à ton post, je dois être fatigué... je n'ai pas tout compris
Humidifier a écrit a écrit : Bon ben me revoilou, mais comme on n'a pas besoin de moi, plouf ... je disparais ... |
Ah bon ? Comment ça ?
Humidifier a écrit a écrit : Bref, comme je ne suis pas trés brillant, je n'y vois pas vraiment l'intêret. |
Tu ne vois pas d'intérêt à quoi ? À l'utilisation d'une image pour le chargement du système ?
Si c'est le cas, normalement, l'image sert à charger des modules indispensables au chargement du système mais qui ne sont pas en dur dans le noyau.
Ce peut être le cas par exemple des disques dur SCSI.
Maintenant, quant à savoir pourquoi debian m'avertit de l'obligation de passer par une image et l'ajout d'une ligne du genre
initrd=
dans le fichier /etc/lilo.conf
c'est un mystère...
En effet, je n'ai pas de matériels ou besoin de fonctionnalités qui imposent le chargement de modules à partir d'une image initrd avant le chargement du noyau.
Mais, bon...
Je ne sais pas non plus comment ils l'ont compilé, leur noyau tout fait "2.4.18-k7"...
Il reste que je ne sais plus comment faire pour créer une image qui lance mon système :
- sans messages d'erreurs qui empêchent le chargement (et même sans message d'erreurs tout court !).
Les messages d'erreurs au lancement d'initrd sont toujours de la même nature : ils indiquent que tel ou tel programme n'a pas pu trouver un fichier (alors qu'il existe !!!) ou encore que tel ou tel fichier est plus récent ou moins récent qu'un autre.
Dans la dernière image que j'ai créée et qui tourne en boucle, j'ai par exemple le message :
insmod: /lib/modules/2/4.18-k7/kernel/net/unix/unix.o: No such file or directory
alors que le chemin d'accès spécifié et le nom du fichier existe bien !!!
Marsh Posté le 24-07-2003 à 21:39:54
J'ai écrit mon post précédent sans avoir vu le post de CSCMEUH -apparu entre temps - que je vais lire tout de suite
Marsh Posté le 24-07-2003 à 21:53:02
Je déconne mon cher S-GAIA.
En fait, j'ai été confronté au même problème que toi en voulant
charger un noyau Debian.
Comme la compilation d'un noyau ne me fait pas trop peur, d'autant
que 'make-kpkg' est trés facile utilisé alors je ne me suis pas
autant accroché que toi.
Pour l'imgae, certe cela sert à charger les modules qui ne sont
pas mis en dur.
Question : J'ai une chaine full scsi (DD et CDRom).
Qu'est ce que cela m'apporte puisque je ne ferai
jamais de rmmod aic7xx (mon driver de ma carte à moi)
Ok, je réduit la taille de mon noyau, d'ailleur c'est
ce que je fais déjà pour tout ce qui n'est pas
fondamentale pour le boot.
Marsh Posté le 24-07-2003 à 22:30:42
OK Humidifier, je vois ton point de vue...
Je veux bien apprendre à compiler, c'est juste que ça me fait peur (on se fait des films quelques fois sans avoir essayé...)
Et j'ai dû te couper dans ton élan, tu étais prêt à m'aider pour ça dans ton dernier post
Je ne voulais pas te faire perdre du temps alors que j'étais pas super motivé et prêt à compiler un noyau.
Pour en revenir à initrd, j'aimerais bien y arriver mais je suis trop crevé ce soir pour étudier de la documentation...
@ CSCMEUH : merci beaucoup de ton aide.
si je tape comme tu le proposes :
|
ça marche !
mais ce que fait le fichier image relève encore de la magie noire, pour moi !
> j'ai un répertoire /dev2 Qu'est ce que c'est ?
> une fois que j'ai édité tout ça, comment faire pour créer ma nouvelle image ?
Marsh Posté le 24-07-2003 à 22:52:43
S-GAIA a écrit :
|
Ca serait plus tot ca la comande non :
Code :
|
Cette commande va faire ce que fait ton noyau au boot (sauf que lui il le mount dans /).
Donc il te suffit d'editer le contenu du repertoire /mnt (qui contient le contenu du ram disque charger au boot) et une fois que tu as finis de l'editer. Tu le demonte
Code :
|
Et tu reboot.
Voila
Marsh Posté le 24-07-2003 à 23:01:12
En fait, le pb c'est que mon taff ne m'autorise que peu d'instant
de glandouille totale.
Bref, je prends juste le temps de répondre parfois lorsque cela
m'est possible.
Pour la compilation d'une noyau façon Debian avec make-kpkg, je
prendre le temps (j'espère ce week-end) de l'écrire pour molton.
Avec ça tu sera un expert.
C'est vrai que si je m'y méttais vraiment, j'aurai pu t'aider
pour ce pu... d'init.
Je profite de ta gniac pour me laisser porter. Merci
Cho ...
Marsh Posté le 25-07-2003 à 23:50:30
Merci à tous pour tout
Merci CSCMEUH : tu as raison, je me suis trompé dans mon dernier post en recopiant la ligne de commande que tu m'as donnée.
Mais je l'avais bien tapée sur mon système et ça marche bien pour la monter !
Petit soucis : je n'arrive pas à éditer l'image montée.
Voilà ce que je fais :
mount -t cramfs -o loop /boot/initrd.img-2.4.18-k7 /mnt
pour info mount me donne :
/boot/initrd.img-2.4.18-k7 on /mnt type cramfs (rw,loop=/dev/loop0)
ensuite, je souhaite éditer le fichier /mnt/linuxrc.conf :
vi /mnt/linuxrc.conf
je fais mes modifications et voici le message d'erreur renvoyé par vi quand je souhaite enregistrer :
Error: /mnt/linuxrc.conf: Invalid argument.
/mnt/linuxrc.conf: WARNING: FILE TRUNCATED
Press any key to continue
Que dois-je faire ?
Marsh Posté le 26-07-2003 à 15:04:10
Ca y est, j'ai trouvé une solution pour éditer l'image :
je ne l'édite pas directement et passe par un stockage intermédiaire dans /root/img (système de fichier ext2)
pour commencer, je monte l'image dans /mnt
mount -t cramfs -o loop /boot/initrd.img-2.4.18-k7 /mnt
ensuite je copie le contenu vers /root/img
cd /mnt
tar -cv . | (cd /root/img ; tar xv)
et voilà mon image extraite dans l'arborescence /root/img !
ensuite, je fais ce que je veux dedans comme changement
puis je créé une nouvelle image :
cd /root/img
mkcramfs . /boot/initrd.img-2.4.18-k7
puis je demande à lilo de bien enregistrer les nouveaux blocs disques occupés par l'image :
lilo
et voilà !
Grâce à ces modifs, je n'ai plus que 2 types de messages d'erreurs au démarrage :
(j'espère résoudre le premier mais le deuxième me laisse plus perplexe)
note: /etc/modulesconf is more recent than /lib/modules/2.4.18-k7/modules.dep
mount: wrong fs type, bad option, bad superblock on /dev2/root
j'ai essayé ceci :
cd /root/img
find . -type f -name "." | xargs grep -l "*dev2*"
mais pas de fichiers trouvés...
comment faire
Marsh Posté le 26-07-2003 à 22:27:09
S-GAIA a écrit : Ca y est, j'ai trouvé une solution pour éditer l'image : |
Salut,
Alors pour l'histoire du cramfs je n'est pas trop compris pourquoi tu ne peux pas editer le systeme de fichier alors que celui-ci est en read-write. Mais bon c'est pas grave. Tu as trouver une facon de controurner le pbl Pas mal
Pour l'histoire de date sur le fichier /etc/modules.dep la facon classe de fait est de ce chrooter dans le ram disk et de faire un depmod. Mais je te propose d'utiliser une methode plus ... old school
Tu va modifier la date de tout les fichier qui se trouvent dans le ram disque a l'aide de la commande touch.
Lorsque tu fait :
Code :
|
La date de celui-ci est modifier. Si le fichier n'existe pas il est cree. Donc a l'aide de find tu execute la commande touch sur tous les fichiers Ou bien tu tape ca si tu utilise Zsh :
Code :
|
Ca deverais regler le pbl de date sur le fichier des modules.
Si ca marche pas je t'expliquerais pour le chroot.
Pour le 2em et dernier message d'erreur utlise grep pour trouver le fichier qui contient /dev2/root.
Code :
|
Voila
Marsh Posté le 26-07-2003 à 22:41:42
Hum...
Je n'ai pas réussi à faire supprimer les 2 messages d'erreurs au démarrage du chargement de l'image.
Tant pis, ce n'est pas grave.
C'est quand même dingue :
j'ai tapé cette commande plus d'une fois : depmod -a
ls -l me permet de bien vérifier que modules.dep est plus récent que modules.conf, à la fois sur mon système de fichier racine et sur mon image, et pourtant, voici le message d'erreur que j'ai au démarrage :
note: etc/modules.conf is more recent than /lib/modules/2.4.18-k7/modules.dep
allez comprendre...
Enfin, c'est pas grave. Mon système démarre sans problème de toutes façon...
@Humidifier : à défaut d'avoir un noyau réduit au maximum, j'ai appris à créer une image réduite au maximum. C'est un bon début
(je suis passé des 2,7 Mo de l'image d'origine à 1,1 Mo : ça tient sur une disquette)
Humidifier a écrit a écrit : Pour la compilation d'une noyau façon Debian avec make-kpkg, je prendre le temps (j'espère ce week-end) de l'écrire pour molton. Avec ça tu sera un expert. |
Merci beaucoup, je n'hésiterai pas à regarder le post que tu feras pour molton
Pour finir, merci beaucoup CSCMEUH de toute ton aide précieuse sur ce topic.
Merci aussi à Marx et El_ShAmAn___
Ce topic est fini. J'ai appris plein de choses intéressantes qui dépasse largement initrd :
- configuration de lilo
- montage d'une image en général (génial pour les sauvegardes !)
- connaissance de la liste des services minimum pour le lancement du noyau 2.4.18-k7 de Debian
Marsh Posté le 26-07-2003 à 22:43:47
C'est la 2ème fois que je poste en 2 jours sans avoir vu ta dernière réponse CSCMEUH
Désolé
Je vais la lire tout de suite
Marsh Posté le 26-07-2003 à 22:50:54
sincèrement, je ne pensais plus du tout que c'était possible de faire quelque chose pour supprimer les messages d'erreurs entre modules.conf et modules.dep
Merci mille fois pour ton post
Finalement, ce topic n'est pas fini
Je vais voir tout ça ce soir (ou peut-être demain après avoir )
Vraiment génial !
Merci
Marsh Posté le 27-07-2003 à 00:07:04
Finalement, je n'ai pas attendu demain ; j'ai fait les tests ce soir
Alors, pour touch, j'ai fait :
# cd /root/img
# find . -name "*" 2> /dev/null | xargs touch
ensuite, je me suis balladé dans quelques sous répertoires de /root/img afin de vérifier que tous les fichiers et dossiers étaient bien à la même date très précise... et c'est le cas.
Mais ça n'a pas permi de virer le message d'erreur
Pour le message concernant /dev2/root,
j'ai essayé ta ligne de commande mais ça bloque.
(je ne comprends pas pourquoi ça bloque, d'ailleurs)
Personnellement, je fais :
# cd /root/img
# find . -type f -name "*" | xargs grep -l "*dev2*"
mais je n'obtiens pas de réponses...
voilà !
Marsh Posté le 27-07-2003 à 22:38:06
(suite du post d'hier soir)
La recherche avec find se passe bien en général sur mon système. Mais à l'intérieur de /root/img; ça bloque dès que je tombe sur un dossier...
En ajoutant -type f, on évite le problème ; je suis en train de penser à l'instant que je pourrais faire une recherche normale dans l'image montée...
C'est parti...
Finalement, à l'intérieur de l'image aussi la commande bloque dès qu'elle tombe sur un répertoire.
Find en lui même fonctionne bien mais grep ne supporte pas de recevoir en argument un répertoire. (alors que ça marche à l'extérieur de l'image sur le disque dur, sauf sur /root/img évidemment)
donc dans l'image :
find . -name "*" > ça marche
find . -type f -name "*" | xargs grep -l "*dev2*" > ça marche
find . -name "*" | xargs grep -l "*dev2*" > ça marche pas
Mais le principal est que grâce à -type f, on arrive à quelque chose qui indique que ... il ne trouve aucune chaine de caractère "*dev2*"
Je veux bien aussi essayer de me chrooter dans le ram disk comme tu me l'as proposé, CSCMEUH.
Je suis prêt
Marsh Posté le 18-07-2003 à 21:24:32
[Edit: à l'origine, ce sujet s'appelait :
"obtenir tous les messages qui ont été affichés au démarrage"
les messages d'erreurs peuvent être lus en gelant l'écran avec la touche arrêt défil comme l'a expliqué CSCMEUH)
J'ai renommé ce topic afin de parler des difficultés rencontrées avec initrd, générateur de tous les messages d'erreurs que j'ai au démarrage.]
Je viens de changer de noyau et m'aperçois que cela génère quelques nouveaux messages d'erreurs au démarrage de la part de modprobe, insmode, etc. ...
Cela n'empêche mon système de se lancer correctement mais j'aimerai avoir le temps de lire ces messages pour apporter les corrections nécessaires.
Il y a bien dmesg mais il ne liste que les messages du noyau.
Avec les données de /var/log, je ne trouve pas non plus la liste complète des messages d'erreurs qui apparaissent au démarrage.
Comment faire ?
Message édité par s-gaia le 23-07-2003 à 23:25:55