萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> 如何將initramfs打包進內核

如何將initramfs打包進內核

  將initramfs打包進內核

  如果我們有一個已經做好的cpio格式的initramfs,可以在內核編譯時直接編譯進內核。

  在將init程序打包進內核中,我們在內核配置參數中的initramfs sources配置項下輸入構建initramfs的目錄路徑。

  其實我們也可以直接輸出現成的initramfs的文件名,這樣在內核編譯時,就可以把它編譯進內核了。

  使用這種方法,有兩點需要注意:

  (1)cpio文件不能壓縮。一般作為initrd的cpio文件都經過了壓縮,所以編譯前需要先把壓縮過的文件解壓。

  (2)cpio文件的後綴名必須是 .cpio。內核編譯通過 .cpio的後綴名來識別此文件是cpio打包文件,而其他文件後綴名則會被認為是initramfs構建的描述文件(關於描述文件,下面後詳細說明)。

  用描述文件構建initramfs

  用內核編譯工具構建initramfs的第三種方法是使用描述文件。

  在內核配置參數中的initramfs sources配置項下可以輸入initramfs構建描述文件的文件名,內核編譯工具根據描述文件完成initramfs的構建。

  描述文件的語法格式的說明如下:

  # a comment

  file

  dir

  nod

  slink

  pipe

  sock

  name of the file/dir/nod/etc in the archive

  location of the file in the current filesystem

  link target

  mode/permissions of the file

  user id (0=root)

  group id (0=root)

  device type (b=block, c=character)

  major number of nod

  minor number of nod

  例子: 我們用描述文件的方式,構建將init程序打包進內核中的hello world的initramfs。

  hello-init.desp:

  dir /dev 0755 0 0

  nod /dev/console 0600 0 0 c 5 1

  file /init /home/wyk/initramfs-test/hello_static 0755 0 0

  在內核配置項initramfs sources中指定描述文件hello-init.desp,編譯內核時就會生成hello world的initramfs,運行效果與第一節用指定構建目錄的方法構建的initramfs的完全相同。

copyright © 萬盛學電腦網 all rights reserved