[Busybox]Busybox制作文件系统
问题:
1.目前busybox和bootstrap两种方案制作文件系统,哪种开发周期更短,更加简单?
2.如果需要在文件系统中添加某个package,要怎么做,如vim/udhcpd等?
转自:http://blog.csdn.net/happy_stars_2016/article/details/52620577
定制根文件系统的方法很多,最常用的是使用BusyBox来构建。它能使用户迅速方便地建立一套相对完整、功能丰富的文件系统,其中包括大量常用的应用程序。它集成压缩了Linux的许多工具和命令。下面详细介绍有关BusyBox定制根文件系统。
一、系统环境:
1、操作系统:Ubuntu12.04
2、交叉编译工具:arm-linux-gcc4.4.3
3、busybox源码包:busybox-1.25.0.tar.bz2
二、制作rootfs
- 建立rootfs目录
本人在/home/zxx下建立rootfs目录
#mkdir rootfs
#cd rootfs
#mkdir root home bin sbin etc dev usr lib tmp mnt sys proc //建立常用目录
#mkdir usr/lib usr/bin
#pwd
/home/zxx/rootfs
- 解压源码包:
#tar -jxvf busybox-1.25..tar.bz2
- 修改Makefile配置
进入busybox-1.25.0目录,修改Makefile文件如下:
ARCH ?= arm
CROSS_COMPILE ?= /usr/local/arm/4.4./bin/arm-linux- (与你自己主机的arm-linux-gcc安装目录一样)
- 编译BusyBox
#make menuconfig
选择Busybox Settings--->Build Options--->,选择[*] Build Busybox as a static binary(no shared libs)
选择Busybox Settings ---> Installation Options --->BusyBox installation prefix(在里面输入BusyBox的安装目录,我是保存在/home/zxx/rootfs下)
Shells --->Choose your default shell (ash) ---> --- ash
保存并退出
- 编译安装
#make
#make install
- 把busybox源码目录下的etc的内容拷贝到rootfs目录下的etc下
# cd /home/zxx/rootfs/etc
# cp -a /home/zxx/Downloads/busybox-1.25./examples/bootfloppy/etc/* ./
- 从本机拷贝passwd、shadow、group文件
# cp /etc/passwd .
# cp /etc/shadow .
# cp /etc/group .
修改passwd文件,把第一行和最后一行的bash修改成ash。
- 修改初始化文件inittab和fstab
# vim inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init
tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a
# vim fstab
proc /proc proc defaults
none /tmp ramfs defaults
mdev /dev ramfs defaults
sysfs /sys sysfs defaults
- rootfs下lib的制作
将交叉编译环境下lib库拷贝到/rootfs/lib
#cd /home/zxx/rootfs/lib
#cp /usr/local/arm/4.4./arm-none-linux-gnueabi/sys-root/lib./
三、编译错误解决参考
- make出现如下错误:
miscutils/nandwrite.c: In function 'nandwrite_main':
miscutils/nandwrite.c:: error: 'MTD_FILE_MODE_RAW' undeclared (first use in this?function)
miscutils/nandwrite.c:: error: (Each undeclared identifier is reported only once
miscutils/nandwrite.c:: error: for each function it appears in.)
scripts/Makefile.build:: recipe for target 'miscutils/nandwrite.o' failed
make[]: *** [miscutils/nandwrite.o] Error
Makefile:: recipe for target 'miscutils' failed
make: *** [miscutils] Error
解决办法:
MTD_FILE_MODE_RAW在/usr/include/mtd/mtd-abi.h中定义。将/usr/include/mtd/mtd-abi.h拷贝到busybox的include文件中。
#gedit miscutils/nandwrite.c
修改头文件如下:
#include "libbb.h"
#include "mtd-abi.h"
#include <mtd/mtd-user.h>
编译可以通过。
- 继续make,出现如下错误:
util-linux/blkdiscard.c: In function 'blkdiscard_main':
util-linux/blkdiscard.c:: error: 'BLKSECDISCARD' undeclared (first use in this function)
util-linux/blkdiscard.c:: error: (Each undeclared identifier is reported only once
util-linux/blkdiscard.c:: error: for each function it appears in.)
scripts/Makefile.build:: recipe for target 'util-linux/blkdiscard.o' failed
make[]: *** [util-linux/blkdiscard.o] Error
Makefile:: recipe for target 'util-linux' failed
make: *** [util-linux] Error
解决办法:
BLKSECDISCARD在/usr/include/linux/fs.h中定义,方法如上所述,将/usr/include/linux/fs.h拷贝到busybox的include文件中linux下。
#gedit util-linux/blkdiscard.c
修改内容如下:
#include <linux/fs.h>
编译通过。
到这里rootfs基本上已经制作出来,有些内容需要的,可根据自己rootfs的需要进行自己增加。最后将rootfs目录制作成镜像后,就可以烧写到开发板上了。
[Busybox]Busybox制作文件系统的更多相关文章
- Busybox构建根文件系统和制作Ramdisk
定制根文件系统的方法很多,最常用的是使用BusyBox来构建定制根文件系统.它集成压缩了Linux的许多工具和命令,可以使用户迅速方便地建立一套相对完整.功能丰富的文件系统,其中包括大量常用的应用 ...
- 使用busybox构建根文件系统
当我们在Qemu上运行起来自己编译的内核之后,需要使用busybox构建一个文件系统,将此文件系统挂载上去就可以使用busybox提供的各种命令了. 1.编译安装busybox 源码下载地址:http ...
- buildroot制作文件系统
/******************************************************************* * buildroot制作文件系统 * 使用buildroot ...
- [置顶]
从零制作文件系统到JZ2440,使其支持telnet , ftp 和tftp
转自:http://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328515&idx=1&sn=5849fba4b44e ...
- linux制作文件系统
1.获取文件系统源码并解压 这里使用的源码是天嵌提供的“root_qtopia_2.2.0_2.6.30.4_20100601.tar.bz2” #tar xvf root_qtopia_2..0_2 ...
- Linux的VMWare中Centos7磁盘分区管理 fdisk分区和制作文件系统格式化和开机自动挂载
一.硬盘的组成零件扇区 磁道 磁盘容量 磁盘分区 简介 硬盘由容量.柱面数.磁头数.扇区数 C/H/S, Cylinder, Head, Sector(柱面/磁头数/扇区数) 1.磁头数表示硬盘总共有 ...
- 韦东山笔记之用busybox构建根文件系统
1 百度搜索busybox进入busybox官网(https://busybox.net/)作者:恒久力行 QQ:624668529 点击左侧DownloadSource下载最新稳定版的busybo ...
- 编译busybox-1.24.1 制作文件系统
arm-linux-gcc 3.4.5 busybox-1.24.1.tar.bz21, 修改 Makefile找到以下2处修改为ARCH ?= armCROSS_COMPILE ?= arm-li ...
- 用bosybox制作文件系统
在orangepi_sdk/source/busybox-1.25.0目录里有源码. ). 先清除编译出来的文件及配置文件 make distclean ). 配置busybox make menuc ...
随机推荐
- Framework元数据向导错误之BMT-MD-6001与BMT-IMP-0002
1:错误BMT-MD-6001的两种处理方法 在Framework中创建Project后,运行元数据向导从数据库连接中向物理层导入数据表,报错如下 环境如下:Framework版本:10.2.0,Co ...
- (剑指Offer)面试题52:构建乘积数组
题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不能 ...
- 30款超酷的HTTP 404页面未找到错误设计
访问网站过程中,我们最常看到的HTTP错误就是404页面未找到错误,很多网站都针对这个错误设计自己富有个性的页面,在今天这篇文章中我们就分 享30多款设计非常霸道的404错误页面,希望大家能够找到更多 ...
- 初识 NoSQL Databases RethinkDB
初识 NoSQL Databases RethinkDB rethinkDB所有数据都是基于 json的Document; 官网:http://rethinkdb.com/ github: https ...
- Jquery重新学习之五[操作JSON数据]
Jquery操作Json格式的数据在我们平时的项目中也经常运用:最近看Jquery权威指南中就有一章节是对这方面的整理总结:最后通过一个Asp.net结合一般处理程序ashx的实例,基本上能满足项目中 ...
- 用sqldevelop进行连接linux中ret Hat 6.2 中的oracle步骤
1.下载Oracle Instant Client (32-bit) 因为PL/SQL只支持32位的Oracle,所以必须下载对应的32位的才可以. 只需要下载instantclient-basic- ...
- java基础学习总结——GUI编程(二) 未学习
一.事件监听
- phpstorm设置断点调试
环境是:wamp PHP Version: 5.5.12 网上的教程很多,我自己按照教程操作,实现了断点调试,下面是我设置断点调试的步骤 1.修改配置文件php.ini,按下面修改(位置在最后) ; ...
- Windows下Python添加库(模块)路径
动态的添加库路径.在程序运行过程中修改sys.path的值,添加自己的库路径 import syssys.path.append(r'your_path') 在Python安装目录下的\Lib\sit ...
- 引用、数组引用与指针引用、内联函数inline、四种类型转换运算符
一.引用 (1).引用是给一个变量起别名 定义引用的一般格式:类型 &引用名 = 变量名: 例如:int a=1; int &b=a;// b是a的别名,因此a和b是同一个单元 ...