鸟哥私房菜 20

本章主要与Linux的启动有关。
1、Linux 启动流程一览:
(1)加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备
        BIOS会首先CMOS,通过cmos读取硬件配置。
(2)读取并执行第一个启动设备内MBR的boot Loader
         MBR:master boot loader
(3)依据boot loader的设置加载Kernel,Kernel 会开始检测硬件与加载驱动程序
(4)在硬件驱动成功后,Kernel会主动调用init进程,而init会取得run-level 信息
(5)init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境
(6)init执行run-level的各个服务的启动
(7)init执行/etc/rc.d/rc.local文件
(8)init执行终端机模拟程序mingetty来启动login进程,最后就等待用户登陆。
2、Boot Loader 的功能
最主要的功能是要认识操作系统的文件格式并据此加载内核到内存中去执行
有三个方面:
(1)提供菜单:用户可以选择不同的启动选项,这也是多重引导的重要功能
(2)加载内核文件:直接指向可启动的程序区段来开始操作系统
(3)转交其他loader:将引导装载功能转交给其他loader负责
    windows 的loader默认不具有控制权转交的功能,因此不能使用windows的loader来加载Linux的loader。这就是为什么之前会强调要先安装windows再安装Linux的缘故。
3、第一个进程init及配置文件/etc/inittab与run level
在内核加载完毕进行完硬件检测与驱动程序加载后,此时硬件就绪,内核会主动调用第一个程序,那就是/sbin/init
/sbin/init最主要的功能就是准备软件执行的环境。有很多操作,而这些操作都会通过init的配置文件/etc/inittab来规划。
Linux就是通过run level来规定系统使用不同的服务来启动,让Linux的使用环境不同。
4、如果有个新的硬件,而操作系统不支持,该怎么办?
(1)重新编译内核,并加入最新的硬件驱动程序源码;
(2)将该硬件的驱动程序编译成为模块,在启动时加载该模块。
5、自行加载模块:insmod 完全有用户自行加载一个完整文件名的模块,并不会主动分析模块依赖性。
rmmod 可以删除这个模块。
使用insmod与rmmod的问题就是必须自行找到模块的完整文件名才行,万一模块有依赖属性的问题,将无法直接加载或者删除该模块。这是后可以使用modprobe来处理模块加载的问题。
使用modprobe真的是比insmod方便的多,它可以直接去查找modules.dep的记录,可以克服模块的依赖性问题。
6、内核模块放置于/lib/modules/$(uname -r)/kernel/当中,这些模块必须要在根目录(/)被挂载时才能够读取。这时候就需要initrd.
initrd可以将/lib/modules/...内的启动过程中一定需要的模块打包成一个文件,然后在启动时通过主机的INT13硬件功能将该文件读取出来并压缩,并且initrd在内存内会仿真成为根目录。
initrd内所包含的模块大多是与启动过程有关,而主要以文件系统及硬盘模块为主的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值