嵌入式Linux根文件系统构建

时间:2020-12-28 16:29:43

1.下载busybox源码包busybox-1.15.0.tar.bz2,网址:https://busybox.net/downloads/

2.tar jxf busybox-1.15.0.tar.bz2,cd busybox-1.15.0/,修改Makefile,164行改为CROSS_COMPILE ?= arm-linux-,190行改为ARCH ?= arm。

3.make menuconfig,配置busybox。
Busybox Settings  --->
    Busybox Library Tuning  --->
        [*]   Tab completion
        [*]     Username completion
        [*]   Fancy shell prompts
4.make,编译。

5.make  install CONFIG_PREFIX=../rootfs install,将busybox安装到指定目录。

6.复制glibc库文件到根文件系统。
cd rootfs
mkdir lib
cp ~/work/Tools/arm-linux-gcc-4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* lib/ -rf -d
cp ~/work/Tools/arm-linux-gcc-4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* lib/ -rf -d
arm-linux-strip -s lib/lib*

7.创建相关文件、目录和节点:etc/inittab、etc/fstab、etc/profile、etc/init.d/rcS。
inittab文件内容为:

::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:umount -a -r

fstab文件内容为:
#device    mount-point    type      options    dump    fsck    order
proc         /proc                proc      defaults     0           0
sysfs         /sys                  sysfs      defaults     0           0
tmpfs       /temp               tmpfs    defaults     0           0
tmpfs       /dev                  tmpfs    defaults     0           0

profile文件内容为:
#!/bin/sh
export HOSTNAME=hyt
export USER=root
export HOME=root
export PS1="[$USER@$HOSTNAME \W]\#"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH

rcS文件内容为:
mount -a
mkdir /dev/pts
mount -tdevpts devpts /dev/pts
mount -t tmpfs -o size=32m none /tmp
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
/sbin/ifconfig lo 127.0.0.1  
/sbin/ifconfig eth0 hw ether 5e:f7:90:82:66:28   
/sbin/ifconfig eth0 192.168.1.6 up     
route add default gw 192.168.1.1

增加rcS文件的可执行权限:chmod +x rcS,在根目录下创建其他目录dev、home、temp、proc、sys、tmp。进入dev目录,并用根用户创建两个基本的设备文件。
sudo mknod console c 5 1
sudo mknod null c 1 3

8.复制rz,sz工具到文件系统,下载rz,sz源码包rzsz-3.48.tar.gz。
tar zxf rzsz-3.48.tar.gz
cd src/
修改Makefile,第3行改为CC=arm-linux-gcc,第4行改为OFLAG= -O -DREGISTERED,然后执行make posix编译,拷贝rz,sz工具到文件系的/bin目录即可。

9.利用mkyaffs2image工具生成yaffs2镜像。
./mkyaffs2image rootfs/ rootfs.yaffs2