使用Busybox构造cramfs根文件系统

11.1、下载Busybox,如果系统中没有mkcramfs工具则还要下载mkcramfs压缩工具。本文件系统使用Busybox-1.10.1,cramfs-1.1。压缩文件Busybox-1.10.1.tar.bz2,cramfs-1.1.tar.gz。

22.解压文件:

tar jxvf Busybox-1.10.1.tar.bz2

tar zxvf cramfs-1.1.tar.gz

2、进入解包之后生成cramfs-1.1目录,执行编译命令:

make

编译完成之后,会生成mkcramfs和cramfsck两个工具,其中mkcramfs工具是用来创建cramfs文件系统的,而cramfsck工具则用来进行cramfs文件系统的释放以及检查。如果该目录下已有这两个可执行程序,则无需编译,直接使用。

3.修改Makefile文件

以ARM板为例,打开Makefile文件,找到ARCH?=和CROSS_COMPILE?=两项,修改为

ARCH ?= arm

CROSS_COMPILE ?=arm-linux- //arm-linux-为交叉编译器在环境变量中的目录前缀,视自己交叉编译环境而定。

4.进入解压后的Busybox-1.10.1目录,运行make menuconfig或make gconfig进行配置。

在进行配置时有几项需要注意:

ØBuild Options->

Build BusyBox as a static binary (no shared libs)

Force NOMMU build

Build shared libbusybox

Build with Large File Support (for accessing file>2GB)

如果选择 Build BusyBox as a static binary (no shared libs)方式进行编译时,所需的库已经与程序静态地链接在一起,这些程序不需要额外的库就可以单独运行,但是自己编写的程序在文件系统上运行必须采用静态编译,否则会报诸如:bin/sh: hello :not found的错误。

静态编译如:

arm-linux-gcc–static hello.c –o hello

 如果选择Build shared libbusybox方式进行编译时,要将交叉编译的动态库或符号链接复制到对应的目录中,否则程序不能运行。同时在配置时应去掉Build shared libbusybox目录下的两项:如下 

Build shared libbusybox->

 Producebinary for each applet,linked against libbusybox

Produceadditional busybox binary linked against libbusybox

同时去掉

Build with Large File Support (for accessing file>2GB)

否则编译会报错。

Ø一定要勾选上如下配置:

Init Utilities—>

(*) init

(*) Supporting reading an inittab file//支技init进程读取/etc/inittab配置文件。

(*) Supporting running commands with controlling-tty//使busybox在真实的串口设备中运行命令行,不使用可能会报类似与:sh:can’t access tty:job control turned off的错误。

其它基本可按默认配置。

5.执行

make

编译完成后执行

make install

 则在Busybox-1.10.1目录下有_install这个目录,这正是我们想要的。

66. _install目录下已经有三个包含应用程序的目录:bin、sbin、usr和脚本linuxrc,注意此linuxrc不要随便换掉,就用此linuxrc。

在此_install目录下创建其它几个需要的目录,如下

mkdir etc dev proc tmp lib var sys

7.转到dev目录下创建设备节点

mknod ram0 b 1 0

mknod-m 660 console c 51

mknod-m 660 null c 1 3

mknod-m 660 zero c 1 3

mknod-m 666 ttySAC0 c 204 64

8.编写脚本,这一点很重要,没写好或脚本有错误,文件系统都起不来。

转到etc目录,编写inittab脚本,内容如下:

# Startup the system

null::sysinit: /bin/mount –o remount,rw/

null::sysinit: /bin/mount –t procproc /proc

null::sysinit: /bin/mount –a

console::sysinit: /etc/init.d/rcS

ttySAC0::respawn: /bin/sh

9.编写挂载表fstab

proc/proc proc defaults 0 0

sysfs/sys sysfs defaults 0 0

none/dev/pts devpts mod=0622 0 0

tmpfs/dev/shm tmpfs defaults 0 0

10.在etc下创建目录init.d

cd init.d

创建脚本rcS

内容如下:

#! /bin/sh

保存,并修改rcS的权限,否则会出现Cannot run ‘/etc/init.d/rcS’:Permission denied的错误:

chmod775 rcS

1111.生成文件系统映像。

11、./mkcramfs _install rootfs.cramfs

至此,文件系统制作完毕。

使用Busybox构造cramfs根文件系统相关推荐

  1. 使用BusyBox制作linux根文件系统(CramFS+mdev)

    摘自:http://m.blog.chinaunix.net/uid-23089249-id-34501.html 操作系统:Ubuntu9.04 内核版本:linux-2.6.24.7   开发板: ...

  2. 使用BusyBox制作linux根文件系统

    操作系统:Ubuntu9.04 内核版本:linux-2.6.24.7 开发板:博创arm2410s 交叉编译工具:arm-linux-gcc-4.1.1 BusyBox:busybox-1.11.1 ...

  3. 用BusyBox制作Linux根文件系统

    STEP 1:构建目录结构 创建根文件系统目录,主要包括以下目录 /dev  /etc /lib  /usr  /var /proc /tmp /home /root /mnt /bin  /sbin ...

  4. Real6410移植linux-2.6.39.1记录(1)-启动cramfs根文件系统

    // 主题:Real6410移植linux-2.6.39.1 // 作者:kevinjz2010@gmail.com // 版权:kevinjz原创 // 平台:linux-2.39.1 real64 ...

  5. 采用busybox的嵌入式Linux根文件系统的的制作方法

    在嵌入式Linux操作系统越中文件系统作为操作系统的重要组成部分,用于控制对数据文件及设备的存取,提供对文件和目录的分层组织形式,数据缓冲以及对文件存取权限的控制.根文件系统一直是Linux系统不可或 ...

  6. 如何使用busybox编译和生成最简linux根文件系统(rootfs)

    继前几天对uboot和内核编译进行了初步了解之后,昨天开始研究如何制作rootfs根文件系统.昨晚对busybox这个工具有了初步的了解,今天继续深入研究,终于成功的制作出了一套完整可用的最简linu ...

  7. 嵌入式linux文件系统类型,嵌入式Linux 的Cramfs 根文件系统配置的解决方案

    当系统启动并执行到系统初始化脚本/etc/init.d/rcS 时,mount 命令将/mnt/yaffs 目录挂载 为ramfs 类型的随机存储文件系统,并在此文件系统上建立Qtopia 和Qtop ...

  8. 移植根文件系统到linux内核 s3c2440,u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统...

    三.根文件系统的制作 我们利用busybox来制作根文件系统 1.在下列网站下载busybox-1.15.0.tar.bz2 在当前目录下解压busybox tar -jxvf busybox-1.1 ...

  9. 嵌入式根文件系统制作

    1:文件系统分类:    基于flash的文件系统:flash有两种,一种是NOR,另一种NAND.NOR型 FLASH主要用于存放程序.NAND型 FLASH主要用于存放数据.NOR的特点是可在芯片 ...

最新文章

  1. 测试Robotium
  2. 成功搞定了在Windows7中安装SAP了
  3. NBA帧同步网络优化
  4. 你真的会使用Glide吗?——Glide的高级用法
  5. 西南交大计算机专硕就业怎么样,国内四所交通大学,有985也有211,就业、深造容易,值得报考...
  6. 一步一步深入spring(1)--搭建和测试spring的开发环境
  7. 谷歌五笔输入法电脑版_“五笔输入法”打字速度更快,为什么却没啥人用?
  8. Kafka启动出现Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Pr
  9. Linux简单命令收录(who,echo,date)【上】
  10. Linux内核LED子系统、请务必看
  11. Intel 4004,世界上首个CPU,进不惑之年
  12. java怎么预加载字典值,有选择地显示预加载内容提高网站的性能
  13. 同样是机器学习算法工程师,你的面试为什么过不了?
  14. linux常用shell命令之文件操作命令
  15. 使用小乌龟快速上手git
  16. eplan2.7在win10安装教程
  17. [鼠标指针][仅需1步]宝藏的猫咪Cat老师[win10/11][点击看更多免费]......
  18. 安装图解:Linux Mint 4.0(Daryna)(或者说完美的桌面系统)
  19. vue遇到的小问题,封装功能
  20. 读《卧底经济学(珍藏版)》- 专家是一致对外的

热门文章

  1. strcpy,memcpy,memset函数实现
  2. HTML图片元素(标记)
  3. [转载]android设置全屏和无标题
  4. 软件开发工具介绍之 1.代码生成器
  5. VUE 数据绑定模块渲染 computed(实现通过路由id 查询数据json结构,对应的值来放在面包屑中)...
  6. k8s学习笔记-调度之Affinity
  7. 【PHP】xampp配置多个监听端口和不同的网站目录(转)
  8. VSCode中怎么改变文件夹的图标
  9. bzoj 1801: [Ahoi2009]chess 中国象棋【dp】
  10. 数据仓库基础(二)ETL