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

目录

  • /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)的支持。

原文地址:https://www.cnblogs.com/0x1D/p/4748263.html