根文件系统

浅谈Linux中的根文件系统

自作多情 提交于 2020-02-26 02:26:30
摘要 Linux中有一个让初学者都不是特别清楚的概念,叫做“根文件系统”。我接触Linux前前后后也好几年了,但是对这个问题,至今也不是特别清楚,至少没法给出一个很全面很到位的解释。于是,我们今天来理一理这个话题。 一、先交代一下文件系统 在开始讨论根文件系统这个话题之前,我们必首先交代一下文件系统这个概念。毕竟,根文件系统只是文件系统中的一种比较特殊的形式而已。根据百度百科: 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统接口,对对象操作和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体来说,他负责为用户建立文件,存入、读取、修改、转储文件、控制文件的存取,当用户不再使用时撤销文件等。 文件系统的重要性,我想大家都很清楚,不用多说了。这里有一句话,我觉得非常精辟而且到位的点出了文件系统在Linux中的重要性: 尽管内核是Linux的核心,但文件却是用户与操作系统交互所采取的主要工具。这对Linux来说由其如此,这是因为在UNINX传统中,他使用文件I/O机制管理硬件设备和数据文件。

centos5,6的GRUB简介

三世轮回 提交于 2020-02-22 18:29:56
grub:GRand Unified Bootloader grub 0.x:grub legacy(centos5,6) grub 1.x:grub2(centos7) grub legacy(grub 0.x) stage1:mbr stage1_5:mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统 stage2:磁盘分区(/boot/grub/) centos6: # ls /boot/grub/ device.map fat_stage1_5 grub.conf jfs_stage1_5 minix_stage1_5 splash.xpm.gz stage2 vstafs_stage1_5 e2fs_stage1_5 ffs_stage1_5 iso9660_stage1_5 menu.lst reiserfs_stage1_5 stage1 ufs2_stage1_5 xfs_stage1_5 stage2和内核,通常放置于基本的磁盘分区,不可以是lvm和软raid。读取lvm和软raid分区,是需要根文件系统里的驱动程序的,这时根文件系统还没有加载。 根文件系统,一般都是逻辑分区,以方便扩容和管理,如果/boot也和根文件系统在同一个分区里的话,由于grub程序无法加载逻辑分区里的文件,所以就无法访问/boot目录

嵌入式根文件系统的移植和制作详解

青春壹個敷衍的年華 提交于 2020-02-19 08:23:33
理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统,文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。   根文件系统,我认为根文件系统就是一种特殊的文件系统,那么根文件系统和普通的文件系统有什么区别呢?由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件,例如Linux启动时都需要有init目录下的相关文件,在 Linux挂载分区时Linux一定会找/etc/fstab这个挂载文件等,根文件系统中还包括了许多的应用程序bin目录等,任何包括这些Linux 系统启动所必须的文件都可以成为根文件系统。   Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。   Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动

根文件系统制作(一)

家住魔仙堡 提交于 2020-02-12 00:49:01
在前面的内核移植中,使用的是开发板上原有的根文件系统,这里就来讨论一下如何自己制作根文件系统。 根文件系统可以由JFFS2、YAFFS2、UBIFS等文件系统支持,这里仍就选择UBIFS文件系统来制作根文件系统。UBIFS是Unsorted Block Image File System(无序区块镜像文件系统)的缩写,是一种较新的文件系统。UBIFS作为JFFS2的后继文件系统之一,在设计与性能上均较YAFFS2、JFFS2更适合于MLC NAND FLASH存储器。Linux内核从2.6.27以后的版本都提供了对它的支持,因此实现起来比较方便。 根文件系统实际上就是Linux根目录树的一个集合,由一些特定的目录、设备节点文件、内核模块文件、库文件、命令集以及其它一些配置文件组成。这个集合最终依赖于某个类型的文件系统来实现,下面就具体来讨论基于UBIFS文件系统的根文件系统制作过程。 首先要建立一个存放根文件集合的目录,这里就在根目录下建立一个名为rootfs的目录,把整个根文件系统都放在这个目录下。接下来进入rootfs目录,并在该目录下建立根目录树的第一层目录,执行“mkdir bin sbin etc dev proc lib sys var mnt usr tmp media home”产生出这些目录。 然后进入dev目录,在该目录下需要制作两个默认的设备节点文件,分别执行

根文件系统——busybox

帅比萌擦擦* 提交于 2019-12-18 04:52:33
---恢复内容开始-- http://blog.csdn.net/zn2857/article/details/52832778- 1:busybox就是linuxrc文件,首先下载busybox源码 各个版本busybox的下载地址,下载版本为busybox-1.22.1.tar.bz2 http://linux.linuxidc.com/index.php?folder=cHViL0J1c3lib3g= 在linux下用tar -jxvf 来解压busybox make distclean make menuconfig 对busybox进行配置: Busybox Settings---> Build Options---> [*]Build BusyBox as a static binary(no shared libs) Busybox Library Tuning---> [*]vi-style line editing commands [*]Fancy shell prompts Linux Module Utilities---> [ ]Simplified modutils [*]insmod [*]rmmod [*]lsmod [*]modprobe [*]depmod Linux System Utilities--->[*]mdev [*]Support

构建根文件系统(5)构建dev目录

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-18 04:51:49
只讲使用mdev创建设备文件。。。。。 1、mdev的用法可以参考busybox-1.9.2/docs/mdev.txt,它的两个用途:初始化/dev目录、动态更新。 以下为摘取部分关于mdev的命令: Here's a typical code snippet from the init script: [1] mount -t sysfs sysfs /sys [2] echo /bin/mdev > /proc/sys/kernel/hotplug [3] mdev -s Of course, a more "full" setup would entail executing this before the previous code snippet: [4] mount -t tmpfs mdev /dev [5] mkdir /dev/pts [6] mount -t devpts devpts /dev/pts 2、要在内核启动时,自动运行mdev,这需要修改etc/fstab、etc/init.d/rcS加入要自动运行的命令, (1)etc/fstab,红字为新增的 #device mount-point type options dump fsck order proc /proc proc defaults 0 0 tmpfs /tmp tmpfs

使用busybox制作根文件系统(rootfs)

风流意气都作罢 提交于 2019-12-18 04:51:22
我们知道一个linux的启动过程,包括BIOS的加电自检POST,拷贝MBR的信息(启动BootLoader),加载内核,挂载根文件安系统这几大步,在嵌入式系统的移植方面我们也要自己动手制作内核映像,根文件系统等。今天境就带大家讲讲使用busybox制作嵌入式可以移植的根文件系统。 需要的材料: 1,busybox(busybox-1.14.2) 下载一个版本的busybox。 下载地址。 busybox是主要用来提供一些bash shell命令的工具。 2,配置文件 重点配置文件是在境的上一篇文章提到的几个文件。 linux启动过程中的几个重要文件的详解 3,设备文件(文中会教你如何添加) 4,必要的库文件(选用) 所以今天我要的做的就是由busybox等组成的rootfs。 制作过程: 第一步:编译busybox获得shell工具。 1,在用户主目录下建立一个用于我们实验的一个目录(~/exp/mkrootfs),并转至该目录; @ubuntu:~$ mkdir -p ~/exp/mkrootfs @ubuntu:~$ cd ~/exp/mkrootfs 2,将刚才的下载的busybox解压至此,并转至; @ubuntu:~/exp/mkrootfs$ tar xvjf busybox-1.14.2.tar.bz2 @ubuntu:~/exp/mkrootfs$ cd

CentOS系统启动流程你懂否

空扰寡人 提交于 2019-12-17 16:51:10
一、Linux内核的组成 相关概念: Linux系统的组成部分:内核+根文件系统 内核:进程管理、内存管理、网络协议栈、文件系统、驱动程序。 IPC(Inter-Process Communication进程间通信):就是指多个进程之间相互通信,交换信息的方法。Linux IPC基本上都是从Unix平台上继承而来的。主要包括最初的Unix IPC,System V IPC以及基于Socket的IPC。另外,Linux也支持POSIX IPC。 运行中的系统环境可分为两层:内核空间、用户空间; 内核空间:内核代码(系统调用) 用户空间:应用程序(进程或线程) 内核设计流派: 单内核设计:把所有的功能集成于同一个程序;(Linux) 微内核设计:每种功能都使用一个单独的子系统实现;(Windows solarls) Linux内核特点: (1)支持模块化:.KO(kernel object) (2)支持模块运动时动态装载或卸载 组成部分: 核心文件:/boot/Vmliuz-VERSION-release ramdirk: CentOS5:/boot/initrd-VERSION-release.img CentOS6,7:/boot/initramfs-VERSION-release.img 二、CentOS系统启动流程 总体启动顺序: POST(加点自检)-->Boot

ARM嵌入式——制作根文件系统并使用NFS挂载运行。

﹥>﹥吖頭↗ 提交于 2019-12-15 09:02:56
制作根文件系统并使用NFS挂载运行。 上位机准备: 准备busybox,安装menuconfig所需依赖的库: sudo apt-get install build-essential sudo apt-get install libncurses5 sudo apt-get install libncurses5-dev 在busybox中执行make menuconfig Linux Module Utilities ---> //按N键去除选项(insmod/lsmod/rmmod精简版命令) [*] Simplified modutils (NEW) 去除以上选项,立马出现完整版的命令选项: [*] insmod (NEW) │ │ [*] rmmod (NEW) │ │ [*] lsmod (NEW) [*] Pretty output (NEW) [*] Blacklist support │ │ [*] modprobe (NEW) │ │ [*] depmod (NEW) 保存退出 注意:目前busybox提供的命令已经足够使用 修改Makefile进行交叉编译: vim Makefile +164 //修改为指定的交叉编译器。 vim Makefile +190 //修改为ARCH=arm。(指定架构) 保存退出 正式进行编译: make make install

【linux】根文件系统相关知识

流过昼夜 提交于 2019-12-15 01:09:32
根文件系统什么时候挂载?先将**/dev/ram0**挂载,而后执行/linuxrc.等其执行完后。切换根目录,再挂载具体的根文件系统.根文件系统执行完之后,也就是到了Start_kernel()函数的最后,执行init的进程,也就第一个用户进程。对系统进行各种初始化的操作。 /bin :该目录下的命令可以同时被root和一般账号所使用。 /sbin :该目录下存放 系统命令 ,即只有 系统管理员(root) 能够使用的命令,系统命令还可以存放在 /usr/sbin,/usr/local/sbin 目录下,/sbin目录中存放的是 基本的系统命令 ,它们用于启动系统和修复系统。 /dev :该目录下存放的是设备文件。 /etc :该目录下存放着系统主要的配置文件。 /lib :该目录下存放共享库和可加载的驱动程序。 /home :对于每个 普通用户 ,在/home目录下都有一个以用户名命名的子目录,里面存放 该用户相关的配置文件 。 /root : 系统管理员(root)的主目录, 对应普通用户/home下的某个子目录 。 /usr :里面存放的是共享、 只读的程序和数据 。 /var : 与/usr目录相反,/var目录中存放可变的数据 ,比如spool目录(mail,news)。 /proc : 里面的目录,文件都是由内核临时生成的,用来 表示系统的运行状态