|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2006 Messages : 53 ![]() |
Bonjour,
en fait,je fais un projet sur linux,j ai charge le noyau linux de la memoire flash vers la RAM tout ca sur une carte smart box et apres je l execute mais a la fin de l execution,j ai un warning que je vois pas comment je vais faire, le warning est le suivant : Freeing init memory: 236K Warning: unable to open an initial console. Kernel panic: No init found. Try passing init= option to kernel. j espere que vous avez une idee, et merci d'avance et bonne journee |
|
|
00
|
|
|
#2 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Salut,
Tu as donc un noyau linux seul, sans rien d'autre ? .... C'est normal qu'il proteste * La console initial, je ne sais absolument pas à quoi elle sert, car je viens de découvrire que le système peut se lancer sans, n'empêchant pas le noyau de lancer init, et d'ainsi laisser init créer les consoles finales. Voir : Console initial et repertoire dev Il se peut effectivement que pour certaines applications, aucune console ne soit nécéssaire. * Le noyau linux lance un processus initial. Ce processus est nomé Init, en standard, et se trouve dans le repertoire sbin. C'est un comportement par défaut hérité d'Unix. Mais il est bien sure possible que le noyau lance une tache unique quelqu'onque (selon l'utilisation prévue pour ton installation). Pour spécifier l'application init au noyau, tu dois lui transmettre le paramètre « init=/my-bin/my-initial-app », par exemple. |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2006 Messages : 53 ![]() |
j ai essayer mais j ai toujours la meme erreur, tu peux pas expliquer ta solution d avantage stp et merciii
|
|
|
00
|
|
|
#4 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Salut,
Tu as essayé quoi au juste ? Quel est le contexte ? Quels sont les paramètres que tu passes au noyau ? Quel est le contenu du périphérique monté comme root ? ... heuuuu... je cherche à me caser dans une formation diplômante... pour avoir des idées, peus-tu me parler un peu de celle que tu fais actuellement ?... vu comme tu en parlais, et la période à laquelle nous sommes, ça ressemble à un projet de stage... |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2006 Messages : 53 ![]() |
ce que j ai fait ce que j ai ajouté la phrsae que tu m a donné pour l init a la commande d execution c tt je sais que c bete mais g pas bien compris ta solution
effectivement je fait un stage en linux pour la 1ere fois !!!! et ca commence bien en fait moi je travail sur un routeur reseauune carte smart box |
|
|
00
|
|
|
#6 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Hola, aïe ... le paramètre init que je donnais n'était qu'un exemple factice.
Linux, que tu l'install sur tout ce que tu veux, c'est toujours la même structure. Seuls les périphériques seront différents. Tu peux voir ici :Démarrage de linux Tu vois donc que ton noyau doit avoir un système de fichier à monter. Comme sous Linux, tous est fichier, tu ne pourra accéder à rien tant que tu n'aura pas un système de fichier accessible. Ce système de fichier peut être sur un support en lecteur seul ou en lecteur écriture (comme /dev/hda1). Ce peut même être un disque virtuelle en mémoire (comme /dev/ram), ou même un disque en mémoire (qui n'est pas virtuel). Tu peux le spécifier en donnant au noyau le périphérique à monter dans le paramètre « root=... » Dans ton arborescence, tu dois déjà avoir un un repertoire /dev/ qui contient les entrées pour les périphériques qui devront être accessibles (à commencer par la console, qui peut même être une console série, comme /dev/ttyS). Tu peux indiquer au noyau la console initiale à utiliser, en lui passant le paramètre « console=... » Tu dois avoir quelque part (généralement dans /sbin/), un programme qui sera lancé comme précessus initial (généralement init). Ce programme est généralement /sbin/init, mais ce n'est pas obligatoire. Tu peux le spécifier en donnant au noyau le chemin vers le processus initial par le paramètre « init=.... » Le processus init standard initialise les premiers services (ou daemons), et permet de se loguer en mode root, privilégié, en mode mono utilisateur ou en mode multiutilisateur. Les accés peuvent être protégés par mot de passe. En résumé : 1) chargement du noyau (par divers chargeur) 2) montage du système de fichier racine (tout est monté sur lui) 3) ouverture d'une console (entrées/sorties) 4) lancement du processus initial (qui recevra les handles de la concole initiale) N.b (init) : note bien que init (ou ce qui le remplace) est un service permanent (daemons), ce n'est pas un programme lancé à l'initialisation et dont on attend la fin de l'execution pour poursuivre. Je ne connais pas le matériel sur lequel tu travail, mais je pense que ton système de fichier racine se trouvera en ROM ou en RAM. Ta console sera probablement une console série (ttyS[n], et non pas tty[n]). La tâche de ton service init sera surement assez simple : pas de système multiutilisateurs, je ne pense pas. Les questions à te poser : - quelle sera le périphérique racine ? - quelle sera le mode de communication avec le système ? - quelle seront les applications à faire fonctionner ? Les paramètres à fournir au noyau : 1) root=... (système de fichier racine) 2) console=... (console initiale que recevra le processus initial) 3) init=... (processus initial qui restera permanent) Peut-être pour ton cas, pourrais-tu trouver des idées en te renseignant sur les installations serveur ? Recherche sur le net : Recherche sur Yahoo pour installation Linux serveur ou routeur Recherche sur Google pour installation Linux serveur ou routeur Tu verra quelques topos sur des routeurs fonctionnant sous Linux. Voilà, j'espère que ça ira mieux maintenant à+ |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2006 Messages : 53 ![]() |
mercii pour tous ces informations.
en fait la comment d execution est la suivante : RedBoot> exec -b 0x01600000 -l 0x0100000 -c"console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock2" et en fait avant d avoir mon probleme j aV un autre probleme ce que qd j execute le noyau il me dit que l adresse memoir est invalide et apres j ai fait qlq changement d adresse l ancien erreu est le suivant: RedBoot> fis load -b 0x1600000 linux ** Warning - checksum failure. stored: 0x528baf74, computed: 0xa0806f00 RedBoot> exec -b 0x01600000 -l 0x0100000 -c"console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock2" Can't execute Linux - invalid entry address donc là j ai deux chemins avec pt etre meme source d erreur et mais là je suis bloquer sur les 2 |
|
|
00
|
|
|
#8 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Mmmhhhh...
L'une des options -b ou -l désigne t-elle l'adresse de chargement du noyau ? Où as tu récupéré l'image du noyau ? Peut-être que le relogement du noyau n'est pas bon (relogement : faire le lien entre les adresses logique et les adresse physiques). Par exemple j'ai un noyau qui est fait pour être chargé à une adresse précise convenant à un chargement sur PC. Peut-être que tu donne une adresse de chargement pour laquelle le noyau n'est pas fait. Si c'est bien le cas, alors il faudra que tu recompile le noyau. Mais ça me semble un peu gros quand même. Sais-tu si sur ton matériel il existe des zones de mémoire reservées ? Certaines adresses sont-elles mappées en ROM par exemple ? Y a t-il un chien de garde logiciel quelque part en mémoire ? Il faudrait connaitre la configuration et l'utilisation de la mémoire, pour savoir quelle est la marge de liberté avec l'adresse de chargement du noyau. Sur ton matériel, peut-on charger le noyau librement à l'adresse que l'on souhaite ou y at-il des restrictions ? |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2006 Messages : 53 ![]() |
salut,
oui l option -b désigne l'adresse de chargement du noyau. l image de noyau je l ai recuperé en compilant le noyau de la distribution snepgear 3.2. apparament y a aucune zone memoire resirvée ni chien de garde. |
|
|
00
|
|
|
#10 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Je vais retrouver l'adresse à laquelle le noyau se charge habituellement... mais il se peut que ton noyau ai été compilé pour être chargé à une adresse différente. Renseigne toi à ce sujet si tu peux.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com