busybox(三)最小根文件系统
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下的这两个文件的属性
book@book-desktop:~/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
book@book-desktop:~/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/
下
book@book-desktop:~/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
book@book-desktop:~/stu$ cd Development_util_ok/
book@book-desktop:~/stu/Development_util_ok$ ls
yaffs yaffs2
编译代码
cd yaffs2/utils/
make
查看下工具mkyaffs2image
book@book-desktop:~/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
查看帮助
book@book-desktop:~/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'
busybox(三)最小根文件系统的更多相关文章
- 移植busybox构建最小根文件系统
Busybox:瑞士军刀,里面装有很多小命令. STEP 1:构建目录结构 创建根文件系统目录,主要包括以下目录/dev /etc /lib /usr /var /proc /tmp /hom ...
- 运用busybox构建最小根文件系统
平台:vmware下ubuntu14.04前期准备:安装交叉编译环境arm-linux-gcc-4.5.1;下载完成BusyBox 1.23.2一.busybox构建1.make menuconfig ...
- 使用BusyBox制作Linux根文件系统
STEP 1:构建目录结构 创建根文件系统目录,主要包括以下目录/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin ...
- ROS学习(三)—— ROS文件系统
一.预备工作 使用ros0tutorials程序包,先下载: sudo apt-get install ros-<distro>-ros-tutorials 其中<distro> ...
- Linux磁盘及文件系统(三)Linux文件系统
一.文件系统的组成 Linux常见的文件系统类型有ReiserFS,ext2,ext3,ext4,vfat,XFS等,文件系统是对一个存储设备上数据和元数据进行组织的机制.他的最终目的是把大量数据有组 ...
- 使用BusyBox制作linux根文件系统(CramFS+mdev)
转:http://www.360doc.com/content/10/0428/11/496343_25245348.shtml 操作系统:Ubuntu9.04 内核版本:linux-2.6.24.7 ...
- hadoop(三)HDFS 文件系统
Hadoop 附带了一个名为 HDFS(Hadoop 分布式文件系统)的分布式文件系统,专门 存储超大数据文件,为整个 Hadoop 生态圈提供了基础的存储服务. 本章内容: 1) HDFS 文件系统 ...
- mini2440 最小根文件系统制作和nfs启动
mini2440 内核启动后,可以用busybox制作一个简单的根文件系统并用nfs来启动该文件系统 启动mini2440, 按任意键进入uboot,按q键进入uboot命令行: 执行以下命令: se ...
- Linux移植到自己的开发板(三)根文件系统
@ 目录 1 Linux内核配置 2 ramdisk制作 3 busybox配置 4 genext2fs生成镜像 为了快速调试,采用ramdisk进行根文件系统测试.要使内核能挂载ramdisk根文件 ...
随机推荐
- 高端内存映射之vmalloc分配内存中不连续的页--Linux内存管理(十九)
1 内存中不连续的页的分配 根据上文的讲述, 我们知道物理上连续的映射对内核是最好的, 但并不总能成功地使用. 在分配一大块内存时, 可能竭尽全力也无法找到连续的内存块. 在用户空间中这不是问题,因为 ...
- 【记录】文件加密软件 Gilisoft File Lock Pro v11.0 中文注册版
---恢复内容开始--- GiliSoft File Lock Pro 是一款优秀的加密工具,用它可以隐藏或加密文件.文件夹.磁盘分区,而且被加密的文件不会因为被加密(忘记密码)而丢失,可算是很安全的 ...
- go语言学习-常用命令(四)
go常用命令 go get:获取远程包(得装git) go run:直接运行程序(写代码时调试用) go build:测试编译,检查是否有编译错误 go fmt:格式化代码(一般不咋用,IDE都自带了 ...
- 重装助手教你如何禁用Windows 10快速启动
快速启动是首先在Windows 8中实现并延续到Windows 10的功能,可在启动PC时提供更快的启动时间.它是一个方便的功能,也是大多数人在不知情的情况下使用的功能,但还有一些功能会在他们掌握新P ...
- Maven构建项目出现No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 你应该 ...
- Docker的使用初探(二):Docker与.NET Core的结合
目录 Docker的使用初探(二):Docker与.NET Core的结合 添加Dockefile 1. 在创建项目时添加 2. 手动添加 3. 容器业务流程协调控制程序支持 Dockefile语法 ...
- Eclipse链接数据库
在eclipse中找到数据库 选择数据库 然后点击next 填写数据库信息 选择需要执行的SQL语句 ALT+X 或者 右键点击execute selected text: 执行结果: 有问题请在评论 ...
- 使用Visual Studio Code进行ABAP开发
长期以来,我们都使用SAP GUI进行ABAP编码工作,事务代码SE38甚至成了ABAP的代名词. SAP GUI的代码编辑能力和一些专业的IDE比较起来难免相形见绌,为了给开发者们更好的体验,SAP ...
- Node、TS、Koa学习笔记
这样定义可以轻松拿到gender属性 这样定义,函数内显示没有gender 这种方法能得到gender但是函数内部没有gender 这种方式能到gender 但是在函数里施symbel属性,外部不能访 ...
- 如何在本地搭建DVWA环境
如何在本地搭建DVWA环境 1.工具下载: (1)phpStudy: http://phpstudy.php.cn/download.html (2)DVWA:http://www.dvwa.c ...