根据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制作根文件系统的主要内容,如果未能解决你的问题,请参考以下文章