추가 읽기

추가 읽기

그럴지는 모르겠지만"단일 사용자 모드"는 올바른 용어이지만 저는 다음과 같습니다.

GRUB 메뉴에서 EEdit Run Configuration을 눌렀습니다. 로 시작하는 줄에 linux다음을 추가했습니다.

rw init=/bin/bash

그리고 를 누르세요 F10. 컴퓨터는 암호를 묻지 않고 루트 셸로 부팅됩니다.

문제는 신호가 작동하지 않는다는 것입니다. 예를 들어, 명령을 실행할 때 Ctrl+를 눌러 명령을 종료 할 수 없습니다 C.

이것이 예상되는가? 그렇다면 왜 그렇습니까? 이 문제를 어떻게 해결할 수 있나요? 단일 사용자 모드의 터미널 에뮬레이터와 관련이 있습니까?

답변1

오랫동안 단일 사용자 모드는 올바른 용어가 아니었습니다. 1990년대에는 그랬다.단일 사용자 모드로 나누어긴급 모드그리고구조 모드. 실제로 당신은 그 중 어느 것도 사용하지 않습니다.

실제로 수행하고 있는 작업은 프로세스 #1이 실제로 수행해야 하는 작업을 수행하도록 설계되지 않은 프로세스 #1로 프로그램을 실행하는 것과 관련되므로 좋지 않은 생각입니다. 응급 또는 구조 모드를 사용하는 것이 더 낫습니다. 후자는 다음으로 구성됩니다.수락됨대답은 당신이 가리키는 대답이 가리키는 것입니다.

예, 신호가 이상하게 작동합니다. 우선, 프로세스 #1에는 신호에 대한 특별한 의미가 있는데, init=/bin/bash이는 이것이 나쁜 생각인 여러 이유 중 하나입니다. 또한 작업 제어 셸은 /dev/consoleBourne Again 셸과 같은 제어 터미널과 적절한 세션을 설정하지 않으면 표준 I/O에서 작업 제어를 수행 할 수 없습니다.사실 너한테 말했어일단 시작되었습니다.

몇 가지 간단한 체인 로딩 도구를 사용하여 제어 터미널과 적절한 세션을 설정함으로써 작업 제어를 활성화하고 신호를 전경 프로세스 그룹에 전달할 수 있지만 이것이 모든 문제를 해결하지는 않습니다.다른/bin/bash명시적이고 신중하게 수동으로 수행해야 하기 때문에 프로세스 #1 프로그램으로 문제가 되는 것입니다 .

구조 모드나 비상 모드를 사용하세요.

추가 읽기

답변2

다른 사람들이 언급했듯이 /dev/console작업 제어를 제한하는 실제 tty로 항상 작동하지는 않습니다.

그러나 실제로는 간단히 쉘을 시작할 수 있습니다tty에 연결...

/usr/bin/setsid /bin/bash -ilm <> /dev/tty9 >&0 2>&0 &

...그런 다음 alt-F9작업 제어가 활성화된 상태로 새 셸이 실행되어야 하는 VT#9로 전환을 클릭합니다. (아직 사용하지 않는 VT를 선택할 수 있습니다. 위의 3개 9를 모두 사용하려는 값으로 변경하면 됩니다.)

또한 PID 1이 있는 셸은 모든 고아 프로세스에서 상속된다는 의미입니다. 대부분의 셸은 실행 셸 자체를 호출하기 전에 하위 프로세스 생성을 처리할 수 있어야 하기 때문에 이를 처리할 수 있지만 execve일부는 이로 인해 혼란을 겪을 수 있습니다. SIGCHLD쉘을 호출할 때 이를 무시하는 등 이상한 일을 하십시오 . 내 생각엔 그들에게는 뛰어난 아이들이 없는 것 같아. 이러한 경우 다른 셸에서 작업하는 동안 계속 실행하는 것이 도움이 될 수 있습니다.

while : ; do wait ; done

관련 정보