# [kernel] Ne démarre plus après restauration stage5 (résolu)

## mick492

Bonjour,

Afin de repartitionner mon disque, j'ai effectuer un stage5 en suivant ce qu'il y a sur cette page:

http://fr.gentoo-wiki.com/wiki/Stage5

J'ai exclu /dev/* /sys/* /usr/portage/* /usr/src/* /tmp/* /proc/*

J'ai ensuite créé les partitions et je les ai formatées.

J'ai booté sur le live cd, remonté les partitions et décompresser mon stage5, modifié mon /etc/fstab pour prendre en compte le nouveau partitionnement.

Au moment de redemarrer la machine, le boot bloque à la ligne:

init-early.sh used greatest stack depyh: 5584 bytes left

Je suis vraiment bloqué, apparemment ça serait un problème avec /dev mais je ne sais pas comment le résoudre.

Merci pour vos éventuelles réponses.Last edited by mick492 on Sun Sep 02, 2012 1:07 pm; edited 1 time in total

----------

## guilc

Essayes de faire un :

```
mknod {point_de_montage}/dev/console c 5 1
```

Celui là est indispensable, il y en a peut-être d'autres (genre null : "mknod /dev/null c 1 3" ou random : "mknod /dev/random c 1 8").

Sinon, tu peux essayer en ajoutant le support du devtmpfs à ton kernel

----------

## mick492

merci pour ta réponse rapide, effectivement ça fonctionne. Peux tu brièvement m'expliquer pourquoi il a fallut recréer /dev/null /dev/random et /dev/console alors que les autres fichiers présents dans /dev sont générés automatiquement. Je ne comprends pas trop comment fonctionne ce répertoire, tout ce que je sais c'est qu'il contient les fichiers permettant l'accès aux périphériques.

Autre question: pour éviter ça, peut on copier le répertoire /dev/* vers /mnt/gentoo/dev quand on est sous le livecd?

----------

## guilc

Lorsque tu bootes, le kernel commence par se décompresser, s'initialiser, charger les drivers, démarrer tous les périphériques.

Une fois que tout cela est fait, il doit passer la main à l'espace utilisateur, le process init. Mais pour démarrer, un process ne démarre pas dans le vide, il a besoin d'une console sur laquelle vont se faire les I/O (stdin/out/err), potentiellement d'une source d'entropie (random), et d'une poubelle (null). Le seul moyen pour un programme d'obtenir ça, c'est d'avoir les périphériques dans /dev (on peut voir les périphériques comme des "prises" pour se brancher sur le matos)

Initialement quand tu démarres, /dev est vide. Donc quand le kernel essaye de préparer ce petit monde pour passer la main à l'init, bam, ça plante. D'ailleurs je m'attendais plus au classique message "Warning: unable to open an initial console" dans ce cas là (je pense même que tu l'as quelques lignes au dessus  :Wink: ). Ton message init-early.sh est plus tardif, il intervient quand le kernel a déjà passé la main a l'espace utilisateur, mais qu'il manque un truc à l'init pour démarrer, donc vautrage.

Bref, pour avoir les périphériques minimaux dans /dev, il y a 2 solutions :

- les créer à la main

- utiliser l'option du kernel devtmpfs (et devtmpfs_mount) qui fait en sorte que le kernel prenne en charge la création de tous les périphériques dans /dev

Par la suite, udev prend le relai, mais udev n'arrive que plus tard au cours du démarrage de l'init.

----------

## mick492

Merci pour ces infos, ça m'a bien dépanné  :Smile: 

----------

