简单来说,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中的磁盘代号:
第一块 | (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/
相关推荐
《企鹅智酷年度报告:移动时代创业黄金法则》是一份深入探讨移动互联网时代创业规律的重要文献。报告全面分析了在当前技术飞速发展、移动设备普及的背景下,创业者们如何抓住机遇,遵循黄金法则成功开创事业。以下将...
而纪录片《帝企鹅日记》如同一股清泉,为我们带来了自然界的另一种声音——关于生命的坚韧、爱情的纯粹和亲情的伟大。 《帝企鹅日记》以其独特的视角,记录了南极洲帝企鹅在极端恶劣环境下的生存状态。南极大陆的...
总而言之,《帝企鹅日记》不只是简单记录了帝企鹅的生态,它还向我们展示了生命的意义、团队合作的力量、环境适应和坚韧不拔的重要性。这部纪录片是大自然给予我们的教诲,也是对人类社会的启示。它告诉我们,无论...
在这个零下五十度的冰天雪地里,帝企鹅们不畏严寒,以其独特的生活习性和生存策略,展现了自然界中生物体对抗恶劣环境的壮丽史诗。 帝企鹅所居住的南极洲,被称为“世界的尽头”,是地球上最寒冷、风力最大的地方之...
《帝企鹅日记》这部纪录片,就是一幅生动的南极画卷,用影像记录下了帝企鹅在极端条件下的生存和繁衍,传递出生命坚韧和亲情伟大的信息。 每年三月,南极洲的奥默克地区会迎来成千上万的帝企鹅,它们不惧零下40度的...
《帝企鹅日记2—召唤》这部纪录片以其独特的视角,向我们展示了帝企鹅从出生到成长的整个生命旅程。影片不仅仅是在记录一群南极生物的日常生活,更是在讲述一个关于生命、勇气和坚持的寓言故事。通过影像,我们看到...
### PS练习猫和企鹅知识点详解 #### 一、项目概述 本教程旨在通过实际案例——猫和企鹅的图片合成,详细介绍Adobe Photoshop(简称PS)的基本操作技巧及高级合成技术。通过本教程的学习,读者将能够掌握如何利用PS...
《帝企鹅日记》这部纪录片,便是这样一扇窗口,让我们得以窥见南极帝企鹅这一物种非凡的生命力与生存智慧,以及其背后的自然法则和生命之美。 影片中,帝企鹅所展现的勇气与智慧,让人不禁为之动容。在南极那千里...
企鹅智酷:互联网+九大传统行业转型报告
在这个版本中,企鹅CMS显然对用户体验和内容获取流程进行了优化,旨在提供一个更便捷、更自动化的平台。 首先,我们看到`.htaccess`文件,这是一个非常重要的Apache服务器配置文件,用于控制网站的访问权限和URL...
企鹅与怪兽:互联时代的合作共享与创新模式
数据集包含了对南极洲不同地区生活的企鹅种群的研究数据,主要用于数据探索和可视化,以及分类任务。数据说明penguins_size.csv :经过简化的原始数据英文字段名中文字段名描述species种类巴布亚企鹅、阿德利企鹅、...
通过深入分析"戳企鹅游戏源码",我们可以学习到游戏开发的基础知识,包括Cocos2d-x引擎的使用、lua脚本编程、游戏逻辑设计以及资源和事件的管理。对于希望在游戏开发领域提升自己的人来说,这是一个很好的实践案例。
5. **数据结构和状态管理**:为了实现企鹅的不同状态(如饥饿、快乐等),需要定义相应的数据结构存储宠物的状态,并根据这些状态决定企鹅的行为和用户界面的反馈。 6. **文件操作**:源码可能包含了读取和保存宠物...
企鹅智酷:2019-2020中国互联网趋势报告.pdf
一路发_常规驱动模块2.46[ 兼容企鹅 和 64位系统 ]
4. 更新策略:个体在移动过程中考虑邻近企鹅的信息,以及距离最优解的远近,动态调整移动方向和速度。 5. 停止条件:当达到预设的迭代次数或者满足其他停止条件时,算法结束,返回当前最优解。 二、Matlab实现 ...
企鹅 :penguin: Penguin是一款多功能Discord机器人,在编写时就考虑了Discord社区。 目前,该机器人尚处于早期阶段,并且仍在开发中,尚无法使用。 任何人都可以为这个项目做贡献。 如果您愿意,只需发送请求请求,...
打企鹅系列之二123456
帝企鹅优化算法(Emperor Penguin Optimization Algorithm, 简称EPO)是一种模拟生物进化策略的全局优化算法,灵感来源于南极洲帝企鹅在极端环境下寻找食物的行为。该算法结合了群体智能和自然选择机制,旨在解决...