|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 659|回復: 1
打印 上一主題 下一主題

Linux的系统启动流程,boot loader,init

[複製鏈接]

989

主題

1

好友

5295

積分

教授

Rank: 8Rank: 8

  • TA的每日心情

    2024-11-3 15:50
  • 簽到天數: 1258 天

    [LV.10]以壇為家III

    推廣值
    2
    貢獻值
    378
    金錢
    1523
    威望
    5295
    主題
    989

    回文勇士 文明人 中學生 高中生 簽到勳章 簽到達人 男生勳章 大學生 文章勇士 附件高人 附件達人 文章達人 教授

    樓主
    發表於 2013-7-20 20:28:06
    Linux的系统启动流程,boot loader,init



    系统启动流程

    以debian6为例

    1 加载BIOS的硬件信息与进行自我测试,并取得启动设备(如硬盘、光盘、闪存)

    2 读取并执行启动设备内MBR的boot loader(如grub等)

    3 依据boot loader的设定加载kernel,kernel开始侦测硬件并加在驱动程序

    4 硬件驱动成功后,kernel会主动呼叫init程序,而init会取得run-level信息

    5 init执行/etc/init.d/rc脚本来准备软件执行的工作环境(如网络、时区等)

    6 init执行run-level的各个服务之启动(scipt方式)

    7 init执行/etc/rc.d/rc.local文件

    8 init执行终端机启动login程序,等待用户登录



    boot loader

    1 每个硬盘的MBR只有一个

    2 每个文件系统(filesystem,或者是partition)都会保留一块启动扇区(boot sector)

    3 每个操作系统默认会安装boot loader到他自己的文件系统的boot sector中

    4 boot loader可以安装在MBR中,boot loader也可以安装在boot sector中

    5 boot loader可以将管理权转交给其他的boot loader



    init初始程序及其配置文件/etc/inittab

    /sbin/init最主要的功能就是准备软件执行的环境,包括系统主机名、网络设定、语系处理、文件系统格式即其他服务的启动

    /etc/inittab是/sbin/init的配置文件,此配置文件类似script,需要一步一步执行



    init处理流程,也就是/etc/inittab执行步骤

    1  设置默认的runlevel  id:2:initdefault:

    2  系统启动初始化脚本  si::sysinit:/etc/init.d/rcS

    3  运行runlevel为2的脚本  l2:2:wait:/etc/init.d/rc 2

    4  设置ctrl+alt+del组合进行重启  ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

    5  设置电源管理  pf::powerwait:/etc/init.d/powerfail start

    6  启动终端tty1  1:2345:respawn:/sbin/getty 38400 tty1

    步骤详细分析

    1 上表第2步调用rsS其实是调用/etc/init.d/rc S,

       上表第3步也是同样调用/etc/init.d/rc 2

    2 查看/etc/init.d/rc脚本,此脚本根据参数runlevel调用相应runlevel的脚本

       相应runlevel的脚本的路径为/etc/rc$runlevel.d/

    3 /etc/rc$runlevel.d/路径下脚本被依次执行,启动或关闭相应的服务

       /etc/rc$runlevel.d/S* 需要开启的服务

       /etc/rc$runlevel.d/K* 需要关闭的服务

    4 /etc/init.d/rc.local脚本在/etc/rc$runlevel.d/路径下最后执行

       /etc/init.d/rc.local脚本为用户自定义系统启动脚本



    /etc/inittab主要语法

    /etc/inittab由:(冒号)来分隔成4部分

    1 id。最多4个字符,代表init的主要工作,只是简单说明

    2 runlevel。代表该初始化动作在哪些runlevel下运行

    3 action。代表初始化的特别动作

    4 process。代表需要进行的命令,通常是一些script

    更详细的可参考man inittab



    action初始化特别动作

    initdefault  代表预设的runlevel设定值

    sysinit  代表系统初始化的动作

    ctrlaltdel  代表按下这3个按键是否可以重启

    wait  代表后面的process命令必须执行完毕才能继续

    respawn

    代表后面的process命令可以无限制的再生。

    例如getty启动login,注销后,此动作还会启动login



    runlevel执行等级

    runlevel作用就是规定系统使用不同的服务来启动,根据目的设置相应的工作环境

    不同版本的linux还需要查看/etc/inittab

    0  halt  系统直接关机

    1  single-user  单人维护模式,用在系统出问题时的维护

    2  multi-user without NFS  多用户文本模式,无NFS服务

    3  full multi-user  完整含有网络功能的多用户纯文本模式

    4  unused  系统保留

    5  X11  多用户图形界面,加载使用X Window

    6  reboot  重启



    相关文件

    /boot/vmlinuz-$(uname -r)  linux核心文件

    /boot/initrd-$(uname -r)  启动时虚拟文件系统

    /boot/grub/*  boot loader程序

    /etc/inittab  init配置文件

    /etc/init.d/rc  初始化系统启动脚本

    /etc/rc$runlevel.d/*  相应runlevel系统启动脚本

    /etc/init.d/rc.local  用户自定义系统启动脚本

    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-11-11 19:21 , Processed in 0.012884 second(s), 16 queries , Gzip On, Memcache On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部