设为首页 收藏本站
查看: 252|回复: 0

[经验分享] linux开机流程、模块管理与Loader

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-14 08:20:32 | 显示全部楼层 |阅读模式
1.系统开机过程:
        1)加载BIOS的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置
        2)读取并执行第一个开机装置内MBR的boot Loader(亦即grub,spfdisk等程序)
        3)依据boot loader的设定加载Kernel,Kernerl会开始侦测硬件信息与加载驱动程序
        4)在硬件驱动成功之后,Kernel会主动呼叫init程序。而init会取得run-level信息
        5)init执行/etc/rc.d/rc.sysinit档案来准备软件执行的作业环境(如网络,时区等)
        6)init执行run-level的各个服务之启动(script方式)
        7)init执行/etc/rc.d/rc.local档案
        8)init执行终端机仿真程序mingtty来启动login,最后就等待用户登入啦。
2.BIOS、开机自我测试,MBR与boot loader
        1)启动整部系统首先就得要让系统加载BIOS,并透过BIOS程序加载CMOS的信息,并且藉由CMOS内的设定值取得主机的各项硬件配置。取得这些信息后,BIOS还会进行自我测试,然后开始执行硬件侦测的初始化,并设定PnP(Plug and Play,即插即用装置),之后在定义出可开机的装置顺序,接下来就会开始进行装置的数据读取了(MBR相关任务的开始)。
        2)开机管理程序(Boot Loader)安装在开机装置的第一个扇区(sector)内,也就是我们一直谈到的MBR(Master Boot Record,主要启动记录区)。BIOS透过INT 13这条信道来读取MBR。
        3)Loader最主要的功能是识别操作系统的文件格式并加载核心到主存储器中去执行。其中每个文件系统(filesystem或partition)都会保留一块启动扇区提供操作系统安装boot loader,而通常操作系统默认都会安装一份loader到他的根目录所在的文件系统的boot sector上。linux系统安装时,你可以选择将boot loader安装到MBR去,也可以选择不安装。而windows安装时,它预设会主动的将MBR与boot sector都装上一份boot loader程序。因此,安装多重操作系统时,你的MBR常常会被不同的操作系统的boot loader所覆盖。
        4)boot loader的主要功能有:
                提供选单:用户可以选择不同的开机项目,这也是多重引导的重要功能
                载入核心档案:直接指向可开机的程序区段来开始操作系统
                转交其他loader:将开机管理功能转交给其他loader负责。
        5)windows的loader预设不具有控制权转交功能,因此不能使用Windows的loader来加载Linux的loader,这也是为啥必须先装windows在装linux。
3.加载核心侦测硬件与initrd:boot loader开始读取核心后,linux会将核心解压缩到主存储器中,并且利用核心的功能,开始测试与驱动各个周边装置,包括储存装置、CPU、网络卡、声卡等。此时Linux会以自己的功能重新侦测一次硬件,而不一定会使用BIOS侦测到的硬件信息。即核心此时才开始接管BIOS后的工作了。核心一般放在/boot/vmlinuz
4.Linux可以动态加载核心模块的(可以理解为驱动程序),这些核心放置在/lib/modules/目录内。由于放置到磁盘根目录内(/lib不能与/分别放在不同的partition),因此在开机的过程中核心必须要挂载根目录,这样才能够读取核心模块提供加载驱动程序的功能。而且为了担心影响到磁盘内的文件系统,因此开机过程中根目录是以只读的方式来挂载的。
5.虚拟文件系统一般使用的档名为/boot/inird,这个档案可以透过boot loader来加载到内存中,然后这个档案会被压缩并且在内存当中仿真出一个根目录,且此仿真在内存当中的文件系统能够提供一支可执行的程序,透过该程序来加载开机过程中所最需要的核心模块,通常这些模块就是USB,RAID,LVM,SCSI等文件系统与磁盘接口的驱动程序,等载入完成后,会帮助核心重新呼叫/sbin/init来开始后续的正常开机流程。
6.第一支程序init及配置文件/etc/inittab与runlevel:在核心加载完,进行完硬件侦测与驱动程序加载后,此时你的主机硬件应该已经准备就绪了,此时核心会主动呼叫第一支程序,那就是/sbin/init,因此该程序的PID为1,该程序的最主要功能就是准备软件执行环境包括系统的主机名,网络设定,语系处理,文件系统格式及其他系统服务启动等。而所有的动作都会透过init的配置文件/etc/init的配置文件,亦即是/etc/inittab来规划,而inittab内还有一个很重要的设定项目,那就是默认的runlevel(开机执行等级)。
7./etc/inittab解读:
        initdefault:预设的runlevel设定值
        sysinit:代表系统初始化动作项目
        ctraltdel:代表[ctr]+[alt]+[del]三个按键是否可以重新启动的设定
        wait:后面的字段设定的指令项目必须要执行完毕才能继续底下其他的动作
        respawn:代表后面字段的指令可以无限制的再生(重新启动)。eg:tty1的mingetty产生的可登入画面,在注销结束后,系统会再开一个新的可登入画面等待下一个登入。
8.init的处理流程:该档案的内容设定是一行一行的从上往下处理的,具体为:
        1)先取得runlevel亦即默认的开机级别。
        2)使用/etc/rc.d/rc.sysinit进行系统初始化
        3)执行runlevel对应的行,eg:runlevel=5,则执行l5:5:wait:/etc/rc.d/rc 5
        4)设定[ctr]+[alt]+[del]这组的组合键功能
        5)设定不断电系统pf,pr两种机制
        6)启动mingetty的六个终端机(tty1~tty6)
        7)最终以/etc/X11/perfdm-nodaemon启动图形接口


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-40698-1-1.html 上篇帖子: linux创建删除用户和用户组 下篇帖子: linux运行级别和开机过程 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表