Linux 启动过程

2 篇文章 0 订阅
1 篇文章 0 订阅

XYM个人博客对应篇章


最近安装了Arch,梳理一下linux启动流程。

BIOS(MBR)
  1. 开机自检,通过通过BIOS加载CMOS,获取各种硬件信息。
  2. 按照BIOS 的boot sequeuece顺序读取每一个存储设备的最前面512个字节,如果发现最后两个字节是0x55, oxAA,那么就找到了主引导扇区MBR。
  3. MBR结构

    HDD 上的位置代码用意
    001-440 bytes由 BIOS 启动的 MBR 启动代码
    441-446 bytesMBR 硬盘签名
    447-510 bytes分区表 (主分区和扩展分区,而非逻辑分区)
    511-512 bytesMBR 启动签名 0xAA55
GRUB
  1. 通过引导器(GNU/Linux 引导器包括 GRUB 和 Syslinux)读取分区表。
  2. “传统” Windows/DOS MBR:引导器代码会在整个分区表里搜寻一个也是唯一的一个”活动”分区,读取该分区的X扇区,并把控制权交给操作系统。Windows/DOS 引导器不能启动 Arch Linux 分区因为它不是设计来加载 Linux 内核的,而且它只适应活动分区,主分区 (GRUB 会完全无视). 这也是为什么先装linux,再装windows会无法找到linux启动项。
  3. grub:linux下一般使用grub启动root loader,让用户选择启动哪个操作系统, grub可以从任何分区启动,无论它是主分区还是逻辑分区。
  4. 分区表:每个分区表的长度只有64个字节,里面又分成四项,每项16个字节(第1个字节:如果为0x80,就表示该主分区是”活动”分区)所以,一个硬盘最多只能分四个一级分区,又叫做”主分区”。 随着硬盘越来越大,四个主分区已经不够了,需要更多的分区。但是,分区表只有四项,因此规定有且仅有一个区可以被定义成”扩展分区”(Extended partition)也就逻辑分区。 逻辑分区,以链式存放,可以无限拓展。
载入内核
  1. 操作系统接管硬件以后,首先将系统内核载入RAM,执行内核代码设置自己的虚拟内存子系统和根文件系统,对硬件进行检测并进行设备驱动程序初始化。
  2. 驱动程序初始化后,会挂载一个只读的根文件系统(rootfs),执行/sbin/init, 释放内存。
初始化
  1. 执行/sbin/init 生成第一个进程,接管系统控制权,它首先会去读取/etc/inittab文件来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络等。
  2. 系统初始化脚本(/etc/rc.d/rc.sysinit)对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,读取各种系统配置,如分区挂载/etc/fstab, 网络配置/etc/sysconfig/network。
  3. 执行/etc/rc.d/rc脚本。该文件定义了服务启动的先后顺序,而具体的每个运行级别的服务状态是放在/etc/rc.d/rc*.d(=0~6)目录下,所有的文件均是指向/etc/init.d下相应文件的符号链接。rc.sysinit通过分析/etc/inittab文件来确定系统的启动级别,然后才去执行/etc/rc.d/rc.d下的文件。
用户登录
  1. 命令行登录:init进程调用getty程序(意为get teletype),让用户输入用户名和密码。输入完成后,再调用login程序,核对密码。如果密码正确,就从文件 /etc/passwd 读取该用户指定的shell,然后启动这个shell。
桌面载入
  1. 如果有配置图形界面自动启动,则登录成功后,会读取当前用户的~/.xinitrc 文件,启动对应的X窗口系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值