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)然后出现如下画面来处理:
grub edit> kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet single
重点就是那个特殊字体的咚咚啦!按下[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 切换到另一颗硬盘工作
Note For Linux By Jes(14)-启动流程、模块管理与 Loader相关推荐
- 鸟哥的Linux私房菜(基础篇)- 第二十章、启动流程、模块管理与 Loader
第二十章.启动流程.模块管理与 Loader 最近升级日期:2009/09/14 系统启动其实是一项非常复杂的程序,因为核心得要侦测硬件并加载适当的驱动程序后,接下来则必须要呼叫程序来准备好系统运行的 ...
- 【Linux鸟哥笔记】20-启动流程、模块管理与Loader
[Linux鸟哥笔记]20-启动流程.模块管理与Loader 目录浏览 章节学习 BIOS加载 内核功能 init进程 内核与内核模块 Boot Loader: Grub initrd 文件 启动过程 ...
- Linux应用程序的启动流程
目录 代码 用strace查看调用流程 分析 总结 看到一篇好文:摘抄记录--Linux应用程序 启动流程-BugMan-ChinaUnix博客 代码 #include <stdio.h> ...
- linux系统下开机启动流程
在了解开机启动流程之前,还是得先了解一些磁盘的基本知识.磁盘主要由盘片,机械手臂,磁头,主轴马达构成.盘片就是存储数据的物理单位了.然后盘片上我们可以分成扇区(sector)和柱面(cylinder) ...
- Note For Linux By Jes(18)-X Window 配置介绍
什么是XWindow System: 主要组件:X Server/X Client/Window Manager/Display Manager X Server:硬件管理.萤幕绘制与提供字型功能: ...
- 第十九章 启动流程,模块管理,Loader
启动流程 多重引导.忘记root密码,如何直接直接进行纯命令行等问题都需要了解liunx启动流程 启动流程一览 加载BIOS->读取第一个MBR启动引导程序->根据引导程序加载内核-> ...
- Note For Linux By Jes(20)-Linux 核心编译与管理
编译前的任务:认识核心与取得核心原始码: 什么是核心(Kernel) Kernel:核心就是系统上面的一个文件而已,这个文件包含了驱动主机各项硬件的侦测程序与驱动模块,这个核心文件通常被放置成/boo ...
- Note For Linux By Jes(16)-软件安装:原始码与 Tarball
开放源码的软件安装与升级简介: 什么是开放源码.编译器与可运行档 什么是函式库: 什么是make与configure: 侦测程序会侦测的数据大约有底下这些: 是否有适合的编译器可以编译本软件的程序码: ...
- Note For Linux By Jes(13)-认识与分析日志文件
什么是登录文件: Linux 常见的登录文件档名 /var/log/dmesg: 记录系统在启动的时候核心侦测过程所产生的各项资讯.由於CentOS 默认将启动时核心的硬件侦测过程取消显示,因此额外将 ...
最新文章
- c 没有mysql名称空间_MySQL如何删除#sql开头的临时表
- WIN10+VS2015环境下安装PCL1.8.1
- git tag什么时候使用_git使用教程9pycharm 使用 tag 打标签
- 用scanline取BMP上某点的颜色,代码如下,为什么可以编译,运行时却出错呢?...
- 实操Tiktok一个月告诉你,10万粉丝轻松拿下?
- Silverlight访问Web Service报System.Security.SecurityException: 安全性错误的处理
- CSS兼容IE6,IE7,FF的技巧
- TensorFlow 实战(一)—— 交叉熵(cross entropy)的定义
- 大数据分析常见的几种方法
- flowjo汉化版_流式细胞分析软件FlowJo
- 在计算机知识post的含义,计算机术语POST是指的什么意思?
- Cisco Packet Tracer 子网划分实验
- jenkins构建报错: ssh: connect to host github.com port 22: Connection timed out
- 专业级游戏测试书上架:精通游戏测试(第3版)
- 电脑上的文件经常丢失,怎么办?
- Learning to Localize Sound Sources in Visual Scenes: Analysis and Applications
- 项目计划执行过程中,如何分析进度偏差?
- php 递归 递归方式与算法
- 2.4G NRF24L01无线模块总结
- 结构静力分析与动力学分析_51CAE_新浪博客