进阶
Linux系统博大精深,学习Linux的资料浩瀚如大海。本文档不打算再做重复造轮子的事情,我们尽量根据实践中很常见的技术要点进行讲解,同时列出一些操作范例:
核心要点
启动过程分析
Linux系统的启动过程分为如下几个阶段:
-
开机自检:打开电源,BIOS进行硬件自检
-
引导加载:自检通过后,进入MBR引导加载程序(MBR是硬盘中第一个扇区的前512个字节, 称为 main boot record)
-
内核初始化:加载内核(Kernel)代码,即读入 /boot 目录下的内核文件,监测设备并加载设备驱动程序
-
Systemd初始化(替代init),获取系统控制权
- 执行Systemd程序,Systemd是一个管理进程的进程程序,也是操作系统的第一个进程,其PID=1
- 读取 /etc/systemd 下的配置文件
- 读取 /etc/systemd/system/default.target 下的运行级别文件
- 执行 /etc/rc.d/rc.local 文件中的程序
2-4 是由GRUB(Grand Unified Bootloader)负责的。其中GRUB boot loader 代码的一小部分(子集)被写入MBR,其余部分存储在/boot分区中
-
Systemd 执行系统初始化
- 设置主机名
- 初始化网络
- 基于配置初始化 SElinux
- 显示欢迎标语
- 基于内核参数初始化硬件
- 加载文件系统
- 清除 /var 中的目录
- 启动交换分区
-
建立终端:系统打开6个终端,以便用户登录系统。
-
用户登录系统:用户登录使用Linux
文件目录结构
通过下面的一张图(右键在新窗口中打开,图片效果更好),我们了解Linux系统的目录结构
编码与字体
一个字符(不管是中文还是英文,或是其它文字)在计算机里都是以0101这样数字存放的,编码就是某个字符是以一个什么数字存放在计算机里的。
字符编码有名为字符集。其原理一句话解释:不同语言对应的机器编码。目前最常用的是UTF-8编码方式,下面就是通一个字符在不同字符编码下的机器代码:
语言 | 示例 | UTF-8编码 |
---|---|---|
中文 | 你好 | \xE4\xBD\xA0\xE5\xA5\xBD |
英文 | Hello | \x68\x65\x6C\x6C\x6F |
编码决定字符的存放,字体决定字符的显示。
字体决定一个字符在界面上显示出来的形状,比如同样是'A'用不同的字体显示出来的形状是不一样的。
同样的文件内容,在屏幕上的输出同时取决于用什么编码和字体。