Возможно, это дублирующий вопрос, но я недостаточно знаком с процессом входа / загрузки CentOS (особенно на ВМ), чтобы знать, что искать.
Я использую CentOS 7 в VirtualBox. Я случайно добавил gnome-terminal
в конец моего ~/.bashrc
файла. Поэтому теперь, когда .bashrc
я вхожу, появляется окно терминала. Выполняется сеанс терминала , который открывает другое окно и т. Д., И т. Д., И я затоплен множеством gnome-terminal
окон терминала.
Я пытаюсь войти в терминальную сессию без входа в систему GUI (поэтому gnome-terminal
не удается), но я не могу заставить его загрузиться без GUI. Я пытался использовать ответы на этот вопрос, но безуспешно. Я получаю GUI логин каждый раз: как загрузить CentOS в CLI? , Есть ли другой способ отредактировать конфигурацию grub при загрузке или способ получить доступ к новому экземпляру терминала из входа в GUI, например, Ctrl + Alt + F1 в Ubuntu? (Да, я попробовал. Он либо не работает в CentOS 7, либо не работает в виртуальной машине VirtualBox.) Или есть какой-то другой способ получить терминальную сессию без графического интерфейса, чтобы я мог редактировать свой .bashrc
и исправить этот беспорядок?
sshd
на этой виртуальной машине? Много способов. 1) Запустите как однопользовательский режим (например, введите во время загрузки, выберите ядро, нажмите a, добавьте одиночный , введите ...) 2) если в вашей системе VM запустите sshd, вы можете попробовать скопировать ваши.bashrc
изменения и скопировать их обратно ( scp, sftp rsync ...). 3) вы можете войти в систему как другой пользователь и сделатьsu -
... 4) с другой машины (даже виртуальной) вы можете сделать это,ssh user@host mv .bashrc bashrcToModify
затем войти, изменить ... 0) Прежде чем всеCTRL ALT F1
работает с ВМ?.bashrc
. Я думал, что он запускался один раз при входе в систему, но он запускается каждый раз, когда запускается любой сеанс оболочки. Я хотел, чтобы окно терминала появлялось при каждом входе в систему, поэтому я и сделалecho 'gnome-terminal' >> ~/.bashrc
. Плохая идея. Я предполагаю , что я должен поставитьgnome-terminal
в/etc/init.d
или где - нибудь? Я все еще пытаюсь понять процесс загрузки.Ответы:
CtrlAltF1может быть захвачен хостом, или VirtualBox может не передавать его правильно. Пара быстрых тестов говорит мне, что вы можете использовать ключ хоста, определенный в VirtualBox, вместо CtrlAlt(может быть слева Ctrlили слева ⌘на Mac). Итак, нажатие ⌘F1переключилось на TTY1 в VirtualBox для меня (и аналогично для ⌘F7возврата к GUI).
источник
Вы можете загрузиться с живого компакт-диска Linux, а затем смонтировать файловую систему CentOS и отредактировать оттуда файл .bashrc.
источник
Init / bin / sh из конфигурации grub
Вы можете отредактировать свою конфигурацию grub, чтобы загрузить корневую оболочку, а не переходить в графический интерфейс.
e
для редактирования. Если он не появляется, перезапустите и удерживайте Shift во время загрузкиНайдите строку, начинающуюся с
linux16
илиlinux
. Моя выглядит так. Ваш может немного отличатьсяИзменение
ro
кrw
( только для чтения флага READWRITE так что вы можете записать изменения) и дополнениеinit=/bin/sh
к линии. Это говорит, что Linux запускается/bin/sh
вместоinit
запуска. Пример для моей записиНажмите Ctrl-X для запуска конфигурации. Это не будет сохранено.
Появится корневая оболочка. Используйте его для редактирования
.bashrc
и удаления оскорбительной строки.Обратите внимание, что вы не должны продолжать использовать ОС в этом состоянии, поскольку оболочка будет работать как PID 1, обычно зарезервированный для
init
процесса. Вы можете продолжить init с помощью,exec /sbin/init
но я бы рекомендовал просто перезагрузитьПерезагрузитесь как обычно. Ваши предыдущие изменения будут забыты.
По сути, мы редактируем параметры загрузки, передаваемые Linux из GRUB, которые говорят Linux монтировать корневую файловую систему для чтения-записи и запуска
/bin/sh
для процесса инициализации.Это работает для меня, используя Centos 7 и VirtualBox 4.3.12
источник
ro
иrw
? Или еще лучше, есть ли man-страница для linux16? Что я здесь делаю?exec /sbin/init
или как там на самом делеinit
.ro
Иrw
опции монтирования корневой только для чтения или для чтения и записи. По сути, вы редактируете меню GRUB, чтобы сообщить ему о загрузке Linux с этими параметрами, которые говорят Linux монтировать корневую файловую систему для чтения-записи и запуска sh для init.scp отремонтированная копия
.bashrc
на местоЕсли у вас есть другой компьютер для работы, возьмите копию поврежденного файла и устраните проблему, а затем верните ее туда, откуда она пришла. Это позволяет избежать входа в систему и вызова любой из команд входа в систему.
Приложение: Как указывает OP ниже, для этого требуется доступ по SSH
homehost
. Если это не вариант, но вместо него доступен FTP / SFTP, любой метод передачи файлов будет делать то, что вам нужно, то есть просто установить исправленный файл входа в систему.источник
sshd
запущена виртуальная машина (что я не уверен, что CentOS делает по умолчанию), и если сеть настроена правильно с VirtualBox и на хосте, и на виртуальной машине.