免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1146 | 回复: 0
打印 上一主题 下一主题

制作一个简单的文件系统 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-23 00:24 |只看该作者 |倒序浏览
编译Busybox一、编译Busybox
1、修改编译配置
修改源代码目录中的“Makefile”文件,将此文件中的
CROSS_COMPILE ?=
ARCH ?= $(SUBARCH)
分别修改为:
CROSS_COMPILE ?= /your/toolchain/path/arm-linux-
ARCH ?= arm
其中的“/your/toolchain/path/”为交叉编译工具链的地址,“arm-linux-”为交叉编译命令的前缀。
2、设置编译选项
使用以下命令设置编译选项:
$ make menuconfig
以下选项为必选项:
|---Busybox Settings
|   |---General Configuration
|   |   |---Show verbose applet usage messages
|   |   |---Runtime SUID/SGID configuration via /etc/busybox.conf
|   |---Build Options
|   |   |---Build BusyBox as a static binary (no shared libs)
|   |---Installation Options
|   |   |---Don't use /usr
其它命令和工具则根据需要自行选择!
3、开始编译
使用以下命令进行编译:
$ make clean
$ make
$ make install
完成后会将 Busybox 安装至当前目录下的“_install”目录中。
注:编译“networking/interface.c”文件时可能会出现以下错误:
  CC      networking/interface.o
networking/interface.c:818: error: 'ARPHRD_INFINIBAND' undeclared here (not in a function)
make[1]: *** [networking/interface.o] Error 1
make: *** [networking] Error 2
通过查看内核源代码目录中的“include/linux/ifarp.h”文件可得知“ARPHRDINFINIBAND”的值为“32”,然后修改“networking/interface.c”文件,在其中添加:
#define ARPHRD_INFINIBAND 32  /* InfiniBand */
即可解决此错误。
二、制作 root fs
1、创建目录结构
首先要指定一个目录做为存放你新的文件系统的根目录,这里设定的为“/your/root/path”目录。然后使用以下命令建立各目录:
# mkdir /your/root/path                        //建立一个目录用来存放新的文件系统
# cd /your/root/path
# cp -R /your/busybox/path/_install/* .
# mkdir dev etc lib proc sys usr            //必备的8个目录(包括busybox自带的bin和sbin)
# mkdir etc/init.d
# mkdir usr/bin usr/lib usr/sbin lib/modules
# mkdir home mnt root tmp var
2、建立必需的配置文件
首先是“etc/inittab”文件,设定了系统在各状态下要运行的文件。其内容如下:
# System initialization.
::sysinit:/etc/init.d/rcS
::askfirst:/sbin/getty 115200 console
其次是“etc/fstab”文件,文件中提供了要自动挂载的对象。因为我们要手动挂载“/var”,所以没有在下面列出。此文件内容如下:
# fstab
none        /proc           proc    defaults        0 0
none        /dev/pts        devpts  mode=0622       0 0
tmpfs       /dev/shm        tmpfs   defaults        0 0
然后是“etc/init.d/rcS”文件,此文件是“etc/inittab”中设定的系统初始化时使用的脚本,需要注意此文件需要有运行权限。文件内容如下:
#! /bin/sh
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#Charactor modules
/bin/mknod /dev/pts/0 c 136 0
/bin/ln -s /dev/v4l/video0 /dev/video0
/bin/ln -s /dev/fb/0 /dev/fb0
/bin/ln -s /dev/vc/0 /dev/tty1
/bin/ln -s /dev/scsi/host0/bus0/target0/lun0/part1 /dev/sda1
/bin/mount -t proc none /proc
/bin/mount -t tmpfs none /tmp
/bin/mount -t tmpfs none /var
/bin/mkdir -p /var/lib
/bin/mkdir -p /var/run
/bin/mkdir -p /var/log
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.0.111 up
/bin/hostname -F /etc/hostname
最后是“etc/hostname”文件,此文件在“etc/init.d/rcS”文件中设定用来提供主机名称。文件内容如下:
QQ2004V3
3、创建 dev 中的节点
如果使用“linux 2.6.xx”的内核,应该事先创建节点“console”、“null”。否则在系统启动时内容会提示以下错误:
Warning: unable to open an initial console.
Kernel panic - not syncing: Attempted to kill init!
创建节点的命令如下:
# mknod dev/console c 5 1
# mknod dev/null c 1 3
至此,一个最基本的文件系统已经完成了,下面就可以制作 cramfs 映像文件了。
4、制作 cramfs 映像文件
要制作 cfamfs 映像文件,需要先安装 cramfs 的工具包,因为我使用的是Debian系统,所以使用命令“aptitude install cramfsprogs”就可以安装此工具包。
使用下面的命令就可以创建一个 cramfs 映像文件:
mkcramfs /your/root/path /your/root/image/path/root.cramfs
将生成的映像文件“root.cramfs”烧入实验板即可!
注:在移植内核的时候,需要选中“File systems-->Miscellaneous filesystems”中的“Compressed ROM file system support (cramfs)”,否则内核不支持 cramfs 文件系统。
备注:
此文章中的操作只生成了一个最基本的文件系统,只能将系统引导至登录界面,但由于没有设置与用户相关的文件,所以无法登录。其它配置会在以后再进行!


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/101001/showart_2158173.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP