로그인 스크립트가 셸의 일부가 아닌 Linux 시스템이 있습니까?

로그인 스크립트가 셸의 일부가 아닌 Linux 시스템이 있습니까?

저는 상식을 얻고 최신 Linux 아키텍처를 더 잘 이해하기 위해 다음 질문을 합니다. 이 질문의 배경은이번 회의.

rbash, bash, dash 및 sh와 같은 모든 셸을 제거하더라도 매우 간단한 작업을 위한 기본/기본 CLUI(명령줄 사용자 인터페이스)를 사용하고 최소한의 방식으로 커널과 상호 작용할 수 있다고 가정합니다. . 물론 최신 Linux 시스템의 경우일반적으로 말하면,콘솔은 셸의 로그인 스크립트에 의해서만 시작되기 때문에 틀렸습니다. 따라서 모든 셸을 삭제하면 로그인 스크립트도 삭제됩니다.

하지만 해당 로그인 스크립트를 셸 외부로 이동하여 커널의 일부로 만들면 어떻게 될까요? 그렇다면 여전히 기본/기본 콘솔을 사용할 수 있나요?

답변1

기본적으로 쉘 아래에는 TTY가 있습니다. 비록 소위 CLUI를 구성하지는 않습니다. 터미널 인터페이스(텍스트 입력 및 출력)는 TTY에서 구현되는 반면 명령 처리는 셸에서 처리됩니다.

DOS에서 이는 배치 명령 프로세서 프롬프트 .bat(ch) 파일과 유사합니다. Linux에서 셸은 내장 제어 구조도 포함하는 작은 프로그래밍 언어입니다.

이 "로그인" 스크립트는 실제로 VFS가 로드된 후 커널에 의해 자동으로 로드되는 init 프로그램이며(init는 initram에 병합되거나 하드 파일 시스템에 액세스할 수 있을 때까지 기다릴 수 있음) tty가 로드되기 전에 실행됩니다. 실제로 init 프로그램은 TTY를 설정한 다음 서비스를 로드해야 합니다. sysvinit는 인터프리터 셸을 로드한 다음 init 스크립트를 사용하는 반면 systemd는 INI를 사용합니다(유닛을 호출하는 구성 파일과 유사). 실제로 시작이나 로그인 프로세스 중에는 쉘 스크립트가 전혀 필요하지 않지만 exec는 필요합니다.

TTY는 커널에 내장되어 있지만 사용자가 상호 작용할 수 없습니다. 로그인과 같은 여러 명령은 TTY를 통해 사용자와 상호 작용하지만 기술적으로 명령 프로세서나 셸은 아닙니다. 기술적으로 시스템과 상호 작용하는 가장 작은 방법인 라우터의 재설정 버튼과 같은 다른 기본적인 예도 있습니다. 그러나 TTY에 연결된 모든 프로그램은 TTY 및 프로세스 명령에서 표준 입력 및 출력을 얻을 수 있습니다.

시스템과 의미 있게 상호 작용하려면 셸이 필요하다는 사실을 무시하고, 커널과 상호 작용하는 가장 기본적인 방법은 시스템 호출을 통하는 것이며, 메시지를 전달하는 가장 기본적인 방법은 명령 인수가 전달되는 방식인 exec입니다.

관련 정보