내 배포판(Linux)에 쉘이 표시되도록 하려면 어떻게 해야 합니까? [폐쇄]

내 배포판(Linux)에 쉘이 표시되도록 하려면 어떻게 해야 합니까? [폐쇄]

저는 Linux에 관심이 있어서 한동안 연구해 왔습니다. 방금 소스에서 Linux 커널을 컴파일하고 커널 쉘을 제공하는 Grub을 사용하여 부팅하는 방법을 배웠습니다.

이제 커널이 메모리에 로드되면 init이를 로드하기 위해 검색합니다. 내 계획은 쉘을 시작하는 것입니다(예: 일반 사용자가 사용할 수 있음 bash).

그럼 그걸 어떻게 가져오나요?

Bash 쉘을 로드하려면 init를 구성해야 합니까, 아니면 제가 할 수 있는 일이 있습니까?

나는 나만의 배포판을 만들고 있는데 배포판에 쉘(bash)만 있고 다른 것은 필요하지 않습니다.

답변1

잘. 구현하기가 복잡하지는 않지만 매우 복잡합니다. :)

간단히 알렉산더의 조언( )을 따르면 init=/bin/bash괜찮을 것입니다.

init 프로세스는 커널에 의해 호출되어 시작됩니다.모두귀하의 사용자 공간. 로그인 터미널을 포함합니다. 초기화가 bash 터미널을 생성한다면 괜찮습니다. 그러나 터미널이 충돌하거나 종료되면 init가 정리되어야 합니다. 터미널에서 시작한 프로세스 중 일부가 종료되면 이를 정리해야 합니다. 만약 그들이 죽으면, 그럼그들의자식에게는 초기화가 될 새로운 부모 프로세스가 필요합니다.

10분만 시간을 내어 이 기사를 읽어 보시기 바랍니다. 다음 내용에 대한 매우 친숙한 개요가 제공됩니다 init.

http://tilde.town/~elly/userland.txt

그런 다음 자신만의 init를 실행하는 데 필요한 사항에 대해 자세히 알아봅니다.

링크의 관련 부분은 다음과 같습니다.

우리가 해야 할 일은 단 한 가지입니다. /sbin/init, /etc/init, /bin/init 또는 /bin/sh 경로 중 하나에서 시작할 초기 바이너리를 제공하는 것입니다. 프로세스(init)는 pid 1로 실행됩니다.

init 프로세스는 다음 두 가지 작업을 수행해야 합니다.

  • 종료하지 마십시오(init가 종료되면 커널이 패닉 상태가 됩니다).

  • 좀비 프로세스 수확

나머지 텍스트에서는 간단한 초기화를 구현합니다.

답변2

"터미널"(물리적 컴퓨터)과 "bash"(셸)는 완전히 다릅니다. 당신이 무엇을 요구하는지 완전히 확신할 수는 없지만 init=/bin/bash커널 명령줄에 추가하여 bash로 직접 부팅할 수 있습니다.

답변3

bash터미널이 아니라 쉘입니다.

init이 프로세스는 부팅 프로세스가 완료되고 시스템이 일반 텍스트 런레벨(X Windows 없음)에서 실행되면 궁극적으로 getty호출 됩니다 login. 이는 로그인 프롬프트를 표시하고 사용자가 로그인할 수 있도록 하는 프로세스입니다. 이는 모든 Linux 배포판에서 발생합니다.

당신이 원하는 것은 bash사용자에 대한 기본 로그인 셸을 정의하는 것뿐입니다(다중 사용자 환경을 원한다고 가정).

관련 정보