0%

编译busybox根文件系统

  • 内核版本:linux-2.6.37.2
  • 软件平台:ubuntu 10.10
  • 硬件平台:mini2440

准备工作:busybox源码包

  1. 建立交叉编译环境,解压源码包进入目录,修改makefile文件如下

    1
    2
    ARCH ?= arm
    CROSS_COMPILE ?= arm-linux-

    在命令行输入make menuconfig,不作修改直接保存配置退出,然后make,最后输入make install,就会在在目录里出现install这个文件夹。

  2. 进入install这个根文件夹,创建以下文件 创建/etc/inittab
    以下是文件内容:

    1
    2
    3
    4
    5
    6
    ::sysinit:/etc/init.d/rcS
    s3c2410_serial0::askfirst:-/bin/sh //s3c2410_serial是mini2440的串口名。
    ::restart:/sbin/init
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount -a -r
    ::shutdown:/sbin/swapoff -a

    创建/etc/init.d/rcS
    并加上运行权限,以下是文件内容:

    1
    2
    3
    4
    5
    6
    7
    #!/bin/sh
    ifconfig eth0 192.168.1.12
    mount -a
    mkdir /dev/pts
    mount -t devpts devpts /dev/pts
    echo /sbin/mdev > /proc/sys/kernel/hotplug
    mdev -s

    创建/dev/fstab
    以下是文件内容:

    1
    2
    3
    4
    5
    # device mount-point type options dump fsck order
    proc /proc proc defaults 0 0
    tmpfs /tmp tmpfs defaults 0 0
    sysfs /sys sysfs defaults 0 0
    tmpfs /dev tmpfs defaults 0 0

    /dev下用mknod创建以下节点

    1
    2
    3
    4
    5
    6
    7
    mknod console c 5 1
    mknod null c 1 3
    mknod ttySAC0 c 204 64
    mknod mtdblock0 b 31 0
    mknod mtdblock1 b 31 1
    mknod mtdblock2 b 31 2
    mknod mtdblock3 b 31 3

    注意:我的mini2440在common-smdk.c上是有4个区,所以对应mtdblock也有4个。
    在根文件系统中创建其他空目录如下:
    mkdir proc mnt tmp sys root

  3. mkyaffs2image把文件夹封装,这里要注意的是nand flash为64M的mini2440板用mkyaffs2image命令就可以了,128M或以上的要用mkyaffs2image-128M来封装,不然会出错。

这就是最简单的根文件系统,虽然配置起来不难,但是后面在根文件系统中设置环境变量才是重点。