yaffs2制作教程

上传人:第*** 文档编号:31887601 上传时间:2018-02-09 格式:DOC 页数:16 大小:95.50KB
返回 下载 相关 举报
yaffs2制作教程_第1页
第1页 / 共16页
yaffs2制作教程_第2页
第2页 / 共16页
yaffs2制作教程_第3页
第3页 / 共16页
yaffs2制作教程_第4页
第4页 / 共16页
yaffs2制作教程_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《yaffs2制作教程》由会员分享,可在线阅读,更多相关《yaffs2制作教程(16页珍藏版)》请在金锄头文库上搜索。

1、 Yaffs2 根文件系统制作环境:交叉编译环境:4.3.3 (天嵌科技提供,存放路径/opt/EmbedSky/4.3.3)开发平台:TQ24401,编译 busybox获取 busybox 源码 busybox-1.17.2.tar (http:/ 下#tar jxvf busybox-1.17.2.tar.bz2#cd busybox-1.17.2#vim Makefile将 164 行改为 CROSS_COMPILE = arm-linux- 将 190 行改为 ARCH = arm保存推出进入配置菜单#make menuconfig 采用默认配置保存推出#make#make inst

2、all在 busybox-1.17.2 的根目录下出现了一个_install 目录在该目录下又有三个目录文件 bin sbin usr 和一个链接文件 linuxrc 。2,创建根文件系统必要的目录回到/opt/embed 目录下创建根文件系统必要的目录#mkdir root_fs #cd root_fs将刚才生成的三个目录 bin sbin usr 和一个链接文件 linuxrc 考到目录root_fs 下#cp -rf ./busybox-1.17.2/_install/* ./ #mkdir dev etc home lib mnt opt proc root sys tmp var创建

3、几个必要的二级目录#mkdir usr/lib usr/share#mkdir etc/rc.d#mkdir var/lib var/lock var/run var/tmp3,创建必要文件(1), 获取库文件 (我的交叉编译工具链放在目录 /opt/EmbedSky/下的)#cp -rf /opt/EmbedSky/4.3.3/arm-none-linux-gn?i/libc/armv4t/lib/*so* lib -a(2),将主机 etc 目录下的 passwd、group、shadow 文件拷贝到root_fs/etc 目录下#cp -f /etc/passwd /etc/group

4、/etc/shadow etc将目录/opt/embed/busybox-1.17.2/examples/bootfloppy/etc 下的所有文件拷贝到root_fs/etc 下。在这个目录下有三个文件 fstab, inittab, profile 和一个目录 init.d,在目录 init.d 中有一个文件 rcS。#cp -rf ./busybox-1.17.2/examples/bootfloppy/etc/* etc在目录 etc 下创建文件 mdev.conf。mdev 是?v 的一个简化版本,我们可以通过文件 mdev.conf 自定义一些设备节点的名称或链接来满足特定的需要,

5、但在此处让它为空。#touch etc/mdev.conf(3)创建两个设备文件 dev/console dev/null。在 linux 内核源码文件 init/main.c 中有打开设备文件 dev/console的操作如下:static noinline int init_post(void)_releases(kernel_lock)if (sys_open(const char _user *) /dev/console, O_RDWR, 0) :表示这个进程要使用的控制台(即标准输入、标准输出、标准错误设备)。如果省 略,则使用与 init 进程一样的控制台。:对于 Busybox

6、 init 程序,这个字段滑意义,可以省略。:表示 init 程序如何控制这个子进程,: 要执行的程序,它可以是可执行程序,也可以是脚本文件 etc/inittab 配置条目说明如下::sysinit:/etc/init.d/rcS启动系统初始化文件/etc/init.d/rcS。字段 sysinit 表明文件/etc/init.d/rcS 在系统启动后最先执行,并且只执行一次,init 进程等待它结束才继续执行其它动作。(脚本文件名一般为 rc,后缀 S 代表单用户运行级别脚本)tq2440_serial0:askfirst:-/bin/sh在串口 tq2440_serial0 上启动 as

7、kfirst 动作的 shell。 S3C2410 的串口名在/dev 下是 s3c2410_serialx。此时还没有移植自己的内核,用天嵌科技的内核所以串口名为 tq2440_serial0。askfirst 表明 init 进程先输出 “Please press Enter to actvie this console”,等用户输入回车键之后才启动-/bin/sh。:ctrlaltdel:/sbin/reboot当按下 Ctrl+Alt+Delete 组合键时,init 重启执行程序。字段ctrlaltdel 表明当按下 Ctrl+Alt+Delete 组合键时,执行相应的进程。:shu

8、tdown:/bin/umount -a -r告诉 init 在关机时运行 umount 命令卸载所有的文件系统,如果卸载失败,试图以只读方式重新挂载。字段 shutdown 表明在重启关闭系统命令时执行相应进程。(2),当解析完文件 etc/inittab 后就将启动这些进程,首先要执行的是启动脚本 etc/init.d/rcS。修改文件 etc/init.d/rcS 如下:#! /bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=Sprevlevel=Numask 022export PATH runlevel prevlevel/bin/h

9、ostname cyembedecho -mount all-/bin/mount -aecho /sbin/mdev/proc/sys/kernel/hotplugmdev -secho *echo *echo Kernel version:linux-2.6.30.4echo Date:2010.09.16echo *说明如下:#! /bin/sh 用 busybox 的 shellPATH=/sbin:/bin:/usr/sbin:/usr/bin /shell 命令的搜索路径runlevel=S /运行在单用户模式prevlevel=N /前一个级别为 n 表示没有前一个级别umask

10、 022 /权限位掩码export PATH runlevel prevlevel /将设置的变量导出到环境中/bin/hostname cyembed /主机名,cyembed 将出现在 shell 提示符中rootcyembed/#/bin/mount -a /将文件 etc/fstab 中指明的文件系统挂载到对应挂载点上echo /sbin/mdev/proc/sys/kernel/hotplug /用 mdev 来处理内核的热插拔事件。当有热插拔事件产生时, 内核就会调用位于/sbin 目录的 mdev。 这时mdev 通过环境变量中的 ACTION 和 DEVPATH, (这两个变量

11、是系统自带的)来确定此次热插拔事件的动作以及影响了/sys 中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为 这个设备在/dev下创建设备节点文件。mdev -s /建立 dev 目录。以-s为参数调用位于/sbin 目录写的mdev(其实是个链接,作用是传递参数给/bin 目录下的 busybox 程序并调用它) ,mdev 扫描 /sys/class 和/sys /block 中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则 mdev 就利用这些信息为这个设备在/dev 下创建设备节点文件。一般只在启动时才执行一次“m

12、dev -s” 。 (3),修改文件 etc/fstab 如下:#device mount-point type option dump fsck order proc /proc proc defaults 0 0 none /tmp ramfs defaults 0 0 sysfs /sys sysfs defaults 0 0 mdev /dev ramfs defaults 0 0 在系统启动初始化文件/etc/init.d/rcS 中有执行挂载命令/bin/mount -a ,这便是将文件 etc/fstab 中指定的文件系统挂载到对应的挂载点上。这些文件系统的挂在是执行mdev -

13、s 命令建立 dev 目录的前提。(4),在启动脚本 etc/init.d/rcS 执行完后将在串口 tq2440_serial0 启动一个 shell。Shell 启动过程中会根据文件/etc/profile 配置登陆环境。文件/etc/profile 修改如下:USER= id -un LOGNAME=$USER PS1=uh W# PATH=$PATH HOSTNAME=/bin/hostname export USER LOGNAME PS1 PATH 具体说明:USER=id -un /获取用户名 id-un 与 whoami 命令有相同的功能PS1=uh W# /PS1 指定 sh

14、 提示符的格式在本环境下将是rootcyembed /#export USER LOGNAME PS1 PATH 将这些变量导出到环境。(5),在用户登录时将在/etc 下寻找三个文件 passwd ,shadow, group 匹配相关信息。这三个文件修改如下:/etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:

15、99:Nobody:/:/sbin/nologin/etc/grouproot:x:0:rootbin:x:1:root,bin,daemondaemon:x:2:root,bin,daemonftp:x:50:nobody:x:99:/etc/shadowroot:$6$hnswPTgxzFaZHlLl$WMMV0Av6O6c4RA4pwpVSgcKSiURhUlP5dxF3/MKEZlGzNXhoWMQeZA1rdf1z7VQbrrmOZe7YHw1rIQmAc8BNK/:14819:0:99999:7:bin:*:14715:0:99999:7:daemon:*:14715:0:99999:7:ftp:*:14715:0:99999:7:nobody:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 工业设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号