根文件系统制作(修订版二)
根文件系统移植日志
一、创建文件夹
a) 创建主工作文件夹【mkdir arm2410】
b) 打开主文件夹【cd arm2410】
c) 创建内核移植文件夹【mkdir rootfs】
二、拷贝工具链文件
a) 将【Windows】中的文件拖拽到虚拟机中的【rootfs】文件夹
三、自动生成根文件系统文件夹结构【rootfs】文件夹
a) 生成脚本文件【gedit mkrootfs.sh】
b) 编辑脚本文件【
#! /bin/sh
echo "creatint rootfs dir......"
mkdir rootfs
cd rootfs
echo "making dir : bin dev etc lib proc sbin sys usr"
mkdir bin dev etc lib proc sbin sys usr #必备的8个目录
mkdir usr/bin usr/lib usr/sbin lib/modules
# Don't use mknod ,unless you run this Script as root !
# mknod -m 600 dev/console c 5 1
# mknod -m 666 dev/null c 1 3
echo "making dir : mnt tmp var"
mkdir mnt tmp var
chmod 1777 tmp
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/log var/run var/tmp
chmod 1777 var/tmp
echo "making dir : home root boot"
mkdir home root boot
echo "done"
c) 设置脚本文件可执行权限【chmod 777 mkrootfs.sh】
四、安装busybox工具
a) 解压缩工具包【tar jxvf …】
b) 修改Makefile文件【ARCH ?= arm CROSS_COMPILE ?= arm-linux-】
c) make defconfig
d) make menuconfig
General Configuration应该选的选项
---Show terse applet usage messages
· Show verbose applet usage messages
--- Support for SUID/SGID handling
· Runtime SUID/SGID configuration via /etc/busybox.conf
Build Options应该选的选项
· Build BusyBox as a static binary (no shared libs)
同时去掉
· Build with Large File Support (for accessing file>2GB)
【这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作】
Busybox library tuning应该选的选项
*fancy shell prompts
*username completion
Installation Options应该选的选项
· Don't use /usr
(./_install) BusyBox installation prefix
Force NOMMU build
Build shared libbusybox
如果选择 Build BusyBox as a static binary (no shared libs) 方式进行编译时,所需的库已经与程序静态地链接在一起,这些程序不需要额外的库就可以单独运行,但是自己编写的程序在文件系统上运行必须采用静态编译,否则会报诸如:bin/sh: hello :not found的错误。
静态编译如:
arm-linux-gcc –static hello.c –o hello
如果选择Build shared libbusybox方式进行编译时,要将交叉编译的动态库或符号链接复制到对应的目录中,否则程序不能运行。同时在配置时应去掉Build shared libbusybox目录下的两项:如下
Build shared libbusybox->
Produce binary for each applet,linked against libbusybox
Produce additional busybox binary linked against libbusybox
e) make
f) make install
g) 打开安装文件夹【cd _install】
h) 拷贝文件到【rootfs】文件夹【cp –rf * ../../rootfs/】
五、以root身份建立节点文件 /dev/console, /dev/null
a) 打开驱动程序文件夹【cd dev】
b) 【mknod -m 600 console c 5 1】
c) 【mknod -m 666 null c 3 1】
d) 【cd ..】
六、配置etc文件夹
a) 打开etc文件夹【cd etc】
b) 将busybox工具生成的配置文件模板拷贝到etc文件夹:【cp -r ../../ busybox-1.15.2/examples/bootfloppy/etc/* ./】
c) 修改profile文件:
#!/bin/sh
#/etc/profile:system-wide .profile file for the Bourne shells
echo
echo -n "Processing /etc/profile......"
# Set search library path
export LD_LIBRARY_PATH=/lib:/usr/lib
# set user path
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
#Set PS1
echo "Set PS1 in /etc/profile"
export PS1="[\u@\h\W]\$"
echo "Done!"
d) 修改inittab文件:
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a
e) 修改fstab文件:
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
none /var ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
f) 修改初始化脚本init.d/rcS
#! /bin/sh
echo "----------mount all"
/bin/mount -a
echo "----------Starting mdev......"
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
echo "********************************************************"
echo " S601 2410 Rootfs 2011.11 "
echo " Love Linux ! ! @@ Love S601 ! ! "
echo "********************************************************"
七、创建登录账户
a) 【cd …/etc】
b) 【cp /etc/group ./】
c) 【cp /etc/passwd ./】
d) 【cp /etc/shadow ./】
八、填加静态库
a) 【tar zxvf arm920t-eabi.tgz】
b) 【cp /opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib/*.so* rootfs/lib】
九、安装yaffs文件格式制作工具
a) 【tar zxvf mkyaffs2image.tgz】
b) 【cp usr/sbin/mkyaffs2image-128M /usr/bin】(可以为/usr/bin也可以为/bin)
c) 【mkyaffs2image-128M rootfs rootfs.bin】
更多推荐


所有评论(0)