System startup process && pipeline and redirection.
试验环境:debian9 物理机。
第一部分,系统启动流程:
系统启动包含七个步骤,【BIOS】【MBR-boot code】【GRUB-执行引导程序】【加载内核】【执行init】【Runlevel】。
1. BIOS所需要做的事情
basic input output system ,称之为基本输入输出系统,一般保存在主板上的 BIOS 芯片中;计算机启动的时候第一个运行的就是 BIOS,BIOS 负责检查硬件并且查找可启动设备;可启动设备在 BIOS 设置中进行定义,如 USB,CDROM ,HD。
2. MBR 所需要做的事情
BIOS 找到可启动设备后执行其引导代码,引导代码为 MBR 的前446字节。
3. GRUB 所需要做的事情
可以用来引导几乎所有的操作系统,grub 的相关文件保存在 /boot/grub/ 目录中 ,grub 的配置文件为 /boot/grub/grub.conf 。
4. 内核所需要做的事情
MBR 的引导代码将负责找到并加载 linux 内核,linux 内核保存在 /boot/vmlinuz-(破折号后面跟具体的代号),一般还会加载内核模块打包文件 /boot/initrd ,linux 为了保持 kernel 的精简将一些不常用的驱动、功能编译成模块,需要时进行动态加载。命令 dmesg 查看本次启动时内核的输出信息。
5. init 所需要做的事情
init 是 linux 系统中运行的第一个进程,调用 /etc/rc.d/rc.sysinit 负责对系统进行初始化,挂载文件系统,并且根据运行级别启动相应服务,每个级别对应的启动服务保存在 /etc/rc.d/rc(123456) 中,debian9 保存在 /etc 中。
linux 运行级别:
0--关机
1--单用户模式
2--不带网络的多用户模式
3--多用户模式
4--未使用
5--图形化模式
6--重新启动
---------------------------------------------------------------------------------------------------------------------------------------爱笑的考拉----------------------------------------------------------------------------------------------------------------
备注:7个运行级别有可能随着内核的更新会发生变化,请关注内核WIKI。
命令 runlevel 可显示当前及上一个运行级别。
命令 init 可用以改变当前运行级别。
单用户模式修改 root 密码,为内核传递参数 “1” || “single” ,系统进入单用户模式;单用户模式不启动任何服务,单用户模式下直接以 ROOT 登陆,并且不需要密码,可使用 passwd 修改 root 密码;防止他人对 root 进行密码更改,可以对 GRUB 进行加密。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二部分,管道及重定向:
在使用的终端中,系统会定义的三个标准;标准输入使用 0 表示、标准输出使用 1 表示、标准错误使用 2 表示。
a. 重定向
> ,将 Stdout 重定向到文件,如果没有文件则创建,如果有则覆盖。
>> ,将 Stdout 重定向到文件(追加)。
2> ,将 Stderr 重定向文件(覆盖)。
2>&1 ,将 Stderr 与 Stdout 结合。
< ,将 Stdin 重定向。
b. 管道
| ,将一个命令的 Stdout 作为另一个命令的 Stdin。