探索Linux系统的启动过程

Linux启动过程概述

Grub加载Linux内核和initramfs

探索initramfs文件的方法

基于systemd的init系统

进入图形界面

这篇文章有点长,我花了大约两个星期的时间才完成,虽然不是写得巨细无遗,但是我认为还是很有价值的,求推荐。不管你是不是 Linux 爱好者,也不管你是否能耐心读完,请果断 mark 之,你值得拥有。

引言

  这一篇可能是我这系列随笔除总结之外的最后一篇,也可能不是。为什么这么说呢?因为我觉得在 Linux 应用环境方面再写下去也可能不会有什么新意了,至少以我的水平写不出什么新意了。我的这一个系列,基本上不涉及到编程,而是真真正正地将 Linux 桌面系统当成日常使用的工具,即使在我的这个系列中有探讨 C 语言或者 Bash 语言的部分,我也是展示的相关的开发工具,比如 binutils 工具包和 autotools 工具链。我曾经说过,折腾 Linux 就是折腾 Linux 系统下的软件,Linux 世界软件之多,可写的应该还有不少,但是我觉得已经没有办法写得很好了。比如有一些工作我还没有找到适当的工具,像 JavaScript 和 CSS 开发,对于博客园中的广大前端攻城狮来说,肯定是各有神通,但是我确实不知道用什么工具可以做到即顺手又高效率,我只会简单地用用 Firefox 提供的开发者工具。还有 3D 开发、游戏编程、移动开发等等,虽然可以写的领域比较广阔,但是毕竟我不是做这些的,没什么经验,不能说光写某某软件试用体验吧。再说,程序员终归还是程序员,以后写博客应该还是介绍编程经验比较好。

  之所以想到写这些东西,那是因为我确实想让大家也和我一样,把 Linux 桌面系统打造成真真正正日常使用的工具,而不是安装之后试用几把再删掉。我是真的在日常生活和工作中都使用 Linux,比如在 Linux 下编程、写博客、写论文和做幻灯。当然,对于 LibreOffice 这样的软件使用起来都不会有什么困难,所以在我的博客中就基本没有提到,就像 Windows 下的程序员不会去写 MS Office 的使用指南一样。如果有人不能坚持使用 Linux,那一定是 Linux 中的某些困难打败了他。刚使用 Linux 时确实会碰到很多困难,比如界面不够美观啊、字体不够顺眼啊、输入法太难用啊,还有就是想做某个工作找不到工具、想改一个属性找不到入口、系统崩溃了无法恢复等等,甚至是刚安装一个软件包或者下载一个文件,却不知道放到文件系统的什么地方了。所以,我的这一个系列就是在向大家展示我的方法论,用什么软件不重要,怎么用好也不重要,而是碰到问题了,用什么思路去找答案,到哪里去找答案。经过这二十几篇的展示,我的方法论也基本上讲完了。所以我决定,写完这一篇探索 Linux 系统的启动过程之后,我将开始另外一个系列的工作。

  关于 Linux 系统的启动过程也是几经变革。首先是操作系统从磁盘载入的过程发生了变化,很老旧的操作系统需要自己写启动扇区,现在的操作系统早就将这个过程交给了专门的启动工具。最常用的操作系统加载程序是 Grub,这个名字大家肯定早就如雷灌耳了,而且 Grub 也已经从第1版发展到了第2版,我们称之为 Grub2。 Grub2 和 Grub1 有很大的差别,网络上有很多讲 Linux 的文章动不动就拿 Grub1 说事儿,比如让大家修改 menu.lst 文件这样的,都是很过时的内容了。关于 Grub2 的详细资料可以阅读文档info grub或者info grub2。Grub 的优点是支持多操作系统的启动,Windows、Linux、BSD都不在话下,但是它们的启动协议是不一样的,启动 Windows 靠的是 chainloader,启动 Linux 直接使用 linux 命令,而 BSD 系统好像是使用的 multiboot,特别是 Grub 的 multiboot 规范对那些很想自己写操作系统的程序员很有用,因为再也不用从启动扇区的代码开始写了,可以直接进入保护模式用 C 语言写操作系统。Linux 系统在启动的时候还有 initrd 或 initramfs 机制,这个也需要 Linux 用户特别注意。initrd 或 initramfs 也经历过一次技术革新,最开始采用的是 RamDisk 技术,目前采用的 tmpfs 技术。最后,内核加载入内存后,会将系统初始化的控制权交给 init 程序,而 init 程序也不是一成不变的,最开始使用的是 SysVinit,后来又改成 Upstart,现在最流行的又变成了 systemd。现在仍然有很多书和网文讲的还是 SysVinit 时代的做法,当然这些文章只能以 RedHat EL 5 以及之前的发行版作为示例,而对于最新的发行版,这些文章中讲的方法又会给新入门的用户造成困难。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/16445.html