从linux开机启动流程来理解linux系统设计

从linux开机启动流程来理解linux系统设计

Linux的开机流程

  1. 加载 BIOS 的硬件信息,并取得第一个开机装置的代号;
  2. 读取第一个开机装置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等等) 的开机信息;
  3. 加载 Kernel 操作系统核心信息, Kernel 开始解压缩,并且尝试驱动所有硬件装置;
  4. Kernel 执行 init 程序并取得 run-level 信息;
  5. init 执行 /etc/rc.d/rc.sysinit 档案;
  6. 启动核心的外挂模块 (/etc/modprobe.conf);
  7. init 执行 run-level 的各个批次档( Scripts );
  8. init 执行 /etc/rc.d/rc.local 档案;
  9. 执行 /bin/login 程序,并等待使用者登入;
  10. 登入之后开始以 Shell 控管主机。

从linux开机启动流程来理解linux系统设计

启动过程


boot loader

  • 整个主机在开机的时候,第一个被读取的地方, 就是 BIOS ( Basic Input Output System ),它是第一个被计算机加载的数据。这个 BIOS 里面记录了主机板的芯片组与相关的设定。读取了 BIOS 设定值之后,系统会根据 BIOS 的数据,进行开机自我测试 (power on self test, POST),

内核执行 init并由/etc/inittab取得系统登入状态

  • 加载内核后,由内核第一个执行的程序便是/sbin/init,该程序的第一个目标是确定主机以怎样的模式登入,此时/sbin/init加载/etc/inittab的信息。在此文件中可以看出共有0~6种的登入状态。较常见的是3(文字界面登入)和5(图形界面登入)。不要设定我0(关机)和6(重新启动),不然系统会一直不停的关机或重新启动。

init的第一个执行内容/etc/rc.d/rc.sysinit

  • 确定登入状态后,接下来把主机的信息读入Linux系统。而Linux读入的第一个数据内容就是/etc/rc.d/rc.sysinit,可以进去看看,记录了Linux系统的基本信息,主要工作很多,基本都是设定一些参数及系统相关等等。

init执行运行级的各脚本

  • 由于不同的run-level需要加载的模块并不相同,所以系统为不同的run-level设定了一些批处理文件来做。在/etc/rc.d目录中,目录rc.0~rc.6分别代表着各个run-level的脚本,这些目录中的文件都以K(以K开头代表杀死该服务)或S(开始….)打头,后接两位数字(数字代表启动顺序,当然这些顺序的指定是有原因的)与该服务的名称。这些文件都是链接文件,都指向/etc/rc.d/init.d这个目录,而/etc/rc.d/init.d目录则是以Linux的RPM安装方法时用于设定一些服务的启动目录。举个例子,如果要想重新启动sendmail,且你的sendmail是以RPM方式安装的,那么输入 /etc/rc.d/init.d/sendmail restart就可以直接重新启动sendmail。
  • 因此,当你的run-level内的脚本要启动哪些服务时,就将文件链接到该 init.d目录下的文件并启动即可,也就是若以为3来启动系统,说启动Linux时,经过BIOS、MBR、Kerbel、init和/etc/rc.sysinit 之后,就进入/etc/rc.d/rc3.d来启动一些服务。
  • init执行/etc/rc.d/rc.local
  • 在Linux系统执行完大部分的启动程序后,接下来就是执行你的Linux主机的个性化设定了。简单的说,无论你在启动时候需要写进什么指令,都可以将这在此文件写入。
  • 在主机执行完上面的步骤之后,开机流程就启动完毕。

启动配置文件/etc/sysconfig

  • 在启动过程中使用最多的配置文件大都放在/etc/sysconfig目录下。
  • 下面说几个比较重要的:
  1. clock设定时间
  2. i18n设定语言的
  3. Keyboard 和 mouse 用于设定键盘和鼠标
  4. network可以设定主机名称和GATEWAY这两个重要信息
  5. network-scripts用于设定网卡。
  • 变换默认的登入模式
  • 主要修改/etc/inittab文件,Linux共提供了6个终端界面与1个图形界面,Ctrl+Alt+F1~F6组合来切换不同的文字登入点,Ctrl+Alt+F7切换图形界面
  • Grub
  • 配置文件/etc/grub/menu.lst


Linux 系统在启动过程中,首先是固件(PC 上大多是 CMOS/BIOS)的物理检测,诸如检测系统的显卡、CPU 和硬盘等,可从系统按下电源后看到此检测信息;检测无问题,将读取硬盘的MBR(主引导记录)中的自举程序,Linux 中常用的自举程序如 LILO 和GRUB。自举程序 GRUB 在系统启动期间只有一个作用,就是载入内核,内核在引导期间有两个主要的作用,一个是驱动系统硬件,另一个将启动系统进程 init;init 进程将读取其配置文件/etc/inittab 完成后续所有的引导。

从linux开机启动流程来理解linux系统设计

从linux开机启动流程来理解linux系统设计


大家有什么需要学习的可以在下方评论,喜欢的话走波关注呗~

从linux开机启动流程来理解linux系统设计

相关推荐