로그인하지 않고 .bashrc를 편집하는 방법 GUI없이 부팅 할 수 없습니다. 나는이

이것은 아마도 중복되는 질문 일 수 있지만 CentOS (특히 VM에서)의 로그인 / 부팅 프로세스에 익숙하지 않아 검색 대상을 알 수 없습니다.

VirtualBox에서 CentOS 7을 실행하고 있습니다. 실수로 파일 gnome-terminal끝에 추가 했습니다 ~/.bashrc. 이제 로그인 할 때 터미널 창이 나타납니다. 터미널 세션이 실행 .bashrc되어 다른 창 등이 열리고 많은 gnome-terminal터미널 창이 넘칩니다 .

GUI 로그인없이 터미널 세션에 로그인하려고하는데 ( gnome-terminal실패) GUI없이 부팅 할 수 없습니다. 나는이 질문에 대한 답을 성공적으로 사용하려고 시도했습니다. 매번 GUI 로그인을받습니다 : CLI에서 CentOS를 부팅하는 방법? . 부팅 할 때 grub 구성을 편집하는 또 다른 방법이 있습니까, 아니면 Ubuntu의 Ctrl + Alt + F1과 같은 GUI 로그인에서 새 터미널 인스턴스를 얻는 방법이 있습니까? (예, 시도했습니다. CentOS 7에서 작동하지 않거나 VirtualBox VM에서 작동하지 않습니다.) 또는 GUI없이 터미널 세션을 얻을 수있는 다른 방법이 있습니까? .bashrc이 난장판을 고쳐?



답변

CtrlAltF1호스트에 의해 캡처되거나 VirtualBox가 올바르게 전달되지 않을 수 있습니다. 몇 가지 빠른 테스트 를 통해 VirtualBox에 정의 된 호스트 키를 사용할 수 있음을 알 수 있습니다 CtrlAlt( Mac Ctrl에서는 왼쪽 또는 왼쪽 일 수 있음 ). 따라서를 눌러 F1VirtualBox에서 TTY1로 전환했습니다 ( F7GUI 로 돌아 가기 위해 비슷하게 ).


답변

라이브 Linux CD로 부팅 한 다음 CentOS 파일 시스템을 마운트하고 거기서 .bashrc 파일을 편집 할 수 있습니다.


답변

GRUB 구성에서 Init / bin / sh

GUI로 이동하는 대신 루트 쉘을로드하도록 grub 구성을 편집 할 수 있습니다.

  1. VM 재부팅
  2. 그럽 메뉴가 나타나면 첫 번째 항목을 선택하고을 눌러 e편집합니다. 표시되지 않으면 부팅하는 동안 Shift 키를 다시 누른 상태로 유지하십시오
  3. linux16또는로 시작하는 줄을 찾으십시오 linux. 광산은 이렇게 생겼습니다. 약간 다를 수 있습니다

    linux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8
  4. 변경 사항을 쓸 수 있도록 roto rw( readonly 플래그를 readwrite로 변경) init=/bin/sh를 행에 추가 하십시오. 이것은 시작시 /bin/sh대신 리눅스가 실행되도록 지시 init합니다. 나의 참가 예

    linux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root rw crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8 init=/bin/sh
  5. 구성을 실행하려면 Ctrl-X를 누르십시오. 저장되지 않습니다.

  6. 루트 쉘이 나타납니다. 이를 사용 .bashrc하여 문제를 해결하고 문제를 일으키는 줄을 제거하십시오.

    셸은 일반적으로 init프로세스 용으로 예약 된 PID 1로 실행되므로이 ​​상태에서 OS를 계속 사용해서는 안됩니다 . 수동으로 초기화를 계속할 수는 exec /sbin/init있지만 재부팅하는 것이 좋습니다.

  7. 정상적으로 재부팅하십시오. 이전 변경 사항을 잊어 버릴 것입니다.

GRUB에서 Linux로 전달 된 부팅 옵션을 근본적으로 편집하고 있습니다. GRUB에서 루트 파일 시스템을 읽기-쓰기로 마운트 /bin/sh하고 init 프로세스를 시작 하도록합니다.

이것은 Centos 7 및 VirtualBox 4.3.12를 사용하는 경우 효과적입니다.


답변

수리 된 사본 .bashrc을 제자리에 두다

작업 할 다른 시스템이있는 경우 손상된 파일의 사본을 잡고 문제점을 수정 한 다음 원래 위치로 되돌려 놓으십시오. 로그인 및 로그인 명령을 호출하지 않습니다.

user@backup ~ $ scp user@homehost:~/.bashrc busted.bashrc
user@backup ~ $ vim busted.bashrc # fix, fix
user@backup ~ $ scp busted.bashrc user@homehost:~/.bashrc
user@backup ~ $ rm busted.bashrc

부록 : OP가 아래에 지적한대로에 액세스하려면 SSH 액세스가 필요합니다 homehost. 이것이 옵션이 아닌 대신 FTP / SFTP를 사용할 수있는 경우, 파일 전송 방법이 필요한 것을 수행 할 것입니다. 이는 단순히 올바른 로그인 파일을 설치하는 것입니다.