In the first boot-up phase, the kernel starts up and mounts an initial root file-system from the contents of /dev/initrd (e.g. RAM disk initialized by the boot loader). 첫번째 부트업 단계에서, 커널은 .B /dev/initrd의 내용에서 최초 루트 파일 시스템을 시동하고 마운트한다. 두번째 단계에서, 추가 드라이버 또는 기타 모듈들이 최초 루트 장치 내용에서 로딩된다. 추가 모듈들을 로딩한다음, 새로운 루트 파일 시스템이 다른 장치로부터 마운트된다.
1. 부트 로더는 커널 프로그램을 로딩하고, /dev/initrd의내용을메모리로로딩한다.
2. 커널시동시, 커널은 장치 /dev/initrd의 내용의 압축을 해제하고, 장치 .B /dev/ram0으로 복사한 후, /dev/initrd에의해사용된메모리를자유롭게한다.
3. 커널은 장치 .B /dev/ram0을 최초 루트 파일 시스템으로 읽기 및 쓰기 마운트를 한다.
4. 만일 지정된 일반 루트 파일 시스템이 또한 최초 루트 파일 시스템이라면, (예 /dev/ram0 )커널은 일반 부트 순서를 위한 마지막 단계를 생략한다.
5. 만일 실행 파일 .BR /linuxrc가 최초 루트 파일 시스템 내에 있다면, /linuxrc는 uid 0으로 실행된다. 파일 /linuxrc는 실행 권한을 갖고 있어야 한다. 파일 /linuxrc 는 쉘 스크립트를 포함하는 타당한 실행파일이 될 수 있다.
6. 만일 /linuxrc 이 실행되지 않거나, /linuxrc가 종료될 때, 일반 루트 파일 시스템은 마운트 된다. (만일 /linuxrc 가 최초 루트 파일 시스템상에 마운트된 파일 시스템에서 빠져나온다면, 커널의 행동은 UNSPECIFIED가된다. See the NOTES section for the current kernel behavior 커널의 행동을 보려면, .BR NOTES 섹션을 참조하라.)
7. 만일 일반 루트 파일이 디렉토리 /initrd, 장치를갖고있다면, /dev/ram0은 /에서to/initrd으로이동한다. 그렇지 않고, 만일 디렉토리 /initrd가 존재하지 않으면, 장치 /dev/ram0는 언마운트된다. (.BR / " 에서 " /initrd "로 이동했을때, " /dev/ram0은 언마운트되지 않고, 프로세스들은, /dev/ram0에서실행되는채로남겨진다. 만일 디렉토리 /initrd가일반루트파일시스템상에존재하지않고,어떤프로세스가 /dev/ram0에서실행되는채로남겨지면,/linuxrc에서빠져나갈때,커널의행동은 UNSPECIFIED(규명불가)가된다. See the NOTES 현재 커널의 행동을 보려면 NOTES 섹션을 참조한다.)
8. 일반 부트 순서(.BR /sbin/init의 실행)는 일반 루트 파일 시스템상에서 수행된다.
echo /var/nfsroot >/proc/sys/kernel/nfs-root-name
echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \
>/proc/sys/kernel/nfs-root-addrs
echo 255 >/proc/sys/kernel/real-root-dev
가능한 시스템 설치 시나리오는 다음과 같다.
1. 로더 프로그램은 플로피 또는 다른 매체로부터 최소의 커널로 부팅하고, (예 .BR /dev/ram ", " /dev/initrd ", 그리고 ext2 파일 시스템에 대한 지원) 최초 파일 시스템의 gzip으로 압축된 버전인 .BR /dev/initrd을 로딩한다. )
2. 실행가능한 .BR /linuxrc는 일반 루트 파일 시스템(장치 유형, 장치 드라이버, 파일 시스템)을 마운트하는데 필요한 것과, 배포 매체(시디롬, 네트워크, 테이프 등)를 결정한다. 이는 사용자에게 물어보거나, 자동 감지 또는 설치 마법사를 사용함으로서 가능하다.
3. 실행가능한 .BR /linuxrc는 필요한 모듈들을 최초 루트 파일 시스템에서 로드한다.
4. 실행가능한 .BR /linuxrc은 루트 파일 시스템을 만든다.(이 단계에서 일반 루트 파일 시스템이 아직 완전한 시스템이 될 필요는 없다.)
5. 실행가능한 .BR /linuxrc는 /proc/sys/kernel/real-root-dev을 설정하고, 일반 루트 파일 시스템과 다른 파일 시스템들이 마운트 했던 .BR /proc을 언마운트 한다음, 종료한다.
6. 커널은 일반 파일 시스템을 마운트한다.
7. 이제 파일 시스템의 액세스가 가능하고, 손상되지 않은채로, 부트로더가 설치될 수 있다.
8. The boot loader is configured to load into a file system with the set of modules that was used to bring up the system. 부트 로더는 시스템을 활성화하는 데 사용되는 일련의 모듈들과 함께 .BR /dev/initrd 파일 시스템으로 로딩되도록 설정된다. (예, Device /dev/ram0 는 수정되고 언마운트되며, 마지막으로 그 이미지는 .BR /dev/ram0 에서 파일로 작성된다.)
9. 시스템은 현재 부팅할 수 있고, 추가인스톨 작업은 실행될 수 있다.
위에 있는 /dev/initrd 의 키롤(key role)은 요청한 큰 일반커널이나, 리컴파일된 초기화 커널 선택없이 표준시스템 작동때 설정 데이타를 재사용 할 수 있다.
두번째 시나리오는 리눅스가 단일 관리 네트웍에서 다른 하드웨어설정을 가진 시스템에서의 인스톨에 관한 사항이다. 이런 경우, 커널의 작은 설정 사용을 원할 런지 모르고, 가능한 작은 설정 정보의 시스템특정(system-speccific) 부분을 지킨다. 이런경우, 모든 필요한 모듈이 가진 공유 파일이 생성된다. 그리고, 단지 /linuxrc 파일이나 일반 파일은 /linuxrc 가 다른것에의해 실행된다.
세번째 시나리오는 더욱 편리한 복구 디스크이다. 루트 파일시스템 파티션의 위치와 같은 정보는 부팅시 필요하지 않기 때문에, /dev/initrd 로 부터 로드된 시스템은 미친듯 하는 체크에 영향을 받는 다이얼로그나 자동찾기 를 사용할 수 있다.
마직막으로, 리눅스 배포본은 수월한 설치를 위해 initrd 를 사용할런지 모른다. 배포본은 The distribution can use 플로피가 필요없이 cd-rom에서 /dev/initrd 를 직접 로드 할 수있는 LOADLIN 를 사용할 수 있다. 배포본은 또한 부팅 디스켓보단 cd-rom으로부터 /dev/initrd 등의 부트스트랩보다 더 큰 램디스크인 LILO 를 사용한다.
mknod -m 400 /dev/initrd b 1 250
chown root:disk /dev/initrd
또한, "램디스크"와 "초기화 램디스크"를 지원한다.
(e.g.
CONFIG_BLK_DEV_RAM=y와 CONFIG_BLK_DEV_INITRD=y
) 지원은
/dev/initrd
을 사용하기 위해 리눅스 커널에 직접 컴파일 되어야만 한다.
/dev/initrd
를 사용할때, 램디스크 드라이버는 모듈로 로드 할 수 없다.
2. 현재 커널과 함께, 디렉토리 .BR /initrd이 존재하지 않고, .BR /dev/ram0이 어느 프로세스에 의해 사용되거나, 그 위에 어떤 파일 시스템이 마운트되어 있으면, /dev/ram0은 마운트되지 않을 것이다. /dev/ram0이마운트되지않으면,.BR/dev/ram0은메모리에남겨질것이다.
3. .BR /dev/initrd의 사용자들은 위의 주의사항에 주어진 행동에 의존해서는안된다. 이는 앞으로의 리눅스 커널의 미래버전들에 있어 변경이 될 수 있는 것이다.