根文件系统制作

一、如何制作一个根文件系统

1、创建根件系统的

 

mkdir rootfs 

cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var

mkdir usr/bin usr/lib usr/sbin lib/modules

 

2、创建设备

cd dev/ 
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
cd ..

3、安/etc

       tar etc.tar.gz C /xxx/rootfs

4、编译模块

  Linux核目录( linux 2.6.29) make modules ARCH=arm CROSS_COMPILE=arm-linux-

5、安装

       make modules_install ARCH=arm    INSTALL_MOD_PATH=/xxx/rootfs

6 、配置busybox

        进入busybox目录执行

        make menuconfig

a、Busybox Settings ->build Options->
  • 选中 “Build busybox as a static binary”,静态链接
  • Cross Compiler prefix (arm-linux-)
b、 Installation Options->
  • 选中 “Don‘t use /usr”,选中项可以避免 busybox被安装到宿主系统的 /usr目录下,破坏宿主系统
  • Busybox Installation Prefix (/xxx/rootfs)选项表编译后的busybox的安装位置
7、编译安busybox
  • make ARCH=arm CROSS_COMPILE=arm-linux-
  •  make install

二、Ramdisk

基于前步骤制作好件系统,可进ramdisk骤如:

1、 genext2fs -b 8192 -d /xxx/rootfs ramdisk

          ** genext2fs为产ramdisk**

2、 gzip -9 -f ramdisk

3、制作init ramdisk

      mkinitrd initrd-$version $version  (Ubuntu下面没有mkinitrd, 相应的命令为 mkinitramfs -o initrd-$version $version)

      例:

          mkinitrd initrd-2.6.29 2.6.29  

      **这是将/lib/modules/$vesion 制作成ramdisk**

      *$version 可以通过查询/lib/modules下的目录得到

4:解压:

file initrd看是否是gzip compressed data, was "initrd.img"

cp initrd initrd.img.gz
gunzip initrd.img.gz
mkdir tmp
cd tmp cpio
-ivmd <initrd.new.img

5:压缩:

find . | cpio -c -o > ../initrd.img

gzip ../initrd.img

原文地址:https://www.cnblogs.com/dolphi/p/2420253.html