Linux从上电到登录

Linux从上电到登录


步骤:引导、加载、挂载、运行、执行、登录

流程:电源接通–>cpu通电运行–>跳转至bios–>bios读取硬件信息,获得设备启动和启动信息–>初始化硬件设备–>于第一个启动设备的MBR读取bootloader执行–>启动引导程序uboot–>uboot初始化、启动–>传递参数给内核 -->调用内核–>内核解压–>initrd.img解压到ramdisk中–>挂载initrd至根目录–>检测initrd中的linuxrc,执行脚本–>挂载根文件系统 -->根目录下init–>系统初始化,运行级别设置(inittab)–>系统环境init(rcS.conf)–》运行级别环境初始化(rc[0-6].d)–>终端init–>/bin/login

BIOS阶段(启动内核)

  • 按下电源,计算机通电,接通cpu的电路,然后通过cpu的针脚让cpu运行起来,执行相关代码跳到bios
  • 读取CMOS信息,开机自检,检测硬件设备是否故障、故障停机和恢复
  • 获取硬件设备信息和启动信息(启动设备和启动顺序)、开始硬件初始化,规定从启动设备开始读取MBR
  • MBR的ROM中读取并执行启动引导程序(uboot为例),传递内核启动参数、initrd.img和target list(or dtb image),寻找内核并加载到内存中
  • 详见kernel/Documentation/arm/Booting

内核启动到rootfs挂载阶段(启动init)

  • 使用Buysbox制作根文件系统

  • 读取ramdisk路径,挂载虚拟根文件系统(initrd.img、initrd.cpio、initramfs)到根目录

  • 在vrtfs中,以用户态环境完成内核中在启动阶段不易完成的工作,加载需要的模块等

  • 查找vrtfs中linuxrc文件,挂载真正的rootfs,切换根目录,在根目录执行init

  • 内核启动最后阶段三个进程idle、init、kthreadd

系统初始化

系统运行级别获取

7个运行级别(systemd管理的系统是没有/etc/inittab文件的,即使有也仅仅只是出于提醒的目的,因为systemd没有了运行级别的概念)

0:halt,即关机
1:单用户模式
2:不带NFS的多用户模式
3:完整多用户模式
4:保留未使用的级别
5:X11,即图形界面模式
6:reboot,即重启

系统环境初始化

其中exec /etc/rc.d/rc.sysinit这一行就表示要执行/etc/rc.d/rc.sysinit文件,该文件定义了系统初始化(system initialization)的内容:

(1) 确认主机名。
(2) 挂载/proc和/sys等特殊文件系统,使得内核参数和状态可与人进行交互。
(3) 启动udev,也就是启动类似windows中的设备管理器。
(4) 初始化硬件参数,如加载某些驱动,设置时钟等。
(5) 设置主机名。
(6) 执行fsck检测磁盘是否健康。
(7) 挂载/etc/fstab中除/proc和NFS的文件系统。
(8) 激活swap。
(9) 将所有执行的操作写入到/var/log/dmesg文件中。

运行级别初始化

Linux采用了将各运行级别初始化内容分开管理的方式,将0-6这7个运行级别要执行的初始化脚本分别放入rc[0-6].d这7个目录中。实际上/etc/init.d/下的脚本才是真正的脚本

终端初始化

调用登录程序/bin/login,getty进程

--笔记总结,后续细化--

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值