根文件系统(二)构建最小根文件系统

Linux根文件系统构建(busybox) 上一小节说了,根文件系统里面就是一堆的可执行文件和其他文件组成的?根文件系统的这个“根”字就说明了这个文件系统的重要性,它是其他文件系统的根,没有这个“根”,其他的文件系统或者软件就别想工作。这个就是我们本章教程的目的,教大家来构建自己的根文件系统,这个根文件系统是满足 Linux 运行的最小根文件系统,后续我们可以根据自己的实际工作需求不断的去填充这个最小根文件系统,最终使其成为一个相对完善的根文件系统。dev 是 device 的缩写,所以此目录下的文件都是和设备有关的,此目录下的文件都是设备文件。 阅读详情

本节将构建一个最小根文件系统 /myroot:

1、仿照虚拟机上的/dev/console、/dev/null创建设备节点

创建目录:

mkdir /myroot

进入目录:

cd /myroot

查看设备节点:

ls /dev/console /dev/null -l

创建设备节点:

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

 

2、配置编译busybox(参考busybox源码中的文件INSTALL)

将busybox源码上传到虚拟机,解压:

tar xjf busybox-1.7.0.tar.bz2

设置交叉编译工具链:

vi Makefile

修改内容:

CROSS_COMPILE ?= arm-linux-

保存退出

配置:

make menuconfig

配置Tab键补全命令:

Busybox Settings-->

        Busybox Library Tuning-->

                [*] Tab completion

保存退出

 

编译:

make

安装:

make install COMFIG_PREFIX=”/myroot”

 

3、创建、填充配置文件/etc/inittab

mkdir etc
vi etc/inittab

填充内容:

console::askfirst:-bin/sh

 

4、安装一些必要的库(这里只安装C库,并且假定C库位于/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/)

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


 

5、制作映像文件

Yaffs2格式:

安装工具mkyaffs2image

tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2

cd Development_util_ok/yaffs2/utils/

make 

sudo cp mkyaffs2image /usr/local/bin

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

cd -

 

使用mkyaffs2image制作yaffs2映像文件:

mkyaffs2image /myroot /myroot.yaffs2

 

jffs2格式:安装工具mkfs.jffs

tar xzf zlib-1.2.3.tar.gz

cd zlib-1.2.3

./configure --shared --prefix=/usr/

make

sudo make install

cd -

tar xjf mtd-utils-05.07.23.tar.bz2

cd mtd-utils-05.07.23/util

make

sudo make install

使用mkfs.jffs制jffs2映像文件:

myfs.jffs -n -s 2048 -e 128KiB -d /myroot -o /myroot.jffs2

-n:不在每个擦除块加上擦除标志

-s:一页的大小(这里是2048)

-e:一块的大小(这里是128KB)

-d:目录

-o:输出

如果系统挂载文件系统时所提示的格式与使用的文件系统格式不一致,可以在uboot命令行参数bootargs中加上一个选项:rootfstype=jffs2或者=yaffs2

 

 

至此一个最小根文件系统已经制作完成,为了继续完善它,可以继续以下操作:

6、

为了使用ps命令查看进程,需要挂接虚拟文件系统:

方法一:

在etc/inittab中添加一行:

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

创建rcS文件:
 

mkdir /myroot/etc/init.d

vi /myroot/etc/init.d

添加一行:

mount -t proc none /proc

保存退出

赋予可执行属性:

chmod +x /myroot/etc/init.d/rcS

 

方法二:

在etc/inittab中添加一行:

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

创建rcS文件:
 

mkdir /myroot/etc/init.d

vi /myroot/etc/init.d

添加一行:

mount -a

保存退出

赋予可执行属性:

chmod +x /myroot/etc/init.d/rcS

 

创建/myroot/etc/fstab文件

/myroot/etc/fstab

添加两行:

#device mount-point type option dump fsck order
proc /proc proc defaults 0 0

保存退出

 

 

 

7、使用mdev自动创建/dev目录下的设备节点(假定前面按照方法二操作):

在/myroot/etc/fstab文件中添加两行:

sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0

在/myroot/etc/inid.d/rcS中添加四行:

mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

 

 

busybox的安装和配置/最小根文件系统的制作 1.了解uImage和zImage: linux内核经过编译后会生成一个elf格式的可执行程序,叫做vmlinux或vmlinuz,这个是原始的未经任何处理加工的原版内核elf文件,嵌入式系统部署时烧录一般不是这个vmlinux,而是要用objcopy工具去制作成烧录镜像格式的文件Image(这个制作烧录镜像主要目的是缩减大小,节省磁盘)。原则上Image就可以直接被烧录在flash上启动执行,, 阅读详情

相关推荐

为linux内核构建最小的根文件系统-一步一步精简

linux内核init进程函数的部分代码如下: 01 if (execute_command) 02 run_init_process(execute_command); 03 04 run_init_process("/sbin/init"); 05 run_init_process("/etc/init"); 06 run_init_process("

3128

Root file system 制作方法

什么是根文件系统?          根文件系统首先是一种文件系统,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。   什么是busybox? BusyBox就好像是个大工具箱,它集成压缩了 Linux的许多工具和命令。

2841

Linux最小根文件系统

1、类似windows下的C、D等盘,Linux也会把磁盘、Flash化分成若干个分区。和C盘一样在某个分区中存放系统启动必须的文件,如内核镜像文件(一般单独存放在一个分区中),内核启动后运行的第一个程序init、给用户提供界面的shell程序、应用程序依赖的库。这些必需、基本的文件合称根文件系统。Linux启动后首先要挂接这个根文件系统。2、linux以树状结构管理目录和文件,其他分区挂接在某个目

张勇1234的博客 2436

ARM Linux根文件系统(Root Filesystem)的制作

ARM Linux根文件系统(Root Filesystem)的制作关于根文件系统的制作,网络上有很多文章,大多数都只讲到建几个目录,然后用Busybox做个Shell,有很多关键的东西没有说。经过很长时间的摸爬滚打,我终于能够白手起家建立一个根文件系统了。其实我也不懂得原理,只是告诉大家我的作法,其中也不免有错误,欢迎大家指正。 首先介绍根文件系统的组成:目录、Shell、库、脚

topforarm的专栏 587

BusyBox构建带shell环境的最小根文件系统

通过BusyBox快速搭建具备基本shell功能的极简根文件系统,掌握嵌入式Linux启动核心要点,busybox显著降低系统资源占用,是构建轻量环境的关键工具。

weixin_33816734的博客 1072

覆冰监测系统服务器,基于分布式光纤振动传感的电缆覆冰舞动监测系统

监测意义我国高压输电网络已经形成了全国联网的格局,总规模世界第一。2018年底,全国发电装机容量已达19.0亿千瓦,全国 220kV及以上输电线路回路长度超过71万公里。我国电力能源集中在西北,而用户则集中在华东华南,所以高压输电网络的特点是长距离,大跨度,途径的自然环境多种多样。在高湿高寒的恶劣环境中,输电线非常容易发生覆冰舞动事故,由于覆冰形成的规则的非圆断面的缆线在风的激励下形成谐振,造成低...

weixin_32566055的博客 1547

构建最小根文件系统

http://blog.sina.com.cn/s/blog_7943319e01018g5w.html 构建最小根文件系统 一个最小根文件系统必须的项: 1. /dev/console   这个在内核启动时打开:sys_open((const char __user *) "/dev/console", O_RDWR, 0)   /dev/null              当不设置标...

weixin_34060299的博客 131

半导体物理-Si晶体生长方向<2>

Si(硅)晶体的生长方向是一个重要的概念,尤其在半导体工业中。这个概念涉及到晶体在生长过程中原子排列的方向,对晶体的性质和应用有重大影响。让我为您详细解释:理解Si晶体的生长方向对于半导体材料的研究和应用非常重要,它直接影响了最终器件的性能和制造工艺。在实际应用中,选择适当的生长方向可以优化器件性能,提高产品质量。

m0_37606066的博客 2995

嵌入式 修改u-boot与Linux调试串口以及文件系统显示终端串口

1.背景         近期一个项目,使用TI Cortex-A8的芯片AM3517作为主控开发。前期使用北京瑞泰公司的ICETEK-AM3517-KB核心板搭建开发环境。在自己做底板布板的时候的时候涂个布线方便,改用UART1作为调试串口,而原来瑞泰给的开发包,已经TI的AM3517 PSP均以UART3作为调试串口。于是在底板焊接完成调试的时候就有了一天痛苦的经历和这篇文章。  

skdkjxy的专栏 4220

招行收款通SM2加密解密全流程解析:PHP开发者必看

本文详细解析了招商银行收款通服务中SM2加密解密的完整流程,特别针对PHP开发者提供了从密钥管理到签名验签的实战指南。涵盖国密算法基础、PHP环境配置、密钥安全存储及生产环境优化方案,帮助开发者快速实现高安全性的支付系统集成。

weixin_30632089的博客 651

30. 如何使用 SEGW 的 redefine 功能对 SAP 标准 OData 服务进行扩展

SAP 发布了很多标准的 Fiori 应用,可以通过笔者的文章里提到的进行浏览。比如 My Opportunities 就是 SAP CRM 领域的一个 Fiori 应用:下图是 Opportunity 明细页面的 Info 标签页:假设我们想在这些标准字段的末尾增添一个新字段 Created By,用来维护当前 Opportunity 的创建者。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1172

根文件系统--制作

回顾: 最小根文件系统的组成: 1- 终端设备: /dev/console, /dev/null 2- init程序,这里指busybox程序 3- 配置文件,这里指/etc/inittab 文件 4- 配置文件指定的应用程序,例如ls, cp, init等 5- C库文件--busybox会用到printf, 需要由c库等其他库文件 本文主要内容: 1- 制作最小根文件系统 2- mdev自动挂载设备 3- 制作NFS文件系统 相关帖子: 根文件系统--代码简单分析_u01.

u010743406的博客 972

【WSN定位】基于AOA算法实现目标无源定位附matlab代码

1 简介 2 部分代码 clear all; close all; clc;​stations = [0 0 0;20 0 0]; %基站位置​X = -100:100; %生成目标位置Y = X.*sin(X);Z = X+Y;N = length(X);Locations = zeros(N,3);angs = zeros(N,4);for i = 1:N angs(i,:) = Angs(stations*1e3,[X(i),Y(i),Z(i)]*1e3);end​for

qq_59747472的博客 2308

基于 RK3588 构建 Ubuntu 22.04 根文件系统

Ubuntu-Base 是Ubuntu官方构建的ubuntu最小文件系统,基础包大小通常只有几十兆,可以很方便的个性化定制嵌入式环境。使用加速下载,注意选择根据开发板架构选择arm64或其他架构。

CoooStar的博客 2万+

大数据利器Hadoop:从基础到实战,一篇文章掌握大数据处理精髓!

在当今大数据时代,数据量的爆炸式增长对企业和技术提出了前所未有的挑战。如何高效地存储、处理和分析这些庞大的数据集,成为了亟待解决的问题。Hadoop作为一种分布式计算框架,应运而生,为大数据处理提供了有效的解决方案。Hadoop是一个由Apache软件基金会维护的开源项目,它基于Google的分布式文件系统(Google File System,GFS)和MapReduce计算模型设计。Hadoop的主要目标是处理大规模数据集,它可以在普通硬件集群上运行,从而降低了大数据处理的成本。

邓邓子的博客 8279

【微服务】SpringBoot 整合Kafka 项目实战操作详解

SpringBoot 整合Kafka 实战操作详解

congge 5570

用busybox构建最小根文件系统详解

(2)建议下载busybox的版本:尽量和你使用的编译环境(比如:Ubuntu)的版本相近,版本差太多可能需要解决一些编译时候的兼容问题;

weixin_42031299的博客 1842

04 Zabbix自定义触发器

1、触发器是什么 触发器表达式:允许定义一个什么状况的数据是“可接受”的阈值。因此,如果接收的数据超过了可接受的状态,则触发器会被触发 , 或将状态更改为异常。 一个触发器可以拥有下面几种状态: 值 描述 OK 这是一个正常的触发器状态。在旧版本的Zabbix中称为FALSE。 PROBLEM 通常意味着发生了某些事情。例如,处理器的负载较高。在旧版本的Zabbix中称为TRUE。 2、创建触发器TRIGGER 案例:系统超过3个用户登录,则告警。 2.1 开启告警声

Jian Sun_的博客 1540

从零开始构建根文件系统

在前面分析的基础上,我们从零开始构建一个根文件系统。

主要记录嵌入式学习与开发过程。 3554

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

根文件系统构建(BusyBox方式)

Linux“三巨头”已经完成了2 个了,就剩最后一个rootfs(根文件系统)了,本章我们就来学习一下根文件系统的组成以及如何构建根文件系统。这是Linux 移植的最后一步,根文件系统构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系统。以后我们就在这个最小系统上编写、测试Linux 驱动,移植一些第三方组件,逐步的完善这个最小系统。最终得到一个功能完善、驱动齐全、相对完善的操作系统。 ...

zhuguanlin121的博客 1788

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

最小根文件系统的构建(基于JZ2440)

文章目录1 init进程2 构建最小根文件系统2.1 环境2.1.1 编译busybox2.1.1.1 什么是busybox2.1.2 构建etc目录2.1.3 构建dev目录2.1.4 安装glibc库2.1.5 设置网络文件系统2.1.6 用proc进行改进2.1.7 最小根文件系统所含内容2.1.8 完善根文件系统2.1.9 错误聚集地(问题还未解决,解决后将会进行更新)2.2 环境2.2.1 更换交差编译器2.2.2 编译busybox2.2.3 安装glibc库2.2.4 构建

com852的博客 1065

08.构建根文件系统

最小根文件系统的组成:1.dev/console /dev/null 2.init程序(来源busybox)3./etc/inittab 4.配置文件指定的应用程序 5.C库 1.配置编辑busybox  (1)将busybox-1.7.0.tar.bz2文件上传到ubuntu中work/system,使用tar xjf busybox-1.7.0.tar.bz2解压,查看install文件, ...

嵌入式与Linux那些事的博客 3489

用 BusyBox 构建根文件系统

根文件系统构建

安迪西_嵌入式攻城狮 4297

构建最小根文件系统busybox

构建最小根文件系统busybox 一、配置busybox make distclean make clean make defconfig make menuconfig 二、编译并安装busybox make -j4 make install 三、创建其它必须的目录 mkdir dev etc proc sys 四、busybox依赖的动态库 检查依赖的动态库路径 cd _install ldd bin/busybox bin/busybox依赖的动态库如下: linux-vdso.so.1 (0

greatyoulv的专栏 659

为linux建立最小的根文件系统

为linux建立最小的根文件系统 在编译内核时候,可以指定一个文件夹作为内核启动时候的根文件系统,linux中管这个文件系统叫做initramfs。 具体做法如下(以i386为例) 1.下载内核文件   wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2 2.解压内核    bzip2

tycoon的专栏 3380
上一篇: 根文件系统(一)最小根文件系统的构成
下一篇: 根文件系统(三)NFS服务
floatinglong
博客等级 码龄9年 90粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值