zoukankan      html  css  js  c++  java
  • Linux开机启动(bootstrap)

     1 Linux开机启动(bootstrap)
     2 
     3 计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息。了解计算机开机过程有助于我们修复开机可能出现的问题。
     4 
     5 
     6 最初始阶段
     7 
     8 
     9 当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序。这一程序通常知道一些直接连接在主板上的硬件(硬盘,网络接口,键盘,串口,并口)。现在大部分的BIOS允许你从软盘、光盘或者硬盘中选择一个来启动计算机。
    10 
    11 
    12 
    13 下一步,计算机将从你所选择的存储设备中读取起始的512 bytes(比如光盘一开是的512 bytes,如果我们从光盘启动的话)。这512 bytes叫做主引导记录MBR (master boot record)。MBR会告诉电脑从该设备的某一个分区(partition)来装载引导加载程序(boot loader)。Boot loader储存有操作系统(OS)的相关信息,比如操作系统名称,操作系统内核 (内核)所在位置等。常用的boot loader有GRUB和LILO。
    14 
    15 
    16 
    17 随后,boot loader会帮助我们加载内核(kernel)。内核实际上是一个用来操作计算机的程序,它是计算机操作系统的内核,主要的任务是管理计算机的硬件资源,充当软件和硬件的接口。操作系统上的任何操作都要通过内核传达给硬件。Windows和Linux各自有自己内核。狭义的操作系统就是指内核,广义的操作系统包括内核以及内核之上的各种应用。
    18 
    19 
    20 
    21 (Linus Torvalds与其说是Linux之父,不如说是Linux 内核之父。他依然负责Linux 内核的开发和维护。至于Ubuntu, Red Hat, 它们都是基于相同的内核之上,囊括了不同的应用和界面构成的一个更加完整的操作系统版本。)
    22 
    23 
    24 
    25 实际上,我们可以在多个分区安装boot loader,每个引导加载程序对应不同的操作系统,在读取MBR的时候选择我们想要启动的引导加载程序。这就是多操作系统的原理。
    26 
    27 
    28 小结:BIOS -> MBR -> 引导加载程序 -> 内核
    29 
    30 
    31 内核
    32 
    33 
    34 如果我们加载的是Linux内核,Linux内核开始工作。内核会首先预留自己运行所需的内存空间,然后通过驱动程序(driver)检测计算机硬件。这样,操作系统就可以知道自己有哪些硬件可用。随后,内核会启动一个init进程。它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,内核就完成了在计算机启动阶段的工作,交接给init来管理。
    35 
    36 
    37 
    38 小结: 内核 -> init process
    39 
    40 
    41 
    42 init process
    43 
    44 
    45 (根据boot loader的选项,Linux此时可以进入单用户模式(single user mode)。在此模式下,初始脚本还没有开始执行,我们可以检测并修复计算机可能存在的错误)
    46 
    47 
    48 
    49 随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts。这些脚本执行如下功能:
    50 
    51 
    52 
    53 设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络……
    54 
    55 
    56 
    57 当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录。init会给出登录(login)对话框,或者是图形化的登录界面。
    58 
    59 
    60 
    61 输入用户名(比如说vamei)和密码,DONE!
    62 
    63 
    64 
    65 在此后的过程中,你将以用户(user)vamei的身份操作电脑。此外,根据你创建用户时的设定,Linux还会将你归到某个组(group)中,比如可以是stupid组,或者是vamei组。
    66 
    67 
    68 
    69 所以你将是用户vamei, 同时是vamei组的组员。(注意,组vamei和用户vamei只是重名而已,就好想你可以叫Dell, 同时还是Dell公司的老板一样。你完全也可以是用户vamei,同时为stupid组的组员)
    70 
    71 
    72 
    73 总结
    74 
    75 
    76 BIOS -> MBR -> 引导加载程序 -> 内核 -> init process -> login
    77 
    78 
    79 
    80 用户,组。
    81 
    82 
    83 
    84 来源:Vamei (@Vamei) 
    85 
    86 链接:http://www.cnblogs.com/vamei/archive/2012/09/05/2672039.html
    为什么要坚持,想一想当初!
  • 相关阅读:
    Apache POI使用详解
    util.Date与sql.Date转换
    【转】javascript中not defined、undefined、null以及NaN的区别
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    DC维护工具Repadmin
    Outlook 配置exchange 缓慢,无法通过
    Windows 服务器站点设置
    Exchange 挂载点权限问题
    Windwos 查看WWN Number
    Exchange 2016 多站点创建oab shadow 副本
  • 原文地址:https://www.cnblogs.com/JerryZao/p/9521891.html
Copyright © 2011-2022 走看看