[MKINITCPIO] Erreur au boot après un mauvais tweak (résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
Avatar de l’utilisateur
DarkBaboon
Daikyu
Messages : 89
Inscription : mar. 24 juin 2008, 11:48
Localisation : Rennes

[MKINITCPIO] Erreur au boot après un mauvais tweak (résolu)

Message par DarkBaboon »

Salut les archers,
Ce soir, rien ne vas plus, depuis 2 jours mon PC ne boot plus :cry: , j'avais tellement honte de ma bêtise que j'ai préféré aller sur le canal IRC pour avoir une solution (rapide) à mon problème, mais ça n'a pas marché... donc je viens sur le forum requérir de l'aide...

Tout d'abord, dans un souci de gain de temps au démarrage j'ai essayé de faire le ménage dans les modules ainsi que dans les hooks du fichier mkinitcpio.conf, bien mal m'en a pris...
Voici mon mkinitcpio.conf :

Code : Tout sélectionner

# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES="piix ide_disk reiserfs"
MODULES="pata_sis ata_generic"

# BINARIES
# This setting includes, into the CPIO image, and additional
# binaries a given user may wish.  This is run first, so may
# be used to override the actual binaries used in a given hook.
# (Existing files are NOT overwritten is already added)
# BINARIES are dependancy parsed, so you may safely ignore libraries
BINARIES=""

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in anyway.  This is useful for config files.
# Some users may wish to include modprobe.conf for custom module options,
# like so:
#    FILES="/etc/modprobe.conf"
FILES=""

# HOOKS
# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'modload' may be used in place of 'udev', but is not recommended
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
#    This setup specifies all modules in the MODULES setting above.
#    No raid, lvm2, or encrypted root is needed.
#    HOOKS="base"
#
#    This setup will autodetect all modules for your system and should
#    work as a sane default
#    HOOKS="base udev autodetect ide scsi sata filesystems"
#
#    This setup will generate a 'full' image which supports most systems.
#    No autodetection is done.
#    HOOKS="base udev ide scsi sata usb filesystems"
#
#    This setup assembles an ide raid array with an encrypted root FS.
#    Note: See 'mkinitcpio -H raid' for more information on raid devices.
#    HOOKS="base udev ide raid encrypt filesystems"
#
#    This setup loads an lvm2 volume group on a usb device.
#    HOOKS="base udev usb lvm2 filesystems"
HOOKS="base ide usbinput filesystems"
Après avoir changé mon mkinitcpio.conf, ma chère bécane refuse obstinément de démarrer et me balance tout son désespoir dans le message suivant :

Code : Tout sélectionner

:: Loading Initramfs
ERROR: Failed to parse block device name for '/dev/sda6'
ERROR: root fs cannot be detected. Try using the rootfstype= kernel parameter
ERROR: Failed to parse block device name for '/dev/sda6'
ERROR: Unable to create/detect root device '/dev/sda6'
Dropping to a recovery shell... type 'exit' to reboot
NOTE: klibc contains no 'ls' binary, use 'echo *' instead.

If the device '/dev/sda6' gets created while you are here try adding 'rootdelay=8' or higher to the kernel command line
ramfs$
La méthode que l'on m'a proposé sur le canal IRC archlinux-fr est la suivante (un grand merci à Calimero en passant :D ).

Tout d'abord démarrer sur le CD rom archlinux-2008.12-archboot iso puis à l'invite de commande du shell taper ceci :

Code : Tout sélectionner

mount /dev/sda6 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
nano /etc/mkinitcpio.conf # réparer dedans mes conneries!
mkinitcpio -p kernel26
J'ai recopié dans mkinitcpio.conf la ligne HOOKS=base udev ide scsi sata usb filesystems qui est censé fonctionner pour tous. Mais malheureusement j'ai toujours la même erreur au démarrage.

Je me suspecte d'avoir aussi modifié la ligne MODULES car sur la page wiki de mkinitcpio sur le site officiel, j'ai lu la phrase suivante :
For example, if you don't want to use udev or modload, you can add all necessary modules manually and make booting faster
Je crois que c'est ce booting faster qui m'ait monté à la tête et j'ai sûrement dû virer udev, je sais, saimal...
Dernière modification par DarkBaboon le mar. 02 oct. 2012, 10:25, modifié 3 fois.
Avatar de l’utilisateur
Skunnyk
Maître du Kyudo
Messages : 1137
Inscription : mer. 06 sept. 2006, 21:31
Localisation : IRC
Contact :

Message par Skunnyk »

Halala, il n'y a pas de quoi avoir honte :-)

Déjà, as tu tenté de booter sur l'image fallback ?
Ensuite, ton mkinitcpio.conf réparé à l'air ok, mai je ne sais pas si seulement mkinitcpio -p kernel26 suffit.
Tente avec /sbin/mkinitcpio -k 2.6.28-ARCH -c /etc/mkinitcpio.conf -g /boot/kernel26.img (si tu es en 2.6.28).
Tu as bien udev/filesystems dans tes hooks, donc le detect dois être ok ...
Avatar de l’utilisateur
mimas
Elfe
Messages : 559
Inscription : sam. 30 sept. 2006, 22:30
Localisation : Toulouse

Message par mimas »

Image

Il n'y a plus un initrd fallback avec tout dedans ? Il y a tellement longtemps que je n'utilise plus ce système que je suis déconnecté de la chose.

De mon temps, :ancetre2: ça se faisait et il suffisait de changer l'initrd dans le menu de GRUB pour retomber sur ses pattes.
Anarchy for the triple A.
Avatar de l’utilisateur
DarkBaboon
Daikyu
Messages : 89
Inscription : mar. 24 juin 2008, 11:48
Localisation : Rennes

Message par DarkBaboon »

Skunnyk a écrit :Déjà, as tu tenté de booter sur l'image fallback ?
Bien sûr et toujours le même problème...
Skunnyk a écrit :Ensuite, ton mkinitcpio.conf réparé à l'air ok, mai je ne sais pas si seulement mkinitcpio -p kernel26 suffit.
Si c'est la bonne solution, mais je vais expliquer pourquoi dans mon cas ça ne marchait pas...
Skunnyk a écrit :Tente avec /sbin/mkinitcpio -k 2.6.28-ARCH -c /etc/mkinitcpio.conf -g /boot/kernel26.img (si tu es en 2.6.28).
Je la note comme solution de secours, merci.
Skunnyk a écrit :Tu as bien udev/filesystems dans tes hooks, donc le detect dois être ok ...
Effectivement c'était bien la bonne solution mais comme je vais l'expliquer plus loin, mes modifs n'étaient jamais pris en compte...
Il n'y a plus un initrd fallback avec tout dedans ? Il y a tellement longtemps que je n'utilise plus ce système que je suis déconnecté de la chose.
C'est initramfs qui remplace la chose. Ah Ah!

Après m'être trituré la tête pendant un moment, j'ai noté que quand je démarrais avec le cd archboot en mettant root=/dev/sda6 en paramètre de démarrage, mon système démarrait mais je me retrouvais avec mon bureau affiché et la souris et le clavier inutilisable alors que j'étais sur d'avoir mis les bons HOOKS udev, usb puis usbinput à différentes reprises.

La solution m'a été donnée par mon Arch, elle-même. En désespoir de cause, je me suis dit que si je relançais l'installation du noyau avec pacman, je m'en sortirai peut être (le noyau sur le cd archboot etant un 2.6.27 et celui de mon Arch un 2.6.28 ). Au moment de la création de l'image du noyau, un message d'alerte me signifiant que ma partition /boot n'était pas monté, m'a fait comprendre ma terrible omission...

En fait, mon disque est partitionné de la façon suivante :
sda3 swap
sda2 partition étendue
|-sda5 /boot ext2
|-sda6 / ext3
|-sda7 /home ext3

La solution donnée par Calimero était donc la bonne mais comme j'avais complètement zappé que le /boot était sur une autre partition.
Je pouvais toujours recréer des images du noyau dans le répertoire /boot non monté (images que je voyais mais qui étaient physiquement sur la partition /dev/sda6), à l'amorçage du système mes modifications sur l'image du noyau n'étaient jamais vu, puisque l'image du noyau prise en compte au démarrage était dans le répertoire /boot sur /dev/sda5, qui n'était jamais modifié).

La solution à mon problème était donc :

Code : Tout sélectionner

mount /dev/sda6 /mnt
mount /dev/sda5 /mnt/boot # c'est cette ligne qui me manquait !
mount --blind /dev /mnt/dev
mount --blind /proc /mnt/proc
mount --blind /sys /mnt/sys
chroot /mnt
nano /etc/mkinitcpio.conf # réparer dedans mes conneries!
mkinitcpio -p kernel26 
Donc me voilà de retour sur ma distribution préférée !!
Dernière modification par DarkBaboon le sam. 31 janv. 2009, 19:09, modifié 1 fois.
nowahn
archer de cavalerie
Messages : 172
Inscription : lun. 04 août 2008, 19:03
Localisation : ailleurs

Message par nowahn »

erreur classique, qui arrive même aux plus grands :wink:
pense à démonter ta partition /boot et effacer ce que t'as mis dans le répertoire /boot (ça continue à prendre de la place sur ta partition racine, je pense pas que tu l'ais remplie au même point que sur ce sujet, mais bon)
Prends le temps de rêvasser, l'inspiration viendra ...
Avatar de l’utilisateur
mimas
Elfe
Messages : 559
Inscription : sam. 30 sept. 2006, 22:30
Localisation : Toulouse

Message par mimas »

DarkBaboon a écrit : La solution à mon problème était donc :

Code : Tout sélectionner

mount /dev/sda6 /mnt
mount /dev/sda5 /mnt/boot # c'est cette ligne qui me manquait !
mount --blind /dev /mnt/dev
mount --blind /proc /mnt/proc
mount --blind /sys /mnt/sys
chroot /mnt
nano /etc/mkinitcpio.conf # réparer dedans mes conneries!
mkinitcpio -p kernel26 
Je n'ai jamais rencontré de blind dans ce type de commande. Ne serait-ce pas bind (relier) au lieu de blind (aveugle) ?
Anarchy for the triple A.
Répondre