设为首页 收藏本站
查看: 1003|回复: 0

[经验分享] Linux 引导过程

[复制链接]

尚未签到

发表于 2019-2-18 09:59:42 | 显示全部楼层 |阅读模式
  引导过程的步骤
  Linux系统典型的引导过程由下面6个不同的阶段组成:
  加载并初始化内核
  检测和配置设备
  创建内核线程
  操作员干预
  执行系统启动脚本
  多用户模式运行
  系统管理员对以上大多数步骤几乎没有什么控制权。我们通过编辑系统启动脚本来影响大多数的引导配置。
  初始化内核
  

  Linux内核本身就是一个程序,系统引导过程中的第一项任务就是把这个程序载入内存,以便执行它。内核的路径名通常是/vmlinuz或者/boot/vmlinuz。
  Linux系统实现了一种有两个阶段的加载过程。在第一阶段中,系统ROM把一个小的引导程序从磁盘载入到内存中。然后,这个程序再安排载入内核。
  内核执行内存检测来确定有多少RAM可用。内核的一些内部数据结构按静态方式分配其内存量,因此,当内核启动时,它就为自己划分出一块固定大小的
  实存空间。这块空间保留给内核使用,用户级进程不能使用。内核在控制台上打印一条消息,报告物理内存的总量以及用户进程可用的内存量。
  

  配置硬件
  内核执行的第一批任务之一包括检查机器的环境以确定机器有什么硬件。当您为自己的系统构建内核时,要好俗内核,它会找到哪些硬件设备。当内核开始执行时,它
  试图找到并初始化已经告诉它的每一个设备。大多数内核为它们所找到的每个设备打印一行专门信息。现在的发行版本所包含的内核能够在绝大都Sohu机器配置上运行。
  只要做最少量的定制。
  在内核配置期间提供的设备信息经常不够明确。在这样的情况下,内核通过检测设备总线和向适当的驱动程序寻求信息来尝试它所需要的其他信息。那些没有检测到设备
  的驱动程序或者那些没有响应探测的驱动程序将被禁用。如果某个设备后来被连接到系统上,那么还是有可能随时加载或者启动它的驱动程序的。
  内核线程
  一旦完成了基本的初始化任务,内核就在用户空间创建几个“自发”的进程。它们之所以被称作是自发进程,是因为这些进程不是通过系统正规的fork
  机制所创建的。
  自发进程的数量和特性随系统的不同而不同。在Linux上,看不到有PID 0进程。和进程init一起的是几个内存和内核处理进程,这些进程的PID都比较小
  在ps命令的输出中它们的名字都被中括号括了起来。有时候这些进程的名字以一个斜线加一个数字结尾。这个数字表明该线程在哪个处理器上运行,在
  多处理器的系统上会出现这种有意思的情况。
  在所有的这些进程中,只有init是真证完整的用户进程。其他进程实际上都是内核的组成部分,为了调度或者结构上的原因而进行了装扮,使它们看上去
  像是进程罢了。
  一旦创建完毕自发进程,内核在引导阶段的任务就完成了。不过,处理基本操作的进程还一个都没有创建,而且大多数Linux守护进程也没有启动。这个
  任务都是由init来负责的。
  

  操作员干预
  如果系统以单用户模式进行引导,那么在init启动时,内核所给出的命令行标志(single)会通知init实际要引导的是单用户模式。进程init最后会把控制权
  交给sulogin,后者是login的一个“中间但不可控”的特殊版本,它提示用户输入root口令。如果输入的口令正确,系统将产生一个root shell。
  在单用户shell中执行命令的方式和登录到已完全引导的系统上执行命令的方式类似。不过在SUSE、Debian、还有Ubantu系统上,这时通常只安装了root
  分区。为了使用不在/bin、/sbin、或/etc下的程序,用户必须手动安装其他文件系统。
  在许多但用户环境下,文件系统的根目录是按只读方式安装的。如果/tmp是根文件系统的一部分,那么许多要使用临时文件的命令都不能执行。为了解决
  这个问题,必须先把根文件系统以读写方式重新安装,再开始但用户模式的交互操作。下面这条命令通常就能实现这个技巧。
  mount -o remount,rw /
  

  执行启动脚本
  到了系统准备运行其启动脚本的时候,我们就能看出它是Linux系统了。尽管它看起来还不很像全部启动完毕的系统,但在接下来的启动过程中已经没有什么
  “奇妙”步骤了。启动脚本就是普通的shell脚本,由init根据移动的算法选择并运行它们,尽管算法有时候有些复杂,但还是箱单容易理解的。
  启动脚本的处理、馈送和分类有其自己的专门一节来介绍。
  

  多用户运行
  在初始化脚本运行过以后,系统就是完全运行的系统了,不过现在用户还不能登录进来。为了在某个特定终端上接受用户登录,必须有一个getty进程监听终端
  或者控制台。init直接生成这些getty进程,完成引导过程。init还负责生成图形登录系统,例如xdm或gdm。
  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-673831-1-1.html 上篇帖子: linux,基本操作 下篇帖子: Linux 工具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表