freeCodeCamp/guide/chinese/linux/how-linux-system-boots-up-6.../index.md

98 lines
4.4 KiB
Markdown
Raw Normal View History

---
title: Linux Booting Process
localeTitle: Linux启动过程
---
# Linux启动过程 - 6步描述性过程
操作系统被定义为支持计算机基本功能的低级软件例如调度任务和控制外围设备。操作系统支持典型Linux启动过程的这6个高级阶段。
![脚步](https://raw.githubusercontent.com/Ayushverma8/tech-interview-handbook/master/LinuxBootingProcess.jpg)
### 1\. BIOS
* BIOS代表基本输入/输出系统
* 通过HDD执行一些系统完整性检查
* 搜索加载和执行引导加载程序主要在主引导记录MBR
* 它在软盘CD-ROM或硬盘驱动器中查找引导加载程序。我们可以在BIOS启动期间按一个键通常为F2的F12但这取决于您的系统以更改启动顺序。
* 一旦检测到引导加载程序并将其加载到内存中BIOS就会为其提供控制。
* 因此简单来说BIOS加载并执行MBR引导加载程序
### 2\. MBR
* MBR代表主引导记录。
* 它位于可引导磁盘的第一个扇区中。通常是/ dev / hda或/ dev / sda。为什么是sda和hda请参阅此处了解更多。
* MBR的大小小于512字节。这有三个组件1第一个446字节中的主引导加载程序信息2下一个64字节中的分区表信息3最后2个字节中的mbr验证检查。
* 它包含有关GRUB或旧系统中的LILO的信息。
* 因此简单来说MBR加载并执行GRUB引导加载程序。
### 3\. GRUB
* 它位于可引导磁盘的第一个扇区中。通常是/ dev / hda或/ dev / sda。为什么是sda和hda请参阅此处了解更多。
* 如果系统上安装了多个内核映像,则可以选择要执行的映像,默认情况下只会启动主映像。
* GRUB显示启动画面等待几秒钟如果您不输入任何内容它将加载grub配置文件中指定的默认内核映像。
* GRUB具有文件系统的知识旧的Linux加载器LILO不了解文件系统
* Grub配置文件是/boot/grub/grub.conf/etc/grub.conf是这个的链接。以下是CentOS的示例grub.conf。
```
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
initrd /boot/initrd-2.6.18-194.el5PAE.img
```
### 4.内核
* 按照grub.conf中“root =”的指定安装根文件系统
* 内核执行/ sbin / init程序
* 它是由Linux内核执行的第一个程序它的进程IDPID为1.执行'ps -ef | grep init'并检查pid。您也可以使用netstat
* initrd代表初始RAM磁盘。
* 内核将initrd用作临时根文件系统直到启动内核并挂载真正的根文件系统。它还包含内部编译的必要驱动程序这有助于它访问硬盘驱动器分区和其他硬件。
### 5.初始
* 查看/ etc / inittab文件以确定Linux运行级别。
* 以下是可用的运行级别
* 0 - 停止
* 1 - 单用户模式
* 2 - 多用户没有NFS
* 3 - 完全多用户模式
* 4 - 未使用
* 5 - X11
* 6 - 重启
* Init从/ etc / inittab标识默认的initlevel并使用它来加载所有适当的程序。
* 在系统上执行'grep initdefault / etc / inittab'以标识默认运行级别
* 如果您想遇到麻烦可以将默认运行级别设置为0或6.因为您知道0和6的含义可能您可能不会这样做。
* 通常您可以将默认运行级别设置为3或5。
### 6.运行级程序
* Linux系统启动时您可能会看到各种服务启动。例如它可能会说“启动sendmail ......”。好”。这些是运行级别程序,从运行级别定义的运行级目录执行。
* 根据您的默认初始级别设置,系统将从以下目录之一执行程序。
* 运行级别0 - /etc/rc.d/rc0.d/
* 运行级别1 - /etc/rc.d/rc1.d/
* 运行级别2 - /etc/rc.d/rc2.d/
* 运行级别3 - /etc/rc.d/rc3.d/
* 运行级别4 - /etc/rc.d/rc4.d/
* 运行级别5 - /etc/rc.d/rc5.d/
* 运行级别6 - /etc/rc.d/rc6.d/
* 在/etc/rc.d/rc\*.d/目录下您将看到以S和K开头的程序。
* 在启动期间使用以S开头的程序。 S用于启动。
* 在关机期间使用以K开头的程序。 K杀人。
* 程序名称中的S和K旁边有数字。这些是程序应该启动或终止的序列号。