yaffs2根文件系统的构建过程
基于BusyBox-1.19.2
(以其它作者的作为参考)
1. 下载BusyBox的源码 http://busybox.net/
2. 解压#tar xvzf busybox-1.19.2.tgz (命令参数搞忘了,查一下tgz文件解压命令)
3. 进入解压目录,对BusyBox进行配置
#make menuconfig
Busybox Settings --->
General Configuration --->
[*]Don’t use /usr
BuildOptions --->
[] BuildBusyBox as a static binary (no shared libs)
(此项代表文件系统是否要共享libs库函数,如果选上,到最后就可以不用人为地添加libs库文件了,但是如果不添加libs库文件,以后的应用程序也要静态编译了)
[*]Build shared libbusybox
(/usr/local/arm/4.4.3/bin/arm-linux-)Cross Compiler prefix
Installation Options (“make install” behavior) --->
(./_install) Busybox installation prefix (指定busybox的安装路径)
Busybox Library Tuning --->
[*] vi-style line editing commands
[*] Fancy shell prompts
(要选择这个选项:“Fancy shell prompts”,否则挂载文件系统后,无法正常显示命令提示符:“[\u@\h \W]#”)
添加mdev(可以实现设备节点的自动创建和设备的自动挂载,mdev具体可以查看http://blog.chinaunix.net/uid-26806098-id-3140548.html )的支持
Linux System Utilities --->
[*]mdev
[*]Support/etc/mdev.conf
[*]Supportcommand execution at device addition/removal
Linux Module Utilities--->
[ ]simplified modutils
[*]insmod
[*]rmmod
[*]lsmod
[*]modprobe
4. 交叉编译,生成busybox文件
#make
5. #make install
生成_install目录(此目录也就是根目录了),里面有子目录bin各sbin,还有一个文件linuxrc; 并且命令还会将上面生成的busybox文件复制到_install/bin/下
6. 在_install目录下建立基本的目录结构
#mkdir etc dev mnt proc tmp usr var tmp sys root lib
bin 存放所有用户都可以使用的、基本的命令。
sbin 存放的是基本的系统命令,它们用于启动系统、修复系统等。
usr 里面存放的是共享、只读的程序和数据。
proc 这是个空目录,常作为proc文件系统的挂载点。
dev 该目录存放设备文件和其它特殊文件。
etc 存放系统配置文件,包括启动文件。
lib 存放共享库和可加载块(即驱动程序),共享库用于启动系统、运行根文件系统中的可执行程序。
boot 引导加载程序使用的静态文件
home 用户主目录,包括供服务账号锁使用的主目录,如FTP
mnt 用于临时挂接某个文件系统的挂接点,通常是空目录。也可以在里面创建空的子目录。
opt 给主机额外安装软件所摆放的目录。
root root用户的主目录
tmp 存放临时文件,通常是空目录。
var 存放可变的数据。
7. (如果在上面选择了[*]BuildBusyBox as a static binary (no shared libs),此步骤可以省去)
添加库
lib$cp /usr/local/arm/4.4.3/arm-none-linux-gnueabi/ lib/*so* ./ -a
再在管理员模式对库瘦身(可以不用做)
8. 在_install/etc/目录下创建目录和文件:inittab, /init.d/rcS, profile, fstab。
(
添加系统启动文件
etc$vim inittab
添加如下内容:
#this is run first except when booting insingle-user mode. ::sysinit:/etc/init.d/rcS # /bin/sh invocations on selected ttys # Start an "askfirst" shell on theconsole (whatever that may be) ::askfirst:-/bin/sh # Stuff to do when restarting the init process ::restart:/sbin/init #Stuff to do before rebooting ::ctrlaltdel:/sbin/reboot |
添加可执行权限
etc#chmod +x inittab
在etc下添加fstab
etc$vim fstab
添加如下内容:
#device mount-point type options dump fsch order proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0 |
这里挂载的文件系统有三个:proc、sysfs和tmpfs,在内核中proc和sysfs默认都支持,而tmpfs是没有支持的(好像有支持哦),检查内核有没有支持tmpfs,如果没有请如下设置
linux-2.6.35$make menuconfig
File systems --->
Pseudo filesystems --->
[*] Virtual memory file system support(former shm fs)
[*] Tmpfs POSIX Access Control Lists
重新编译内核
在_install/etc下创建init.d目录,并在该目录下创建rcS文件
etc$mkdir init.d
etc/init.d$vim rcS
添加如下内容:
#!/bin/sh #This is the firstscript called by init process /bin/mount -a mdev -s |
为rcS添加可执行权限
etc/init.d$chmod +x rcS
在etc下创建profile文件
etc$vim profile
添加如下内容:
#!/bin/sh export HOSTNAME=tony export USER=root export HOME=root export PS1= "[$USER@$HOSTNAME \W]#" PATH=/bin:/sbin:/usr/bin:/usr/sbin LD_LIBRARY_PATH=lib:/usr/lib:$LD_LIBRARY_PATH export PATHLD_LIBRARY_PATH |
)
9. 在_install/dev目录(dev目录呀,看清楚了,我就是这样出问题的)下创建console节点(这个设备节点是必须的)
dev# mknod –m 660 console c 5 1
(也做了这步:dev# mknod –m 660 null c 1 3)
10. 在busybox目录下,利用mkyaffs2image工具创建根文件系统映像文件
#mkyaffs2image-128M _install ./root_yaffs2.bin
(如果没有mkyaffs2image命令就先安装)
11. 修改root_yaffs2.bin文件的权限,否则该文件无法被复制
#chmod 777 root_yaffs2.bin
12. 将上面生成的root_yaffs2.bin映像文件下载到开发板中。
yaffs2根文件系统的构建过程的更多相关文章
- 一步一步制作yaffs/yaffs2根文件系统(四)---构建etc、dev等剩余目录
开发环境:Ubuntu 12.04 开发板:mini2440 256M NandFlash 64M SDRAM 交叉编译器:arm-linux-gcc 4.4.3点此可下载 BusyBox版本: ...
- Yaffs2根文件系统制作
Yaffs2根文件系统制作 环境: 交叉编译环境:4.4.6 开发平台:s3c2416 1,编译busybox 获取busybox源码busybox-1.17.2.tar (http://www.bu ...
- Linux之根文件系统的构建20160611
说一下LINUX根文件系统的构建: 制作文件系统 1. 交叉编译busybox 安装:make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_ne ...
- 根文件系统的构建与分析(四)之瑞士军刀busybox生成系统基本命令
根文件系统的构建与分析(四) 转载请注明 http://blog.csdn.net/jianchi88 Author:Lotte 邮箱:baihaowen08@126.com ls /bin, ...
- 根文件系统的构建与分析(三)之根文件目录及最简/dev目录
根文件系统的构建与分析(三) 转载请注明 http://blog.csdn.net/jianchi88 Author:Lotte 邮箱:baihaowen08@126.com 一.FHS(Fi ...
- 一步一步制作yaffs/yaffs2根文件系统(一)---储备好基础知识再打
开发环境:Ubuntu 12.04 开发板:mini2440 256M NandFlash 64M SDRAM 交叉编译器:arm-linux-gcc 4.4.3点此可下载 BusyBox版本: ...
- 一步一步制作yaffs/yaffs2根文件系统(三)---使用glibc库构造 /lib
开发环境:Ubuntu 12.04 开发板:mini2440 256M NandFlash 64M SDRAM glibc库:点此下载 交叉编译器:arm-linux-gcc 4.4.3点此可下 ...
- linux根文件系统的挂载过程详解
一:前言 前段时间在编译kernel的时候发现rootfs挂载不上.相同的root选项设置旧版的image却可以.为了彻底解决这个问题.研究了一下rootfs的挂载过程.特总结如下,希望能给这部份知识 ...
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr
开发环境:Ubuntu 12.04 开发板:mini2440 256M NandFlash 64M SDRAM 交叉编译器:arm-linux-gcc 4.4.3点此可下载 BusyBox版本: ...
随机推荐
- ssh 监听多个端口
修改sshd的配置文件 默认位置:/etc/ssh/sshd_config 注释掉 Port 这行 然后添加 ListenAddress 行 e.g: ListenAddress 192.168 ...
- POJ 2420 A Star not a Tree?【爬山法】
题目大意:在二维平面上找出一个点,使它到所有给定点的距离和最小,距离定义为欧氏距离,求这个最小的距离和是多少(结果需要四舍五入)? 思路:如果不能加点,问所有点距离和的最小值那就是经典的MST,如果只 ...
- hdu3516 Tree Construction (四边形不等式)
题意:给定一些点(xi,yi)(xj,yj)满足:i<j,xi<xj,yi>yj.用下面的连起来,使得所有边的长度最小? 题解:直接给出吧 f[i][j]=min(f[i][k]+f ...
- 售货员的难题(codevs 2596)
题目描述 Description 某乡有n个村庄(1<n<=15),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村 ...
- ubuntu 12.04 64bit 安装 teamviewer 8.0
1. 在http://www.teamviewer.com下载teamviewer_linux_x64.deb 2.sudo dpkg -i teamviewer_linux_x64.deb 3.如果 ...
- 通过rsync+inotify实现数据的实时备份 【转载】
在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp ...
- Mysql相关工具
•Mysql相关工具 –Mysqlslap 压力测试工具 –Mysqlsla 日志分析工具 –Mysqlreport 效能监控工具 –Mysqlproxy 快速实现读写分离以及负载均衡 –p ...
- php统计图类库JpGraph
php统计图类库JpGraph JpGraph官网地址:https://jpgraph.net/. (1)下载类库: 下载地址:https://jpgraph.net/download/. 选择版本, ...
- Kibana 可视化监控报警插件 KAAE 的介绍与使用
https://blog.csdn.net/phachon/article/details/53424631 https://blog.csdn.net/Dragon714/article/detai ...
- Codeforces 660E Different Subsets For All Tuples【组合数学】
看了官方题解+q神的讲解才懂... 智商问题.. 讲道理..数学真的比脱单难啊... 题目链接: http://codeforces.com/problemset/problem/660/E 题意: ...