linux 根文件系统的制作过程

Linux根文件系统制作 本文介绍如何构Linux根文件系统,适用于arm32开发板。 阅读详情

文件系统制作步骤
1,配置busybox
1)下载源码
2)进入busybox,make menuconfig 选配
2,制作根文件基本目录(make进行编译,Make install 把它编译成工程文件,方便我们使用将所有相关文件都放到_install目录下)
3,创建其他需要的目录(mkdir dev etc mnt proc var tmp sys root)
4,库目录设置(拷贝交叉编译工具连中的库目录,如果对库大小有要求可以进行裁剪)
5,添加系统启动文件(配置etc目录)
1)/etc/inittab
2)/etc/init.d/rcS
3)/etc/fstab
4)/etc/prifile
6,创建串口设备节点(初始化/dev目录)
7,测试根目录内容正确性
8,制作需要的rootfs类型的格式
------------------------------------------------------------------------------------------详细如下
一、配置busybox
下载解压源码
进入busybox目录下make menuconfig选配
选配交叉编译工具链
Busybox Settings —>
Build Options —>
() Cross Compiler prefix (NEW)
填写none-linux-gnueabi-
(arm-none-linux-gnueabi-) Cross Compiler prefix
·选配静态库

二、制作根文件基本目录

1.Make 进行编译

2.Make install 把它编译成工程文件,方便我们使用
将所有相关文件都放到_install目录下

这就是我们板子上的根文件基本目录
三、创建其他需要的目录
mkdir dev etc mnt proc var tmp sys root
四、库目录设置
拷贝交叉工具链中的库目录
$ cp ~/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/lib/ . -a 注意是lib/
$ du -mh lib 查看lib库的大小
裁剪库到库的大小小于8m
如果库的大小已经满足8M以下的要求,就少裁剪
删除静态库和共享库文件中的符号表
$ rm lib/*.a

裁剪掉调试信息 not recognized
$ arm-none-linux-gnueabi-strip lib/*
有些库是不能strip的 忽略掉

删除不需要的库,确保所有库大小不超过4M
$ sudo rm lib/libstdc++*
$ du -mh lib 查看lib库的大小 可能 显示3.4M lib (这里确保小于 8M)

五、添加系统启动文件
文件 /etc/inittab
拷贝已有的文件,在修改。也可以自己手动添加
$ cp /nfs/rootfs/etc -rf . 拷入成熟的参考配置

Inittab:

#this is run first except when booting in single-user mode.
:: sysinit:/etc/init.d/rcS
指定系统初始化脚本是rcS 也可指定别的名字,但习惯用rcS

/bin/sh invocations on selected ttys

start an “askfirst” shell on the console (whatever that may be)

::askfirst:-/bin/sh 指定初始的控制台(启动后进入# 状态)
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
文件 /etc/init.d/rcS(启动脚本)
在这个脚本中可以自己添加信息,如加载驱动等,这样板子运行时会自动加载

#!/bin/sh

This is the first script called by init process

/bin/mount -a
挂载一切能够挂载的根文件系统, /etc/fstab中指定了挂载的根文件系统
Mount -t devpts devpts /dev/pts 板子启动后的提示符
/etc/init.d/rc.local 扩展子脚本
echo /sbin/mdev > /proc/sys/kernel/hotplug
设置系统的hotplug程序为mdev,允许热插拔,插入设备后自动生成设备节点
/sbin/mdev -s
./app.exe //让脚本自动运行你的程序

可以添加:
insmod led.ko
mknod /dev/led c 501 0
./fs4412_led_app
文件 /etc/fstab
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
文件 /etc/profile

#!/bin/sh
export HOSTNAME=farsight
export USER=root
export HOME=root
export PS1="[USER@USER@USER@HOSTNAME \W]# " 终端前的提示符
PATH=/bin:/sbin:/usr/bin:/usr/sbin 命令路径,使得使用命令时不用再写
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH 指定库路径
export PATH LD_LIBRARY_PATH
六、创建串口设备节点
$sudo mknod dev/console c 5 1 必须要有 console设备节点
测试rootfs内容正确性
$ cd /nfs
$ mkdir rootfs
$ cp _install/* rootfs –a
$ chmod 777 /nfs/rootfs/
或
$ sudo cp -rf _install/ /nfs/rootfs
$ sudo chmod 777 /nfs/rootfs
NFS能挂载成功表示根文件系统 内容基本正确
制作需要的rootfs类型的格式

列:不同格式
行:不同属性
Nfs rootffs:和电脑nfs目录同步,传文件快速。
适用于开发调试。
EXT2 over RAM disk:把内存虚拟成磁盘,掉电后所有更改内容消失
正对内存比较大而flash比较小的场合
CRAMFS:只读的,安全性高,不容易出错。
适用于安全性要求比较高的,不希望用户更改的
JFFS2:日志文件系统,可以随时掉电。
适用于小型嵌入式产品
YAFFS2:手机用的最多的,主要就是用nand flash
适用于手机,需要存储大量信息的
EXT2/3:用的介质是硬盘,主要是我们普通电脑

实际应用中是混合使用的,如果有写文件需要保护,就采用CRAMFS格式。根文件系统下可以挂在不同的文件系统,所以可以混合着用。
制作RAMDISK
制作大小为8M的ramdisk镜像文件
制作镜像
$ cd /nfs/
$ dd if=/dev/zero of=ramdisk bs=1k count=16384 (8m)
dd命令是用于制作镜像的
if 作为输入的文件
of 作为输出的文件
bs 单元大小
count 数量
即:将zero(内容为0的设备文件)拷贝到ramdisk中,形成一个大小为8m,内容为0的镜像文件
格式化这个镜像文件为ext2
$ mkfs.ext2 -F ramdisk
在mount下面创建initrd目录作为挂载点
$ sudo mkdir /mnt/initrd
$ sudo mount -t ext2 ramdisk /mnt/initrd

将原来的根目录拷贝到initrd目录
(如果rootfs的大小超过8m,就删除库缩减)
$ sudo cp -a /nfs/rootfs/* /mnt/initrd
卸载挂载的initrd目录
$ sudo umount /mnt/initrd
压缩ramdisk为ramdisk.gz
$ gzip --best -c ramdisk > ramdisk.gz
格式化为uboot识别的格式,并拷贝到tftpboot下
$ mkimage -n “ramdisk” -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img
拷贝制作好的镜像文件到TFTP服务器指定的目录。
$ sudo cp ramdisk.img /tftpboot/

重新配置内核,选择ramdisk的支持并指定大小。
File systems —>
<> Second extended fs support
Device Drivers
SCSI device support —>
<
> SCSI disk support
Block devices —>
<>RAM block device support
(16)Default number of RAM disks
(16384) Default RAM disk size (kbytes)
General setup —>
[
] Initial RAM filesystem and RAM disk (initramfs/initrd) support
上面的配置项多数都已配置,主要是修改了ramdisk的大小为16384,这个值必须要和ramdisk镜像文件的大小保持一致。保存配置后,重新编译内核,再将uImage文件拷贝到tftp服务器指定的目录下。
启动开发板重新设置环境变量
开发板上电,在U-Boot中设置bootcmd环境变量如下。
FS4412 # setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-origen.dtb;tftp 43000000 ramdisk.img;bootm 41000000 43000000 42000000
FS4412 # setenv bootargs
FS4412 # saveenv
最后使用boot命令启动内核并挂载根文件系统,挂载成功后将提示输入用户名和密码(其中用户名为root,密码为空),验证通过后,成功登录系统。输出信息如下:
……
[ 2.250000] VFS: Mounted root (ext2 filesystem) on device 1:0.

Please press Enter to activate this console.
fs4412 login: root
Password:
login[1214]: root login on ‘console’
[root@fs4412 ~]#

icesugar-pro:iCESugar系列FPGA开发板 iCESugar-pro iCESugar-pro iCESugar-pro是基于莱迪思LFE5U-25F-6BG256C的FPGA板,完全受开源工具链(yosys和nextpnr)支持,该板采用DDR SODIMM形式设计,具有106个可用IO,板载32MB SDRAM。 ,它可以运行RISC-V Linux。 板载调试器iCELink(基于ARM Mbed DAPLink)支持拖放程序,您只需将FPGA比特流拖入虚拟磁盘即可进行编程,并通过一个额外的USB CDC串行端口直接连接到FPGA,因此您可以仅使用一根TYPE-C电缆进行开发和测试。 硬件 ECP5 LFE5U-25F-6BG256C(BGA256 0.8mm间距) LUT:24K sysMEM块:18Kb x 56 嵌入式内存:1008Kb 分布式RAM位:194Kb 18 x 18乘法器:28 锁相环x 1 立即下载

相关推荐

HarmonyOS开发第一步:Dev Eco Studio4.0保姆级安装配置指南(含Node.js环境)

本文提供HarmonyOS开发环境搭建的保姆级教程,重点详解Dev Eco Studio 4.0的安装与配置,并攻克Node.js环境与Ohpm包管理器的关键设置难点。通过清晰的步骤指引,帮助开发者从零开始,高效完成开发环境部署,顺利迈出鸿蒙应用开发的第一步。

lake5的博客 570

嵌入式系统移植三部曲 赵超越

班级:09计应1班    姓名:赵超越   学号:0906041011 嵌入式系统移植三部曲 一、Bootloader的移植 1.安装Skyeye 使用mv命令将/usr/local/bin/skyeye 改名为/usr/local/bin/skyeye1.2.6 2.创建交叉编译环境 下 载arm-linux-gcc-2.95.3.tar.bz2、arm-linux-gcc-3.4

张同光 (Tongguang Zhang):Hello everyone ! 528

16G显存+llama.cpp跑大模型的黄金配置指南

大语言模型(LLM)本地部署的核心瓶颈在于显存与推理效率的平衡。llama.cpp作为轻量级C/C++推理引擎,通过GGUF模型格式、量化压缩(如Q4_K_M)和CUDA底层优化,显著降低GPU资源需求。在消费级硬件中,16G显存成为兼顾模型能力(如Qwen3-4B、Llama-3-8B)、长上下文支持(4K token)与系统稳定性的关键阈值。它既规避了12G显存的容量焦虑,又绕开了24G高端卡的成本与散热负担,特别适合Windows 11原生环境下的生产级AI应用,如RAG、智能客服与文档分析。

weixin_32629853的博客 406

17.使用busybox制作根文件系统

etc/init.d/rcS文件是linux的运行时配置文件中最重要的一个,其他的一些配置都是由这个文件引出来的。这个文件可以很复杂也可以很简单,里面可以有很多的配置项。(1)mdev是udev的嵌入式简化版本,udev/mdev是用来配合linux驱动工作的一个应用层的软件,udev/mdev的工作就是配合linux驱动生成相应的/dev目录下的设备文件。(2)因为这个问题涉及到驱动,因此详细讲解要等到驱动部分。这里我们只是通过一些直观的现象来初步理解udev/mdev的工作效果。

weixin_53762042的博客 1462

测试dali协议的软件,DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议

DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议深圳聚积智能 夏先生 13246760327 QQ 349098308■IEC62386-102(V2.0)通过测试内容IEC62386-102/2.1/Test preambleIEC62386-102/3.1/Polarity testIEC62386-102/3.2/Maximum and minimum system v...

weixin_35343788的博客 1351

Android11,无障碍服务模拟多手势使用dispatchGesture时总是onCancelled

AccessibilityService的dispatchGesture去模拟多手势,总是onCancelled的一种解决办法

m0_49953943的博客 2103

Linux如何取消用户登入的信息

定位步骤问题描述解决办法步骤排除telnetdloginbusybox再次loginlogin.c究极大法加打印 问题描述 我在使用telnet的时候发现当利用telnet登入设备的是后设备会输出一段用户登入的打印,这个打印在有些特殊情况下我不希望打印如何解决? 解决办法 找到这个文件busybox\loginutils\login.c 找到login_main函数 找到这一行syslog(LOG_INFO, “root login%s”, fromhost); 删掉即可,以后shell登录都没打印了

weixin_41884251的博客 1077

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

算法大师! 473

Linux——rootfs根文件系统构建

根文件系统也叫做rootfsFATFS这类的文件系统属于Linux内核的一部分,属于软件代码,所以ROOTFS不等于FATFS。Linux的根文件系统实际上是一个文件夹或者叫目录,这个目录下会有许多子目录,这些目录中存放许多Linux运行所必须的文件,比如库、常用的软件和命令、设备文件、配置文件等等例如我们装一个Windows系统,C盘中回存放系统正常运行所需要的文件,这个C盘就相当于我们的根文件系统。

weixin_74209413的博客 2443

项目篇 | 图书管理系统 | 管理员模块 | 概述

图书管理系统管理员模块概述

百栗.的博客 405

重回童年的经典系列☀️| 【坦克大战3D版】游戏制作+解析

带你重回童年的经典系列——坦克大战3D版制作,感兴趣的可以看看呀~

努力前行,总会成为自己心中的那道光 5万+

嵌入式Linux根文件系统ramdisk制作过程

转自:http://www.21ic.com/app/embed/201106/86461.htm 嵌入式Linux根文件系统Ramdisk制作过程 时间:2011-06-21 17:14:31 来源: 作者:               ramdisk是一个最小的linux rootfs系统,它包含了除内核以外的所有linux系统在引导和管理时需要的工具,包含如下目录:bi

yapingmcu的专栏 957

把大表拆成更好用的“小仓库”:SAP HANA 表分区设计、分区裁剪与内存代价全解析

摘要:本文深入解析SAP HANA分区技术的核心价值与实现策略。作为内存数据库的"手术刀",分区通过将逻辑表横向切分为独立物理容器,显著提升并行计算能力与查询效率。重点探讨了三种分区类型(Range、Hash、Round-robin)的适用场景,以及分区裁剪的优化原理与前提条件。特别指出分区设计需要平衡查询模式与数据分布,并揭示了分区对内存占用的双向影响机制:既可能因字典复制增加消耗,也可能因数据纯度提升压缩率。通过电商订单表等实际案例,展示了合理分区如何将分钟级报表优化至秒级响应。文章

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

Linux下Ramdisk根文件系统制作过程解析

<br />Linux下Ramdisk根文件系统制作过程解析<br />本文讲述了Linux下Ramdisk根文件系统制作过程。<br />    一、在一个已建好的文件系统上进行修改<br />    设已建立好的文件系统压缩文件为ramdisk.gz<br />    1、解压<br />    #cd ramdisk.gz所在目录<br />    #gunzip ramdisk.gz<br />    在解压后,得到文件系统镜象文件ramdisk, 覆盖了原来的压缩文件<br />    2、镜象文

babyfans的专栏 1017

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

linux系统制作文件系统时dev中的节点怎样生成,linux系统根文件系统制作过程.pdf...

6.8知识点讲解:116.8.1知识点11:根文件系统介绍1.1.11..根文件系统含义:相见引子。2.2.22..根文件系统3.3.33..根文件关键目录介绍4.4.44..制作根文件系统的步骤:(根文件系统主要存放应用程序)1)制作linux下面的命令:busybox包2)Copy 动态库(从arm-gcc 中copy到lib目录);动态和静态区别。3)构建etc 目录:(配置文件,环境变量)...

weixin_39869197的博客 302

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Day1.复习Linux系统移植的内容,将内核启动流程根文件系统的制作过程整理一下。

2.4设备管理:字符设备管理/块设备管理。1.3uboot移植前我们需要做的准备工作:1)将uboot源码拷贝到Ubuntu中。因为1)uboot是一个裸机程序,引导Linux内核启动,引导内核启动成功之后,会给内核传递。然后再到家目录下创建一个文件夹FSMP1A,将demo目录下的uboot源码拷贝到FSMP1A.然后分析uboot源码。分别是basic版本(不安全版本)和trusted版本(安全版本)。根文件系统镜像文件(ramdisk.img):将根文件系统以某种格式进行压缩制作成燃梦disk。

m0_69078052的博客 162

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

制作linux根文件系统过程

介绍根文件系统制作步骤 第一步、解压根文件系统 tar xjf busybox-1.7.0.tar.bz2 可以根据INSTALL文件介绍的编译步骤进行开发 第二步、可以通过 make menuconfig 和内核一样的方式进行配置 修改Makefile交叉编辑选项   arm-linux- 第三步、执行make命令编译 第四步、安装到指定的目录 make CONFIG_P

redsleep的博客 509

linux系统移植简要过程(移植bootloader引导加载程序---移植linux内核---制作根文件系统)

linux系统移植简要过程(移植bootloader引导加载程序---移植linux内核---制作根文件系统)

weixin_46260677的博客 831

嵌入式Linux教程根文件系统Ramdisk的制作过程

<br />ramdisk是一个最小的linux rootfs系统,它包含了除内核以外的所有linux系统在引导和管理时需要的工具,包含如下目录:<br />bin,dev,etc,home,lib,mnt,proc,sbin,usr,var。还需要有一些基本的工具:sh,ls,cp,mv……(位于/bin目录中);必要的配置文件:inittab,rc,fstab……位于(/etc目录种);必要的设备文件:/dev/tty*,/dev /console,/dev/men……(位于/dev目录中);sh,ls

热爱嵌入式Linux Wince Android和硬件设计 1981

Linux内核版本和系统启动过程以及具体内核移植和根文件系统的制作

原网址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1.1 Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 2

heart18335101121的博客 2143

【转载】 嵌入式linux内核及根文件系统的制作过程

今天看了一下在嵌入式Linux过程中,需要在宿主机上交叉编译内核和制作根文件系统(定制占容量较小的嵌入式根文件系统)       但是对一个问题很不明白:交叉编译的内核怎么和根文件系统对应起来??其实也就是make uImage生成的zImage内核镜像,怎么和make modules生成的可加载模块联系起来?我们知道如果是直接在电脑上换内核的话,直接make uImage, make modu

nksosoon的专栏 1086

linux根文件格式,Linux根文件系统的详细制作过程

利用busybox制作跟文件系统准备一个busybox包我这里用的是busybox-1.21.1.tar.bz2这个包可以在官方网站上下载,这里我就用百度网盘链接https://pan.baidu.com/s/10Fnc-UbcNWPLaiAnaXKTug解压安装包 tar xf busybox-1.21.1.tar.bz2 .根文件系统的制作1、什么是文件系统文件的索引信息 文件的具体数据 操作...

weixin_31319027的博客 326

在linux下卸妆软件,嵌入式Linux根文件系统Ramdisk制作过程

ramdisk是一个最小的linux rootfs系统,它包含了除内核以外的所有linux系统在引导和管理时需要的工具,包含如下目录:bin,dev,etc,home,lib,mnt,proc,sbin,usr,var。还需要有一些基本的工具:sh,ls,cp,mv……(位于/bin目录中);必要的配置文件:inittab,rc,fstab……位于(/etc目录种);必要的设备文件:/dev/tt...

weixin_33895274的博客 198

linux 文件系统压缩比,Linux下Ramdisk根文件系统制作过程解析

Linux下Ramdisk根文件系统制作过程解析http://www.soidc.net/articles/1215484977397/20080407/1215945405315_1.html一、在一个已建好的文件系统上进行修改设已建立好的文件系统压缩文件为ramdisk.gz1、解压#cd ramdisk.gz所在目录#gunzip ramdisk.gz在解压后,得到文件系统镜象文件ramdi...

weixin_32708653的博客 308
上一篇: 链表(未完成笔记)
下一篇: 虚拟机内文件删除 实际空间不变
专业的坑
博客等级 码龄8年 6粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值