×

根文件系统制作原理

根文件系统制作原理(根文件系统的功能)

admin admin 发表于2023-04-03 10:39:09 浏览77 评论0

抢沙发发表评论

本文目录一览:

什么是根文件系统

简单的来说,根文件系统就是一种目录结构,那么根文件系统和普通的文件系统有什么区别呢?我认为根文件系统就是要包括Linux启动时所 必须的目录和关键性的文件,例如Linux启动时都需要有init目录下的相关文件,在Linux挂载分区时Linux一定会找/etc/fstab这个 挂载文件等,根文件系统中还包括了许多的应用程序bin目录等,任何包括这些Linux系统启动所必须的文件都可以成为根文件系统。

Linux根文件系统详解

Linux的文件和目录组织是一个单根的倒置的树状结构,文件系统从根目录下开始,用"/"表示,我们也可称为根文件系统(rootfs),这样的根文件系统,有以下特性:

(1) 文件名称区分大小写

(2) 以.开头的文件为隐藏文件

(3) 以/作为路径分隔符

在Linux各大发行版中它们的文件和目录组织其实是遵循FHS(Filesystem Hierarchy Standard)标准,FHS定义了系统中每个目录的用途。FHS有2层规范,第一层里定义了/下的各个目录应该要放什么数据。第2层则是针对/usr及/var这2个目录的子目录来定义。最新版本FHS2.3,大致内容如下表所示:-根文件系统制作原理

各大发行版除了遵循基本的LFS之外,也可以追加自己的目录结构,形成自己的风格;例如:在Ubuntu中网卡配置文件是存放在/etc/network/目录下,CentOS是在/etc/sysconfig/network-scripts/目录下。CentOS系统一些重要的目录及其基本用途如下图所示:-根文件系统制作原理

CentOS7之后bin,lib,lib64,sbin合并到/usr/bin,/usr/lib/,/usr/lib64,/usr/sbin里了。

如何制作Linux根文件系统

根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分,也可以认为是嵌入式Linux系统区别于其他一些传统嵌入式操作系统的重要特征,它给Linux带来了许多强大和灵活的功能,同时也带来了一些复杂性。我们需要清楚的了解根文件系统的基本结构,以及细心的选择所需要的系统库、内核模块和应用程序等,并配置好各种初始化脚本文件,以及选择合适的文件系统类型并把它放到实际的存储设备的合适位置。-根文件系统制作原理

Linux的根文件系统以树型结构组织,包含内核和系统管理所需要的各种文件和程序,一般说来根目录”/”下的顶层目录都有一些比较固定命名和用途。

下面列出了一个Linux根文件系统中的比较常见的目录结构:

/bin 存放二进制可执行命令的目录

该目录下存放所有用户都可以使用的、基本的命令,这些命令在挂接其它文件系统之前就可以使用,所以/bin目录必须和根文件系统在同一个分区中。

/bin目录下常用的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,m knod,[,test等“[”命令其实就是test命令,我们在利用Busybox制作根文件系统时,在生成的bin目录下,可以看到一些可执行的文件,也就是可用的一些命令。-根文件系统制作原理

/dev 存放设备文件的目录

该目录下存放的是设备文件,设备文件是Linux中特有的文件类型,在Linux系统下,以文件的方式访问各种设备,即通过读写某个设备文件操作某个具体硬件。比如通过"dev/ttySAC0"文件可以操作串口0,通过"/dev/mtdblock1"可以访问MTD设备的第2个分区。-根文件系统制作原理

/etc 存放系统管理和配置文件的目录

该目录下存放着各种配置文件,对于PC上的Linux系统,/etc目录下的文件和目录非常多,这些目录文件是可选的,它们依赖于系统中所拥有的应用程序,依赖于这些程序是否需要配置文件。在嵌入式系统中,这些内容可以大为精减。-根文件系统制作原理

/home 用户主目录,比如用户user的主目录就是/home/user,可以用~user表示

用户目录,它是可选的,对于每个普通用户,在/home目录下都有一个以用户名命名的子目录,里面存放用户相关的配置文件。

/lib 存放动态链接共享库的目录

该目录下存放共享库和可加载(驱动程序),共享库用于启动系统。运行根文件系统中的可执行程序,比如:/bin /sbin 目录下的程序。

/sbin存放系统管理员使用的管理程序的目录

该目录下存放系统命令,即只有管理员能够使用的命令,系统命令还可以存放在/usr/sbin,/usr/local/sbin目录下,/sbin目录中存放的是基 本的系统命令,它们用于启动系统,修复系统等,与/bin目录相似,在挂接其他文件系统之前就可以使用/sbin,所以/sbin目录必须和根文件系统在同一个分区中。-根文件系统制作原理

/sbin目录下常用的命令有:shutdown reboot fdisk fsck等,本地用户自己安装的系统命令放在/usr/local/sbin目录下。

/tmp 公用的临时文件存储点

用于存放临时文件,通常是空目录,一些需要生成临时文件的程序用到的/tmp目录下,所以/tmp目录必须存在并可以访问。

/root 系统管理员的主目录

根用户的目录,与此对应,普通用户的目录是/home下的某个子目录。

/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。

用于临时挂载某个文件系统的挂接点,通常是空目录,也可以在里面创建一引起空的子目录,比如/mnt/cdram /mnt/hda1 。用来临时挂载光盘、硬盘。

/proc 虚拟文件系统,可直接访问这个目录来获取系统信息。

这是一个空目录,常作为proc文件系统的挂接点,proc文件系统是个虚拟的文件系统,它没有实际的存储设备,里面的目录,文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件控制系统。

/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。

/usr目录的内容可以存在另一个分区中,在系统启动后再挂接到根文件系统中的/usr目录下。里面存放的是共享、只读的程序和数据,这表明/usr目录下的内容可以在多个主机间共享,这些主要也符合FHS标准的。/usr中的文件应该是只读的,其他主机相关的,可变的文件应该保存在其他目录下,比如/var。/usr目录在嵌入式中可以精减。-根文件系统制作原理

/var 某些大文件的溢出区

与/usr目录相反,/var目录中存放可变的数据,比如spool目录(mail,news),log文件,临时文件。

---------------------------------------------------------------------

一、移植环境:

1、 Ubuntu 10.10发行版

2、 u-boot.bin

3、 目标机:FS_S5PC100平台

4、 交叉编译器 arm-cortex_a8-linux-gnueabi-gcc

---------------------------------------------------------------------

二、移植步骤

1、 源码下载

我们选择的版本是busybox-1.17.3.tar.bz2下载路径为:

2、 解压源码

$ tar xvf busybox-1.17.3.tar.bz2

3、 进入源码目录

$ cd busybox-1.17.3

4、 配置源码

$ make menuconfig

Busybox Settings ---

Build Options ---

[*] Build BusyBox as a static binary (no shared libs)

[ ] Force NOMMU build

[ ] Build with Large File Support (for accessing files 2 GB)

(arm-cortex_a8-linux-gnueabi-) Cross Compiler prefix

() Additional CFLAGS

5、 编译

$ make

6、 安装

busybox默认安装路径为源码目录下的_install

$ make install

7、 进入安装目录下

$ cd _install

$ ls

bin linuxrc sbin usr

8、 创建其他需要的目录

$ mkdir dev etc mnt proc var tmp sys root

9、 添加库

在_install目录下创建一个lib文件夹,将工具链中的库拷贝到lib目录下

$ mkdir lib

$ cp /home/linux/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib/* ./lib/

删除lib下的所有目录、.o文件和.a文件,对库进行瘦身以减小文件系统的大小

$ rm *.o *.a

$ arm-cortex_a8-linux-gnueabi-strip lib/*

10、 添加系统启动文件

在etc下添加文件inittab

$ vim /etc/inittab

文件内容如下:

#this is run first except when booting in single-user mode.

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

# /bin/sh invocations on selected ttys

# Start an "askfirst" shell on the console (whatever that may be)

::askfirst:-/bin/sh

# Stuff to do when restarting the init process

::restart:/sbin/init

# Stuff to do before rebooting

::ctrlaltdel:/sbin/reboot

在etc下添加文件fstab

$ vim /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

这里我们挂在的文件系统有三个proc、sysfs和tmpfs,在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,我们需要添加tmpfs的支持

修改内核配置:

$ make menuconfigFile systems ---

Pseudo filesystems ---

[*] Virtual memory file system support (former shm fs)

[*] Tmpfs POSIX Access Control Lists

重新编译内核

$ make zImage

在etc下创建init.d目录,并在init.d下创建rcS文件

$ mkdir /etc/init.d -p

$ vim /etc/init.d/rcS

rcS文件内容为:

#!/bin/sh

# This is the first script called by init process

/bin/mount -a

为rcS添加可执行权限:

$ chmod +x init.d/rcS

在etc下添加profile文件

$ vim /etc/profile

文件内容为:

#!/bin/sh

export HOSTNAME=farsight

export USER=root

export HOME=root

#export PS1="\[\u@\h \W\]\$ "

export PS1="[$USER@$HOSTNAME \W]\# "

PATH=/bin:/sbin:/usr/bin:/usr/sbin

LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH

export PATH LD_LIBRARY_PATH

11、 设备文件创建

根文件系统中有一个设备节点是必须的,在dev下创建console节点

$ mknod dev/console c 5 1

重要:新制作的文件系统尺寸若超出8M,删除不需要的库文件。

Linux内核中有文件系统模块, 那它和根文件系统什么关系哦?

linux内核是linux的真实的操作系统,所有的操作系统的相关功能都是由用户接口程序传递到内核由内核来完成的。

linux文件系统是指linux操作系统对整个系统中的所有的数据、文件的管理的一种实现方式。

简单点说:像windows它的文件系统是NTFS文件系统或者FAT文件系统,通过这种方式将windows的各种文件保存在磁盘上,用于存储和访问了。

而linux系统则使用ext这种文件系统来实现。

linux image是什么东西啊

分类: 电脑/网络 软件

问题描述:

最近学linux

看不懂这东东

解析:

是 Linux 启动盘的映象文件吧,就象 DOS 下 HD-COPY 一下软盘,产生的一个以 .IMG 为结尾的文件吧,展开来后就是一个软盘。

因为启动盘的0磁道上的信息不能够直接拷贝,所以一般要做成映象文件以利于复制和传递。

--------

14.1.1集成盘制作原理

通常我们使用软盘启动Linux 0.11系统时需要两张盘(这里“盘”均指对应软盘的Image文件):一张是内核引导启动盘,一张是基本的根文件系统盘。这样必须使用两张盘才能引导启动系统来正常运行一个基本的Linux系统,并且在运行过程中根文件系统盘必须一直保持在软盘驱动器中。而我们这里描述的集成盘是指把内核引导启动盘和一个基本的根文件系统盘的内容合成制作在一张盘上。这样我们使用一张集成盘就能引导启动Linux 0.11系统到命令提示符状态。集成盘实际上就是一张含有根文件系统的内核引导盘。-根文件系统制作原理