busybox(三)最小根文件系统

目录

  • busybox(三)最小根文件系统

    • 引入
    • 构建终端
    • 构造inittab
    • 配置应用程序
    • 构建C库
    • 制作映像文件yaffs


title: busybox(三)最小根文件系统

tag: arm

date: 2018-11-14 17:57:08

---

busybox(三)最小根文件系统

引入

busybox(一)浅析中,得出结论,一个最小的根文件系统需要以下几个元素

dev/console
dev/null
sbin/init-------------busybox提供,至少需要这个应用程序,这是linux启动的第一个应用程序
etc/inittab-----------配置文件,定义了一些应用程序
配置文件制定的应用程序----配置文件指定的应用程序
C库--------------------应用程序的C库

构建终端

首先来创建标准输入输出错误以及其他输出定位

dev/console
dev/null 

查看下Linux下的这两个文件的属性


[email protected]:~/stu/first_fs$ ls -l /dev/null /dev/console
crw------- 1 root root 5, 1 2018-11-14 18:00 /dev/console
crw-rw-rw- 1 root root 1, 3 2018-11-14 17:59 /dev/null

这里插入一下,普通的ls -l文件信息如下,由此可以看到这两个文件是字符设备

使用mknod来创建字符设备或者块设备,格式如下:

mknod(选项)(参数)
选项
    -Z:设置安全的上下文;
    -m:设置权限模式;
    -help:显示帮助信息;
    --version:显示版本信息。
参数
    文件名:要创建的设备文件名;
    类型:指定要创建的设备文件的类型;
    主设备号:指定设备文件的主设备号;
    次设备号:指定设备文件的次设备号。

创建设备

mkdir dev
cd dev
sudo mknod console c 5 1
sudo mknod null c  1 3

[email protected]:~/stu/first_fs/dev$ ls -l
total 0
crw-r--r-- 1 root root 5, 1 2018-11-14 18:29 console
crw-r--r-- 1 root root 1, 3 2018-11-14 18:35 null

构造inittab

如果不构造,会使用默认的配置项[参见busybox(一)浅析],默认的路径在"/etc/inittab,参见busybox浅析

::CTRLALTDEL:reboot
::SHUTDOWN:umount -a -r
::RESTART:init
::ASKFIRST:-/bin/sh:
tty2::ASKFIRST:-/bin/sh
tty3::ASKFIRST:-/bin/sh
tty4::ASKFIRST:-/bin/sh
::SYSINIT:/etc/init.d/rcS

手动构造一个简单的脚本列表在etc下,将标准输入,输出,错误定位到console

console::askfirst:-bin/sh

mkdir etc
vi etc/inittab

配置应用程序

我们在inittab并没有使用自定义的用户程序,也就不需要配置,跳过

构建C库

拷贝所有的.so文件,cp命令中使用-d的目的是:假设源文件为链接格式,那么cp的对象也是链接格式的,没有复制源文件.查看下我们当前的gcc目录,.a表示静态库不需要,使用-d来拷贝.cp命令浅析

注意这里的源目录是在arm-linux/lib/

[email protected]:~/stu/first_fs$ which arm-linux-gcc
/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-gcc

mkdir lib
cp /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/*.so*  lib -d

制作映像文件yaffs

这里使用yaffs2映像格式,工具包是yaffs_source_util_larger_small_page_nand.tar,这是老师制作好的工具,支持大页和小页的NandFlash.yaffs1支持小页格式(512字节),我们的NANDFLASH是2048字节,使用大页模式,使用yaffs2,可执行文件是mkyaffs2image

tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
[email protected]:~/stu$ cd Development_util_ok/
[email protected]:~/stu/Development_util_ok$ ls
yaffs  yaffs2

编译代码

cd yaffs2/utils/
make

查看下工具mkyaffs2image


[email protected]:~/stu/Development_util_ok/yaffs2/utils$ ls -l
total 132
-rw------- 1 book book  1770 2008-07-08 00:35 Makefile
-rwxr-xr-x 1 book book 18266 2018-11-14 19:02 mkyaffs2image
-rw------- 1 book book 19669 2008-07-08 00:36 mkyaffs2image.c
-rw-r--r-- 1 book book  9412 2018-11-14 19:02 mkyaffs2image.o
-rwxr-xr-x 1 book book 18126 2018-11-14 19:02 mkyaffsimage
-rw------- 1 book book 16206 2008-02-29 10:26 mkyaffsimage.c
-rw-r--r-- 1 book book  8168 2018-11-14 19:02 mkyaffsimage.o
-rw------- 1 book book  6731 2008-02-29 10:26 nand_ecc.c
-rw-r--r-- 1 book book  1776 2018-11-14 19:02 nand_ecc.o
lrwxrwxrwx 1 book book    14 2018-11-14 19:02 yaffs_ecc.c -> ../yaffs_ecc.c
-rw-r--r-- 1 book book  2496 2018-11-14 19:02 yaffs_ecc.o
-rw------- 1 book book  1416 2008-02-29 10:26 yaffs_packedtags1.c
-rw-r--r-- 1 book book  1216 2018-11-14 19:02 yaffs_packedtags1.o
lrwxrwxrwx 1 book book    22 2018-11-14 19:02 yaffs_packedtags2.c -> ../yaffs_packedtags2.c
-rw-r--r-- 1 book book  2160 2018-11-14 19:02 yaffs_packedtags2.o
lrwxrwxrwx 1 book book    23 2018-11-14 19:02 yaffs_tagsvalidity.c -> ../yaffs_tagsvalidity.c
-rw-r--r-- 1 book book   822 2018-11-14 19:02 yaffs_tagsvalidity.o

貌似新的ubuntu中的工具over了,直接使用制作好的mkyaffs2image

sudo cp mkyaffs2image /usr/local/bin
sudo chmod +x /usr/local/bin/mkyaffs2image 

直接输入mkyaffs2image查看帮助

[email protected]:~/stu/Development_util_ok/yaffs2/utils$ mkyaffs2image
mkyaffs2image: image building tool for YAFFS2 built Nov 14 2018
usage: mkyaffs2image dir image_file [convert]
           dir        the directory tree to be converted
           image_file the output file to hold the image
           ‘convert‘  produce a big-endian image from a little-endian machine

制作映像,在当前目录生成yaffs2文件

mkyaffs2image  first_fs first_fs.yaffs2

使用dnw烧入,启动后输入回车然后有提示,这个和我们设置的脚本类型为askfirst,是一致的,等待回车后执行

Please press Enter to activate this console. 等待输入回车

starting pid 763, tty ‘/dev/console‘: ‘bin/sh‘

原文地址:https://www.cnblogs.com/zongzi10010/p/10023717.html

时间: 2024-10-12 11:04:04

busybox(三)最小根文件系统的相关文章

移植busybox构建最小根文件系统

Busybox:瑞士军刀,里面装有很多小命令. STEP 1:构建目录结构  创建根文件系统目录,主要包括以下目录/dev  /etc /lib  /usr  /var /proc /tmp /home /root /mnt /bin  /sbin  /sys #mkdir     /home/rootfs#cd        /home/rootfs #mkdir  dev  etc  lib  usr  var  proc  tmp  home  root  mnt   sys STEP 2

用Busybox构建Linux根文件系统(转载)

注:本文转载自http://blog.sina.com.cn/u/2478597014 用Busybox构建Linux根文件系统 (2015-07-05 14:25:02)   虚拟机:Virtual Box4.2.6 和VMware Workstation6.5.2(这两种虚拟机都成功实作过) 开发环境:Linux版本2.6.32,采用Ubuntu10.04 arm-linux-gcc版本:3.4.1 Busybox版本:1.7.0 开发板:飞凌嵌入式S3C2440 开发板linux内核版本:

mini2440 最小根文件系统制作和nfs启动

mini2440 内核启动后,可以用busybox制作一个简单的根文件系统并用nfs来启动该文件系统 启动mini2440, 按任意键进入uboot,按q键进入uboot命令行: 执行以下命令: set bootargs "noinitrd root=/dev/nfs rw nfsroot=192.168.211.2:/home/host/nfs/mini2440/rootfs ip=192.168.211.211 console=ttySAC0 init=/linuxrc" save

飞凌课堂丨用busybox构建一个最小根文件系统

BusyBox是一个集成了三百多个最常用Linux命令和工具的软件. BusyBox包含了一些简单的工具,例如ls.cat和echo等等,还包含了一些更大.更复杂的工具,例grep.find.mount以及telnet.有些人将BusyBox称为Linux工具里的瑞士刀. 言归正传,我们直接进入正题! busybox构建 首先我们需要下载busybox的源码包,www.busybox.net官网可下载 1.busybox菜单的配置及其编译执行make menuconfig,出现busybox的配

使用BusyBox制作Linux根文件系统

STEP 1:构建目录结构 创建根文件系统目录,主要包括以下目录/dev  /etc /lib  /usr  /var /proc /tmp /home /root /mnt /bin  /sbin  /sys #mkdir     /home/rootfs#cd        /home/rootfs #mkdir  dev  etc  lib  usr  var  proc  tmp  home  root  mnt   sys STEP 2:    使用busybox构建/bin /sbi

Linux磁盘及文件系统(三)Linux文件系统

一.文件系统的组成 Linux常见的文件系统类型有ReiserFS,ext2,ext3,ext4,vfat,XFS等,文件系统是对一个存储设备上数据和元数据进行组织的机制.他的最终目的是把大量数据有组织的放入持久性的存储设备中,比如硬盘和磁盘.文件系统就是文件在逻辑上组织形式,他以一种更加清晰的方式来存放各个文件.数据被存放到某个分区中.一个典型的Linux分区包含有以下各个部分: boot block:任何分区的第一个块,存放系统的引导程序. super block(超级块):保存整个分区的全

Linux服务器集群架构部署搭建(三)NFS文件系统、SSH通道建立、批量分发管理(1)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想.  作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第一章 NFS共享服务器的企业应用 1.1 NFS服务--静态数据存储 NFS是(Network File System)主要功能是通过网络让不同的设备端之间可以彼此共享文件或目录.NFS客户端(一般为应用服务器,如WEB)可以通过挂载(mount)方式,将NFS客户端本地系统中(就是一个挂载点)从NFS服务器端共享的数据文件目

ROS学习(三)—— ROS文件系统

一.预备工作 使用ros0tutorials程序包,先下载: sudo apt-get install ros-<distro>-ros-tutorials 其中<distro>应该需要替换成ROS的对应版本:Jade.Indigo.hydro.groovy.fuerte.kinetic p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 二.文件系统概念: 三.文件系统工具 1.rospack = ros + pac

Linux服务器集群架构部署搭建(三)NFS文件系统、SSH、批量分发管理、实时同步(2)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第四章 部署配置inotfiy+rsync实时同步 4.1 实时同步inotfiy+rsync的操作步骤 ①备份服务器[email protected]运行rsync进程作为rsync的服务端.NFS作为rsync的客户端. ②在备份服务器安装并正常启动rsync进程服务.并设置修改配置文件.实现远程拉取.推送备份. ③在客户端N