To prawdopodobnie duplikat pytania, ale nie znam wystarczająco procesu logowania / rozruchu CentOS (szczególnie na maszynie wirtualnej), aby wiedzieć, czego szukać.
Korzystam z CentOS 7 w VirtualBox. Przypadkowo dołączyłem gnome-terminal
do końca mojego ~/.bashrc
pliku. Więc teraz pojawia się okno terminala, gdy się loguję. Sesja terminala jest wykonywana .bashrc
, co otwiera kolejne okno itp. Itd. I jestem zalany mnóstwem gnome-terminal
okien terminala.
Próbuję zalogować się do sesji terminala bez logowania GUI (więc gnome-terminal
kończy się niepowodzeniem), ale nie mogę go uruchomić bez GUI. Próbowałem użyć odpowiedzi na to pytanie, ale bez powodzenia. Za każdym razem otrzymuję login GUI: Jak uruchomić CentOS w CLI? . Czy istnieje inny sposób edycji konfiguracji grub podczas rozruchu lub sposób uzyskania dostępu do nowej instancji terminala z poziomu logowania GUI, np. Ctrl + Alt + F1 w Ubuntu? (Tak, próbowałem. To albo nie działa w CentOS 7, albo nie działa w VirtualBox VM.) Lub jest inny sposób na uzyskanie sesji terminalu bez GUI, więc mogę edytować .bashrc
i naprawić ten bałagan?
sshd
działa na tej maszynie wirtualnej? Wiele sposobów. 1) Uruchom jako tryb pojedynczego użytkownika (np. Wejdź w czasie rozruchu, wybierz jądro, naciśnij a, dołącz pojedynczy , wprowadź ...) 2) jeśli w systemie VM uruchomisz sshd, możesz spróbować skopiować.bashrc
modyfikację i skopiować ją ponownie ( scp, sftp rsync ...). 3) możesz zalogować się jako inny użytkownik i zrobićsu -
... 4) z innej maszyny (nawet wirtualnej) możeszssh user@host mv .bashrc bashrcToModify
wtedy zalogować, zmodyfikować ... 0) Przed wszystkimCTRL ALT F1
działa z maszyny wirtualnej?.bashrc
. Myślałem, że był uruchamiany raz podczas logowania, ale jest uruchamiany przy każdym uruchomieniu sesji powłoki. Chciałem, aby okno terminalu wyświetlało się przy każdym logowaniu, więc zrobiłem toecho 'gnome-terminal' >> ~/.bashrc
. Kiepski pomysł. Chyba powinienem umieścićgnome-terminal
w/etc/init.d
lub gdzieś? Nadal próbuję zrozumieć proces uruchamiania.Odpowiedzi:
CtrlAltF1może zostać przechwycony przez hosta lub VirtualBox może nie przekazać go poprawnie. Kilka szybkich testów mówi mi, że możesz użyć klucza Host zdefiniowanego w VirtualBox zamiast CtrlAlt(może to być lewy Ctrllub lewy ⌘komputer Mac). Tak więc naciśnięcie ⌘F1przełącza na TTY1 w VirtualBox dla mnie (i podobnie dla ⌘F7powrotu do GUI).
źródło
Możesz uruchomić system z dysku CD z systemem Linux na żywo, a następnie zamontować system plików CentOS i stamtąd edytować plik .bashrc.
źródło
Init / bin / sh z konfiguracji grub
Możesz edytować swoją konfigurację grub, aby załadować powłokę root zamiast przejść do GUI.
e
aby edytować. Jeśli się nie pojawi, uruchom ponownie i przytrzymaj klawisz Shift podczas rozruchuZnajdź linię zaczynającą się od
linux16
lublinux
. Mój wygląda tak. Twoje mogą się nieznacznie różnićZmień na ( flaga tylko
ro
do odczytu na zapis, aby móc zapisywać zmiany) i dołącz do linii. To mówi Linuksowi, aby działał zamiast przy starcie. Przykład mojego wpisurw
init=/bin/sh
/bin/sh
init
Naciśnij Ctrl-X, aby uruchomić konfigurację. To nie zostanie zapisane.
Pojawi się powłoka root. Użyj go, aby edytować swoją
.bashrc
linię i usunąć ją.Pamiętaj, że nie powinieneś nadal używać systemu operacyjnego w tym stanie, ponieważ powłoka będzie działała jako PID 1, zwykle zarezerwowana dla
init
procesu. Możesz ręcznie kontynuować init za pomocą,exec /sbin/init
ale zalecam tylko ponowne uruchomienieUruchom ponownie jak zwykle. Twoje poprzednie zmiany zostaną zapomniane.
Zasadniczo edytujemy opcje rozruchu przekazane do systemu Linux z GRUB, które mówią Linuksowi, aby zamontował główny system plików do odczytu i zapisu i rozpoczął
/bin/sh
proces inicjowaniaDziała to dla mnie przy użyciu Centos 7 i VirtualBox 4.3.12
źródło
ro
i corw
? A może jeszcze lepiej, czy jest strona podręcznika dla systemu Linux? Co ja tutaj robię?exec /sbin/init
cokolwiekinit
.ro
Irw
opcje montowania korzeń tylko do odczytu lub odczytu. Zasadniczo edytujesz menu GRUB, aby kazało mu uruchomić Linuksa za pomocą tych opcji, które nakazują Linuksowi zamontować główny system plików do odczytu i zapisu i uruchomić sh dla init.scp naprawioną kopię
.bashrc
w miejscuJeśli masz inną maszynę do pracy, weź kopię uszkodzonego pliku i napraw problem, a następnie umieść go z powrotem tam, skąd pochodzi. Pozwala to uniknąć logowania i wywoływania jakichkolwiek poleceń logowania.
Dodatek: Jak wskazuje OP poniżej, wymaga to dostępu do SSH
homehost
. Jeśli nie jest to opcja, ale zamiast tego dostępny jest FTP / SFTP, każda metoda przesyłania plików zrobi to, czego potrzebujesz, to po prostu zainstalować poprawiony plik logowania.źródło
sshd
na nim działa maszyna wirtualna (czego nie jestem pewien, że CentOS domyślnie ma) i jeśli sieć jest poprawnie skonfigurowana z VirtualBox oraz na hoście i na maszynie wirtualnej.