Oups, j'ai besoin du niveau d'exécution 1

10

J'ai donc un bug dans un script dans mon répertoire init.d et ma ligne de fond ... Je ne peux pas démarrer complètement le pi.

Comment puis-je démarrer au niveau d'exécution 1 (mode mono-utilisateur) afin de pouvoir corriger le bogue?

Deac Karns
la source
1
Vérifiez ce lien pour plusieurs options raspberrypi.org/phpBB3/viewtopic.php?f=28&t=16185
Steve Robillard

Réponses:

16

Ce n'est pas exactement un moyen d'entrer dans le niveau d'exécution 1, mais il existe une option de démarrage en "mode sans échec" dans le firmware du raspberry Pi. Pour l'activer, vous devez insérer un cavalier entre les broches 5 et 6 sur l'en-tête P1 (GPIO) lors du démarrage.

Broches Safemode

Si vous faites cela, le chargeur de démarrage ignorera le config.txtfichier (sauf l' avoid_safe_modeoption qui peut être utilisée pour désactiver cette fonctionnalité) et essaiera de démarrer kernel_emergency.img(si disponible) au lieu de kernel.img.

La valeur par défaut kernel_emergency.imga une initramfsconstruction d' urgence spéciale et il démarrera sur ce système d'exploitation basé sur la boîte occupée afin que vous puissiez résoudre les problèmes dans votre système d'exploitation manuellement (ou modifier les paramètres de démarrage du noyau pour exécuter le niveau d'exécution 1 au prochain démarrage). N'oubliez pas d'exécuter syncavant de mettre hors tension car les commandes rebootou shutdownpeuvent ne pas fonctionner.

Krzysztof Adamski
la source
C'est exactement ce que je cherchais.
Deac Karns
5
  • Appuyez sur shift lors du démarrage.
  • Appuyez sur "e" pour modifier la configuration
  • tabulation sur cmdline.txt
  • ajouter à la fin de la ligne

    init=/bin/sh

  • cliquez sur ok, puis sur Esc pour démarrer ... cela vous amènera sur une ligne de commande

    # /etc/init.d/mountall.sh (cela fera quelque chose)

    # mount -n -o remount,rw / (cela va remonter / donc vous pouvez faire des changements)

  • vous devriez maintenant pouvoir modifier la configuration init.d ......

  • lorsque vous redémarrez à nouveau .... maintenez shift et supprimez le init = / bin / sh
Mike Sandler
la source
Excellent! J'avais trouvé des instructions pour initier sh mais il me manquait les éléments de remontage dont j'avais besoin. Merci!
Richard Turner
3

Plusieurs des autres réponses ici sont maintenant incorrectes:

  • La méthode de broche de cavalier GPIO a été supprimée du système d'exploitation en amont, donc cela ne fonctionne maintenant que si vous utilisez une image NOOBS

  • Le passage de Raspbian Jessie à systemd brise le init=/bin/shhack. Lorsque vous faites cela, il se plaint,can't access tty: job control turned off

Heureusement, il existe une solution qui fonctionne, qui donne en fait un véritable accès à un seul utilisateur: ajoutez un espace et un 1à la fin de cmdline.txt, juste après le rootwaitparamètre.

Le menu de démarrage Hold-Shift n'existe pas avec l'image stock de Raspbian Jessie OS, vous devrez donc le faire en modifiant à /boot/cmdline.txtpartir d'un autre ordinateur si vous n'utilisez pas l'image NOOBS.

Warren Young
la source
2

Je ne pouvais pas trouver un moyen de forcer le pi à démarrer au niveau d'exécution 1, j'ai donc lancé un disque Fedora en direct que j'avais posé et utilisé le terminal pour supprimer le script en question du répertoire /etc/init.d

Deac Karns
la source
1

Si vous souhaitez accéder et modifier les fichiers de partition Linux de la carte SD à partir de Windows, vous pouvez le faire avec l' un de ces utilitaires .

avra
la source
Bienvenue! Veuillez faire le tour et visiter le centre d' aide . Bien que cela puisse théoriquement répondre à la question, il est préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence. En fait, nous appliquons cette politique : veuillez modifier afin que la réponse soit autonome si le lien se rompt à l'avenir. S'il n'est pas modifié dans les 48 heures, il sera converti en wiki communautaire.
Jacobm001
1
  1. Démarrez au niveau d'exécution 1

    $ sudo init 1
    
  2. Après avoir démarré au niveau d'exécution 1

    $ passwd
    

REMARQUE: au niveau d'exécution 1, remplacez le fichier /etc/inittabpar id:2:initdefault:quelque chose de similaire comme:id:1:initdefault:

Lowreno
la source
2
Est-ce que cela démarre vraiment au niveau d'exécution 1? Je veux dire, cela peut difficilement être fait si la machine n'est pas démarrée en premier lieu, n'est-ce pas?
Bex
Non, ce n'est certainement pas le cas. Ce que c'est, c'est de changer le niveau d'exécution sur un système en cours d'exécution.
Crusty Barnacle