Linux文件系统制作详细

合集下载

嵌入式Linux系统下根文件系统的构建

嵌入式Linux系统下根文件系统的构建
型 的 文 件 ,在 构 造 根 文 件 系 统 时 ,建 议 遵 循 F S H ( iss m H e rh tn ad 文 件 系 统 层 次 标 Fl yt ir cySa dr 一 e e a 准 ) 准 。F 标 HS定 义 了文 件 系 统 中 目录 、 文件 分 类 存
2 根 文件 系统 简 介
根 文件 系统 是 嵌 入 式 Lnx文 件 系 统 的 核 心 部 iu 分 。 含 系 统 使 用 的 软 件 和 库 , 及 所 有 用 来 为 用 包 以 户 提 供 支 持 架 构 和 用 户 使 用 的应 用 软 件 , 作 为存 并 储 数据 读 写 结 果 的区 域 。为 了 安 装 软 件 时 能 够 预知 文件 、 目录 的 存 放 位 置 , 用 户 方 便 的 找 到 不 同类 让
29 . /a vr
文 件 系 统 是 操作 系 统 中用 来 管 理 用 户 文 件 的 内核 软 件 层 。 件 可 文
能 存 在 于 磁 盘 、 络 或者 是 一 些 虚 拟 的文 件 。文 件 系统 包 括 根 文 件 系 网 等。 统 和 建 立 于 内存 设备 之 上 的 文件 系 统 , 中根 文 件 系 统 是 整 个 文 件 系 其 21 ,rc .0 po 统 的 核 心 部 分 。本 文 概 述 了根 文 件 系 统 的 组 成 , 结 合 工 程 项 目实 践 并 空 目录 , 作 为 po 文 件 系 统 的 挂 接 点 。 常 rc 详 细 说 明 了 如 何 建立 一 个 Ca F rm S根 文 件 系 统 的 一 般 步 骤 。
叉 编 译 后 分 别 下 载 至 目标 板 的 S I ls P ah和 NadFah中 ,上 电启 动 F n ls 31 准 备 根 文 件 系 统 . 运 行 。开 发 过 程 中 , — ot 载 至 S I 0 04 0 0; 核 和 文 件 系 统 U bo 下 P 的 ~ x 80 内 类 似 于 批 处 理 文 件 的 sel 本 可 以 自动 完 成 用 户 想 做 的 动 作 , hl脚 烧 录 至 N n s a dHah的 O4 0 0处 。 x 00 这 里 使 用 脚 本 进 行 了基 本 路 径 和 节 点 等 目 录框 架 的 建 立 。 建 立 se hl l l

busybox详解制作根文件系统

busybox详解制作根文件系统

详解制作根文件系统单击,返回主页,查看更多内容一、FHS(Filesystem Hierarchy Standard)标准介绍当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。

该标准规定了根目录下各个子目录的名称及其存放的内容:制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。

其过程大体包括:•编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录•利用交叉编译工具链,构建/lib目录•手工构建/etc目录•手工构建最简化的/dev目录•创建其它空目录•配置系统自动生成/proc目录•利用udev构建完整的/dev目录•制作根文件系统的jffs2映像文件下面就来详细介绍这个过程。

二、编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录这些目录下存储的主要是常用命令的二进制文件。

如果要自己编写这几百个常用命令的源程序,my god,这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀——busybox,事情就简单很多。

1、从/下载busybox-1.7.0.tar.bz22、tar xjvf busybox-1.7.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux-4、make menuconfig配置busyboxbusybox配置主要分两部分。

第一部分是Busybox Settings,主要编译和安装busybox的一些选项。

这里主要需要配置:1)、Build Options -- Build BusyBox as a static binary (no shared libs),表示编译busybox时,是否静态链接C库。

Linux 创建文件系统

Linux 创建文件系统

Linux 创建文件系统
创建文件系统一般步骤为:首先添加一块新的硬盘;然后,使用fdisk 命令创建分区表;最后使用mkfs 命令为指定的分区创建文件系统。

在虚拟机中首先添加一块新的虚拟磁盘
创建完成自后启动虚拟机
查看一下添加的磁盘:显示已经创建成功接下来再输入fdisk /dev/hdb 对此磁盘进行操作,执行自后跳出此页面
接着我们输入m:指帮助列表,执行之后:
输入t :显示当前磁盘的分区表,执行
“No partition is defined yet!”的含义是“没有分区的定义”。

之后输入n进行创建分区
出现两个选项“primaty partition”的翻译是主分区exetended 的翻译是扩展的意思可理解为扩展分区,选择主分区输入p
输入之后写上分区号,之后为他加上容量,再次按回车键
输入n 新建一个扩展分区输入e ,分区号2 其容量100M
再次创建分区,创建逻辑分区,输入l 为其加上分区号5(逻辑分区的区号从5 开始,应为1-4 是扩展分区和主分区的分区号,所以逻辑分区要从5开始)然后加上容量!
自后输入w保存退出;之后用mkfs分区进行创建文件系统;
成功自后就可以显示分区的情况了,
文件系统创建完毕!。

最小的Linux操作系统制作过程详解

最小的Linux操作系统制作过程详解

最小的Linux操作系统制作过程详解一,什么是BabyLinuxBabyLinux不是一个完整的发行版,他是利用原有的一套完整的linux系统的内核原代码和编译工具,利用busybox内建的强大功能,在一张软盘上做的一个很小的linux系统。

他具备一个linux系统的基本特征,支持linux系统最常用的一百多个命令,支持多种文件系统,支持网络等等,你可以把他当做一张linux 起动盘和修复盘来用,你也可以把他当做一个静态路由的路由器软件,当然,你也可以把他当做一个linux玩具,向你的朋友炫耀linux可以做的多么小。

我把他叫做BabyLinux因为他很小巧,小的很可爱,像一个刚刚出生的小baby。

二.为什么要作这样一个linux先说说我一开始的想法,当我一开始接触linux的时候,看到书上说,linux 通常安装只需要60M左右的空间,但是我发现装在我硬盘上的Redhat 6.0确要占据好几百M的空间。

为什么我的linux这么大呢? 后来我发现,装在我机器上的那么多东西只有不到30%是我平时常用的,还有30%是我极少用到的,另外的40%基本上是不用的。

于是,我和大多数初学者一样,开始抱怨,为什么linux 不能做的精简一点呢?于是,我萌发了自己裁减系统的想法。

可惜那个时候我还没有听说过有LFS和Debain。

等到我积累了足够的linux知识后,我开始制作这样一个小系统。

制作这样一个小系统最大的意义在于,你可以通过制作系统了解linux的启动过程,学会ramdisk的使用,让你在短时间内学到更多的linux知识。

当然,你会得到很大的乐趣。

这个项目只是做一个具有基本特征的linux系统,如果你想自己做一个具有完整功能的linux,请阅读Linux From Scratch (LFS)文档。

三,什么人适合读这篇文档如果你是一个linux爱好者,并且很想了解linux的启动过程和系统的基本结构,而且是一个喜欢动手研究小玩意的人,那么这个文档可以满足你的需求。

构建嵌入式Linux的根文件系统的busybox方法

构建嵌入式Linux的根文件系统的busybox方法
本系统中, 构建嵌入式 L u 根文件 系统的硬件平 台 ix n 上主要 的芯 片有:321 r9微 控制 器、4 d m sc40 a m 6M sa 、 r 主机是 P , C 其操作系统是 db n ei .目标板是基于 ¥C40 a 321
中, 内核在启动期间进行的最后操作之一就是安装根文件
统 所 必 需 的 其他 一 些 脚 本 文 件 的 编 写 方 法.
关 键 词 : 文 件 系统 ; u, o ; 入 式 系统 根 b sb x 嵌 y
中 图分 类 号 : P3 6 T 1
文献 标 识 码 :A
嵌入式 L u 操作系统 越来越受到重视 , ix n 应用也越 其他操作系统资源都可共享, 这对于资源 比较紧张的系统
系统 .
B s o 是构建嵌入式 L u 根文件系统的软件 , uy x b ix n 用 6M ada 等.系统采用了宿主机加 目标板的模式, 4 nnfs lh 宿
它制作根文件系统简单, , 方便 而且设置灵活. 本文将重点
介绍如何用 B s o 来制作根文件系统. u bx y
其中, p目录需要设置 scy #h o 77tp t m tk 位, cmd17 , i m
际应用过程中通过不 同的符号链接来确定到底要执行 哪 这样所有的用户都对 tp m 可读可写 , 却只有 r t/m 属 o (tp o
个操作.例如最终生成的可执行文件为 bs o, uy x当为它建 主) b 能删除或移动它.
立一个符号 链接l s 候, 的时 就可以 通过执行这个新命令实 目录 hm , t n, o均是可选的, o eo , t ot pm r 如果该根文件系 现列 目录的功能. 采用单一执行文件的方式可以最大限度 统要支持多用户, 还需要J/oe目录.由于使用 dv , J hm  ̄ es所 f

vmlinux生成流程

vmlinux生成流程

vmlinux生成流程vmlinux是Linux内核的可执行文件,它是内核源代码经过编译、链接等一系列处理后生成的。

下面我们将详细介绍vmlinux生成的流程。

1. 内核源代码编译vmlinux的生成过程首先需要对Linux内核的源代码进行编译。

编译器将源代码翻译成机器可以执行的目标代码,生成一系列的中间文件。

在编译过程中,需要注意选择合适的编译选项,以及处理一些与平台相关的代码。

2. 汇编代码生成在编译过程中,还会生成一些汇编代码。

汇编代码是与机器硬件直接相关的代码,它负责处理底层的硬件操作。

汇编代码一般保存在以".S"为后缀的文件中。

3. 链接过程编译完源代码和汇编代码后,需要进行链接操作。

链接器将各个模块的目标代码组合在一起,解析符号引用,生成最终的可执行文件。

在链接过程中,还需要处理一些与库相关的操作,如动态链接库和静态链接库的链接。

4. 符号表生成在链接过程中,还会生成符号表。

符号表是一个记录了各个符号(函数、变量等)地址和大小的表格,它有助于调试和动态加载等操作。

符号表一般保存在可执行文件的调试信息中。

5. 优化处理在生成vmlinux的过程中,还需要进行一些优化处理。

优化处理旨在提高代码的执行效率,减少资源占用。

优化处理涉及到很多技术,如代码折叠、循环展开、指令调度等。

6. 生成vmlinux经过以上的编译、汇编、链接和优化处理,最终可以生成vmlinux文件。

vmlinux是一个可执行的二进制文件,它包含了Linux内核的所有代码和数据。

vmlinux可以被直接加载到内存中执行,成为一个运行的操作系统。

总结:vmlinux的生成过程经历了源代码编译、汇编代码生成、链接过程、符号表生成、优化处理等多个阶段。

通过这些处理,我们可以得到一个完整的可执行的Linux内核文件。

vmlinux的生成过程是复杂而严谨的,需要编译器、链接器等工具的支持,同时也需要开发人员对内核源代码和底层硬件有深入的理解。

initramfs 生成过程

initramfs 生成过程

initramfs 生成过程initramfs 是一个用于引导 Linux 系统的初始内存文件系统。

它包含了用于引导过程中所需的关键文件和工具,例如驱动程序、文件系统工具等。

initramfs 的生成过程可以分为几个关键步骤。

首先,生成 initramfs 的过程通常是由操作系统安装程序或者更新程序自动完成的。

在安装或更新 Linux 内核时,系统会自动构建 initramfs。

但是,如果需要手动生成 initramfs,可以通过以下步骤完成:1. 收集必要的文件和工具,生成 initramfs 首先需要收集引导过程中所需的文件和工具,包括设备驱动程序、文件系统工具、初始化脚本等。

这些文件通常位于系统的 /lib 目录下。

2. 创建临时目录,在生成 initramfs 的过程中,需要创建一个临时目录来存放生成的文件系统内容。

3. 打包文件系统,将收集到的文件和工具打包成一个 cpio 归档文件。

这个归档文件将会成为 initramfs 的内容。

4. 压缩归档文件,对生成的 cpio 归档文件进行压缩,通常使用 gzip 或者 xz 等压缩工具进行压缩,以减小 initramfs 的体积。

5. 将压缩后的归档文件重命名为 initramfs 文件,生成的压缩归档文件需要被重命名为 initramfs 文件,并放置在系统的/boot 目录下。

需要注意的是,生成 initramfs 的具体步骤可能会因不同的Linux 发行版而有所差异,例如使用不同的打包工具或压缩工具。

因此,在手动生成 initramfs 时,最好参考所使用 Linux 发行版的官方文档或者社区指南,以确保按照正确的步骤进行操作。

总的来说,生成 initramfs 的过程涉及到文件收集、打包、压缩和命名等步骤,最终生成的 initramfs 文件将会包含引导 Linux 系统所需的关键文件和工具,以确保系统能够成功引导到正常运行状态。

vmlinux生成流程

vmlinux生成流程

vmlinux生成流程vmlinux是Linux内核的可执行文件,它包含了全部的内核代码和数据。

在编译过程中,一系列的工具和步骤是必需的来生成vmlinux。

下面我将详细介绍vmlinux生成的流程。

1.运行配置脚本:首先,在编译内核之前,我们需要为当前的目标平台运行配置脚本。

这个脚本根据目标平台的特性和需求来设置编译器选项、模块、硬件支持等。

2.构建Makefile:配置脚本完成后,我们需要用一个叫做Makefile的文件来描述整个编译过程。

Makefile中包含了编译内核所需的指令和依赖关系。

3.编译内核源代码:接下来,使用Makefile来编译内核源代码。

在编译过程中,所有的C代码将被编译成汇编代码,然后再将汇编代码转换为目标平台的机器代码。

在这个过程中,编译器会进行代码优化,并生成中间文件。

4.链接内核目标文件:一旦所有的内核源代码都被编译完毕,下一步是将这些目标文件链接成一个可执行文件。

这个过程将会把所有的模块和函数库以及其他必要的文件进行连接。

5.生成vmlinux:链接过程完成后,将会生成vmlinux文件。

vmlinux是一个非常庞大的文件,它包含了整个内核的代码和数据。

需要注意的是,生成的vmlinux并不是一个可以直接在硬件上运行的文件。

它是一个供调试和运行时跟踪的文件,因为vmlinux中包含了很多符号和调试相关的信息。

要将vmlinux文件转换为可以在硬件上运行的内核镜像,还需要进行一些额外的步骤。

6.生成内核镜像:将vmlinux文件转换为可以在硬件上运行的内核镜像的过程称为镜像化。

这个过程包括压缩、转换格式、添加头部等操作,其目的是将vmlinux文件转化为可以被引导加载器和硬件识别的文件格式。

最常见的格式是bzImage和uImage。

7.安装内核:将生成的内核镜像安装到目标系统中。

这通常包括将内核镜像复制到引导分区或存储设备的指定位置,并修改引导加载器的配置文件以引导新内核。

Linux操作系统的编译和安装

Linux操作系统的编译和安装

Linux操作系统的编译和安装在正文规定的字数限制下,为了准确满足标题描述的内容需求,并确保内容排版整洁美观、语句通顺、全文表达流畅且无影响阅读体验的问题,本文将按照以下格式进行写作:一、简介Linux操作系统是一种开源的、自由的Unix-like操作系统,它广泛应用于各种领域,包括服务器、嵌入式设备等。

本文将重点介绍Linux 操作系统的编译和安装过程。

二、编译准备1. 下载源代码在编译Linux操作系统之前,首先需要从官方网站下载Linux内核的源代码包。

2. 安装必要的依赖软件在编译过程中,需要安装一些必要的软件和工具,如编译器、构建工具等。

三、编译步骤1. 解压源代码包使用解压命令将下载的源代码包解压到指定目录。

2. 配置编译选项进入源代码目录,并运行配置命令,根据需要选择不同的编译选项。

3. 执行编译命令运行编译命令开始编译操作系统内核,这个过程可能需要一段时间。

四、安装步骤1. 安装编译生成的内核镜像文件将编译生成的内核镜像文件复制到合适的位置,并修改相关配置文件以引导新编译的内核。

2. 安装相关系统文件运行安装命令,将其他必要的系统文件复制到适当的位置。

五、系统配置1. 修改引导加载程序根据系统的引导加载程序,如GRUB、LILO等,修改引导配置文件以支持新安装的内核。

2. 配置网络和驱动程序根据具体需求,配置网络设置和硬件驱动程序。

六、测试与验证1. 重新启动系统重新启动计算机,并选择新编译的内核进行引导。

2. 验证系统版本和功能运行相应的命令,验证新安装的Linux操作系统版本和功能是否正确。

七、常见问题解决1. 编译错误分析编译过程中出现的错误信息,根据错误提示进行逐步修复。

2. 硬件兼容性问题部分硬件设备可能需要额外的驱动程序或补丁文件才能正常运行,根据具体情况进行相应的处理。

八、总结通过本文的介绍,读者可以了解到Linux操作系统的编译和安装过程,同时了解到在实际操作中会遇到的一些常见问题及解决方法。

linux创建文件系统的步骤。

linux创建文件系统的步骤。

linux创建文件系统的步骤
1. 确认磁盘分区:使用fdisk或parted等工具对磁盘进行分区,确保分区正确。

2. 格式化分区:使用mkfs命令对分区进行格式化,例如:mkfs.ext4 /dev/sda1。

3. 挂载分区:使用mount命令将分区挂载到指定的挂载点上,例如:mount /dev/sda1 /mnt。

4. 配置/etc/fstab文件:将分区的挂载信息添加到/etc/fstab 文件中,以便系统在启动时自动挂载。

5. 设置权限:使用chmod和chown命令设置文件系统的权限和所有者。

6. 创建目录:使用mkdir命令创建需要的目录。

7. 配置文件系统:根据需要,可以使用tune2fs等工具对文件系统进行配置,例如:tune2fs -c 10 /dev/sda1,表示每10次挂载后进行一次文件系统检查。

8. 测试文件系统:使用df和du等命令检查文件系统的使用情况,确保文件系统正常工作。

lfs linux文件系统 搭建教程

lfs linux文件系统 搭建教程

磁盘分区:输入命令:代码:cfdisk将出现分区界面这里可以按照你自己的需要的分区,这里我按照设置一个根分区和一个交换分区为例,交换分区占用512M,其余的全部分给根分区。

磁盘分区作用/dev/sda1swap/dev/sda2作为目标系统根目录保存退出后进行磁盘分区的格式化代码:mkswap /dev/sda1mkfs.xfs /dev/sda2相关知识点:磁盘格式化一定要在磁盘分区未进行加载前进行。

mkswap是用于将磁盘分区格式化为交换分区的命令。

这里我将/dev/sda2格式化了为Xfs格式,如果你喜欢其它格式的文件系统,你可以使用相应的命令来格式化。

注意:这里要根据实际情况建立和设置分区,如果你不太清楚这个问题,请先不要开始,否则可能造成难以恢复的损失!(这里只是根据VMWare里面的情况做的例子,在VMWare中相对安全些,建议初学者在虚拟机中开始。

)如果你的内存不太大,想在编译期间就使用上交换分区的话,可使用下面的命令激活交换分区swapon /dev/sda1相关知识点:swapon用于激活交换分区swapoff用于将激活的交换分区停用可以通过free命令来查看当前的内存使用情况创建LFS的“创作基地”代码:export LFS=/mnt/lfsmkdir -pv $LFS相关知识点:export LFS=/mnt/lfs这条命令的作用是为了后面引用“创作基地”的绝对路径方便而设置LFS这样的环境变量。

加载/dev/sda2到“创作基地”代码:mount /dev/sda2 $LFS创建必要的目录并设置属性创建源代码编译用目录代码:mkdir -v $LFS/sourceschmod -v a+wt $LFS/sources相关知识点:chmoda+wt是将目录或文件的属性设置为777,这样任何人都可以对其进行读写。

创建工具链目录代码:mkdir -v $LFS/toolsln -sv $LFS/tools /相关知识点:上面这两句就建立了神奇的工具链目录(是工具链目录不是工具链),这样的创建方式是为了在创建工具链和使用工具链创建目标系统的时候对于工具链的位置都是/tools,这样可保证工具链的正常使用创建lfs用户代码:groupaddlfsuseradd -s /bin/bash -g lfs -m -k /dev/null lfs设置lfs密码,设置为空就行了,也就是输入密码的时候直接回车就成。

第二章-linux文件系统PPT

第二章-linux文件系统PPT

在Linux系统中主要根据文件头信息来判断文件类型,Linux系统的文件类型
有:
•普通文件
文本文件内容可以直接读取,一般都是字母、 数字以及一些符号等。可以使用cat、vi命令直
•纯文本文件
接查看文件内容。
•目录文件
通常访问的文件,由ls –l命令显示出
•设备文件
来的属性中,第一个属性为 “-”
2.3 文件操作命令 显示文件内容命令 显示目录内容及更改目录命令 建立、删除文件命令 建立、删除目录命令 复制、移动命令 压缩备份命令 权限管理命令 Linux文件查找命令
Linux文件结构
•文件结构是文件存放在磁盘等存贮设备上的组织方法。主要体现在对文件和 目录的组织上。目录提供了管理文件的一个方便而有效的途径。 •Linux采用的是树型结构。最上层是根目录,其他的所有目录都是从根目录 出发而生成的。无论操作系统管理几个磁盘分区,这样的目录树只有一个。
Linux主要文件类型
选项:cat命令中的常用选项如下
选项 -n 或 – number
-b
-s
作用
由1开始对所有输出的行数编号
和-n 相似,只不过对于空白行不编号 当遇到有连续两行以上的空白行,就代换为
一行的空白行
显示文件内容命令
2. cat命令
例:查看/etc/network/interfaces文件内容,并对 所有输出行编号
建立、删除文件命令 例:在工作目录下,建立一个名为c-language的子目录
建立、删除文件命令
2. rmdir 命令
功能描述:删除空目录 语法:rmdir [选项] [目录名] 选项: -p :当子目录被删除后其父目录为空目录时,
也一同被删除

NUC97XLinuxyaffs2根文件系统制作

NUC97XLinuxyaffs2根文件系统制作

NUC97XLinuxyaffs2根文件系统制作NUC97X Linux yaffs2 根文件系统制作ARM kernrl文件系统中只有一个根文件系统,根文件系统被加载后,还可以再挂载其它文件系统,互不影响。

比如可以在Nandflash,SPI, EMMC,SD,U盘等每个存储模块上挂载不同的文件系统。

每个存储部件又可以具体分为许多块,就像电脑里分成许多盘。

不同部件甚至不同的块也可以有不同的文件系统。

挂载根文件系统后,如果要继续在其它存储部件或不同的块上挂载其它文件系统,可以使用mount命令来实现。

不同的块要被文件系统识别,可以要么在kernel环境下,使用命令把它变成所需要的某种文件格式的块。

也可以使用工具把你要烧录的文件夹,其中可以为空文件做成文件系统可识别的镜像烧到存储区域。

Kernel中默认就有根文件系统,但该文件系统操作的区域为RAM 中,如创建或修改文件,掉电或复位后文件和数据即丢失。

因此要制作能挂载在flash等存储部件的根文件系统,指定具体存储部件和存储位置,以便在ARM平台上运行的kernel能识别系统文件,同事能够保存和同步文件和数据。

制作根文件系统是制作ARM平台的文件系统,而不是制作PC端linux平台的根文件系统。

根文件系统制作过程,参考:Linux BSP\nuc970bsp-release-20161108\Documents\ChineseNUC970 Linux 快速入门.pdf 3.8章节,5.3.1 基本系統設置章节,5.3.4 文件系統設置章节。

開機命令設置–以RAM為根文件系統的設定開機命令設置–以SPI Flash JFFS2文件系統為根文件系統的設定開機命令設置–以NAND Flash YAFFS2文件系統為根文件系統的設定開機命令設置–以NAND Flash UBIFS文件系統為根文件系統的設定開機命令設置–以NFS文件系統為根文件系統的設定開機命令設置–以NAND Flash YAFFS2文件系統為根文件系統的設定介绍一.1.NAND flash的设置使能MTD 的“Caching block device access to MTD devices Device drivers”驅動中的基本設置如果需要由U-boot環境變數傳入就必須將”Command line partition table parsing”選上, 否則會使用驅動程式裡的默認配置, 这里要把该项禁止。

Linux下根文件系统的制作

Linux下根文件系统的制作

3 Ca f 文件 系统 的制 作 rm s
制 作 Ca f rms文件 系统 至 少包 括 如 下 的 Li x
Ke r s o tf e; mb d e iu y wo d :ro l e e d d l x; u y o i n B sb x
1 引 言
嵌 入 式 Ln x系统 一 般 由包 括 引 导加 载程 序 、 Ln x内核 、 iu iu
如 果 在 / os e 目 录 下 没 有 cno ul 则 需 要 用 r t/ v o fd o sl nl, e
ss m i i go prt n hc r ie r eecs o s , a s n te s i r l ss ms sd yt odoea o , i p vds e rne rf 2 yf do r i l e yt e e sn i w h o f f js a h m a f e u i
Absr c :Thi p r p e e t g n r l tps o m b dd d o t fl i a s wih ta t s pa e r s ns e e a se fe e e r o e usng Cr mf t Bus b x i e al i y o n d t i.Ma Cr mf l ke a sfe i
mko nd命 令创 建 ,否 则 会 出错 。
文件系统 、应用程序 4部 分组 成 [ 1 1 。根文件 系统作 为其 中的一 个重要组成部 分 ,是 内核启 动时加载 的第一 个文件 系统 ,主 要是为 内核 的启 动提供各种 工具软件 、库文 件 、脚本 、配 置
文 件 等 并 可 以作 为 存 储 读 写 数 据 的 区 域 。 因 此 ,对 于 资 源 十 分 有 限 的嵌 入 式 系 统 ,制 作 的 文 件 系 统 精 简 实 用 是 非 常 必 要 的 。 一 般 的做 法 是 将 所 需 要 的 所 有 文 件 手 动 复 制 到 一 个 目 录

Linux命令高级技巧使用mkfs命令创建文件系统

Linux命令高级技巧使用mkfs命令创建文件系统

Linux命令高级技巧使用mkfs命令创建文件系统在Linux系统中,使用mkfs命令可以创建文件系统。

mkfs命令提供了各种选项和参数,可以根据需要对文件系统进行设置和配置。

本文将介绍一些高级技巧,帮助你更好地使用mkfs命令创建文件系统。

1. 使用mkfs命令创建ext4文件系统ext4是目前较为常用的文件系统类型,在Linux系统中默认使用。

使用mkfs命令创建ext4文件系统的基本语法如下:```mkfs.ext4 [选项] 设备名```其中,选项可以包括以下内容:- `-b`:指定块的大小。

- `-i`:指定inode的间隔大小。

- `-L`:指定文件系统的标签。

- `-m`:指定保留块的比例。

例如,下面的命令使用mkfs.ext4创建了一个名为data的ext4文件系统:```mkfs.ext4 -L data /dev/sdb1```2. 使用mkfs命令创建其他文件系统除了ext4文件系统,mkfs命令还支持创建其他类型的文件系统,如ext3、ext2、XFS等。

使用mkfs命令创建其他文件系统的语法与创建ext4文件系统类似,只需将命令替换为对应的文件系统类型即可。

例如,下面的命令使用mkfs.ext3创建了一个名为data的ext3文件系统:```mkfs.ext3 -L data /dev/sdb1```3. 使用mkfs命令创建SWAP分区SWAP分区用于作为物理内存的扩展,对于内存较小的系统来说非常重要。

使用mkfs命令创建SWAP分区的基本语法如下:```mkswap [选项] 设备名```其中,选项可以包括以下内容:- `-c`:检查设备上的不良扇区。

- `-f`:强制创建SWAP分区。

例如,下面的命令使用mkswap创建了一个名为swapfile的SWAP 分区:```mkswap -f /dev/sdb2```4. 使用mkfs命令创建FAT文件系统FAT文件系统是一种通用的文件系统格式,可在几乎所有操作系统和设备上使用。

自己动手制作简单的linux

自己动手制作简单的linux

Linux操作系统已成为当今服务器操作系统的主力了,也有越来越多的同志们对linux 感性趣了,当然我也不例外,linux的功能很多很强大,但是对于不同的需求可能不需要那么完整的功能,同时linux很灵活,可以选择性的去定制适合需求的linux操作系统,那么今天我们就来自己定制一个小的linux操作系统来练练手。

自己DIY linux操作系统之前,你需要对linux操作系统有所理解并能熟练的使用,网上有很多关于linux的书籍及视频,可以去学习。

一、准备工作:a.理论基础b.软硬件平台1.理论基础a.linux 的启动流程,这是必须要了解的,因为我们是按照启动流程来模拟定制操作系统的,启动流程分几步:1.加在BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备2.读取并执行第一个启动设备内的MBR的boot Loader(grub,spfdisk等程序,很重要)3.依据boot loader的设置加载Kernel,Kernel会开始检测硬件和加载驱动(内核是可以自己定制的,后面会讲到)4.在硬件驱动加载成功后,Kernel会主动去调用init进程,而init会获取run-level信息5.init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(我们可以选择性的将想要的功能实现添加进这个脚本里)6.init执行run-level的各个服务的启动(脚本形式)7.init执行/etc/rc.d/rc.loacl文件(里面包含了一下用户自定义的开机启动项,类似windows)8.init执行终端机模拟程序mingetty来启动login进程,最后就等待用户启动启动流程就是这样,但是我们自己定制的操作系统可能没有这么强大所以并不是每个流程都会经过,可以后期随着自己的能力的增强去自己修改b.要懂得如何去看脚本和编写脚本,这是必须的,不然后续的任务无法完成2.软硬件平台a.软件平台:你需要有一个完整的linux镜像,我们要模仿着做官方的操作系统做,我用的是rhel-server-5.4-i386-dvd.iso,网上可以下载的到,当然因为我的硬件有限,我使用的是虚拟机(vm)来完成各项操作b.因为有了虚拟机,所以不用太考虑硬件的。

Linux实验4-Linux文件系统-目录和文件管理

Linux实验4-Linux文件系统-目录和文件管理

实验报告课程名称: Linux操作系统实验名称:实验4、Linux文件系统-目录和文件管理学生姓名:班级学号学院(系):指导教师:实验时间:年月日实验成绩:实验四、Linux文件系统-目录和文件管理一、实验要求(1)掌握目录和文件管理的操作命令;(2)掌握文件权限的修改方法。

(3)掌握文件链接的方法。

二、实验内容和实验步骤【操作要求1】查看Linux系统常见的目录。

【操作步骤】输入命令:ls,查看Linux系统常见的目录,截图如下:【操作要求2】显示当前目录下文件类型。

【操作步骤】输入命令:ls –l|more,截图如下:说明:●“-”:表示普通文件●“d”:表示目录文件●“c”:表示字符设备文件●“b”:表示块设备文件●“l”:表示符号链接文件【操作要求3】查看当前目录下所有文件类型【操作步骤】输入命令:file *,截图如下:【操作要求4】先创建两个新目录dir1和dir2,然后将dir2目录移到dir1目录中,最后删除dir2目录。

【操作步骤】(1)以普通用户user登陆字符界面,输入命令:pwd,当前目录为用户的主目录:/home/user。

(2)输入命令:ls –l,查看当前目录中的所有文件。

(3)创建两个目录,输入命令:mkdir dir{1,2}。

(4)输入命令:ls –l,确认两个目录创建成功。

以上4个步骤截图如下:(5)输入命令:mv dir2 dir1,将dir2目录移动到dir1目录。

(6)输入命令:cd dir1,切换dir1目录,再输入:ls命令,查看到dir2目录。

截图如下:(7)删除dir2目录,输入命令:rm –rf dir2。

【操作要求5】查找profile文件。

【操作步骤】(1)切换用户为超级用户,输入命令:su -,并输入密码。

(2)输入命令:find /etc -name profile, 截图如下:(3) 使用exit命令,退出超级用户身份。

【操作要求6】将/etc/profile文件中所有包含“HOSTNAME”的行存入f4文件,并修改f4文件的权限,让所有用户都可以读写。

如何在Linux终端中创建文件和文件夹

如何在Linux终端中创建文件和文件夹

如何在Linux终端中创建文件和文件夹在Linux终端中创建文件和文件夹是使用Linux操作系统的基础知识之一。

无论是新手还是有一定经验的用户,都需要熟悉如何在Linux终端中进行文件和文件夹的创建,以便更好地管理和组织自己的工作环境。

本文将向读者介绍如何在Linux终端中创建文件和文件夹,以及一些相关的常用命令和技巧。

一、创建文件在Linux终端中,使用命令行创建文件非常简单。

可以使用touch命令来创建一个新的文件。

例如,要创建一个名为example.txt的文件,只需在终端中输入以下命令:touch example.txt这将在当前目录下创建一个名为example.txt的空文件。

如果想要在指定的目录下创建文件,只需在命令后面添加目录的路径即可。

例如,要在/home/user/Documents/目录下创建一个名为example.txt的文件,可以使用以下命令:touch /home/user/Documents/example.txt除了使用touch命令外,还可以使用文本编辑器来创建文件。

常用的文本编辑器包括vi、nano和gedit等。

如果已经安装了这些编辑器,可以使用以下命令之一来创建并打开一个新的文件:vi example.txtnano example.txtgedit example.txt二、创建文件夹在Linux终端中,使用命令行创建文件夹同样很简单。

可以使用mkdir命令来创建一个新的文件夹。

例如,要在当前目录下创建一个名为myfolder的文件夹,只需在终端中输入以下命令:mkdir myfolder这将在当前目录下创建一个名为myfolder的文件夹。

如果想要在指定的目录下创建文件夹,只需在命令后面添加目录的路径即可。

例如,要在/home/user/Documents/目录下创建一个名为myfolder的文件夹,可以使用以下命令:mkdir /home/user/Documents/myfolder三、常用的文件和文件夹创建命令除了touch和mkdir命令外,还有一些其他常用的文件和文件夹创建命令。

linux-2.6.21内核中建立jffs2文件系统(mtd分区的使用)

linux-2.6.21内核中建立jffs2文件系统(mtd分区的使用)

修改Makefile如下:
CC=arm-linux-gcc
LDSHARED=arm-linux-ld -shared
$ make all
$ make install
注意:这里是安装在/usr/local/arm/3.4.1/arm-linux目录下
由于交叉编译mtd工具时需要zlib.h文件,所以在编译之前先安装zlib库文件。
[ ] Debugging
<*> MTD concatenating support
[*] MTD partitioning support
< > RedBoot partition table parsing
[*] Command line partition table parsing
# flash_erase /dev/mtd1
制作jffs2映像
# cd /var/tmp
Hale Waihona Puke # mkdir jffs2 (jffs2下的目录可以任意建)
# mkfs.jffs2 –d jffs2/ -o jffs2.img
# cp /var/tmp/jffs2/jffs2.img /dev/mtdblock1
a.通过nand编程器烧写镜像文件到nand flash芯片然后再焊接到pcb.
b.挂载nfs文件系统,使用nandwrite工具写镜像文件
到mtd设备。
第一种适合生产时使用,而我们测试时候比较适合使用第二种方式。
挂载nfs文件系统:
nandwrite –o /dev/mtd1 target.jffs2
Miscellaneous filesystems
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux文件系统制作流程关键词:ARM Linux yaffs 文件系统移植Linux 文件系统简介Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。

Linux下的文件系统结构如下:Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。

之后可以自动或手动挂载其他的文件系统。

因此,一个系统中可以同时存在不同的文件系统。

不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。

在嵌入式Linux应用中,主要的存储设备为RAM(DRAM,SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。

>基于FLASH的文件系统Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。

Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。

闪存主要有NOR和NAND两种技术(简单比较见附录)。

Flash存储器的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。

因此,必须针对Flash 的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件系统会有诸多弊端。

在嵌入式Linux下,MTD(Memory Technology Device,存储技术设备)为底层硬件(闪存)和上层(文件系统)之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的(参见上面的Linux下的文件系统结构图)。

使用MTD驱动程序的主要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而设计的,因而它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。

顺便一提,一块Flash芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块Flash芯片也可以合并为一个分区使用,采用一个文件系统。

即文件系统是针对于存储器分区而言的,而非存储芯片。

1. jffs2JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。

JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux, uCLinux中。

Jffs2: 日志闪存文件系统版本2 (Journalling Flash FileSystem v2)主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。

缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。

目前jffs3正在开发中。

关于jffs系列文件系统的使用详细文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt。

jffsx不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件结构,对于大容量的NAND闪存会耗费大量时间。

2. yaffsyaffs/yaffs2是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。

与jffs2相比,它减少了一些功能(例如不支持数据压缩),所以速度更快,挂载时间很短,对内存的占用较小。

另外,它还是跨平台的文件系统,除了Linux 和eCos,还支持WinCE, pSOS和ThreadX等。

yaffs/yaffs2自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件系统操作。

当然,yaffs也可与MTD驱动程序配合使用。

yaffs与yaffs2的主要区别在于,前者仅支持小页(512 Bytes) NAND闪存,后者则可支持大页(2KB) NAND闪存。

同时,yaffs2在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。

3. CramfsCramfs是Linux的创始人 Linus Torvalds参与开发的一种只读的压缩文件系统。

它也基于MTD驱动程序。

在cramfs文件系统中,每一页(4KB)被单独压缩,可以随机页访问,其压缩比高达2:1,为嵌入式系统节省大量的Flash存储空间,使系统可通过更低容量的FLASH存储相同的文件,从而降低系统成本。

Cramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有的应用程序要求被拷到RAM里去运行,但这并不代表比Ramfs需求的RAM空间要大一点,因为Cramfs是采用分页压缩的方式存放档案,在读取档案时,不会一下子就耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时,Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。

另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。

由于以上特性,Cramfs在嵌入式系统中应用广泛。

但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩充。

Cramfs映像通常是放在Flash中,但是也能放在别的文件系统里,使用loopback 设备可以把它安装别的文件系统里。

4. Romfs传统型的Romfs文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以XIP(eXecute In Place,片内运行)方式运行,在系统运行时,节省RAM空间。

uClinux系统通常采用Romfs 文件系统。

其他文件系统:fat/fat32也可用于实际嵌入式系统的扩展存储器(例如PDA, Smartphone, 数码相机等的SD卡),这主要是为了更好的与最流行的Windows桌面操作系统相兼容。

ext2也可以作为嵌入式Linux的文件系统,不过将它用于FLASH闪存会有诸多弊端。

>基于RAM的文件系统1. RamdiskRamdisk是将一部分固定大小的内存当作分区来使用。

它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。

将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过Ramdisk放在内存中,可以明显地提高系统的性能。

在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。

2. ramfs/tmpfsRamfs是Linus Torvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。

(实际上,VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。

)Ramfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如/tmp 和/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读写速度。

Ramfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:不能格式化,文件系统大小可随所含文件内容大小变化。

Tmpfs的一个缺点是当系统重新引导时会丢失所有数据。

3.网络文件系统NFS (Network File System)NFS是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。

在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。

以上讨论的都是基于存储设备的文件系统(memory-based file system),它们都可用作Linux的根文件系统。

实际上,Linux还支持逻辑的或伪文件系统(logical or pseudo file system),例如procfs(proc文件系统),用于获取系统信息,以及devfs(设备文件系统)和sysfs,用于维护设备文件。

开发环境操作系统:Ubuntu 10.4(linux kernel-v2.6.31)移植Linux内核版本:2.6.30交叉编译工具:arm-linux-gcc 4.3.2文件系统制作工具:Busybox-1.16.1下载Busybox-1.16.1Busybox-1.16.1的下载地址:/配置Busybox1.创建制作文件系统的根目录在提示符后输入:/opt# mkdir rootfs2.解压busybox-1.16.1进入存放busybox-1.16.1压缩包文件的目录,在提示符后输入:/opt# tar jxvf busybox-1.16.1.tar.ba23.进入busybox-1.16.1根目录,修改Makefile,修改ARCH 和CROSS_COMPILE两变量的值ARCH ?= armCROSS_COMPILE ?= arm-linux-4.通过busybox的配置菜单配置制作的文件系统在提示符后输入:/opt/ busybox-1.16.1# make menuconfig系统将弹出配置菜单,通过菜单选择需要的选项,如图1所示:图 1以下选项必须选择:Busybox Setting----->build option-->[ ] Build BusyBox as a static binary (no shared libs)[ ] Build BusyBox as a position independent executable (NEW) [ ] Force NOMMU build[ ] Build shared libbusybox[*] Produce a binary for each applet, linked against libbusybox[*] Produce additional busybox binary linked against libbusybox[ ] Build with Large File Support (for accessing files > 2 GB) () Cross Compiler prefix() Additional CFLAGSBusybox Setting----->installation option-->[*] Don't use/usrApplets links (as soft-links)--->(/opt/rootfs) BusyBox installation prefix (该项输入编译安装路径,在此输入rootfs文件路径)Busybox Library Tuning --->MD5: Trade Bytes for Speed[*] Faster /proc scanning code (+100bytes)[*] Support for /etc/networks [*] Support for /etc/networks[*] Additional editing keys[*] vi-style line editing commands[*] History saving[*] Tab completion[*] Username completion[*] Fancy shell prompts若出现如图2所示的错误:图 2请安装有关编译程序。

相关文档
最新文档