本节讲述在Ubuntu12.04下面怎样制作完整启动嵌入式Linux所需要的根文件系统。因为z-turn板子上已有的flash是qspi flash(nor flash的一种),所有如果要从qspi flash启动根文件系统,那我我们就需要制作与nor flash想对应的文件系统类型----jfss/jfss2文件系统。其他类型的flash/存储设备需要制作对应的根文件系统类型,在此不再赘述!!! 首先从http://www.busybox.net下载相应版本的busybox,这里下载的是busybox1.19.4版本(其他版本应该也是一样的吧)。 接下来,就开始吧~~~~~~~~~~ 一.编译并生成根文件系统文件 1.解压该包 tar jxvf busybox-1.19.4.tar.bz2 cd busybox-1.19.4 2.修改Makefile CROSS_COMPILE ?= 修改为 CROSS_COMPILE ?=CROSS_COMPILE ?= /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-
ARCH ?= $(SUBARCH) 修改为 ARCH ?= arm
3.进行默认配置 make defconfig
4.对配置信息进行修改 make menuconfig
Miscellaneous Utilities---> 去除 taskset 同时设置如下: Busybox Settings ---> Build Options ---> Build BusyBox as a static binry (no shared libs) Installation Options ---> Don't use /usr
#make如果出现下面的错误: In file included from miscutils/ubi_tools.c:63:0: /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:329:3: error: conflicting types for '__packed' /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:313:3: note: previous declaration of '__packed' was here /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:371:3: error: conflicting types for '__packed' /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:313:3: note: previous declaration of '__packed' was here /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:386:3: error: conflicting types for '__packed' /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:313:3: note: previous declaration of '__packed' was here /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:398:3: error: conflicting types for '__packed' /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:313:3: note: previous declaration of '__packed' was here /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:412:4: error: conflicting types for '__packed' /opt/zynq_zturn/workdir/04-Linux_Source/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../arm-xilinx-linux-gnueabi/libc/usr/include/mtd/ubi-user.h:313:3: note: previous declaration of '__packed' was here make[1]: *** [miscutils/ubi_tools.o] Error 1 make: *** [miscutils] Error 2
那么就行重新配置make menuconfig 去除所有与ubi***相关的选项再重新make即可。 #make install所生成的文件就在当前目录的 _install目录下。二.准备制作jffs2文件系统的所有文件
编译结束后,自己随便找个目录,并在该目录下建立myrootfs文件夹(我是放在/opt下面) 并在其中建立如下路径 1. #mkdir bin sbin lib etc dev mnt usr/bin usr/sbin usr/lib proc sys -p 2. 把刚才编译busybox生成的在_install目录下的文件全部copy到rootfs/目录下,注意用 cp命令带 –arf 参数
3.拷贝动态链接库
4.建立必要的文件进入根文件系统的etc目录#cd /opt/myrootfs/etc增加为SHELL导入全局变量的文件/etc/profile#vi profile内容如下:# /etc/profile: system-wide .profile file for the Bourne shells echoecho -n "Processing /etc/profile... "# no-opecho "Set search library path in /etc/profile"export LD_LIBRARY_PATH=/lib:/usr/libecho "Set user path in /etc/profile"export PATH=/bin:/sbin:/usr/bin:/usr/sbinecho "Set PS1 in /etc/profile"PS1="[$USER@$HOSTNAME \\w]\\$"PATH=$PATHecho "Done"echo增加初始化文件#vi inittab内容如下:::sysinit:/etc/init.d/rcS::respawn:-/bin/sh::restart:/sbin/init::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r::shutdown:/sbin/swapoff -a#vi fstab内容如下proc /proc proc defaults 0 0none /tmp ramfs defaults 0 0none /var ramfs defaults 0 0mdev /dev ramfs defaults 0 0sysfs /sys sysfs defaults 0 0增加初始化脚本#vi init.d/rcS内容如下#! /bin/sh./etc/hosthostname ${HOSTNAME}echo "*****************mount all**********"/bin/mount -aecho "*****************Starting mdev******"/bin/echo /sbin/mdev > /proc/sys/kernel/hotplugmdev -s/usr/etc/initecho "************************************"echo "*******nick's rootfs 2009.3*********"echo "************************************"为mdev创建配置文件#vi mdev.conf内容为空#vi /opt/myrootfs/usr/etc/init内容如下:#!/bin/shifconfig eth0 192.168.1.10 upifconfig lo 127.0.0.1在/opt/myrootfs/dev下面建立两个节点#mknod -m 660 console c 5 1 #mknod -m 660 null c 1 3安装MTD-Utils工具,这个需要四个文件(见下图),安装方法不再赘述。。。
这样就差不多大功告成了----------------------------------------完美的黄金分割线------------------------------------------------ 三. 制作jffs2文件系统1.使用mkfs.jffs2 mkfs.jffs2 -r /opt/myrootfs -o /opt/zynq_zturn/target/rfs/myfirstrootfs.jffs2 -e 0x4000 --pad=0x1000000 -s 0x200 –n 生成的文件rootfs.jffs2就是要烧写的文件系统注意:--pad=0x1000000 这个值应该跟你文件系统分区的大小一样(主义各参数的含义)。结果如下图所示:图片里面的jfss2文件就是需要我们烧写的文件。。。。。
未完待续、、、、、、
|
-
3.png (71.8 KB, 下载次数: 7)
|