Linux开机

http://hi.baidu.com/zengjianyuan/blog/item/1842bc012a47e104728da5fb.html

 

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 控管主机。

 

=========================================

Linux配置文件执行顺序

 

Linux登录后,配置执行顺序为(Debian Serials Capable):/etc/environment -> /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

关于各个文件的作用,在LinuxSir上找到了以下说明:
(1)/etc/environment:此配置文件设置基本的PATH变量,及系统当前语言变量,虽然比较短,但却在系统启动中占据举足轻重的作用,比如如下是我的系统中的内容:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
LANGUAGE="zh_CN:zh:en_US:en"
LANG="zh_CN.UTF-8"
(2)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

(3)/etc/bash.bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。

(4)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

(5)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

(6)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

(7)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值