Ups, ich brauche Runlevel 1

9

Ich habe also einen Fehler in einem Skript in meinem Verzeichnis init.d und unter dem Strich ... Ich kann den Pi nicht vollständig booten.

Wie kann ich in Runlevel 1 (Einzelbenutzermodus) booten, um den Fehler zu beheben?

Deac Karns
quelle
1
Überprüfen Sie diesen Link für mehrere Optionen raspberrypi.org/phpBB3/viewtopic.php?f=28&t=16185
Steve Robillard

Antworten:

16

Das ist nicht gerade eine Möglichkeit, Runlevel 1 aufzurufen, aber es gibt eine Boot-Option im abgesicherten Modus in der Himbeer-Pi-Firmware. Um es zu aktivieren, müssen Sie beim Booten einen Jumper zwischen Pin 5 und 6 am P1 (GPIO) -Header einfügen.

Safemode-Pins

Wenn Sie dies tun, ignoriert der Bootloader die config.txtDatei (mit Ausnahme der avoid_safe_modeOption, mit der diese Funktion deaktiviert werden kann) und versucht kernel_emergency.imgstattdessen zu booten (falls verfügbar) kernel.img.

Standardmäßig kernel_emergency.imgist ein spezieller Notfall integriert initramfs, der auf diesem Busybox-basierten Betriebssystem gestartet wird, damit Sie die Probleme in Ihrem Betriebssystem manuell beheben können (oder die Kernel-Startparameter ändern, um Runlevel 1 beim nächsten Start auszuführen). Denken Sie daran, laufen , syncbevor herunterzufahren , da rebootoder shutdownBefehle möglicherweise nicht.

Krzysztof Adamski
quelle
Genau das habe ich gesucht.
Deac Karns
5
  • Drücken Sie beim Start die Umschalttaste.
  • Drücken Sie "e", um die Konfiguration zu bearbeiten
  • Gehen Sie zu cmdline.txt
  • am Ende der Zeile hinzufügen

    init=/bin/sh

  • Klicken Sie auf OK und dann auf Esc, um zu starten. Sie werden über eine Befehlszeile gestartet

    # /etc/init.d/mountall.sh (das wird etwas tun)

    # mount -n -o remount,rw / (Dies wird erneut bereitgestellt, damit Sie Änderungen vornehmen können.)

  • Jetzt sollten Sie in der Lage sein, die Konfiguration init.d zu bearbeiten.

  • Wenn Sie erneut neu starten ... halten Sie die Umschalttaste gedrückt und entfernen Sie init = / bin / sh
Mike Sandler
quelle
Ausgezeichnet! Ich hatte Anweisungen gefunden, um sh zu initiieren, aber mir fehlte das Remount-Zeug, das ich brauchte. Vielen Dank!
Richard Turner
3

Einige der anderen Antworten hier sind jetzt falsch:

  • Der PIN - Methode Jumper GPIO wurde entfernt von den vorgelagerten OS, so dass es funktioniert jetzt nur , wenn Sie ein NOOBS Bild verwenden

  • Raspbian Jessies Wechsel zu systemd bricht den init=/bin/shHack. Wenn Sie dies tun, beschwert es sich,can't access tty: job control turned off

Glücklicherweise gibt es eine funktionierende Lösung, die einen echten Einzelbenutzerzugriff ermöglicht: Fügen Sie direkt nach dem Parameter ein Leerzeichen und ein 1am Ende von hinzu .cmdline.txtrootwait

Das Hold-Shift-Startmenü ist mit dem Standard-Raspbian-Jessie-OS-Image nicht vorhanden. Sie müssen dies also tun, indem /boot/cmdline.txtSie es von einem anderen Computer aus bearbeiten, wenn Sie das NOOBS-Image nicht verwenden.

Warren Young
quelle
2

Ich konnte keine Möglichkeit finden, den Pi zum Booten in Runlevel 1 zu zwingen, also habe ich eine Fedora-Live-Festplatte gestartet, die ich herumgelegt hatte, und das Terminal verwendet, um das betreffende Skript aus dem Verzeichnis /etc/init.d zu entfernen

Deac Karns
quelle
1

Wenn Sie von Windows aus auf Linux-Partitionsdateien für SD-Karten zugreifen und diese ändern möchten, können Sie dies mit einem dieser Dienstprogramme tun .

avra
quelle
Herzlich willkommen! Bitte nehmen Sie an der Tour teil und besuchen Sie das Hilfezentrum . Während dies theoretisch die Frage beantworten kann, ist es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Tatsächlich setzen wir diese Richtlinie durch : Bitte bearbeiten Sie sie so, dass die Antwort für sich allein steht, falls der Link in Zukunft unterbrochen wird. Wenn es nicht innerhalb von 48 Stunden bearbeitet wird, wird es in das Community-Wiki konvertiert.
Jacobm001
1
  1. Booten Sie Runlevel 1

    $ sudo init 1
    
  2. Nach dem Booten in Runlevel 1

    $ passwd
    

HINWEIS: 1 bis Runlevel, die Datei ändert /etc/inittabvon id:2:initdefault:einer ähnlich etwas wie:id:1:initdefault:

Lowreno
quelle
2
Ist das wirklich das Booten in Runlevel 1, obwohl? Ich meine, es kann kaum gemacht werden, wenn die Maschine überhaupt nicht gebootet wird, oder?
Bex