Dies ist wahrscheinlich eine doppelte Frage, aber ich kenne den Anmelde- / Startvorgang von CentOS (insbesondere auf einer VM) nicht gut genug, um zu wissen, wonach gesucht werden muss.
Ich verwende CentOS 7 in VirtualBox. Ich habe versehentlich an gnome-terminal
das Ende meiner ~/.bashrc
Datei angehängt . Wenn ich mich anmelde, wird nun ein Terminalfenster geöffnet. Diese Terminalsitzung wird ausgeführt .bashrc
, wodurch ein anderes Fenster usw. usw. geöffnet wird, und ich bin mit einer Vielzahl von gnome-terminal
Terminalfenstern überflutet .
Ich versuche, mich bei einer Terminalsitzung ohne die GUI-Anmeldung anzumelden ( gnome-terminal
schlägt also fehl), aber ich kann es nicht zum Booten ohne die GUI bringen. Ich habe versucht, die Antworten auf diese Frage zu verwenden, ohne Erfolg. Ich erhalte jedes Mal ein GUI-Login: Wie starte ich CentOS in der CLI? . Gibt es eine andere Möglichkeit, die Grub-Konfiguration beim Booten zu bearbeiten, oder eine Möglichkeit, über die GUI-Anmeldung zu einer neuen Terminal-Instanz zu gelangen, wie Strg + Alt + F1 in Ubuntu? (Ja, ich habe es versucht. Entweder funktioniert es nicht in CentOS 7, oder es funktioniert nicht in einer VirtualBox-VM.) Oder kann ich eine Terminalsitzung auch ohne GUI erstellen, um meine zu bearbeiten .bashrc
und dieses Chaos beheben?
sshd
auf dieser VM? Viele Möglichkeiten. 1) Als Einzelbenutzermodus starten (z. B. beim Booten eingeben, den Kernel auswählen, a drücken, einzeln anhängen , eingeben ...) 2) Wenn in Ihrem VM-System sshd ausgeführt wird, können Sie versuchen, Ihre.bashrc
Änderung zu kopieren und sie zurück zu kopieren ( scp, sftp rsync ...). 3) Sie können sich als ein anderer Benutzer anmelden undsu -
... 4) von einer anderen Maschine aus (auch virtuell) können Sie sichssh user@host mv .bashrc bashrcToModify
dann anmelden, ändern ... 0) Funktioniert das vor allemCTRL ALT F1
von der VM aus?.bashrc
. Ich dachte, es würde einmal bei der Anmeldung ausgeführt, aber es wird jedes Mal ausgeführt, wenn eine Shell-Sitzung gestartet wird. Ich wollte, dass jedes Mal, wenn ich mich anmeldete, ein Terminalfenster erscheint, also tat ich esecho 'gnome-terminal' >> ~/.bashrc
. Schlechte Idee. Ich denke , ich sollte setzengnome-terminal
in/etc/init.d
oder irgendwo? Ich versuche immer noch, den Startvorgang zu verstehen.Antworten:
CtrlAltF1Möglicherweise wird es vom Host erfasst oder VirtualBox gibt es nicht korrekt weiter. Ein paar Schnelltests zeigen mir, dass Sie den in VirtualBox definierten Host- Schlüssel anstelle von verwenden können CtrlAlt(möglicherweise den linken Ctrloder den linken ⌘auf Macs). Also, ⌘F1für mich auf TTY1 in VirtualBox umgeschaltet drücken (und ähnlich für ⌘F7zurück zur GUI).
quelle
Sie könnten mit einer Live-Linux-CD booten und dann das CentOS-Dateisystem einhängen und die .bashrc-Datei von dort aus bearbeiten.
quelle
Init / bin / sh aus der Grub-Konfiguration
Sie können Ihre Grub-Konfiguration bearbeiten, um eine Root-Shell zu laden, anstatt zur GUI zu wechseln.
e
zum Bearbeiten. Wenn dies nicht der Fall ist, starten Sie den Computer neu und halten Sie beim Booten die Umschalttaste gedrücktSuchen Sie die Zeile, die mit
linux16
oder beginntlinux
. Meins sieht so aus. Ihre können leicht abweichenÄndern Sie die
ro
zurw
( Nur - Lese - Flag readwrite , so dass Sie Änderungen schreiben kann) und Anfügeninit=/bin/sh
an die Leitung. Dies sagt Linux laufen zu lassen ,/bin/sh
anstattinit
beim Start. Beispiel für meinen EintragDrücken Sie Strg-X, um die Konfiguration auszuführen. Es wird nicht gespeichert.
Eine Root-Shell wird angezeigt. Verwenden Sie es, um Ihre zu bearbeiten
.bashrc
und die störende Linie zu entfernen.Beachten Sie, dass Sie das Betriebssystem in diesem Zustand nicht weiter verwenden sollten, da die Shell als PID 1 ausgeführt wird, die normalerweise für den
init
Prozess reserviert ist. Sie können init manuell fortsetzen,exec /sbin/init
aber ich würde nur einen Neustart empfehlenStarten Sie wie gewohnt neu. Ihre vorherigen Änderungen werden vergessen.
Wir bearbeiten im Wesentlichen die von GRUB an Linux übergebenen Startoptionen, die Linux anweisen, das Root-Dateisystem mit Lese- / Schreibzugriff bereitzustellen und
/bin/sh
für den Init-Prozess zu startenDies funktioniert für mich mit Centos 7 und VirtualBox 4.3.12
quelle
ro
undrw
? Oder noch besser, gibt es eine Manpage für linux16? Was mache ich hier?exec /sbin/init
oder mit dem, was gerade aktuellinit
ist. Mit den Optionenro
und wirdrw
Root schreibgeschützt oder schreibgeschützt bereitgestellt. Sie bearbeiten im Wesentlichen das GRUB-Menü, um es anzuweisen, Linux mit diesen Optionen zu booten. Dadurch wird Linux angewiesen, das Root-Dateisystem mit Lese- / Schreibzugriff bereitzustellen und sh für init zu starten.scp eine reparierte Kopie an
.bashrc
Ort und StelleWenn Sie auf einem anderen Computer arbeiten möchten, nehmen Sie eine Kopie der beschädigten Datei und beheben Sie das Problem. Setzen Sie sie dann wieder dort ab, woher sie stammt. Dadurch wird vermieden, dass Sie sich anmelden und einen der Anmeldebefehle aufrufen.
Nachtrag: Wie OP weiter unten ausführt, ist hierfür ein SSH-Zugang erforderlich
homehost
. Wenn dies keine Option ist, aber stattdessen FTP / SFTP verfügbar ist, wird jede Dateiübertragungsmethode das tun, was Sie benötigen, nämlich einfach die korrigierte Anmeldedatei zu installieren.quelle
sshd
ausgeführt wird (was ich nicht sicher bin, ob CentOS dies standardmäßig tut) und wenn das Netzwerk mit VirtualBox und auf dem Host und in der VM korrekt konfiguriert ist.