ư RAM disk(initrd)λȤ
===============================

Written 1996 by Werner Almesberger <almesber@lrc.epfl.ch> and
		Hans Lermen <lermen@elserv.ffm.fgan.de>

ޤߤĤҤ<isle@st.rim.or.jp>

initrd ϥ֡ȥ RAM ǥɤ뵡ǽղäޤ
 RAM ǥϥ롼ȥե륷ƥȤƥޥȤ졢
Υץư뤳ȤǽǤθ塢Υ롼ȥե륷
ƥ̤ΥǥХޥȤinitrd ä롼ȥե륷
ƥ /initd ǥ쥯ȥ˰ܤޥȤޤ

initrd ϥƥ 2 ʳǵư뤿˺ޤޤǽ
Ǻ¤Υɥ饤ФΤߤȤߤͥưinitrd Ƽ
Υ⥸塼ɤ褦ˤޤ

ˡ
--------
initrd ȤȡƥϰʲΤ褦˵ưޤ

  1) ޤ֡ȥͥȵư RAM ǥɤ

  2) ͥϵư RAM ǥ(initrd)̤Ρ RAM ǥ
     Ѵinitrd ȤäƤ롣

  3) initrd ϥ롼ȥѡƥȤɤ߽񤭲ǽǥޥȤ롣

  4) 롼ȥѥƥˤ /linurc ¹Ԥ(Υեϼ¹
     ǽǤС륹ץȤޤƤɤʥեǤ⤤
     /linuxrc  uid 0 Ǽ¹Ԥ졢Ū init ǤƤΤȤ
     ¹Բǽ)

  5) linuxrc λСΡץ롼ȥե륷ƥबޥȤ롣

  6) 롼ȥե륷ƥ initrd Ȥǥ쥯ȥ꤬С
     initrd ƤϤΥǥ쥯ȥ˰ܤ롣ǥ쥯ȥ̵꤬
     initrd ϥޥȤ롣

  7) ˥ޥȤ줿Ρץ롼ȥե륷ƥफ顢
     (/sbin/init ư)̾εư¹Ԥ롣

 1 : initrd  /  /initrd ˰ܤݤˤ unmount ޤΤǡ
initrd ˤץưƤޤޤǤܤȤǤޤ(뤤
ե륷ƥޥȤޤޤˤ롢ܺ٤ϸ)⤷ /initrd ǥ
쥯ȥ̵꤬Сinitrd ϤξΥץबȤʤʤä
ǥޥȤ뤷ޤ󡣥ޥȤǤʤ硢ˤ
Τޤ޻Ĥޤ

 2 initrd β˥ޥȤ줿ե륷ƥ³
ǽǤ/proc/mounts ΥȥϹޤ󡣤ޤ/initrd 
ʤinitrd ޥȤǤʤ硢βΥե륷ƥऴ
־ǡפơ餬ƥޥȤ뤳ȤɤޤǤ顢initrd 
̾Υե륷ƥ˰ܹԤݤˤϡ̾롼ȥե륷
 /proc ʳΥե륷ƥƥޥȤ뤳Ȥ򤪴ᤷ
ޤ

ư RAM ǥѤƤ뤿ˤ /initrd 
ޥȸ塢freeramdisk(֥ץפ򻲾)ޥɤ
¹Ԥޤ

ưΥޥɥ饤󥪥ץ
-------------------------------
initrd Ѥ˿ץѰդޤ

  initrd=<path>    (LOADLIN only)

  ꤷեưѤ RAM ǥ˻ꤷޤLILO ξ硢
  /etc/lilo.conf  INITRD ѿ RAM ǥΥ᡼κ߽ꤹ
  ɬפޤ

  noinitrd

  initrd Υǡ¸ޤRAM ǥˤѴ줺ˡ̾
  Ρץ롼ȥե륷ƥबޥȤޤinitrd Υǡ 
  /dev/initrd ͳɤळȤǤޤξ硢initd Υǡ
  Ϥɤʹ¤򤷤ƤƤ褯ե륷ƥǤɬפ⤢ޤ
  Υץϼ˥ǥХåѤ˻Ȥޤ

  /dev/initrd ɤ߽ФѤǡ٤Ȥޤ/dev/initrd Ȥ
  ƤǸΥץλƤΥǡϾõ졢/dev/initrd 
  ɤ߽Фʤʤޤ

  root=/dev/ram

  initrd 롼ȥե륷ƥȤƥޥȤ/linuxrc ư
  ⤷ /linuxrc ̵СRAM ǥ롼ȥե륷ƥ
  ƥޥȤޤ̾εưץ¹ԤޤΥץϼ
  ˥եåԡǥ鵯ưݤѤޤľܥޥȤ줿ե
  륷ƥ٤ initrd ͳ¿®ʤꡢ̥ե
  ƥȤȤǽǤˡLOADLIN Ȥ߹碌뤳Ȥ 
  RAM ǥľ CD-ROM ϡɥǥɤ뤳Ȥǽǡ

  E:\loadlin E:\bzImage root=/dev/ram initrd=E:\rdimage

  Τ褦ˡCD եåԡȤ鷺˥֡Ȥ뤳ȤǤޤ

󥹥ȡ
------------
ޤ̾Ρץ롼ȥե륷ƥʲΤ褦ʼѰդޤ

# mknod /dev/initrd b 0 250 
# chmod 400 /dev/initrd
# mkdir /initrd

롼ȥե륷ƥबư˺(󥹥ȡѤΥե
ԡʤ)ϡ롼ȥե륷ƥˡ嵭
¹Ԥɬפޤ

̩˸Сinitrd ˤ /dev/initrd  /initrd ɬܤǤϤʤ
ȤդƤǤ⡢Ȥ initrd μ¸äȴñ
ˤʤޤޤ/initrd ѰդƤСּºݤΡץƥफ 
initrd ѤΥǡ뤳ȤǽǤ

ˡRAM ǥȵư RAM ǥǽäͥ뤬ɬפǤ
ޤinitrd ¹Ԥץɬפʵǽ(ELF  a.out ΥХʥ
ǽե륷ƥ)⥫ͥȤߤǤɬפޤ

ˡRAM ǥ᡼ޤϥ֥åǥХ˥ե
륷ƥꡢɬפʥե򤽤˥ԡƺޤǿΥ
ͥǤϡʤȤ 3 ĤΥǥХѲǽǤ

  - եåԡǥ(ɤǤȤ뤬٤)
  - RAM ǥ(®ʪꤢƤɬפ)
  - 롼ץХåǥХ(äȤ¤ mount ɬ)

Ǥ RAM ǥȤˡˤĤޤ

 1) /dev/ram(֥åǥХ major 1, minor 1)뤳Ȥǧ롣

 2) Ŭ礭ǡΥե륷ƥ
    # mke2fs -m0 /dev/ram 300
    (ڡפˤʤ Ext2 ǤϤʤ Minix FS Ǻ)

 3) Ŭʥǥ쥯ȥ˥ե륷ƥޥȤ
    # mount -t ext2 /dev/ram /mnt

 4) Υե륷ƥ˥󥽡ѤΥǥХ
    # mkdir /mnt/dev
    # mknod /mnt/dev/tty1 c 4 1

 5) initrd ĶȤɬפʥեƥԡ롣Ǥפʥե
     /linuxrc ǡ/linuxrc ˤϼ¹Բǽӥå("x")ΩƤ뤳Ȥ
    ˺ʤ

 6) RAM ǥ򥢥ޥȤ
    # umount /dev/ram

 7) ᡼ե˥ԡ롣
    # dd if=/dev/ram bs=1k count=300 of=/boot/initrd

 8) RAM ǥ롣
    # freeramdisk /dev/ram

initrd μ¸ˤѥեåԡ(Slackware  rescue.gz ʤ)Ȥ
/linuxrc  /bin/sh ʤɤإܥå󥯤ƤФǤ礦
С

 # gunzip <rescue.gz >/dev/ram
 # mount -t minix /dev/ram /mnt
 # ln -s /bin/sh /mnt/linuxrc
 # umount /dev/ram
 # dd if=/dev/ram bs=1k count=1440 of=/boot/initrd
 # freeramdisk /dev/ram

ǥͥƵư initrd ɤޤߤΤȤ
LOADLIN 1.6  LILO 18  initrd 򥵥ݡȤƤޤ(ϸ)
LOADLIN ϰʲΤ褦˵ưޤ

     LOADLIN <kernel> initrd=<disk_image>

㤨С LOADLIN C:\LINUX\VMLINUZ initrd=C:\LINUX\INITRD

LILO ξ硢/etc/lilo.conf  global  respective kernel 
 INITRD=<path> λ򤷤ޤ㤨С

  image = /vmlinuz
    initrd = /boot/initrd

Ȥơ/sbin/lilo ¹Ԥޤ

initrd ͷǤߤޤ礦

롼ȥǥХ
--------------------
롼ȥǥХϡǥեȤǤϥͥΰŪˤʤޤ
ѥδĶ rdevޥɥ饤Ǥ root=xxx λꡢ
LILO  /etc/lilo.conf ǤλꤷǥХ롼ȥǥХˤʤޤ
initrd  NFS ޥȤ롼ȥե륷ƥȤ߹碌ƻȤ
ǽǤΤˤ nfs_root_name  nfs_root_addrs Ȥư
ץȤޤ

initd δĶ椫롼ȥǥХѹ뤳ȤǽǤΤ
ˤ /proc ե륷ƥबޥȤƤʤФޤ/proc 
ե륷ƥޥȤȡʲΥե뤬ǽˤʤޤ

  /proc/sys/kernel/real-root-dev
  /proc/sys/kernel/nfs-root-name
  /proc/sys/kernel/nfs-root-addrs

real-root-dev ˤϿ롼ȥե륷ƥȤʤǥХֹ
ळȤѹǤޤ㤨С/dev/hda1 򿷤롼ȥե륷
ƥˤ硢

  # echo 0x301 >/proc/sys/kernel/real-root-dev

ȤޤNFS ޥȤ줿롼ȥե륷ƥξ硢
nfs-root-name  nfs-root-addrs Ȥreal-root-dev ˤ 0xff 
ޤ㤨С

  # 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

롼ȥǥХ RAM ǥ˻ꤵ줿硢롼ȥե륷ƥ
 /initrd ذܤ餺֡ȥץϵư RAM ǥ init 
ưޤ

Ȥ
----------
initrd μμ礿Ūϡ⥸塼벽줿ͥ򥷥
Υ󥹥ȡ˹ԤȤǤΤˤϰʲμ˽ޤ

  1) ƥϥեåԡ䤽¾ΥǥǾ¤ιΥͥ
     (RAM ǥinitrd, a.out ext2 FS ٤Ȥߤ)ǵư
     initrd ɤޤ

  2) /linuxrc (1)ּºݤˡץޥȤ롼ȥե륷ƥ(ǥ
    פǥХɥ饤Сե륷ƥʤ) (2)ۥǥ
    (CD-ROM, ͥåȥơס)ޤϥ桼˿
    ͤƤ⤤ưФƤ⤤ξԤ礻Ǥ⹽ޤ

  3) /linuxrc ɬפʥ⥸塼ɤޤ

  4) /linuxrc 롼ȥե륷ƥѲǽˤޤ(
     ǤϤۤɽʬʥƥǤʤƤ⹽ޤ)

  5) /linuxrc ϥ롼ȥե륷ƥȤ¾ޥȤƤե
    륷ƥ򥢥ޥȤ/proc/sys/kernel/.. ꤷƽλ
    ޤ

  6) 롼ȥե륷ƥޥȤޤ

  7) ʳǡºݤΥե륷ƥ˥ǽˤʤꡢƥ
     ˥֡ȥ򥤥󥹥ȡǤޤ

  8) ֡ȥ initrd ȥƥưΤɬפʥ⥸塼
    ɤ褦ꤷޤ(/initrd ϽǽǡޥȤ
    Ƥ /dev/ram ͳǥեإ᡼񤭽Фޤ)

  9)ǥƥबưǽˤʤäΤǡʲΥ󥹥ȡȤԤ
    ȤǤޤ

˼ initrd θȤʤϡ礷ְŪʡץͥ䥫
ͥκƥѥ/ƥ󥯤ʤɤ򤻤ˡ̾ΥƥѤǡ
Ѥ뤳ȤǤ

initrd Ω 2 Ĥξ̤ϡͤδԤΰۤʤ뤵ޤޤʥϡ
ɥLinux 򥤥󥹥ȡ뤹ǤΤ褦ʾ硢ͥ
Ǥʤˤ(ۤϰ)ƥ˰¸
ǽʸ¤꾮ƤȤɬפˤʤޤΤˤϡɬפʥ⥸塼
Ȥߤ̤ initrd ꡢ/linuxrc  /linuxrc ɤߤ
եΤߤꤴȤѰդФǤ礦

3 ܤξ̤ϡäʡѥǥפǤư
ϡ֥롼 FS ΤѡƥפȤäϤ狼ʤΤǤ
initrd ɤߤƥϥ桼եɥ꡼÷ɬפ
ꤷå뤳ȤǽǤ(ñʼưФǽ
Ǥ)

ˡCD-ROM κԤ CD 餺äȴñ˥󥹥ȡ뤵뤳Ȥ
ǽˤʤޤLILO Υ֡ȥեåԡ CD  initrd ͳ礭 
ramdisk ưꡢLOADLIN Ȥäơեåԡ̵ CD  
ramdisk ɤߤळȤǽǤ

initrd ϤʤŪʥᥫ˥ʤΤǡʳλˡ⸫Ĥ
Ǥ礦

ץ
-----------------

bzImage  initrd ѥå(bzImage  zImage γĥǤǡͥľ 
1 MB ʾΰ˥ɤ 2 MB ޤǤΥͥ뤬Ȥ褦ˤʤ
ޤ)
ftp://lrcftp.epfl.ch/pub/people/almesber/lilo/bzImage+initrd-1.3.71.patch.gz

ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/bzImage+initrd-1.3.71.patch.gz
ˤޤ

LOADLIN 1.6 
ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/loadlin-1.6-pre8-bin.tgz
Ǥޤ

LILO 18 
ftp://lrcftp.epfl.ch/pub/people/almesber/lilo/lilo.18dev3.tar.gz
Ǥޤ

initrd äƤߤñ 'freeramdisk' ץ
ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/initrd-example.tgz
ˤޤ

