1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Note For Linux By Jes(14)-启动流程 模块管理与 Loader

Note For Linux By Jes(14)-启动流程 模块管理与 Loader

时间:2023-07-30 23:06:13

相关推荐

Note For Linux By Jes(14)-启动流程 模块管理与 Loader

Linux的启动流程分析:

启动流程一览

加载BIOS 的硬件资讯与进行自我测试,并依据配置取得第一个可启动的装置;

读取并运行第一个启动装置内MBR 的boot Loader (亦即是grub, spfdisk 等程序);

依据boot loader 的配置加载Kernel ,Kernel会开始侦测硬件与加载驱动程序;

在硬件驱动成功后,Kernel会主动呼叫init 程序,而init 会取得run-level 资讯;

init 运行/etc/rc.d/rc.sysinit 文件来准备软件运行的作业环境(如网络、时区等);

init 运行run-level 的各个服务之启动(script 方式);

init 运行/etc/rc.d/rc.local 文件;

init 运行终端机模拟程序mingetty 来启动login 程序,最后就等待使用者登陆啦;

BIOS, boot loader 与kernel 加载:

BIOS, 启动自我测试与MBR

Boot Loader 的功能

提供菜单:使用者可以选择不同的启动项目,这也是多重启动的重要功能!

加载核心文件:直接指向可启动的程序区段来开始操作系统;

转交其他loader:将启动管理功能转交给其他loader 负责。

加载核心侦测硬件与initrd 的功能

第一支程序init 及配置档/etc/inittab 与runlevel:

Run level:运行等级有哪些

0 - halt (系统直接关机)

1 - single user mode(单人维护模式,用在系统出问题时的维护)

2 - Multi-user, without NFS(类似底下的runlevel 3,但无NFS 服务)

3 - Full multi-user mode(完整含有网络功能的纯文字模式)

4 - unused (系统保留功能)

5 - X11 (与runlevel 3 类似,但加载使用X Window)

6 - reboot (重新启动)

/etc/inittab 的内容与语法

[配置项目]:[run level]:[init 的动作行为]:[命令项目]

init 的处理流程

使用/etc/rc.d/rc.sysinit 进行系统初始化

由於runlevel 是5 ,因此只进行『l5:5:wait:/etc/rc.d/rc5』,其他行则略过

配置好[ctrl]+[alt]+[del] 这组的组合键功能

配置不断电系统的pf, pr 两种机制;

启动mingetty 的六个终端机(tty1 ~ tty6)

最终以/etc/X11/perfdm -nodaemon 启动图形介面啦!

init 处理系统初始化流程(/etc/rc.d/rc.sysinit):

取得网络环境与主机类型:

读取网络配置档/etc/sysconfig/network ,取得主机名称与默认通讯闸(gateway) 等网络环境。

测试与挂载内存装置/proc 及U盘装置 /sys:

除挂载内存装置/proc 之外,还会主动侦测系统上是否具有usb 的装置,若有则会主动加载 usb 的驱动程序,并且尝试挂载usb 的文件系统。

决定是否启动SELinux :

我们在第十七章谈到的SELinux 在此时进行一些检测,并且检测是否需要帮所有的文件重新编写标准的SELinux 类型(auto relabel)。

启动系统的乱数产生器

乱数产生器可以帮助系统进行一些口令加密演算的功能,在此需要启动两次乱数产生器。

配置终端机(console) 字形:

配置显示於启动过程中的欢迎画面(text banner);

配置系统时间(clock) 与时区配置:需读入/etc/sysconfig/clock 配置值

周边设备的侦测与Plug and Play (PnP) 参数的测试:

根据核心在启动时侦测的结果(/proc/sys/kernel/modprobe ) 开始进行ide / scsi / 网络/ 音效等周边设备的侦测,以及利用以加载的核心模块进行PnP 装置的参数测试。

使用者自订模块的加载

使用者可以在/etc/sysconfig/modules/*.modules加入自订的模块,则此时会被加载到系统当中

加载核心的相关配置:

系统会主动去读取/etc/sysctl.conf 这个文件的配置值,使核心功能成为我们想要的样子。

配置主机名称与初始化电源管理模块(ACPI)

初始化软件磁盘阵列:主要是透过/etc/mdadm.conf 来配置好的。

初始化LVM 的文件系统功能

以fsck 检验磁碟文件系统:会进行filesystem check

进行磁碟配额quota 的转换(非必要):

重新以可读写模式挂载系统磁碟:

启动quota 功能:所以我们不需要自订quotaon 的动作

启动系统虚拟乱数产生器(pseudo-random):

清除启动过程当中的缓存文件:

将启动相关资讯加载/var/log/dmesg 文件中。

启动系统服务与相关启动配置档(/etc/rc.d/rc N & /etc/sysconfig)

使用者自订启动启动程序(/etc/rc.d/rc.local)

根据/etc/inittab 之配置,加载终端机或X-Window 介面

启动过程会用到的主要配置档:/etc/modprobe.conf,/etc/sysconfig/*

Run level 的切换:init[0-6]

核心与核心模块:

核心:/boot/vmlinuz 或/boot/vmlinuz-version;

核心解压缩所需RAM Disk:/boot/initrd (/boot/initrd-version);

核心模块:/lib/modules/version/kernel 或/lib/modules/$(uname -r)/kernel;

核心原始码:/usr/src/linux 或/usr/src/kernels/ (要安装才会有,默认不安装)

核心模块与相依性:

/lib/modules/$(uname -r)/kernel

lib/modules/$(uname -r)/modules.dep

depmod

核心模块的观察:

多少模块:lsmod

模块名称(Module);

模块的大小(size);

此模块是否被其他模块所使用(Used by)。

模块的资讯:modinfo

核心模块的加载与移除:

insmod 则完全由使用者自行加载一个完整档名的模块

rmmod 移除模块

核心模块的额外参数配置:/etc/modprobe.conf

Bootloader: Grub:

boot loader 的两个stage:Stage1:运行boot loader 主程序,Stage2:主程序加载配置档

grub 的配置档/boot/grub/menu.lst 与菜单类型

grub 对磁碟的代号配置与Linux 不同,主要透过侦测的顺序来给予配置。如(hd0) 及(hd0,0) 等。

menu.lst 内每个菜单与titile 有关,而直接指定核心启动时,至少需要kernel 及initrd 两个项目

menu.lst 内配置loader 控制权移交时,最重要者为chainloader +1 这个项目。

若想要重建initrd ,可使用mkinitrd 处理

重新安装grub 到MBR 或boot sector 时,可以利用grub shell 来处理。

启动过程的问题解决:

忘记root 口令的解决之道:

重新启动!一定要重新启动!怎么重开都没关系;

在启动进入grub 菜单后,(1)在你要进入的菜单上面点'e' 进入详细配置;(2)将光棒移动到kernel 上方并点'e' 进入编辑画面;(3)然后出现如下画面来处理:

重点就是那个特殊字体的咚咚啦!按下[enter] 再按下b 就能够启动进入单人维护模式了。

进入单人维护模式后,系统会以root 的权限直接给你一个shell ,此时你就能够运行『passwd 』这个命令来重建root 的口令啦!然后直接『init 5 』就可以切换成为X 窗口介面罗!就是这么简单。

init 配置档错误:

grub edit> kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet init=/bin/bash

BIOS 磁碟对应的问题(device.map)

因文件系统错误而无法启动:/etc/fstab

利用chroot 切换到另一颗硬盘工作

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。