文件系统制作

Posted laoyaodada

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件系统制作相关的知识,希望对你有一定的参考价值。

1  创建目录

# mkdir rootfs    /* rootfs为创建的根文件系统目录,名字可任意 */
# cd rootfs
# mkdir bin dev etc lib proc sbin sys usr mnt tmp var
# mkdir usr/bin usr/lib usr/sbin lib/modules

【说明】在/lib/目录下存放的是 ARM 平台支持的库,库在交叉编译器那里。 

2 创建设备文件

# cd rootfs/dev
# mknod -m 666 console c 5 1
# mknod -m 666 null c 1 3

 3  加入配置文件

(1)在 /etc/ 目录下添加文件 inittab:

# 系统启动后最先被执行rcS脚本,只执行一次,init进程等待它结束后才继续执行其他操作
::sysinit:/etc/init.d/rcS    
# 在启动once进程后执行,init进程一旦发现/bin/sh程序死掉,则重新启动
::respawn:-/bin/sh
# 如果BusyBox中配置了CONFIG_FEATURE_USE_INITTAB,并且init进程接收SIGHUP信号时,先重新读取/解析/etc/inittab文件,再执行/sbin/init程序
::restart:/sbin/init
# 表示进程/sbin/reboot在按下Ctrl+Alt+Del组合键时运行
::ctrlaltdel:/sbin/reboot

(2)在 /etc /目录下添加文件 fstab:

#device     mount-point     type     options         dump     fsck 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

# device:要挂载的设备
# mount-point:挂载点
# type:文件系统类型
# option:挂载参数

这里我们挂载的文件系统有三个 proc、sysfs 和 tmpfs,在内核中 proc 和 sysfs 默认都支持,而 tmpfs 是没有支持的,我们需要添加 tmpfs 的支持(内核配置):

File systems --->
       Pseudo filesystems --->
              [*] Virtual memory file system support (former shm fs)
              [*] Tmpfs POSIX Access Control Lists

配置完后,重新编译内核。

(3)在 /etc/ 下创建 init.d 目录,并在 init.d 下创建 rcS 文件:

#!/bin/sh
#This is the first script called by init process
# 挂载/etc/fstab指定的文件系统
/bin/mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
# 告诉内核mdev程序的路径,当系统有热插拔设备时,内核会调用mdev程序新建或删除
echo /sbin/mdev>/proc/sys/kernel/hotplug
# 启动mdev程序,扫描系统识别的设备,并且新建文件节点
mdev -s

 

为 rcS 添加执行权限:

# chmod  +x init.d/rcS

 

 (4)在 /etc/ 目录下添加 profile 文件:

#!/bin/sh
# 导出环境变量,HOSTNAME,USER,HOME
export HOSTNAME=farsight
export USER=root
export HOME=root
#export PS1="\[\[email protected]\h \W\]\$ "
# 命令提示符
export PS1="[[email protected]$HOSTNAME \W]\# "
# 设置PATH环境变量
PATH=/bin:/sbin:/usr/bin:/usr/sbin
# 设置动态库的搜索路径
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
# 导出环境变量,PATH,LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH

 

4  添加内核模块

# cd ../linux    /* 进入Linux源代码 */
# make modules ARCH=arm CROSS_COMPILE=arm-linux-    /* 编译Linux内核模块 */
# make modules_install ARCH=arm INSTALL_MOD_PATH=../rootfs    /* 把内核模块复制到根文件目录中 */

 

5  编译/安装busybox

Busybox 提供文件系统一些小命令和小工具。busybox 的官网下载:http://www.busybox.net/

找到 busybox 安装包并解压,执行:

# make menuconfig

进入配置菜单,进行如下配置:

 

以上是关于文件系统制作的主要内容,如果未能解决你的问题,请参考以下文章

Android - 在同一个 XML 文件上制作翻译和 objectAnimator

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

Java itext为pdf 文件添加水印核心功能代码片段

无法制作应用:…属性可在xml文件中使用

为片段制作自定义列表视图?

如何在片段内制作 Swip ActionBar-Tabs