                    initramfs Хåեեޥå
                    ------------------------------

                       Al Viro, H. Peter Anvin
                        ǽ: 2002-01-13

ͥ 2.5.x 顢Ρֽ RAM ǥץץȥϡ
ֽ ramfs (initramfs) ץȥˤä֤/䴰ĤĤ
ޤinitramfs Ƥϡ RAM ǥ (initrd) ץȥǻ
ƤΤƱХåեץȥȤäϤޤ
Ƥϰۤʤޤinitramfs Хåե ramfs ե륷ƥؤ
Ÿ륢֤ޤǤޤΥɥȤǤϡinitramfs
ХåեեޥåȤξܺ٤ˤĤƵҤޤ

initramfs ХåեեޥåȤ "newc" ⤷ "crc" CPIO եޥå
˴ŤƤꡢcpio(1) 桼ƥƥǺ뤳ȤǤޤcpio
֤ gzip(1) ǰ̤뤳ȤǤޤΤᡢñ .cpio.gz
եϡinitramfs ХåեͭʷΰĤȤʤޤ

initramfs ХåեδʥեޥåȤϡʸˡˤޤ:
        *         0 ⤷Ϥʾνи̣ޤ
        (|)       줫Ḥ̂ޤ
        +         ̣ޤ
        GZIP()    ڥɤ gzip(1) ̣ޤ
        ALGN(n)   n ХȶޤǤΥ̥ХȤˤѥǥ󥰤̣ޤ

        initramfs := ("\0" | CPIO  | CPIO gzip )*

        CPIO gzip  := GZIP(CPIO )

        CPIO  := CPIO ե* + (̵ | CPIO ȥ쥤)

        CPIO ե := ALGN(4) + CPIO إå + ե̾ + "\0" + ALGN(4) + ǡ

        CPIO ȥ쥤 := ALGN(4) + CPIO إå + "TRAILER!!!\0" + ALGN(4)


ʬ䤹ȡinitramfs Хåեϡ̤줿⤷ϰ̤
ʤ ("newc" ⤷ "crc" եޥåȤ) CPIO ֤νǤ
ǤդθĿΥХȤ (ѥǥ󥰤Τ) ƥд֤֤ȤǤޤ

cpio  "TRAILER!!!" ȥ (cpio ֽü) ǤդǤ̵
ޤ󡣲Ρ֥ϡɥ󥯤ΰפ򻲾ȤƤ

CPIO إåι¤ϲΤȤǤ (ƤΥեɤϡ16 ʿ ASCII
ǡեΤ褦˺¦ '0' ѥǥ󥰤ޤ
㤨С 4780  ASCII ʸ "000012ac" Ȥɽˤʤޤ):

ե̾   եɥ   ̣
--------------------------------------------------------------------------------
c_magic         6 Х          ʸ "070701" ⤷ "070702"
c_ino           8 Х          ե inode ֹ
c_mode          8 Х          եΥ⡼ɤȥѡߥå
c_uid           8 Х          եΥ桼 ID
c_gid           8 Х          եΥ롼 ID
c_nlink         8 Х          󥯿
c_mtime         8 Х          
c_filesize      8 Х          ǡեɤΥ
c_maj           8 Х          եǥХֹ Major 
c_min           8 Х          եǥХֹ Minor 
c_rmaj          8 Х          ǥХΡɻȤ Major 
c_rmin          8 Х          ǥХΡɻȤ Minor 
c_namesize      8 Х          ե̾Ĺ.  \0 ޤ
c_chksum        8 Х           c_magic  070702 ξϥǡեɤ
                                  å. ʳξϥ.

c_mode եɤϡLinux  stat(2) ˤä֤ st_mode Ƥ
ƱǡեΥפȥѡߥåɽƤޤ

̾եǤ⥷ܥå󥯥եǤʤեξ硢
c_filesize ϥˤʤޤ

c_chksum եɤϡǡեɤƤΥХȤñ˹פ
̵ 32 ӥåͤǤcpio(1) Ϥ "crc" ȤƻȤޤ
餫ΤͤǤ (ĹϡǤΤȤϰۤʤ롢
궯ϤǤ)ʤ顢ǻѤƤ륢르
ꥺϤʤäƤޤ

ե̾ "TRAILER!!!" ξ硢ϼºݤˤϥֽüޡ
ʤޤֽüޡ c_filesize ϥǤʤФʤޤ


*** ϡɥ󥯤ΰ

c_nlink ͤ 1 礭ǥ쥯ȥʳΥȥ꤬Ĥä硢
ץХåե椫 (c_maj, c_min, c_ino) Υץ () ޤ
ץ뤬ĤʤϡΥץϥץХåե졢
ȥ꤬̾ɤ˺ޤĤäϡե
ܤΥԡǤϤʤϡɥ󥯤ޤեƤ
ܤΥԡޤɬפϤޤ (ޤƤ⹽ޤ)ե
ޤޤƤʤ硢˥ǡ³ʤȤ򼨤ᡢ
c_filesize եɤϥǤɬפޤ⤷ǡ¸ߤ
ʤСեΰΥ󥹥󥹤Ͼ񤭤ޤˤꡢ
ǡޤեɤξ֤Ƥ褤ȤȤˤʤޤ (GNU
cpio ˤϡǸΥե륤󥹥󥹤Τߤ˥ǡźդƤ
ޤ)

ܥå󥯥եξ硢c_filesize ϥǤϤޤ

"TRAILER!!!" ֽüޡĤä硢ץХåեϥꥻå
ޤˤꡢ̡˺줿֤礹뤳ȤǽȤʤ
ޤ

櫓ǡۤʤˤեǡ ((c_maj, c_min, c_ino)
եɤ뤳Ȥʤ) Ҥ碌뤿ˤϡΥƥ˥å
줫ȤȤǤޤ

a) ġΥեǡ "TRAILER!!!" ֽüޡʬ䤹롢
   ⤷ϡ

b) ǥ쥯ȥǤϤʤƤΥȥ c_nlink ͤ 1 ˤʤ褦ˤ롣

------------------------------------------------------------
Ρ JF ץ < http://www.linux.or.jp/JF/ >
ԡ    ɧ < takahiko(a)hakubi.co.jp >
   2004/02/26
ԡ    ŵ < zap03216(a)nifty.ne.jp >
