返回顶部
首页 > 资讯 > 操作系统 >怎么制作Linux根文件
  • 338
分享到

怎么制作Linux根文件

2023-06-27 11:06:49 338人浏览 安东尼
摘要

这篇文章主要介绍了怎么制作linux根文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么制作Linux根文件文章都会有所收获,下面我们一起来看看吧。根文件系统首先是内核启动时所mount的第一个文件系统,内

这篇文章主要介绍了怎么制作linux根文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么制作Linux根文件文章都会有所收获,下面我们一起来看看吧。

根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。

怎么制作Linux根文件

1.根文件系统

文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。

注:对于我们应用开发来说,购买开发板的时候,厂家会提供好现成的根文件系统和BootLoader等,如果需要,我们可以改变其中的命令而无需从头开始制作一个新的根文件系统。不过这儿的制作过程可以让我们更深一点理解Linux的文件系统。

2.主要的根文件系统

* Linux 中,rootfs 是必不可少的。PC 上主要实现有 ramdisk 和直接挂载 HD(Harddisk,硬盘)上的根文件系统;嵌入式中一般不从 HD 启动,而是从 Flash 启动,最简单的方法是将 rootfs load 到 RAM 的RAMDisk,稍复杂的就是直接从Flash 读取的 Cramfs,更复杂的是在 Flash 上分区,并构建 JFFS2 等文件系统。

* RAMDisk 将制作好的 rootfs 压缩后写入 Flash,启动的时候由 Bootloader load 到RAM,解压缩,然后挂载到 /。这种方法操作简单,但是在 RAM 中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源 RAM。

ramdisk 就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统, 在linux系统中,ramdisk有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是 2.4的内核才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小随所需要的空间增加或减少,是目前linux常用的ramdisk技 术。

* initrd 是 RAMDisk 的格式,kernel 2.4 之前都是 image-initrd,Kernel 2.5 引入了 cpio-initrd,大大简化了 Linux 的启动过程,附合 Linux 的基本哲学:Keep it simple, stupid(KISS). 不过cpio-initrd 作为新的格式,还没有经过广泛测试,嵌入式 Linux 中主要采用的还是 image-initrd。

* Cramfs 是 Linus 写的很简单的文件系统,有很好的压缩绿,也可以直接从 Flash 上运行,不须 load 到 RAM 中,因此节约了 RAM。但是 Cramfs 是只读的,对于需要运行时修改的目录(如: /etc, /var, /tmp)多有不便,因此,一般将这些目录做成ramfs 等可写的 fs。

* SquashFS 是对 Cramfs 的增强。突破了 Cramfs 的一些限制,在 Flash 和 RAM 的使用量方面也具有优势。不过,据开发者介绍,在性能上可能不如 Cramfs。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试。

3.Ramdisk制作

RAMDisk的制作方法如下: (1) 在PC机的Linux操作系统环境下,生成可以虚拟成块设备的文件,假设文件名为init.img。

$ dd if=/dev/zero of=init.img bs=4096 count=1024

其中bs*count为块设备大小(单位:字节),生成init.img文件以后,还必须对该文件进行格式化。

$ mke2fs –m0 –F init.img

(2) 新建一个文件夹ram,并将init.img挂接到ram目录。

$ mkdir ram$ mount init.img ram/ -o loop

这时,读写ram目录,等效于读写init.img文件。用户可以将根文系统所需的文件写入到ram目录中。往ram目录写完文件以后,还需要使用umount ram命令卸载init.img,才能将已写入的文件保存到init.img中。

(3)添加完毕,需要umount ram

4.Cramfs制作

CramFS(Compressed Rom File System)是Linux Torvalds在Transmeta任职时,所参与开发的文件系统。它是针对Linux内核2.4之后的版本所设计的一种新型只读文件系统,采用了zlib 压缩,压缩比一般可以达到1:2,但仍可以作到高效的随机读取,Linux系统中,通常把不需要经常修改的目录压缩存放,并在系统引导的时候再将压缩文件 解开。因为Cramfs不会影响系统的读取文件的速度,而且是一个高度压缩的文件系统。因此非常广泛应用于嵌入式系统中。

在嵌入式的 环境之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先要把Flash上的映像文件解压缩到内存 中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在Flash中占据了空间(以压缩后的形式存 在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。

使用CramFS文件 系统就是一种解决这个问题的方式。CramFS是一个压缩格式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需 要访问某个位置的数据的时候,马上计算出该数据在CramFS中的位置,将它实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数 据。CramFS中的解压缩以及解压缩之后的内存中数据存放位置都是由CramFS文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这种方 式增强了透明度,对开发人员来说,既方便,又节省了存储空间。

但是Cramfs也有其缺点:延迟、小于16MB、不支持写,只支持PAGE_CREATE_SIZE=4096的内核。

制作的命令:(root文件夹中存放着文件系统)

#mkcramfs root cramfs.img

5.其他根文件系统的制作

制作yaffs文件系统: mkyaffsimage myroots myroots.img制作squashfs: mksquashfs $(FS_DIR) $(FS_NAME) -noappend -be -lzma -no-fragments –noI

6.BusyBox编译制作

建立目标板空根目录文件夹及根目录下的文件夹:

[root@190 friendly-arm]# mkdir myroots[root@190 friendly-arm]#pwd/friendly-arm/myroots[root@190 friendly-arm]#cd myroots[root@190 myroots]# mkdir bin sbin usr lib dev mnt opt root etc home proc tmp var[root@190 myroots]# mkdir etc/init.d

进入etc/init.d目录下,建立一个脚本文件,并命名为rcS,用gedit打开,添加如下内容:

#! /bin/shPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:runlevel=Sprevlevel=Numask 022export PATH runlevel prevlevel## Trap CTRL-C &c only in this shell so we can interrupt subprocesses.#trap ":" INT QUIT TSTP

创建 dev 中的节点 如果使用“linux 2.6.xx”的内核,应该事先创建节点“console”、“null”。否则在系统启动时内容会提示以下错误:

Warning: unable to open an initial console.Kernel panic - not syncing: Attempted to kill init!

创建节点的命令如下:

# mknod dev/console c 5 1# mknod dev/null c 1 3 移植Busybox:

进入到压缩文件存放的目录下,并解压。然后进入解压后的busybox目录文件夹,随后配置busybox 。

[root@190 busybox-1.2.0]# make menuconfig

由于每个版本的配置选项组织有所不同。不管怎样,我们注意以下选项就行了:

1) Support for devfs2) Build BusyBox as a static binary ( no shared libs ) //将busybox编译成静态链接3) Do you want to build busybox with a Cross Compile?(/usr/local/arm/3.3.2/bin/arm-linux-) Cross Compile prefix //指定交叉编译器4) init5) Support reading an inittab file //支持init读取/etc/inittab 配置文件6) (X) ash选中ash //建立的rcS脚本才能执行7)ash8)cp cat ls mkdir mv //可执行命令工具的选择,自己看着办吧,需要用到的就选上9) mount10) umount11) Support loopback mounts12) Support for the old /etc/mtab file13) insmod14) Support version 2.2.x to 2.4.x Linux kernels15) Support version 2.6.x Linux kernels16) vi17)don’t use user

以上内容必须选上,其他可按默认值;如果要支持其他功能,如网络支持等,可按需选择,英语不是很烂的话,这些都没有问题。 配置好之后,保存退出。然后对其编译和安装到刚才建立的根文件系统目录下:

[root@190 busybox-1.2.0] make TARGET_ARCH=arm CROSS=arm-linux- \ PREFIX=/friendly-arm/myroots/ all install

安装好之后,将相应的二进制文件拷贝到根文件系统相应的目录下: 拷贝一些管理员控制程序到/sbin目录下,最重要的就是要包含一个init命令; 拷贝应用程序运行时所需要的库到/lib,库文件可以从PC机上的交叉编译工具安装目录下拷贝,如libc-2.2.2.so、libcryt-2.2.2.so、libm-2.2.2.so、libutil-2.2.2.so等,为部分相应库建立快捷方式,提供一些应用程序按快 捷方式名称调用。值得注意的是C库要采用C库的版本glibc, glibc位于/lib/libc.so.6

关于“怎么制作Linux根文件”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么制作Linux根文件”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网操作系统频道。

--结束END--

本文标题: 怎么制作Linux根文件

本文链接: https://lsjlt.com/news/310355.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么制作Linux根文件
    这篇文章主要介绍了怎么制作Linux根文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么制作Linux根文件文章都会有所收获,下面我们一起来看看吧。根文件系统首先是内核启动时所mount的第一个文件系统,内...
    99+
    2023-06-27
  • linux怎么挂载根文件系统
    要挂载Linux的根文件系统,可以按照以下步骤进行操作:1. 在启动过程中,进入 GRUB 菜单。在大多数 Linux 发行版中,按...
    99+
    2023-09-06
    linux
  • linux下制作ISO文件
    linux下制作ISO文件有几种方法,分别如下: 1,从光盘中制作ISO文件 cp /dev/cdrom 路径/ISO 文件名 例子:cp /dev/cdrom /opt/mycd.iso,也可以用 dd if=/dev...
    99+
    2022-06-04
    linux制作iso镜像文件 Linux 制作iso文件 linux制作镜像文件
  • linux制作img文件格式
    在Linux上制作img文件格式通常有两种方法:1. 使用dd命令:- 首先,确保要制作成img格式的目标文件系统已经挂载到Linu...
    99+
    2023-09-20
    linux
  • linux下怎么制作可启动img/iso文件
    这篇文章主要介绍“linux下怎么制作可启动img/iso文件”,在日常操作中,相信很多人在linux下怎么制作可启动img/iso文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux下怎么制作可启动...
    99+
    2023-06-13
  • Linux系统下怎么制作ISO镜像文件
    这篇文章主要介绍“Linux系统下怎么制作ISO镜像文件”,在日常操作中,相信很多人在Linux系统下怎么制作ISO镜像文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统下怎么制作ISO镜像文件...
    99+
    2023-06-10
  • linux在根目录下怎么创建文件夹
    在Linux系统中,要在根目录下创建文件夹,可以使用以下命令:sudo mkdir /文件夹名称其中,sudo命令用于以管理员权限执...
    99+
    2023-10-20
    linux
  • wps怎么制作红头文件
    要制作红头文件,可以使用WPS软件来完成。下面是具体的步骤:1. 打开WPS软件,进入“WPS文字”界面。2. 点击菜单栏上的“文件...
    99+
    2023-09-29
    wps
  • 怎么制作html文件(步骤)
    在如今的数字时代,网页已经成为我们生活中不可分割的一部分。每个人都可以通过在线网站搭建工具,轻松地创建一个个性化的网站。然而,在这个数字时代之前,网页编写是非常复杂的过程,需要掌握 HTML、CSS、JavaScript 等编程语言的知识。...
    99+
    2023-05-14
  • linux怎么复制多个文件
    要复制多个文件,可以使用`cp`命令结合通配符。以下是一些示例:1. 复制当前目录下的所有文件到目标目录:cp * /目标目录/2....
    99+
    2023-10-30
    linux
  • Linux中怎么操作pcap文件
    本篇文章为大家展示了Linux中怎么操作pcap文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Editcap 与 MergecapWireshark,是最受欢迎的 GUI 嗅探工具,实际上它带了...
    99+
    2023-06-13
  • 怎么制作云服务器文件
    制作云服务器文件需要以下步骤: 确定需要上传的文件类型:不同的云服务器支持上传不同类型的文件,比如 HTML 文件、PHP 文件或 Git 项目等。确定需要上传的文件类型后,接下来需要选择云服务器的操作系统、应用程序版本和配置文件,以及...
    99+
    2023-10-26
    服务器 文件
  • 怎么制作云服务器文件夹
    制作云服务器文件夹的方法如下: 准备文件夹:首先需要准备一个新的云服务器文件夹,这个文件夹可以在本地计算机上创建也可以从云服务器获取。在本地电脑上,创建一个名为“c”的文件夹,将其复制到新的云服务器文件夹中。 在云服务器上创建一个虚拟目...
    99+
    2023-10-26
    文件夹 服务器
  • 根目录怎么添加.stylelintrc.json文件
    这篇文章主要介绍了根目录怎么添加.stylelintrc.json文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇根目录怎么添加.stylelintrc.json文件文章都会...
    99+
    2024-04-02
  • Linux文件读写机制怎么优化
    这篇文章给大家分享的是有关Linux文件读写机制怎么优化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux是一个可控性强的,安全高效的操作系统。本文只讨论Linux下文件的读写机制,不涉及不同读取方式如re...
    99+
    2023-06-13
  • Linux下怎么查看16进制文件
    这篇文章给大家分享的是有关Linux下怎么查看16进制文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.使用VI 或者 VIM命令状态下:%!xxd --将当前文本转换为16进制格式。:%!od --将当前文...
    99+
    2023-06-12
  • 怎么定制Linux外围文件系统
    这篇文章主要介绍怎么定制Linux外围文件系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!思路利用原有系统复制必备部件到新存储器利用 initrd.img 机制在 RAM Disk&n...
    99+
    2023-06-16
  • linux怎么跨服务器复制文件
    本文小编为大家详细介绍“linux怎么跨服务器复制文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux怎么跨服务器复制文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
    99+
    2023-04-06
    linux 服务器
  • linux下制作虚拟软盘镜像文件
    在Linux下制作虚拟软盘镜像文件,可以使用dd命令。以下是制作虚拟软盘镜像文件的步骤:1. 打开终端窗口,使用以下命令创建一个空的...
    99+
    2023-09-13
    linux
  • linux根目录有什么作用
    本篇内容介绍了“linux根目录有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2023-01-31
    linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作