web-dev-qa-db-fra.com

update-initramfs exécute les scripts dans init-premount?

J'ai donc un ordinateur portable bizarre qui ne démarre pas correctement avec ma clé USB 3.0. Grub et initramfs se chargent mais miraculeusement, le manche n'est pas monté. Si je ne fais qu'attendre, la machine bascule vers le shell busybox. blkid n'énumère pas mon bâton. Mais si je le fais avant, au moment voulu, rebranchez ce bâton, Ubuntu démarre correctement.

Alors j'ai pensé, automatisons cela. Je me suis procuré un script shell restart_usb, je l'ai mis dans /etc/initramfs-tools/scripts/init-premount et j'ai lancé update-initramfs -u.

Maintenant vient la partie amusante: le script est exécuté lors de la génération du nouveau initramfs, réinitialisant ainsi usb et laissant ainsi un linux en cours d'exécution sans accès à aucune de ses partitions. Seule la réinitialisation matérielle y contribue.

Ma question est donc la suivante: comment puis-je mettre un script qui s'exécute avant d'essayer de monter / dans le initramfs sans qu'il soit exécuté par update-initramfs?

À votre santé.

Edit: Je lance une nouvelle installation (non mise à jour) de Ubuntu 14.04.

1
moeter

J'ai eu un problème similaire, alors j'ai fouillé dans d'autres scripts inclus dans initramfs. Apparemment, le "truc" est dans un en-tête de script qui devrait ressembler à ceci:

 #!/bin/sh

 set -e

 case $1 in
 prereqs)
     prereqs
     exit 0
     ;;
 esac

La déclaration case est la partie importante.

Il est mentionné dans cette documentation , mais cela n'indique pas que vous devez inclure cet en-tête même si vous n'avez pas besoin d'un ordre précis.

3
Pavel Pokorný