`

企鹅日记(二十):启动流程和模块管理

阅读更多

简单来说,linux的启动流程为:

1,加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备

2,读取并执行第一个启动设备内MBR的boot loader(即grub或者spfdisk等)

3,依据boot loader的设置加载kernel,kernel会开始检测硬件与加载驱动程序

4,在硬件驱动成功后,kernel会主动调用init进程,而init会取得run-level信息

5,init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(如网络,时区等)

6,init执行run-level的各个服务的启动(script方式)

7,init执行/etc/rc.d/rc.local文件

8,init执行终端机模拟程序mingetty来启动login进程,最后等待用户登录

====多重启动原理====

linux的boot loader主要功能如下:

× 提供菜单:用户可以选择不同的启动选项,这也是多重引导的重要功能!

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

× 转交其他loader:将引导装载功能转交给其他loader负责

而windows的boot loader是没有第三个功能,也就是转交功能,所以要先安装windows,再安装linux才行。

====第一个进程init====

先解释下run-level,总共有7各等级:

× 0 – halt(系统直接关机)

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

× 2 – Multi-user,without  NFS(类似下面的runlevel3,但是没有NFS服务)

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

× 4 – unused(系统保留功能)

× 5 – X11(与runlevel3类似,但多了各X Window,图形界面)

× 6 – reboot(重启)

这个init读取的配置文件为/etc/inittab,直接vim打开后查看,里面的内容很简单,不解释。

取得runlevel后,会立即执行/etc/rc.d/rc.sysinit脚本,大致要做的工作是:

1,取得网络环境与主机类型,读取配置文件/etc/sysconfig/network

2,测试与挂载内存设备/proc以及USB设备/sys

3,决定是否启动SELinux

4,启动系统随机数生成器

5,设置终端机console字体

6,设置显示于启动过程中的欢迎界面textbanner

7,设置系统时间clock与时区设置,读取/etc/sysconfig/clock配置文件

8,接口设备检测与Plug and Play即插即用参数测试

9,用户自定义模块加载:用户可以在/etc/sysconfig/modules/*.modules中加入自定义模块,则此时会被加载到系哦中去

10,加载内核相关设置:系统会主动读取/etc/sysctl.conf这个文件的设置值,使得内核功能称为我们想要的样子

11,设置主机名与初始化电源管理模块ACPI

12,初始化软件磁盘阵列:主要是通过/etc/mdadm.conf来设置好的

13,初始化LVM的文件系统功能

14,以fsck检测文件系统,进行filesystem check

15,进行磁盘配额quota的转换(非必要)

16,重新以可读写模式挂载系统磁盘(为了加速开机流程,开始是以只读模式挂载根目录)

17,启动quota功能:所以我们不需要自定义quotaon的操作

18,启动系统伪随机数生成器(pseudo-random)

19,清除启动过程中的临时文件

20,将启动相关信息加载/var/log/dmesg文件中

====启动系统服务====

以runlevel5的例子讲解,在/etc/inittab文件中:

l5:5wait:/etc/rc.d/rc 5

意义是这样的:

× 通过外部第一号参数($1)取得想要执行的脚本目录,即由/etc/rc.d/rc 5 可以取得/etc/rc5.d/这个目录来准备处理相关的脚本程序

× 找到/etc/rc5.d/K??*开头的文件,并进行/etc/rc5.d/K??*stop操作

× 找到/etc/rc5.d/S??*开头的文件,并进行/etc/rc5.d/S??*start的操作

====用户自定义开机启动程序====

就是/etc/rc.d/rc.local这个目录下,只要你把script放到这个里面来,开机就会自动执行

====重要的启动配置文件====

设备与模块对应文件:/etc/modprobe.conf

主配置文件目录:/etc/sysconfig/*:

× authconfig – 身份认证机制

× clock – 设置linux主机的时区

× i18n – 语系的设置,默认会被选择zh_CN.UTF8,命令行模式下,如果日期显示乱码,可以设置LC_TIME为en即可

× keyboard & mouse

× network – 可设置是否启用网络,以及设置主机名还有网关gateway这两个重要信息

× network-scripts/ – 在这里面的文件,主要用于设置网卡。

====内核与内核模块====

内核与内核模块放置的位置:

× 内核 – /boot/vmlinuz 或者是 /boot/vmlinuz-version

× 内核加压缩所需RAMDisk – /boot/initrd 或者是 /boot/initrd-version

× 内核模块:/ib/modules/$(uname -r)/kernel

× 内核源码 – /usr/src/linux 或者 /usr/src/kernels (要安装才有的)

如果内核被顺利加载到系统,那么就会有几个信息被记录下来:

× 内核版本:/proc/version

× 系统内核功能:/proc/sys/kernel

如果想要加入新的硬件,偏偏操作系统不支持,那么需要两步:

1,重新编译内核,计入最新的硬件驱动程序源码

2,将该硬件的驱动程序编译成模块,在启动时候加载该模块

内核模块依赖性:

# depmod [-Ane]

内核模块查看:

# lsmod

查看每一个模块的信息:

# modinfo [-adln] [module-name | filename]

内核模块的加载与删除:

# modprobe [-lcfr] module-name

-c:列出目前系统所有的模块

-l:列出目前在/lib/modules/$(uname -r)/kernel中所有模块完整文件名

-f:强制加载模块

-r:类似rmmod,删除某模块

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

====grub的配置文件====

/boot/grub/menu.lst中的磁盘代号:

表20-1 硬盘查找顺序 在grub中的代号
第一块 (hd0)(hd0,0)(hd0,1)…
第二块 (hd1)(hd1,0)(hd1,1)…
第三块 (hd2)(hd2,0)(hd2,1)…

====root密码忘记时候的处理====

重启,开机进入grub菜单后,在要进入的菜单上点击e进入详细编辑模式,将光标移动到kernel那一行的末尾,加入空格和single,然后按下enter,再按下b就能进入单人维护模式,直接执行passwd,重建新的密码即可。

而如果/etc/inittab文件出错,跟上面一样,不过是把single修改成init=/bin/bash,让系统不以init进程初始化,然后:

# mount -o remount,rw /

# mount -a

====================END====================

 

本人博客已搬家,新地址为:http://yidao620c.github.io/

分享到:
评论

相关推荐

    企鹅智酷年度报告:移动时代创业黄金法则.rar

    《企鹅智酷年度报告:移动时代创业黄金法则》是一份深入探讨移动互联网时代创业规律的重要文献。报告全面分析了在当前技术飞速发展、移动设备普及的背景下,创业者们如何抓住机遇,遵循黄金法则成功开创事业。以下将...

    《帝企鹅日记》观后感字.doc

    而纪录片《帝企鹅日记》如同一股清泉,为我们带来了自然界的另一种声音——关于生命的坚韧、爱情的纯粹和亲情的伟大。 《帝企鹅日记》以其独特的视角,记录了南极洲帝企鹅在极端恶劣环境下的生存状态。南极大陆的...

    帝企鹅日记观后感大全.doc

    总而言之,《帝企鹅日记》不只是简单记录了帝企鹅的生态,它还向我们展示了生命的意义、团队合作的力量、环境适应和坚韧不拔的重要性。这部纪录片是大自然给予我们的教诲,也是对人类社会的启示。它告诉我们,无论...

    帝企鹅日记观后感800字.docx

    在这个零下五十度的冰天雪地里,帝企鹅们不畏严寒,以其独特的生活习性和生存策略,展现了自然界中生物体对抗恶劣环境的壮丽史诗。 帝企鹅所居住的南极洲,被称为“世界的尽头”,是地球上最寒冷、风力最大的地方之...

    《帝企鹅日记》观后感.docx

    《帝企鹅日记》这部纪录片,就是一幅生动的南极画卷,用影像记录下了帝企鹅在极端条件下的生存和繁衍,传递出生命坚韧和亲情伟大的信息。 每年三月,南极洲的奥默克地区会迎来成千上万的帝企鹅,它们不惧零下40度的...

    《帝企鹅日记2—召唤》观后感参考.doc

    《帝企鹅日记2—召唤》这部纪录片以其独特的视角,向我们展示了帝企鹅从出生到成长的整个生命旅程。影片不仅仅是在记录一群南极生物的日常生活,更是在讲述一个关于生命、勇气和坚持的寓言故事。通过影像,我们看到...

    ps练习猫和企鹅

    ### PS练习猫和企鹅知识点详解 #### 一、项目概述 本教程旨在通过实际案例——猫和企鹅的图片合成,详细介绍Adobe Photoshop(简称PS)的基本操作技巧及高级合成技术。通过本教程的学习,读者将能够掌握如何利用PS...

    帝企鹅ۥ日记观后感大全精选.doc

    《帝企鹅日记》这部纪录片,便是这样一扇窗口,让我们得以窥见南极帝企鹅这一物种非凡的生命力与生存智慧,以及其背后的自然法则和生命之美。 影片中,帝企鹅所展现的勇气与智慧,让人不禁为之动容。在南极那千里...

    企鹅智酷:互联网+九大传统行业转型报告

    企鹅智酷:互联网+九大传统行业转型报告

    企鹅CMS v4.2 版本

    在这个版本中,企鹅CMS显然对用户体验和内容获取流程进行了优化,旨在提供一个更便捷、更自动化的平台。 首先,我们看到`.htaccess`文件,这是一个非常重要的Apache服务器配置文件,用于控制网站的访问权限和URL...

    企鹅与怪兽:互联时代的合作共享与创新模式

    企鹅与怪兽:互联时代的合作共享与创新模式

    帕尔默企鹅数据集.rar

    数据集包含了对南极洲不同地区生活的企鹅种群的研究数据,主要用于数据探索和可视化,以及分类任务。数据说明penguins_size.csv :经过简化的原始数据英文字段名中文字段名描述species种类巴布亚企鹅、阿德利企鹅、...

    戳企鹅游戏源码

    通过深入分析"戳企鹅游戏源码",我们可以学习到游戏开发的基础知识,包括Cocos2d-x引擎的使用、lua脚本编程、游戏逻辑设计以及资源和事件的管理。对于希望在游戏开发领域提升自己的人来说,这是一个很好的实践案例。

    VB版QQ宠物企鹅源码,

    5. **数据结构和状态管理**:为了实现企鹅的不同状态(如饥饿、快乐等),需要定义相应的数据结构存储宠物的状态,并根据这些状态决定企鹅的行为和用户界面的反馈。 6. **文件操作**:源码可能包含了读取和保存宠物...

    企鹅智酷:2019-2020中国互联网趋势报告.pdf

    企鹅智酷:2019-2020中国互联网趋势报告.pdf

    一路发_常规驱动模块2.46[ 兼容企鹅 和 64位系统 ]

    一路发_常规驱动模块2.46[ 兼容企鹅 和 64位系统 ]

    【帝企鹅算法】基于帝企鹅算法求解单目标问题附matlab代码.zip

    4. 更新策略:个体在移动过程中考虑邻近企鹅的信息,以及距离最优解的远近,动态调整移动方向和速度。 5. 停止条件:当达到预设的迭代次数或者满足其他停止条件时,算法结束,返回当前最优解。 二、Matlab实现 ...

    企鹅::penguin:通用的多功能Discord机器人

    企鹅 :penguin: Penguin是一款多功能Discord机器人,在编写时就考虑了Discord社区。 目前,该机器人尚处于早期阶段,并且仍在开发中,尚无法使用。 任何人都可以为这个项目做贡献。 如果您愿意,只需发送请求请求,...

    打企鹅系列之二

    打企鹅系列之二123456

    帝企鹅EPO优化算法原理、测试函数及matlab代码

    帝企鹅优化算法(Emperor Penguin Optimization Algorithm, 简称EPO)是一种模拟生物进化策略的全局优化算法,灵感来源于南极洲帝企鹅在极端环境下寻找食物的行为。该算法结合了群体智能和自然选择机制,旨在解决...

Global site tag (gtag.js) - Google Analytics