第十九章 启动流程,模块管理,Loader

启动流程       

多重引导、忘记root密码,如何直接直接进行纯命令行等问题都需要了解liunx启动流程

启动流程一览

        加载BIOS->读取第一个MBR启动引导程序->根据引导程序加载内核->调用systemd

boot loader引导程序

        由于每个操作系统的文件格式不同,需要一个引导程序来解决内核加载问题,这个引导程序就被称为boot loader;

        每个操作系统必须要使用自己的loader程序才能加载内核文件;

        通常都留有启动扇区(boot sector)提供操作系统安装 boot loader;

功能

1 提供菜单:用户可以选择不同的开机项目,这也是多重开机的重要功能!
2 载入核心档案:直接指向可开机的程序区段来开始操作系统;
3 转交其他 loader:将开机管理功能转交给其他 loader 负责。

双系统引导问题

 

由于windows的loader默认不具备转交控制权可能,所以不能用windows的loader程序来启动linux

虚拟文件系统initramfs:

       虚拟文件系统(Initial RAM Disk或Initial RAM Filesystem), 能通过bootloader来加载到内存中,提供一个模拟的根目录,最终加载启动过程中所需的驱动(如USB驱动模块),内核模块;

        其实initramfs(虚拟文件系统)就是一个小型的根目录,这个小型根目录里面也是透过 systemd 来进行管理,同时观察 default.target 的连结,会发现其实这个小型系统就是透过 initrd.target 来开机,而 initrd.target 也是需要读入一堆例如 basic.target, sysinit.target 等等的硬件检测、核心功能启用的流程, 然后开始让系统顺利运作;

initramfs 内所包含的模组大多是与开机过程有关,而主要以档案系统及硬碟模组(如usb, SCSI 等) 为主』的啦!

一般来说,需要initramfs 的时刻为:

  • 根目录所在磁碟为SATA、USB 或SCSI 等连接介面;
  • 根目录所在档案系统为LVM, RAID 等特殊格式;
  • 根目录所在档案系统为非传统Linux 认识的档案系统时;
  • 其他必须要在核心载入时提供的模组。  

---

      dracut命令修改initramfs文件

[root@study ~]# dracut [-fv] [--add-drivers 列表] initramfs档名核心版本
选项与参数:
-f :强迫编译出initramfs ,如果initramfs 档案已经存在,则覆盖掉旧档案
-v :显示dracut 的运作过程
--add-drivers 列表:在原本的预设核心模组中,增加某些你想要的模组!模组位于核心所在目录
                    /lib/modules/$(uname -r)/kernel/*
initramfs档名:就是你需要的档名!开头最好就是initramfs,后面接版本与功能
核心版本:预设当然是目前运作中的核心版本,不过你也可以手动输入其他不同版本!
其实dracut 还有很多功能,例如底下的几个参数也可以参考看看:
--modules :将dracut 所提供的开机所需模组(核心核模组) 载入,可用模组在底下的目录内
             /usr/lib/dracut/modules.d/
--gzip|--bzip2|--xz:尝试使用哪一种压缩方式来进行initramfs 压缩。预设使用gzip 喔!
--filesystems :加入某些额外的档案系统支援!

调用systemd

        当内核硬件检查完毕后,第一个调用的程序就是systemd

     流程

我们 CentOS 7.x 的 systemd 开机流程大约是这样:

local-fs.target + swap.target:这两个 target 主要在挂载本机 /etc/fstab 里面所规范的档案系统与相关的内存置换空间。
sysinit.target:这个 target 主要在侦测硬件,加载所需要的核心模块等动作。
basic.target:加载主要的外围硬件驱动程序与防火墙相关任务
multi-user.target 底下的其它一般系统或网络服务的加载
图形界面相关服务如 gdm.service 等其他服务的加载

        会首先取得 /etc/systemd/system/default.target 这一个预设操作界面的默认设定

        之后链接到 /usr/lib/systemd/system/ 这个目录下去取得 multi-user.target(包含命令行登录服务) 或 graphical.target(图形登录服务)这两个其中的一,不会同时启动

         --之后获取具体设置-->就是如下的目录:

  /etc/systemd/system/graphical.target.wants/:用户设定加载的 unit
  /usr/lib/systemd/system/graphical.target.wants/:系统默认加载的 unit

开机默认进入命令行界面·

        multi-user.target服务默认是关闭的,我们开启就行:

sudo systemctl set-default multi-user.target

multi-us

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值