Esta es probablemente una pregunta duplicada, pero no estoy lo suficientemente familiarizado con el proceso de inicio de sesión / inicio de CentOS (especialmente en una VM) para saber qué buscar.
Estoy ejecutando CentOS 7 en VirtualBox. Accidentalmente agregué gnome-terminal
al final de mi ~/.bashrc
archivo. Así que ahora aparece una ventana de terminal cuando inicio sesión. Esa sesión de terminal se ejecuta .bashrc
, lo que abre otra ventana, etc., etc., y me inundan un montón de gnome-terminal
ventanas de terminal.
Estoy tratando de iniciar sesión en una sesión de terminal sin el inicio de sesión de la GUI (así que gnome-terminal
falla), pero no puedo hacer que arranque sin la GUI. He intentado usar las respuestas a esta pregunta, sin éxito. Recibo un inicio de sesión de GUI cada vez: ¿Cómo iniciar CentOS en CLI? . ¿Hay otra forma de editar la configuración de grub en el arranque, o una forma de llegar a una nueva instancia de terminal desde el inicio de sesión de GUI, como Ctrl + Alt + F1 en Ubuntu? (Sí, lo probé. O no funciona en CentOS 7, o no funciona en una VM VirtualBox). ¿O hay alguna otra forma de obtener una sesión de terminal sin una GUI, así puedo editar mi .bashrc
y arreglar este desastre?
sshd
en esa VM? Muchas maneras. 1) Comience como modo de usuario único (por ejemplo, ingrese al momento del arranque, seleccione el núcleo, presione a, agregue un solo , ingrese ...) 2) si en su sistema VM ejecute sshd puede intentar copiar su.bashrc
modificación y volver a copiarla ( scp, sftp rsync ...). 3) puede iniciar sesión como otro usuario y hacersu -
... 4) desde otra máquina (incluso virtual) que puede hacerssh user@host mv .bashrc bashrcToModify
luego iniciar sesión, modificar ... 0) ¿Antes de todoCTRL ALT F1
funciona desde la VM?.bashrc
era. Pensé que se ejecutó una vez al iniciar sesión, pero se ejecuta cada vez que se inicia una sesión de shell. Quería que apareciera una ventana de terminal cada vez que ingresaba, así que lo hiceecho 'gnome-terminal' >> ~/.bashrc
. Mala idea. Supongo que debería ponergnome-terminal
en/etc/init.d
o en algún lugar? Todavía estoy tratando de entender el proceso de arranque.Respuestas:
CtrlAltF1podría estar siendo capturado por el host, o VirtualBox podría no estar pasándolo correctamente. Un par de pruebas rápidas me dicen que puede usar la clave de Host definida en VirtualBox en lugar de CtrlAlt(podría ser la izquierda Ctrlo la izquierda ⌘en Mac). Entonces, presionar ⌘F1cambió a TTY1 en VirtualBox para mí (y de manera similar para ⌘F7volver a la GUI).
fuente
Puede arrancar con un CD de Linux en vivo y luego montar el sistema de archivos CentOS y editar el archivo .bashrc desde allí.
fuente
Init / bin / sh desde la configuración de grub
Puede editar su configuración de grub para cargar un shell raíz en lugar de ir a la GUI.
e
para editar. Si no aparece, reinicie y mantenga presionada la tecla Mayús durante el arranqueEncuentra la línea que comienza con
linux16
olinux
. El mío se ve así. El tuyo puede diferir ligeramenteCambie
ro
arw
( indicador de solo lectura para readwrite para que pueda escribir los cambios) y agregueinit=/bin/sh
a la línea. Esto le dice a Linux que se ejecute en/bin/sh
lugar deinit
al inicio. Ejemplo para mi entradaPresione Ctrl-X para ejecutar la configuración. No se guardará.
Aparecerá un shell de raíz. Úselo para editar su
.bashrc
y eliminar la línea ofensiva.Tenga en cuenta que no debe seguir usando el sistema operativo en este estado ya que el shell se ejecutará como PID 1, normalmente reservado para el
init
proceso. Puedes continuar manualmente con initexec /sbin/init
pero te recomiendo que solo reiniciesReiniciar como de costumbre. Sus cambios anteriores serán olvidados.
Básicamente, estamos editando las opciones de arranque pasadas a Linux desde GRUB, que le dicen a Linux que monte el sistema de archivos raíz de lectura-escritura e inicie
/bin/sh
el proceso de inicio.Esto funciona para mí usando Centos 7 y VirtualBox 4.3.12
fuente
ro
yrw
? O mejor aún, ¿hay una página de manual para linux16? ¿Qué estoy haciendo aquí?exec /sbin/init
o lo que sea que sea realinit
. Las opcionesro
yrw
montan root solo lectura o lectura-escritura. Básicamente, está editando el menú de GRUB para indicarle que inicie Linux con estas opciones, que le indican a Linux que monte el sistema de archivos raíz de lectura-escritura y comience sh para init.scp una copia reparada de
.bashrc
en su lugarSi tiene otra máquina para trabajar, tome una copia del archivo roto y solucione el problema, luego vuelva a colocarlo de donde vino. Esto evita iniciar sesión e invocar cualquiera de los comandos de inicio de sesión.
Anexo: Como OP señala a continuación, esto requiere acceso a SSH
homehost
. Si esa no es una opción, pero FTP / SFTP está disponible, cualquier método de transferencia de archivos hará lo que necesita, que es simplemente instalar el archivo de inicio de sesión corregido.fuente
sshd
ejecutando (lo cual no estoy seguro de que CentOS lo haga de manera predeterminada), y si la red está configurada correctamente con VirtualBox y en el host y en la VM.