根据busybox制作根文件系统

Posted ditvelo

tags:

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

这里记录的是我上课做的一个实验,步骤和部分内容可供参考

首先肯定是打开虚拟机,这里我用的是我们老师祖传的一个Redhat(真的太太太老了,不知道老师还能把这份珍贵的资料传承多久)

技术图片

Step 1 :编译busybox

我使用的目录是/root/cvtech,根据自己喜好来,可以看到我已经把busybox文件放进来了

技术图片

tar xjf busybox-1.13.0.tar.bz2  //解压busybox压缩文件
cd busybox-1.13.0         //进入busybox目录
vim Makefile            //编辑Makefile文件


你要是想快点找到要修改的地方执行上一步之后直接执行下一步
:set number          //vim命令行模式设置显示行号
找到164行,CROSS——COMPILE ?= 这里,后面加上你交叉编译工具的路径,我这里修改成
CROSS——COMPILE ?= /opt/cvtech/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-
编译的时候是直接由你输入的路径加gcc,g++什么的,所以后面还留了个arm-linux-,看起来像没填完一样,其实这是半个文件名

找到189行,ARCH ?= ,架构选arm,修改成如下
ARCH ?= arm
然后就保存退出,顺带说一下,vim按Esc进入命令模式,:wq 是写入并且退出的意思
make menuconfig          //图形化配置工具,根据需要配置,老师给的图里都有,只是难找,注意标题,
vim init/init.c          //根据上面的命令显示行号,注释694,695,696三行

make                 //配置好就可以编译了
make install            //编译好的文件会在busybox的_install目录下面
cd ..                //编译完就回到上一级目录呗

这个时候busybox部分已经弄好了

Step 2:系统文件的配置

mkdir rootfs            //个人的命名习惯,创建一个文件夹放系统文件
cd rootfs
mkdir root  bin  sbin  etc  dev  usr  lib  tmp  mnt  sys  proc  var
mkdir  usr/lib  usr/bin  usr/sbin //创建常用的文件夹
cd dev
mknod null c 1 3
mknod console c 5 1        //创建了两个设备文件,c表示字符设备,b为块设备第一个数字为主设备号,第二个为副设备号

然后就是etc文件夹下面的文件的,由于老师提供了/etc下需要的文件,vmwre设置共享文件夹之后,我直接复制过去
cp /mnt/hgfs/share/etc/* . -rf  //共享文件夹会默认挂载到/mnt/hgfs下面,我这里是直接解压到共享文件夹下面了是时候把我们busybox编译的文件复制过来了
cp ../busybox-1.13.0/_install/* . -r  //把busybox编译好的文件复制过来

到这里系统文件基本也弄好了

Step 3:ramdisk镜像文件制作

cd ..                 //回到上一级目录,也就是我的/root/cvtech
这个时候我的cvtech目录下会有如下文件或文件夹rootfs busybox-1.13.0 busybox-1.13.0.tar.bz2 
dd if=/dev/zero of=ramdisk.img bs=1k count=15600 
dd命令:if=带文件,of=带要写入的镜像文件或者设备,可以理解成把你拍的视频写入光盘吧,bs是块的大小,count是块数目,/dev目录建议自己去了解
顺带说一句这里会自动新建一个ramdisk.img镜像文件
mke2fs
-F -v -m 0 ramdisk.img   //对刚刚用0填充的块格式化,没有这步下面复制文件的时候会提示空间不足 mkdir ramdisk             //新建一个文件夹 mount -o loop ramdisk.img ramdisk //把镜像文件挂载到ramdisk目录 cp -af rootfs/* ramdisk/ -r //把我们放文件系统目录下的所有文件复制过来 umount ramdisk             //卸载镜像,因为文件已经写入镜像里了 gzip ramdisk.img            //将做好的ramdisk打包 cp ramdisk.img.gz /mnt/hgfs/share  //将打包好的文件复制到共享目录,毕竟要交作业是吧:(

 

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

使用BusyBox制作根文件系统

Busybox构建根文件系统和制作Ramdisk

Linux下BusyBox根文件系统制作

使用BusyBox制作Linux根文件系统

Linux下BusyBox根文件系统制作

第4阶段——制作根文件系统之编译配置安装busybox