目录

  • /etc/fstab 文件的作用是什么?
  • Linux 内核的图形化启动是怎么回事?
  • Linux 系统中的文件名是否以大小写来进行区别?
  • 「GRUB 中无法找到硬盘」怎么解决?
  • 「GRUB 及配置文件中对磁盘分区的表示与 /dev 中的设备文件」有什么不同?
  • GRUB 的配置文件是什么?有什么用?
  • rootfs 根文件系统是什么?
  • 内存磁盘(RAM Disk)是什么?
  • 内存磁盘的大小是怎么弄的?
  • 内存文件系统是怎么回事?
  • 根文件系统与内存文件系统有什么关系?
  • 辅助系统的作用是什么?
  • 辅助文件系统存放的方式有哪些?
  • Initrd 是怎么操作的?
  • Linux 内核是如何使用辅助系统的?
  • Initranfs 是怎么工作的?

/etc/fstab 文件的作用是什么?

这个文件在 Linux 系统中用于指定文件系统自动挂载设置,包括设备名、挂载目录、文件系统名称以及挂载选项,该文件与 mount 命令相关,mount -a 将会根据该文件中的描述进行文件系统的挂载。

Linux 内核的图形化启动是怎么回事?

Linux 内核支持 FrameBuffer 驱动,可用于在启动时进入图形状态,在 GRUB1(版本 0.97)中采用直接给内核指定参数的方式来设置 Framebuffer 驱动,一般给内核传递 vga 或者 video 参数来指定,如 vga=778 对应设置为 800 x 600 分辨率, 16 位色。

在 GRUB(版本 1.97)中取消了 vga 参数的设置方式,确认呆滞的是使用 gfxpayload 参数,该参数依赖 GRUB2 中的 vbe 模块。

GRUB 会根据 gfxpayload 参数告诉 Linux 内核以什么样的图形方式来启动,Linux 内核如果带有 FrameBuffer 驱动,并且如果支持指定的分辨率以及颜色,就会按照其设置进行图形初始化。

Linux 系统中的文件名是否以大小写来进行区别?

Linux 中的文件名是要区分大小写的。

「GRUB 中无法找到硬盘」怎么解决?

首先要排除使用 GRUB 不能识别的分区类型,再检查是否挂载了 proc 文件系统,以及 /dev目录是否存在磁盘的设备文件,这些条件成立后 GRUB 才能正确检测到磁盘设备。

「GRUB 及配置文件中对磁盘分区的表示与 /dev 中的设备文件」有什么不同?

/dev/sda2 在 GRUB 中表示(hd0,1),/dev/sdb1 表示为(hd1,0),老式的 IDE 磁盘分区表示方法也类似,如 /dev/hda2 也表示为(hd0,1)

GRUB 的配置文件是什么?有什么用?

GRUB 首先对计算机进行基本的硬件初始化,然后根据配置文件进行启动的控制。

GURB 的配置文件一般存放在启动分区的 /boot/grub 目录中,以 menu.lst(GRUB1)或者 grub.cfg(GRUB2)作为文件名,配置文件用于设置界面颜色,等待用户选择的时间,启动项选择和启动项执行的过程等。

用户选择了某个启动项后,GRUB 根据该启动项的设置载入内核、镜像文件等,之后 GRUB 将执行权交给内核,内核开始启动。

rootfs 根文件系统是什么?

跟文件系统可以理解为最基础的目录,它由内核创建并且存在于内存中,Linux 系统必须存放在根文件系统上才能被 Linux 内核所运行,刚初始化的根文件系统中并没有任何文件,可以理解为是一个空的目录。

Linux 内核自身初始化完成后将载入 Linux 系统到根文件系统上,载入完成后启动其中的 init 程序(默认启动 /sbin/init ,可由内核参数指定运行其他程序)

内存磁盘(RAM Disk)是什么?

内存磁盘是一种虚拟设备,设备名以 /dev/ram 开头,从 0 开始进行编号,内核以块设备的访问方式对其进行访问。

内存磁盘设备建立在内存中,简单来说,就是用内存来模拟磁盘。

内存磁盘中可以创建支持块设备的文件系统。

内存磁盘的大小是怎么弄的?

内存磁盘的大小由内核所决定,可以在编译内核时进行调整,也可以在内核启动时传递 ramdisk_size 参数来设置,内存磁盘建立后不能改变大小。内存磁盘的存储内容可以进行修改,但是重新启动后内容会全部消失。

内存文件系统是怎么回事?

内存文件系统一般简称为 RamFS 是一种基于内存的特殊文件系统,该文件系统不能用于磁盘这样的存储设备上,只能占用内存,占用空间大小根据存放内容的增加而不断增大,最大空间受 CPU 寻址范围和内存大小的限制。

RamFS 支持现有的 Linux 系统的文件结构,支持挂载其他内核支持的设备以及文件系统。

根文件系统与内存文件系统有什么关系?

事实上,根文件系统(rootfs)就是内存文件系统(RamFS)的一个具体实力,因此根文件系统可上可以直接创建文件和目录,挂载设备上的文件系统。

辅助系统的作用是什么?

辅助系统是一种功能比较特殊的微型系统,作为 Linux 内核初始化完成但是未进入最终系统(最终用户使用的系统)时的过渡系统,主要目的是为了将最终系统载入到根文件系统上,并且帮助内核启动启动最终系统。

辅助文件系统存放的方式有哪些?

目前有两种,一种是比较传统的内存磁盘方式存放辅助系统,称为 Initrd(Initial RAM disk),另一种是比较现代的内存文件系统方式存放辅助系统,称为 Initramfs(Initial RAM filesystem)

Initrd 是怎么操作的?

Initrd 采用 RAM Disk 来存储辅助系统,RAM Disk 模拟块设备操作,Linux 内核启动过程中将辅助系统的镜像文件还原到 Ram Disk 设备上,在 RAM Disk 设备上使用辅助系统必须采用文件系统,必须将镜像文件格式化为 Linux 内核支持的文件系统,在该文件系统中存放辅助系统。

Linux 内核是如何使用辅助系统的?

启动器(如 GRUB)将该镜像文件从磁盘上读取并且存放到内存的某个特定位置上,再由 Linux 内核在启动过程中从内存特定位置中将镜像文件还原到 RAM Disk 上,默认还原的 RAM Disk 设备文件名为 /dev/ram0 ,然后按照 Initrd 的方式启动辅助系统。

Linux 内核将 Initrd 中的辅助系统视为过度系统,在辅助系统执行完成后,Linux 内核重新获得控制权,继续执行根文件系统(rootfs)中的最终系统。

Initranfs 是怎么工作的?

Initramfs 采用内存文件系统(RAM Filesystem)存储辅助系统。

与 Initrd 方式不同,Initramfs 中的系统在 Linux 内核中视为最终系统,定义为辅助系统是从制作该系统目的而言的,Linux 内核将辅助系统直接还原到根文件系统,内核执行该系统后就不再接管执行控制权了,执行的控制都由该系统来完成。

我们已经知道根文件系统(rootfs)本身就是内存文件系统,是一个完整支持 Linux 文件和目录存放格式的文件系统,Linux 内核要求 Initramfs 文件采用 CPI哦的打包格式,支持 gz 格式的压缩文件。

Linux 内核自带了 gz 和 CPIO 格式的处理函数,自动将辅助系统解压还原到根文件系统中。

同 Initrd 镜像文件一样,Initramfs 打包压缩文件也可以使用启动器读取并且放入内存中的特定位置,再由内核将其解压缩还原到根文件系统中,之后转入运行其中的系统。

FAT32 在 Linux 是怎么显示的?

使用这组文件系统是为了让 U 盘同时在 windows 上正常使用,这样 U 盘具有更加广泛的适用性,FAT16 对分区以及单个文件的大小是有所限制的,因此推荐使用 FAT32,FAT32 文件系统在 Linux 系统中表示为 VFAT 文件系统。

需要注意的时候,选择以上的任何文件系统都必须保证启动器(GRUB)和内核(Linux)的支持。

《手把手教你构建自己的 Linux 系统》学习笔记(10)的更多相关文章

  1. 《手把手教你构建自己的 Linux 系统》学习笔记(9)

    目录 autoreconf 命令的作用是什么? aclocal automake -a autoconf 一条命令搞完三面三步 既然有其他的「编译控制软件」为何还是使用 make 来进行编译控制? M ...

  2. 《手把手教你构建自己的 Linux 系统》学习笔记(8)

    目录 Binutils 软件包有什么用? make -k 的作用是什么? man-pages 里有几种文档?分别表示什么意思? 如何查询指定目录的 man-pages ? 如何使用 make 命令的同 ...

  3. 《手把手教你构建自己的 Linux 系统》学习笔记(6)

    目录 /dev 目录是干什么的? /proc 和 /sys 目录是干什么的? udev 这个软件是干什么用的? 目录映射是临时性的,还是永久性的? 命令行里大括号 "{}" 的作用 ...

  4. 《手把手教你构建自己的 Linux 系统》学习笔记(5)

    交叉编译是什么? 交叉编译就是在一个系统上,编译生成另外一个系统运行的程序文件. 「硬件体系结构」和「操作系统」的关系是什么? 硬件体系结构也可以称为架构,主要是通过 CPU 的指令集来进行区分的,操 ...

  5. 《手把手教你构建自己的 Linux 系统》学习笔记(2)

    Linux 系统定制原理 虚拟根目录 我们的目标是为了完成目标系统(也就是我们要做的系统),他是一个可以独立运行的系统,不依赖雨主系统和临时系统,根据 Linux 系统的特点它需要存放在根目录下面,但 ...

  6. 《手把手教你构建自己的 Linux 系统》学习笔记(1)

    第二章.基础准备--Linux 系统定制原理 Linux 系统的组成及架构 共享库和静态库 在 Linux 系统中,函数库包含两种形式:共享库和静态库. 共享库 共享库在程序运行时,为其提供所需要的函 ...

  7. 《手把手教你构建自己的 Linux 系统》学习笔记(7)

    目录 tee 命令的缺陷是什么?如何解决这个缺陷? /etc/ld.so.conf 文件的作用是什么? 动态链接和静态链接有什么不同? 动态编译 静态编译 共享库为什么会有版本?共享库的版本升级原理是 ...

  8. 《手把手教你构建自己的 Linux 系统》学习笔记(4)

    汇编链接器(Binutils) 这是一个软件包,这个软件包其实是一个工具集,里面含有了大量的用于汇编程序活着读取二进制文件相关的程序. CC 它是一条命令的别名,这条命令的作用是使用 GCC 的 C ...

  9. 《手把手教你构建自己的 Linux 系统》学习笔记(3)

    需要注意的是,制作操作系统权限全程都要用 root pushd 和 popd 为了方便目录管理,所以出现了这种两个命令,他们的原理就是利用堆栈来实现目录管理. 这两个命令,pushd 负责将指定的目录 ...

随机推荐

  1. 用set、map等存储自定义结构体时容器内部判别各元素是否相同的注意事项

    STL作为通用模板极大地方便了C++使用者的编程,因为它可以存储任意数据类型的元素 如果我们想用set与map来存储自定义结构体时,如下 struct pp { double xx; double y ...

  2. idea maven 动态打包指定环境

    jar pom.xml <!-- 指定文件id --> <profiles> <profile> <id>alpha</id> <pr ...

  3. Web 开发工具类(2): HttpClientUtils

    HttpClientUtils 整合了一些 web开发中常用的httpClient操作: package com.evan.common.utils; import java.io.IOExcepti ...

  4. The .native modifier for v-on is only valid on components but it was used on <input>

    原因 基础不牢固就是这样了,事件的native修饰符只能在组件上使用,原生的html标签是不能使用的,这是因为我在input标签使用了native修饰符.

  5. SASS用法入门

    本文参考了 阮一峰 老师对 SASS 用法的讲解. 学过 CSS 的人都知道,它不是一种编程语言,在日常的开发中,经常要写大量的 css 代码,有很多的重复代码,效率很低.Sass 是一个 CSS 的 ...

  6. python笔记16

    1.今日内容 模块基础知识 time/datetime json/picle shutil logging 其他 2.内容回顾和补充 2.1模块(类库) 内置 第三方 自定义 面试题: 列举常用内置模 ...

  7. Java使用自定义类加载器实现热部署

    热部署: 热部署就是在不重启应用的情况下,当类的定义即字节码文件修改后,能够替换该Class创建的对象.一般情况下,类的加载都是由系统自带的类加载器完成,且对于同一个全限定名的java类,只能被加载一 ...

  8. HDU_4496_逆向并查集

    http://acm.hdu.edu.cn/showproblem.php?pid=4496 逆向并查集,先读取,然后从后向前join每次保存答案即可. #include<iostream> ...

  9. 基于 Google-S2 的地理相册服务实现及应用

    马蜂窝技术原创内容,更多干货请关注公众号:mfwtech 随着智能手机存储容量的增大,以及相册备份技术的普及,我们可以随时随地用手机影像记录生活,在手机中存储几千张甚至上万张照片已经是很常见的事情.但 ...

  10. 强烈推荐 10 款珍藏的 Chrome 浏览器插件

    Firebug 的年代,我是火狐(Mozilla Firefox)浏览器的死忠:但后来不知道为什么,该插件停止了开发,导致我不得不寻求一个新的网页开发工具.那段时间,不少人开始推荐 Chrome 浏览 ...