Il s'agit probablement d'une question en double, mais je ne connais pas suffisamment le processus de connexion / démarrage de CentOS (en particulier sur une machine virtuelle) pour savoir quoi rechercher.
J'utilise CentOS 7 dans VirtualBox. J'ai accidentellement ajouté gnome-terminal
à la fin de mon ~/.bashrc
dossier. Alors maintenant, une fenêtre de terminal apparaît lorsque je me connecte. Cette session de terminal s'exécute .bashrc
, ce qui ouvre une autre fenêtre, etc., etc., et je suis inondé d'une tonne de gnome-terminal
fenêtres de terminal.
J'essaie de me connecter à une session de terminal sans la connexion GUI ( gnome-terminal
échoue donc ), mais je ne peux pas le faire démarrer sans l'interface graphique. J'ai essayé d'utiliser les réponses à cette question, sans succès. J'obtiens une connexion GUI à chaque fois: Comment démarrer CentOS en CLI? . Existe-t-il un autre moyen de modifier la configuration de grub au démarrage, ou un moyen d'accéder à une nouvelle instance de terminal à partir de la connexion GUI, comme Ctrl + Alt + F1 dans Ubuntu? (Oui, je l'ai essayé. Cela ne fonctionne pas dans CentOS 7, ou il ne fonctionne pas dans une machine virtuelle VirtualBox.) Ou existe-t-il un autre moyen d'obtenir une session de terminal sans interface graphique, donc je peux modifier mon .bashrc
et réparer ce gâchis?
sshd
sur cette machine virtuelle? Plusieurs façons. 1) Commencez en mode utilisateur unique (par exemple, entrez au démarrage, sélectionnez le noyau, appuyez sur a, ajoutez un seul , entrez ...) 2) si dans votre système VM exécutez sshd, vous pouvez essayer de copier votre.bashrc
modification et de la recopier ( scp, sftp rsync ...). 3) vous pouvez vous connecter en tant qu'autre utilisateur et fairesu -
... 4) à partir d'une autre machine (même virtuelle) vous pouvezssh user@host mv .bashrc bashrcToModify
alors vous connecter, modifier ... 0) Avant tout, çaCTRL ALT F1
marche depuis la VM?.bashrc
servait. Je pensais qu'il était exécuté une fois lors de la connexion, mais il est exécuté à chaque démarrage d'une session shell. Je voulais qu'une fenêtre de terminal apparaisse à chaque fois que je me connectais, alors je l'ai faitecho 'gnome-terminal' >> ~/.bashrc
. Mauvaise idée. Je suppose que je devrais mettregnome-terminal
dans/etc/init.d
ou quelque part? J'essaie toujours de comprendre le processus de démarrage.Réponses:
CtrlAltF1peut être capturé par l'hôte, ou VirtualBox peut ne pas le transmettre correctement. Quelques tests rapides me disent que vous pouvez utiliser la clé Host définie dans VirtualBox au lieu de CtrlAlt(pourrait être la gauche Ctrlou la gauche ⌘sur Mac). Donc, appuyer sur est ⌘F1passé à TTY1 dans VirtualBox pour moi (et de même pour ⌘F7revenir à l'interface graphique).
la source
Vous pouvez démarrer avec un CD Linux en direct, puis monter le système de fichiers CentOS et éditer le fichier .bashrc à partir de là.
la source
Init / bin / sh à partir de la configuration grub
Vous pouvez modifier votre configuration grub pour charger un shell racine au lieu d'aller à l'interface graphique.
e
pour modifier. S'il n'apparaît pas, redémarrez et maintenez Shift pendant le démarrageTrouvez la ligne commençant par
linux16
oulinux
. Le mien ressemble à ça. Le vôtre peut différer légèrementRemplacez le
ro
parrw
( indicateur en lecture seule par readwrite pour pouvoir écrire les modifications) et ajoutez-leinit=/bin/sh
à la ligne. Cela indique à Linux de s'exécuter/bin/sh
au lieu duinit
démarrage. Exemple pour mon entréeAppuyez sur Ctrl-X pour exécuter la configuration. Il ne sera pas enregistré.
Un shell racine apparaîtra. Utilisez-le pour modifier votre
.bashrc
et supprimer la ligne incriminée.Notez que vous ne devez pas continuer à utiliser le système d'exploitation dans cet état car le shell s'exécutera en tant que PID 1, normalement réservé au
init
processus. Vous pouvez continuer manuellement l'initialisation avecexec /sbin/init
mais je recommanderais simplement de redémarrerRedémarrez normalement. Vos modifications précédentes seront oubliées.
Nous modifions essentiellement les options de démarrage passées à Linux à partir de GRUB, qui indiquent à Linux de monter le système de fichiers racine en lecture-écriture et de démarrer
/bin/sh
le processus d'initialisationCela fonctionne pour moi en utilisant Centos 7 et VirtualBox 4.3.12
la source
ro
etrw
? Ou mieux encore, existe-t-il une page de manuel pour linux16? Qu'est ce que je fais ici?exec /sbin/init
ou quel que soit le réelinit
. Les optionsro
etrw
montent root en lecture seule ou en lecture-écriture. Vous modifiez essentiellement le menu GRUB pour lui dire de démarrer Linux avec ces options, qui indiquent à Linux de monter le système de fichiers racine en lecture-écriture et de démarrer sh pour init.scp une copie réparée de
.bashrc
en placeSi vous avez une autre machine pour travailler, récupérez une copie du fichier cassé et corrigez le problème, puis remettez-le d'où il vient. Cela évite de se connecter et d'appeler l'une des commandes de connexion.
Addendum: Comme OP le souligne ci-dessous, cela nécessite un accès SSH à
homehost
. Si ce n'est pas une option mais que FTP / SFTP est disponible à la place, toute méthode de transfert de fichiers fera ce dont vous avez besoin, qui consiste simplement à installer le fichier de connexion corrigé.la source
sshd
cours d'exécution (ce que je ne suis pas sûr que CentOS fait par défaut), et si le réseau est correctement configuré avec VirtualBox et dans l'hôte et dans la machine virtuelle.