Linux 커널은 어떤 파일에 액세스합니까?

Linux 커널은 어떤 파일에 액세스합니까?

/init초기 사용자 공간에서는 Linux 커널이 액세스하는 세 개의 파일입니다(모두 실행 파일입니다) /sbin/init. /sbin/request-keyLinux에서는 다른 파일(실행 불가능한 파일일 수도 있음)을 열 수 있습니까? 시스템의 사용자 이름이 포함된 파일과 같은가요?

답변1

일반적으로 Linux 커널은 (프로세스가 아닌) 자체적으로 파일을 열지 않습니다. Even /sbin/init(또는 커널 명령줄에 지정된 "init" 프로그램)은 exec()프로세스에 의해 편집됩니다(프로세스 1은 커널 내부 이미지인 IIRC에서 직접 빌드됩니다).

예전에는 펌웨어가 필요한 커널 모듈이 펌웨어 파일을 직접 열었지만 더 이상 그렇지 않습니다. 대신 커널이 사용자 모드 도우미에게 요청합니다.

어떤 파일 이름이 Linux 커널로 컴파일되는지에 대한 질문이 있는 경우 시드 프로세스 1의 "init" 이미지에서 다음을 볼 수 있습니다.

/init
/sbin/init
/etc/init
/bin/init
/bin/sh
/dev/console

재귀적 grep을 실행하면 "/꽤 많은 히트가 발생합니다. 대부분은 거짓 긍정이지만 실제 일치 항목을 주의 깊게 살펴볼 가치가 있습니다.

답변2

사용자 이름과 관련하여 커널은 사용자 이름만 처리하기 때문에 필요하지 않습니다(관심하지도 않습니다).수치사용자 ID(uid 0, 일명 root특수 상태를 가질 수 있음) 바라보다바우처(7)&능력(7)

사용자 이름에서 사용자 ID로의 변환은 libc다음 기능을 통해 수행 됩니다.getpwnam(3). libc특히 이 목적으로 파일에 액세스 할 수 있습니다 ./etc/passwdnsswitch.conf(5)

기존 프로세스 외부의 커널 내부에서 파일을 여는 것과 관련하여(사용오픈(2)...) 내가 아는 한 커널은 이제 막 시작되었습니다.희귀한/sbin/init(또는 기타 /bin/sh),,,,, 등 의 프로세스 ... 압축되지 않은 커널 파일을 /sbin/request-key사용하여 전체 목록을 얻을 수 있습니다 ./sbin/tomoyo-init/sbin/modprobe/sbin/poweroffstringsvmlinux

또한 동적 로더에는 여러 파일 경로가 하드코딩되어 있습니다(참조:ld-리눅스(8)등...) 또는 표준 C 라이브러리(귀하의 것 libc.so)가 거의 모든 응용 프로그램에 필요합니다.

관련 정보