一,文件系统:
用来管理磁盘或磁盘分区上数据的数据结构和算法
嵌入式文件系统常用类型:
cramfs:小型只读,压缩文件系统,适合用来做为根文件的管理
yaffs2:小型可读写文件系统,适合用户文件
二,根文件的组成:
1,工作目录
etc,bin,mnt,root,tmp,lib,dev,sbin,usr,proc,usr/bin,usr/sbin,sys
2,重要的配置文件
fstab:系统在启动时挂载文件系统和存储设备的详细信息。
profile:系统的环境,也就是有关Linux环境变量的东西,这里修改会对所有用户起作用。
linuxrc:自己写的系统初始化时的配置文件
3,重要的指令执行程序
ls,cd,mount........
4,库文件
5,应用程序
根文件制作
1,makdir 制作根文件目录
2,touch linuxrc,profile,fstab配置文件
3,cp 库到目标系统lib下
4,busybox安装指令
5,创建节点
6,以后制作应用程序
将以上步骤制作成脚本,内容如下:
#!/bin/sh
INSTALL_PATH=/nfs/rootfs
BUSY_BOX=busybox-1.13.3-mini2440.tgz
BUSY_BOX_SOURCE=busybox-1.13.3
WORK_PATH=/s3c2440/rootfs
if [ -e ${INSTALL_PATH} ]
then
rm -rf ${INSTALL_PATH}/*
else
mkdir ${INSTALL_PATH} -p
fi
echo "Now making dirs ... ..."
cd ${INSTALL_PATH}
mkdir mnt dev bin sbin usr etc lib root sys proc tmp
mkdir mnt/etc usr/sbin usr/bin usr/lib
echo "Making busybox ... ..."
if [ ! -e ${WORK_PATH}/${BUSY_BOX} ]
then
echo "Can't find busybox source file in this dir ... ..."
exit
fi
if [ -e ${WORK_PATH}/${BUSY_BOX_SOURCE} ]
then
rm -rf ${WORK_PATH}/${BUSY_BOX_SOURCE}
fi
tar zxvf ${WORK_PATH}/${BUSY_BOX} -C ${WORK_PATH}
cd ${WORK_PATH}/${BUSY_BOX_SOURCE}
make menuconfig
make
make install
if [ -e ${INSTALL_PATH}/linuxrc ]
then
rm -rf ${INSTALL_PATH}/linuxrc
fi
echo "Making etc files ... ..."
touch ${INSTALL_PATH}/linuxrc
touch ${INSTALL_PATH}/mnt/etc/profile
touch ${INSTALL_PATH}/mnt/etc/fstab
vi ${INSTALL_PATH}/linuxrc
chmod a+x ${INSTLL_PATH}/linuxrc
vi ${INSTALL_PATH}/mnt/etc/profile
vi ${INSTALL_PATH}/mnt/etc/fstab
echo "Copy system librarys to lib dir... ..."
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*.so ${INSTALL_PATH}/lib
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*.so.* ${INSTALL_PATH}/lib
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*.so ${INSTALL_PATH}/usr/lib
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*.so.* ${INSTALL_PATH}/usr/lib
arm-linux-strip ${INSTALL_PATH}/lib/*
arm-linux-strip ${INSTALL_PATH}/usr/lib/*
echo "Making node ... ..."
mknod -m 660 ${INSTALL_PATH}/dev/console c 5 1
busybox配置:
1,BusyBox Settings-->(回车)
Build Options-->(回车)
选中Build BusyBox as a static binary(no shared libs)
2,Cross Compiler prefix(回车)
添加路径:/usr/local/arm/4.3.2/bin/arm-linux-
3,Installation Options-->(回车)
(./_install)BusyBox installation prefix(回车)
添加路径:/nfs/rootfs
保存退出
编辑linuxrc文件:
echo "mount /etc as ramfs"
/bin/mount -n -t ramfs ramfs /etc
/bin/mount -n -t proc none /proc
/bin/mount -n -t sysfs none /sys
#/bin/mount -a
exec /bin/init
编辑profile文件:
export LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
添加内核启动参数:
cd s3c2440/kernel/linux-2.6.32.2
启动内核配置菜单:make menuconfig
Boot options-->(回车)
第三项添加内核启动参数:
noinitrd root=/dev/nfs nfsroot=192.168.1.188:/nfs/rootfs init=/linuxrc ip=192.168.1.187 netmask=255.255.255.0 console=ttySAC0,115200 mem=64MB
root=dev/nfs:指明根文件挂载方式,通过nfs挂载
nfsroot:描述根文件所在位置
init:指明内核初始化脚本为linuxrc
console:目标系统为内核指明控制台