- 积分
- 34
贡献16
飞刀2 FD
注册时间2016-5-6
在线时间32 小时
|
发表于 2013-3-19 17:25:56
|
显示全部楼层
制作根文件系统:
1、安装 libncurses5-dev,这个程序库提供了文本选单界面如果没有安装的话则无法进入图形界面,联网安装是最方便的直接打命令即可:
sudo apt-get install libncurses5-dev
2、拷贝 busybox 源代码 /work(自己创建的)目录下并且解压文件。tar -zxvf busybox-1.10.3.tar
3、修改“/work/busybox-1.10.3”目录下的编译配置
在 Makefile 文件找到 ARCH 和 CROSS_COMPILE 修改成如下
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
即将处理器改为 arm,将编译器设置为 arm-linux-gcc;
4、配置 busybox
(1)Linux 下打开命令终端,切换到“/work/busybox-1.10.3”目录,使用命令“make menuconfig”
按照以下选项进行配置:
设置 1:
Busybox Settings --->
Build Options --->
[ ]Build BusyBox as a static binary //不选此项进行动态编译。(编译错误考虑选择此项)
Busybox Library Tuning --->
[*] Support for /etc/networks
[*] vi-style line editing commands
(15) History size //历史纪录长度
[*] History saving
[*] Tab completion //支持按下 Tab 自动补全
[*] Username completion
[*] Fancy shell prompts
设置 2:
Miscellaneous Utilities --->
[ ]taskset //不要选这一项,bug,选了就会出错!!!
设置 3:
Linux Module Utilities --->
[ ] Support version 2.2.x to 2.4.x Linux kernels //不要选这一项
配置完成后,在主菜单里选择<Exit>退出并保存设置;
(再进行第5步时要安装交叉编译环境,否则无法顺利编译)
安装arm-linux-gcc-4.3.2方法:
下载安装包大约84M ,然后解压到根目录中,命令tar xvzf arm-linux-gcc-4.3.2.tgz -C / 然后以root身份进行配置,省得麻烦
注意以上命令必须要有-C而且是大写的后边有个空格也要注意然后配置下编译环境路径gedit /root/.bashrc等一会出来文本编辑器后在文件最后(最后一行)加上 下面代码 export PATH=/usr/local/arm/4.3.2/bin:$PATH 此时你可以在root用户下验证 arm-linux-gcc -v成功(注意必须得重新登录下)log out这个也是对profile进行配置
5、使用命令“make all install”进行编译,若无错误将在 busybox-1.10.3/_install 目录生成 bin,sbin ,usr 目录及 linuxrc 启动初始化程序;
(注:若进行了这步,还需修改第 4 步配置,先运行命令“make all uninstall”清除已生成的文件)
在“/work”目录下新建一目录 rootfs,将生成 bin sbin usr 目录及 linuxrc 启动初始化程序拷贝到新建的 rootfs 目录下(这个就是你自己制作的根文件系统的主目录了);
6、切换到“/work/rootfs”目录,分别使用以下命令创建其它目录;
mkdir dev etc home lib mnt proc sys tmp root
mkdir mnt/etc
mkdir usr/lib
7、拷贝依赖库到 lib 目录
(1)查看依赖库,切换到“/work/busybox-1.10.3/_install/bin”目录,使用命令
arm-linux-readelf -a ./busybox | grep "Shared library"查看需要哪些依赖库(其实不用看也无所谓)
这说明要使文件系统正常运行,需要最基本的库文件:libcrypt.so.1、libm.so.6、libc.so.6,
这些库文件位于“/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/”目录下;
(2)libcrypt.so.1、libm.so.6、libc.so.6 分别为 libcrypt-2.8.so、libm-2.8.so、libc-2.8.so
文件的软连接,将 libcrypt.so.1、libm.so.6、libc.so.6 和 libcrypt-2.8.so、libm-2.8.so、
libc-2.8.so 这 6 个文件拷贝到根文件系统的 lib 目录下(即“/work/rootfs/lib”;)
另外还需要拷贝动态加载器 ld-linux.so.3 和 ld-2.8.so 文件,与上步骤相同;
8、在根文件系统的 dev 目录下创建基本的设备文件
(1)切换到目录“/work/rootfs/dev”;
(2)用以下命令创建设备文件:
mknod console c 5 1
mknod null c 1 3
在 linux 系统启动时,dev 目录下必须要有 console 设备文件;
9、创建配置文件 rcS,是一个脚本文件,借助启动脚本可以设置各种程序开机后自动运行
(1)切换到目录“/work/rootfs/etc”;
(2)在 etc 目录下创建目录“init.d”;
(3)在 init.d 目录下创建文件 rcS,其内容如下;
#! /bin/sh
mount -a
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
之后执行命令 chmod +x rcS 将 rcS 文件变为可执行文件;
(其中:mount –a 为将 fstab 中的文件系统进行挂载,echo /sbin/mdev > /proc/sys/kernel/hotplug 为设置内核的 hotplug handler 为 mdev,即当设备热插拔时,由 mdev 接受来自内核的消息并作出相应,比如处理 U 盘的插拔,
mdev –s 为使用 mdev 机制(udev 的精简版)根据内核的驱动注册信息在“/dev”自动创建设备文件;)
10、创建配置文件 fstab,该文件定义了一些文件系统的挂载点
(1)切换到目录“/work/rootfs/etc”;
(2)创建文件 fstab,其内容如下;
proc /proc proc defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
即将 proc 文件系统挂载到/proc 目录,设备文件系统挂载到/dev 目录,sysfs 文件系统挂载到
/sys 目录,tmpfs 文件系统挂载到/tmp 目录;
11、创建配置文件 inittab;
(1)切换到目录“/work/rootfs/etc”
(2)创建文件 inittab,其内容如下;
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
其中含义见另外文章《根文件系统inittab》;
12、创建配置文件 mdev.conf,这是 mdev 的配置文件
(1)切换到目录“/work/rootfs/etc”;
(2)创建文件 mdev.conf,其内容为空;
ok!到此为止根文件系统制作完毕,开始挂载。
|
|