^ Linux From Scratch - Version 12.1-systemd ^^^
^ Chapter 7. Entering Chroot and Building Additional Temporary Tools ^^^
|[[.:059-changing_ownership|이전]] | [[.:07-entering_chroot_and_building_additional_tempory_tools|위로]] / [[.:12.1|처음으로]] | [[.:061-entering_the_chroot_environment|다음]]|
|소유권 변경 | 가상 루트 환경|
------
===== 7.3. 가상 커널 파일 시스템 준비하기 =====
사용자 공간에서 실행되는 애플리케이션은 커널에서 생성한 다양한 파일 시스템을 활용하여 커널과 통신합니다. 이러한 파일 시스템은 가상이므로 디스크 공간이 사용되지 않습니다. 이러한 파일 시스템의 구성물은 메모리에 상주합니다. 이러한 파일 시스템은 애플리케이션이 루트 환경에서 찾을 수 있도록 ''$LFS'' 디렉토리 트리에 마운트해야 합니다.
먼저 이러한 가상 파일 시스템을 마운트할 디렉터리를 만듭니다.
mkdir -pv $LFS/{dev,proc,sys,run}
----
==== 7.3.1. /dev 마운트 및 생성 ====
LFS 시스템을 정상적으로 부팅하는 동안 커널은 ''/dev'' 디렉터리에 //devtmpfs// 파일 시스템을 자동으로 마운트하고, 부팅 프로세스 중 또는 디바이스가 처음 감지되거나 액세스할 때 커널은 해당 가상 파일 시스템에 디바이스 노드를 생성합니다. ''udev'' 데몬은 커널이 생성한 장치 노드의 소유권 또는 권한을 변경하고 새 장치 노드 또는 심볼릭 링크를 생성하여 배포판 관리자 및 시스템 관리자의 작업을 용이하게 할 수 있습니다. (자세한 내용은 [[.:156-overview_of_device_and_module_handling#9.3.2.2. 장치 노드 생성|9.3.2.2절 "디바이스 노드 생성"]]을 참조하세요.) 호스트 커널이 //devtmpfs//를 지원하는 경우, 단순하게 ''$LFS/dev''에 //devtmpfs//를 마운트하고 커널이 알아서 사용하도록 하면됩니다.
그러나 일부 호스트 커널은 //devtmpfs//를 지원하지 않으며, 이러한 호스트 배포판은 다른 방법을 사용하여 ''/dev''의 콘텐츠를 생성합니다. 따라서 호스트에 구애받지 않고 ''$LFS/dev'' 디렉터리를 채울 수 있는 유일한 방법은 호스트 시스템의 ''/dev'' 디렉터리를 바인드 마운트하는 것입니다. 바인드 마운트는 디렉터리 하위 트리 또는 파일을 다른 위치에서 볼 수 있도록 하는 특수한 유형의 마운트입니다. 이 작업을 수행하려면 다음 명령을 사용합니다.
mount -v --bind /dev $LFS/dev
----
==== 7.3.2. 가상 커널 파일 시스템 마운트 ====
이제 나머지 가상 커널 파일 시스템을 마운트합니다.
mount -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vt tmpfs tmpfs $LFS/run
=== 마운트 옵셧 설명 ===
* //gid=5// \\ devpts로 생성된 모든 디바이스 노드가 그룹 ID 5를 소유하게 됩니다. 이것은 나중에 LFS에서 //tty// 그룹에 사용할 ID입니다. 호스트 시스템에서 //tty// 그룹이 다른 ID를 사용할 수 있으므로 이름 대신 그룹 ID를 사용합니다.
* //mode=0620// \\ 이렇게 하면 devpts로 생성된 모든 디바이스 노드가 모드 0620((rw--w---사용자 읽기 및 쓰기 가능, 그룹 쓰기 가능))을 갖도록 합니다. 위의 옵션과 함께 사용하면 devpts가 grantpt()의 요구 사항을 충족하는 장치 노드를 생성하므로 기본적으로 설치되지 않는 Glibc ''pt_chown'' 보조 실행파일이 필요하지 않습니다.
일부 호스트 시스템에서 ''/dev/shm''은 디렉터리에 대한 심볼릭 링크(일반적으로 ''/run/shm'')입니다. 위에 /run tmpfs가 마운트되었으므로 이 경우에는 올바른 권한으로 디렉터리만 만들면 됩니다.
다른 호스트 시스템에서는 ''/dev/shm''이 tmpfs의 마운트 지점입니다. 이 경우 위의 /dev를 마운트하면 루트 환경의 디렉터리로 /dev/shm만 생성됩니다. 이 상황에서는 명시적으로 tmpfs를 마운트해야 합니다.
if [ -h $LFS/dev/shm ]; then
install -v -d -m 1777 $LFS$(realpath /dev/shm)
else
mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
fi