
构建基本的嵌入式Linux根文件系统.doc
3页文档供参考,可复制、编制,期待您的好评与关注! 构建基本的嵌入式Linux根文件系统一、创建根文件系统的基本目录结构1、目录创建做成文件名为mkroot 的shell脚本#! /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 #必备的7个目 mkdir usr/bin usr/lib usr/sbin echo "making dir :tmp var" mkdir tmp var chmod 1777 tmp注意:变更了/tmp目录的使用权,让它开启sticky位,可确保/tmp目录下建立的文件,只有建立它的用户有权删除它2、 增加可执行权限chmod +x mkroot ,在某个目录中运行脚本mkroot.二、配置、编译和安装Busybox,构建/bin /sbin linuxrc 1、修改Makefile文件:ARCH = arm CROSS_COMPILE = 交叉编译器位置或在配置Busybox指定交叉编译器Busybox Setting -----> Build Options -----> //1选择将busybox进行静态编译 [*]Build BusyBox as a static binary (no shared libs) //2.指定交叉编译器为 (/usr/local/arm/4.3.2/bin/arm-linux-)Cross Compiler prefixBusybox Settings ---> Installation Options ---> [*] Don't use /usr (安装路径rootfs) BusyBox installation prefix #make #make install rootfs 目录下会生成目录bin、sbin、usr 和文件linuxrc 的内容2、进入busybox目录中,查看所需要的库 arm-linux-readelf -d busybox直接拷贝交叉编译器中复制动态链接库(*.so.*)到rootfs/lib目录三、创建件etc目录必要的文:1、在/etc/inittab是init的初始化配置文件,需增加inittab文件#gedit inittab#etc/inittab::sysinit:/etc/init.d/rcS::askfirst:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a –r2、/etc/profile为shell的全局变量配置文件,用以配置shell的环境,通常把环境变量放在这里。
gedit profile#/etc/profile: system-wide .profile file for the Bourne shellsecho "Processing /etc/profile... "#set search library pathecho "Set search library path in /etc/profile"export LD_LIBRARY_PATH=/lib:/usr/lib#set user pathecho "Set user path in /etc/profile"PATH=/bin:/sbin:/usr/bin:/usr/sbinexport PATH其中,修改环境变量 PATH 的目的是使系统命令/程序目录扩展到用户程序目录,这样, 当执行用户应用程序时,系统才能找到相应的共享文件等;修改LD_LIBRARY_PATH 的目的是将系统的共享库路径扩展为包含系统程序和用户程序库文件路径的库文件路径,以便在 运行用户程序时能使系统找到应用程序所使用的库文件3、 手动建立/dev目录下的设备文件mknod -m 666 console c 5 1 mknod -m 666 null c 1 3 mknod –m 600 ttyS0 c 4 64mknod –m 600 ttyS0 c 4 65 ln –s ttyS0 console4、在busybox中,/etc/init.d/rcS是系统启动的默认配置脚本#gedit rcS#! /bin/shecho “runing rcS ”#设置主机名hostname margicarmpxa270echo "----------mount proc filesystem"/bin/mount –t proc proc /proc#挂载ramfs到/varmount –t ramfs ramfs /var#此时/var目录为空的ramdisk,需创建必要的目录mkdir /var/tmpmkdir /var/logmkdir /var/runmkdir /var/lockecho "*********************************************"echo " Rootfs(nfs) 2008.2 "echo " Love Linux ! ! @@ Love arm ! ! "echo"**********************************************" / 。
