첫째, initrd 파일 시스템을 위한 디렉토리가 "보통의" 루트 파일 시스템에 생성되어야 한다. 예를 들면
# mkdir /initrd
이름은 상관없다. 보다 자세한 것은 pivot_root(2) 맨 페이지에서 찾아볼 수 있다.
만약 루트 파일 시스템이 부트 과정에서 생성된다면 (즉, 만약 설치 플로피를 제작하고 있다면), 루트 파일 시스템 생성 과정은 /initrd 디렉토리를 생성해야 한다.
만약 initrd 가 어떤 경우에 마운트되지 않는다면, 그것의 내용은 다음의 장치가 만들어졌을 경우엔 계속해서 접근 가능하다 (이것이 devfs 를 사용중일 경우엔 작동하지 않음에 유의):
# mknod /dev/initrd b 1 250
# chmod 400 /dev/initrd
둘째, 커널은 RAM 디스크 지원과 초기 RAM 디스크 지원이 활성화되어 컴파일 되어야 한다. 또한, 적어도 initrd 로부터 프로그램을 실행하기 위한 모든 요소들(예, 실행 가능한 형식과 파일 시스템) 이 컴파일 되어 커널 안으로 들어가야 한다.
셋째, 램 디스크 이미지를 만들어야 한다. 이것은 블럭 장치에 파일 시스템을 만들고, 여기에 필요한 만큼 파일을 복사한 후, 블럭 장치의 내용을 initrd 파일 에 추가하면 된다. 최근의 커널에서는, 최소한 세 종류의 장치가 다음에 적적할다.
루프백 장치를 이용하는 방법을 설명하도록 하겠다.
# dd if=/dev/zero of=initrd bs=300k count=1
# mke2fs -F -m0 initrd
(만약 공간이 중요하다면, Ext2 대신에 Minix FS 를 사용할수도 있다.)
# mount -t ext2 -o loop initrd /mnt
# mkdir /mnt/dev
# mknod /mnt/dev/console c 5 1
# chroot /mnt /linuxrc
물론 이것은 일반적인 시스템 상태를 방해하지 않는 initrd에만 한정된다 (예, 네트웍 인터페이스를 재설정, 마운트된 디바이스에 덮어쓰기, 이미 실행중인 데몬을 다시 띄우기 등에 의해서. 그러나 그러한 chroot 된 initrd 환경에서도 pivot_root 를 사용하다는 것에 주목하라.)
# umount /mnt
# gzip -9 initrd
initrd 를 실험하기 위해서, 복구용 플로피 디스켓과 /linuxrc 에서 /bin/sh 로 심볼릭 링크만 추가하면 된다. 이 대신에, 작은 initrd 를 생성하기 위해서, 실험적인 newlib 환경 [2] 를 사용할 수도 있다.
만약 devfs 를 사용한다면,
root=/dev/ram0 init=/linuxrc rw
사용하지 않는다면(rw 는 initrd 파일 시스템에 쓰기를 할때만 필요하다)
root=/dev/rd/0 init=/linuxrc rw
LOADLIN 의 경우에는, 단지 이것만 실행하면 된다.
LOADLIN < kernel > initrd= <disk_image>
예) LOADLIN C:\LINUX\BZIMAGE initrd=C:\LINUX\INITRD.GZ root=/dev/ram0
init=/linuxrc rw
LILO 의 경우, /etc/lilo.conf 안에 전체 섹션 이나 혹은 해당하는 섹션에 INITRD=<path> 옵션을 추가한다. 그리고 APPEND 를 이용하여 옵션을 넘겨준다. 예를 들면,
image = /bzImage
initrd = /boot/initrd.gz
append = "root=/dev/ram0 init=/linuxrc rw"
그리고 /sbin/lilo 를 실행시킨다.
다른 부트 로더는 해당하는 문서를 참조하라.
이제 부팅을 할 수 있고 initrd 를 사용하는 것을 즐길 수 있다.