Linux开机执行顺序

  (多数磁盘划分为一个或多个分区,每个分区中有一个独立的文件系统。磁盘的0号扇区称为主引导记录(MBR),MBR的结尾是分区表,该表给出了每个分区的起始和结束地址。表中的一个分区被标记为活动分区。在计算机被引导时,BIOS读入并执行MBR。MBR做的第一件事是确定活动分区,读入它的第一块,称为引导块,并执行之。引导块中的程序将装载该分区中的操作系统。《现代操作系统》中文版p228。)(引导扇区是每个分区(Partition)的第一扇区(我想,这个"引导扇区"就是《现代操作系统》里面说的"引导块"。),而主引导扇区MBR是硬盘的第一扇区。MBR不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它,但可以通过命令来修改和重写。百度百科。)
       1. 加载 BIOS 的硬件信息,并取得第一个开机装置的代号;(启动电源后,主机第一步先做的就是查询BIOS(basic input/output system 基本输入输出系统)信息,了解整个系统的硬件状态,如CPU,内存,显卡,网卡等。BIOS是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。)
       2. 读取第一个开机装置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等等) 的开机信息;(MBR 的 512 bytes 可分为两个部份 , 第一个部份为 Pre-Boot 区 , 占了 446 bytes ; 第二部份是 Partition Table , 占了 66 bytes 。 Pre-Boot 区的作用之一 , 就是去看看那个 Partition 被标成 Active , 然後去读那个 Partition 的 Boot 区。) (LILO是现在许多Linux缺省的引导程序,它的全称是Linux Loader,拥有很强大的功能。Grub 也是一个多重启动管理器,它的全称是Grand Unified Bootloader。Grub的功能与LILO一样,也是在多个操作系统共存时选择引导哪个系统。它可以引导很多PC上常用的操作系统,其中就有Linux、FreeBSD、Solaris、Windows 9x、Windows NT;可以载入操作系统的内核和初始化操作系统;可以把引导权直接交给操作系统来完成引导;可以直接从FAT、minix、FFS、ext2或ext3分区读取Linux内核。)
       3. 加载 Kernel 操作系统核心信息, Kernel 开始解压缩,并且尝试驱动所有硬件装置;
       4. Kernel 执行 init 程序并取得 run-level 信息;
       启动等级不同,其运行脚本(也就是服务)会不同。默认的等级有以下几项:
  0 - halt (系统直接关机)
  1 - single user mode (单人模式,用于系统维护时使用)
  2 - Multi-user, without NFS (类似3模式,不过少了NFS服务)
  3 - Full multi-user mode (完整模式,不过,是文本模式)
  4 - unused (系统保留功能)
  5 - X11 (与3模式类似,不过,是X终端显示)
  6 - reboot (重新开机)
  (不要选择0或4,6 否则进不了系统)
       5. init 执行 /etc/rc.d/rc.sysinit 档案;
      系统知道自己的启动等级后,接下来不是去启动服务,而是先设置好主机运行环境。读取的文件
是/etc/rc.d/rc.sysinit文件。那究竟要设置哪些环境呢? 设置网络环境/etc/sysconfig/network,如主机名,网关,IP,DNS等。挂载/proc,此文件是个特殊文件,大小为0,它是在内存当中。根据内核在开机时的结果/proc/sys/kernel/modprobe,开始进行周边设备的侦测。载入用户自定义的模块/etc/sysconfig/modules/*.modules。读取/etc/sysctl.conf文件对内核进行设定:设定时间,终端字体,硬盘LVM或RAID功能,以fsck进行磁盘检测。将开机状况记录到/var/log/dmesg中。(可以用命令dmesg查看结果)
       6. 启动核心的外挂模块 (/etc/modprobe.conf);
       7. init 执行 run-level 的各个批次档( Scripts );
不同的run-level会有不同的服务启动。到/etc/rc.d目录中,不同的level会有不同的目录。如启动3模式,会有个rc3.d目录,里面就保存着服务。其中,S(start)开头的表明开机启动,K(kill)开头的表明开机不启动.数字表示启动顺序.数字越小,启动越早。注意,他们都是连接到etc/rc.d/init.d/目录中的相关文件。所以,想手工启动某一服务,可以用"/etc/rc.d/init.d/某个服务 start"启动。相反,我们也可以把某个服务ln(链接命令)到不同run-level的目录中,记得打上S或者K+数字。
       8. init 执行 /etc/rc.d/rc.local 档案;
       9. 执行 /bin/login 程序,并等待使用者登入;
      10. 登入之后开始以 Shell 控管主机。
      【摘自:IT服务网 www.itfww.com,转载请注明出处,谢谢】

你可能感兴趣的:(linux,顺序,开机,执行,休闲)