您的位置:首页 > 运维架构 > Linux

Linux 启动流程与多重引导及虚拟文件系统的意义

2014-08-30 16:29 537 查看
一,一些常识:

①每块硬盘的第一个扇区包含446B的MBR(主引导记录)和46B的分区表(partition table)。

②每个文件系统(分区)一般在最前面都会保留一个boot sector(引导扇区或称为启动扇区)。

③CMOS是记录各项硬件参数且嵌入到主板上的存储器,BIOS是一个写入到主板上的软件程序。

二,启动流程:

按下电源---自动加载BIOS(读取CMOS各种参数、开机硬件检测)---根据BIOS中指定的启动设备(某块硬盘)读取MBR---安装在MBR上的boot loader(如:grub)提供各种菜单供用户选择启动选项

启动选项如:转交给winodws loader ,转交给linux loader……

比如选择了启动linux系统,则在grub提供的菜单上选择linux的相应启动选项,然后进入linux loader ,再由linux loader 加载内核文件,最后完成启动。

三,一些介绍:

一块硬盘的第一个扇区有446B的MBR,有46B的分区表,给该硬盘进行格式化时,(或进行分区时),比如划出一个分区用来安装windows,则将该分区格式化为NTFS;再划出一个分区用来安装linux,则将该分区格式化为EXT3.

windows的文件系统与linux文件系统是不同的,因此,这两个文件系统一般在不同的分区上,而在每一个分区上一般默认会划分出一个boot sector,该boot sector

用来安装boot loader,boot loader就是用来加载系统内核文件的。

windows安装时,默认主动将MBR与boot sector 都装上一份boot loader,而linux安装时,可以选择将boot loader安装到MBR,也可以选择不安装到MBR。因此,装双系统时,要先装好windows。这样再去装linux时,把grub安装到MBR中,由grub提供的选项来选择是否启动哪个系统,当选择了linux时,就会跳转到linux文件系统下的boot sector 下去执行boot loader以加载linux内核;当选择了windows时,就会跳转到windows的文件系统下的boot
sector 去执行boot loader以加载windows内核。

虚拟文件系统的意义:

linux中,模块(各种各样的驱动程序)放置在磁盘根目录下(/lib/modules/),因此在启动过程中内核必须要挂载根目录,这样才能读取内核模块以加载驱动程序。

但是,由于内核不认识磁盘,因而需要加载磁盘的驱动程序,而磁盘的驱动程序又存放在/lib/modules/下,因而需要挂载根目录,但是内核又没有加载磁盘的驱动程序,因此似乎陷入了一个死循环中。此时就需要虚拟文件系统来处理了。

虚拟文件系统一般使用文件名为:/boot/initrd 它通过boot loader 加载到内存,在内存中解压并仿真出一个根目录,这个仿真的文件系统提供一个可执行程序,通过该程序来加载内核需要的模块(如各文件系统与磁盘接口的驱动程序)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: