7.3. 가상 커널 파일 시스템 준비하기

사용자 공간에서 실행되는 애플리케이션은 커널에서 생성한 다양한 파일 시스템을 활용하여 커널 자체와 통신합니다. 이러한 파일 시스템은 가상이므로 디스크 공간이 사용되지 않습니다. 이러한 파일 시스템의 콘텐츠는 메모리에 상주합니다. 이러한 파일 시스템은 애플리케이션이 루트 환경에서 찾을 수 있도록 $LFS 디렉토리 트리에 마운트해야 합니다.

먼저 이러한 가상 파일 시스템을 마운트할 디렉터리를 만듭니다:

7.3.1. dev 마운트 및 채우기

LFS 시스템을 정상적으로 부팅하는 동안 커널은 /dev 디렉터리에 devtmpfs 파일 시스템을 자동으로 마운트하고, 부팅 프로세스 중 또는 디바이스가 처음 감지되거나 액세스할 때 커널은 해당 가상 파일 시스템에 디바이스 노드를 생성합니다. udev 데몬은 커널이 생성한 장치 노드의 소유권 또는 권한을 변경하고 새 장치 노드 또는 심볼릭 링크를 생성하여 배포판 관리자 및 시스템 관리자의 작업을 용이하게 할 수 있습니다. (자세한 내용은 9.3.2.2절 "디바이스 노드 생성"을 참조하세요.) 호스트 커널이 devtmpfs를 지원하는 경우, 단순하게 $LFS/dev에 devtmpfs를 마운트하고 커널이 알아서 사용하도록 하면됩니다.

그러나 일부 호스트 커널은 devtmpfs를 지원하지 않으며, 이러한 호스트 배포판은 다른 방법을 사용하여 /dev의 콘텐츠를 생성합니다. 따라서 호스트에 구애받지 않고 $LFS/dev 디렉터리를 채울 수 있는 유일한 방법은 호스트 시스템의 /dev 디렉터리를 바인드 마운트하는 것입니다. 바인드 마운트는 디렉터리 하위 트리 또는 파일을 다른 위치에서 볼 수 있도록 하는 특수한 유형의 마운트입니다. 이 작업을 수행하려면 다음 명령을 사용합니다.

7.3.2. 가상 커널 파일 시스템 마운트

이제 나머지 가상 커널 파일 시스템을 마운트합니다:

devpts에 대한 마운트 옵션의 의미:

gid=5
이렇게 하면 devpts로 생성된 모든 디바이스 노드가 그룹 ID 5를 소유하게 됩니다. 이것은 나중에 tty 그룹에 사용할 ID입니다. 호스트 시스템에서 tty 그룹에 다른 ID를 사용할 수 있으므로 이름 대신 그룹 ID를 사용합니다.

mode=0620
이렇게 하면 devpts로 생성된 모든 디바이스 노드가 모드 0620(사용자 읽기 및 쓰기 가능, 그룹 쓰기 가능)을 갖도록 합니다. 위의 옵션과 함께 사용하면 devpts가 grantpt()의 요구 사항을 충족하는 장치 노드를 생성하므로 기본적으로 설치되지 않는 Glibc pt_chown 보조 실행파일이 필요하지 않습니다.

일부 호스트 시스템에서 /dev/shm은 디렉터리에 대한 심볼릭 링크(일반적으로 /run/shm)입니다. 위에 /run tmpfs가 마운트되었으므로 이 경우에는 올바른 권한으로 디렉터리만 만들면 됩니다.

다른 호스트 시스템에서는 /dev/shm이 tmpfs의 마운트 지점입니다. 이 경우 위의 /dev를 마운트하면 루트 환경의 디렉터리로 /dev/shm만 생성됩니다. 이 상황에서는 명시적으로 tmpfs를 마운트해야 합니다: