N25-第10周博客作业

  1. 请详细描述CentOS的启动流程

    启动第一步–加载BIOS 

       当打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它,这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PNP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。在BIOS将系统的控制权交给硬盘第一个扇区之后,就开始由Linux来控制系统了。

    启动第二部–读取MBR         

      硬盘上第0磁道第一扇区被称为MBR,也就是Master Boot Record,即主导记录,它的大小是512字节,可里面却存放了预启动信息、分区表信息。可分为两部分:第一部分为引导去,占了446个字节;第二部分为分区表,共66个字节,记录硬盘的分区信息。预引导区的作用之一是找到标记为活动的分区,并将活动分区的引导读入内存。       系统找到BIOS所指定的硬盘MBR后,就会将其复制到0*7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

    启动第二部–读取MBR         

      硬盘上第0磁道第一扇区被称为MBR,也就是Master Boot Record,即主导记录,它的大小是512字节,可里面却存放了预启动信息、分区表信息。可分为两部分:第一部分为引导去,占了446个字节;第二部分为分区表,共66个字节,记录硬盘的分区信息。预引导区的作用之一是找到标记为活动的分区,并将活动分区的引导读入内存。       系统找到BIOS所指定的硬盘MBR后,就会将其复制到0*7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

    启动第四步–加载内核      

      根据grub设定的内核映象所在路径, 系统读取内存映象,并进行解压缩操作。此时,屏幕一般会输出”Uncompressing Linux“的提示。当解压缩内核完成后,屏幕输出”OK,booting the kernel”。    系统将压缩后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的出事化函数并初始化各种设备,完成Linux核心环境的建立,至此Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。    Start_kernel()定义在init/main.c中,它就类似于一般可执行程序中的main()函数,系统在此之前所做的仅仅是一些能让内核程序最低限度执行的初始化操作,真正的内核初始化过程是从这里才开始。函数start_kerenl()将会调用一系列的初始化函数,用来完成内核本身的各方面设置,目的是最终建立起基本完整的Linux核心环境。    在start_kenrel()的结尾,内核通过kenrel thread()创建出第一个系统内核线程(即1号进程),该线程执行的是内核中的init()函数,负责的是下一阶段的启动任务。最后调用cpues_idle()函数,进入了系统主循环体口默认将一直执行default_idele()函数中的指令,即CPU的halt指令,直到就绪队列中存在其他进程需要被调度是才会转向执行其他函数,此时,系统中唯一存在就绪状态的进程就是由kernel_hread()创建的init进程(内核线程),所以内核并不进入default_idle()函数,而是转向init()函数继续启动过程。

    启动第五步–用户层init依据inittab文件来设定运行等级   

      内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据文件来进行初始化工作。    其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:  0:关机  1:单用户模式  2:无网络支持的多用户模式 3:有网络支持的多用户模式 4:保留,未使用  5:有网络支持有X-Window支持的多用户模式 6:重新引导系统,即重启

    启动第六步–Init进程执行rc.sysinit    

      在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.sysinit脚本  程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。线程init的最终完成状态是能够使得一般的用户程序可以正常地被执行,从而真正完成可供应用程序运行的系统环境。准备好以上一切之后,系统开始进入用户层的初始化阶段。内核通过系统调用execve()加载执行相应的用户层初始化程序,依次尝试加载程序”/sbin/init”,”/etc/init”、“/bin/init”,和“/bin/sh”.只要其中有一个程序加载获得成功,那么系统就将开始用户层的初始化,而不会再回到init()函数段中。至此,init()函数结束,Linux内核的引导部分也到此结束。

    启动第七步–启动内核模块      

      具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

    启动第八步–执行不同运行级别的脚本程序     

      根据运行级别的不同,系统会运行rc0.d到rc6.d中的响应的脚本程序,来完成相应的初始化工作和启动相应的服务。

    启动第九步–执行/etc/rc.d/rc.local     

      rc.lacal就是在一切初始化工作后,Linux留给用户进行个性化的地方,可以把设置和启动的东西放到这里

    启动第十步–执行/bin/login程序,进入登录状态     

      此时,系统已经进入到了等待用户输入username和password的时候了,已经可以用自己的帐号登入系统了。

2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;

  (1) 为硬盘新建两个主分区;并为其安装grub;

  (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;

  (3) 为rootfs提供bash、ls、cat程序及所依赖的库文件;

  (4) 为grub提供配置文件;

  (5) 将新的硬盘设置为第一启动项并能够正常启动目标主机;

3、制作一个kickstart文件以及一个引导镜像。描述其过程。

4、写一个脚本

  (1) 能接受四个参数:start, stop, restart, status

   start: 输出“starting 脚本名 finished.

   …

  (2) 其它任意参数,均报错退出;

blob.png

    

5、写一个脚本,判断给定的用户是否登录了当前系统;

  (1) 如果登录了,则显示用户登录,脚本终止;

  (2) 每3秒钟,查看一次用户是否登录;

blob.png

6、写一个脚本,显示用户选定要查看的信息;

   cpu) display cpu info

   mem) display memory info

   disk) display disk info

   quit) quit

   非此四项选择,则提示错误,并要求用户重新选择,只到其给出正确的选择为止;

blob.png

7、写一个脚本

  (1) 用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来;

  (2) 提示用户输入一个用户名或输入“quit”退出;

    当输入的是用户名,则调用函数显示用户信息;

    当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit: 

    blob.png

8、写一个脚本,完成如下功能(使用函数)

   (1) 提示用户输入一个可执行命令的名字;获取此命令依赖的所有库文件;

   (2) 复制命令文件至/mnt/sysroot目录下的对应的rootfs的路径上,例如,如果复制的文件原路径是/usr/bin/useradd,则复制到/mnt/sysroot/usr/bin/目录中;

   (3) 复制此命令依赖的各库文件至/mnt/sysroot目录下的对应的rootfs的路径上;规则同上面命令相关的要求; 

blob.png

原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/70909

(0)
oranixoranix
上一篇 2017-03-10
下一篇 2017-03-10

相关推荐

  • 谷歌三大核心技术(一)The Google File System中文版

    摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务。 虽然GFS的设计目标与许多传统的分布式文件系统有很多相同之处,但是,我们的设计还是以我们对自己的应用的负载情况和技术环境的分析为基础的,不管现在还是…

    Linux干货 2015-04-13
  • openssl基本应用

    导言: 我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上传输,所以为了保证安全,我们必须给文件加密。今天,我们就来谈谈加密、解密、openssl的使用以及CA的实现过程。 数据的3大加密方式 对称加密 含义 指加密解密使用同一组密钥,是按数据分块以后进行加密的,前后数据块彼此之间有关联关系。 特性…

    Linux干货 2016-12-05
  • 计算机组成原理

                                 计算机组成原理 Linux 操作系统是UNIX 操作系统的一种克隆系统。它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于…

    Linux干货 2016-10-27
  • 磁盘管理

    磁盘,分区,文件系统

    Linux干货 2017-12-02
  • 第二次作业

    一、只显示某目录下隐藏文件    答案1:#ls -d /tmp/*/    但是此答案是我在同学知道下完成,但是原理没明白 如果单独执行        #ls -d  &nbsp…

    Linux干货 2016-08-03
  • class12 shell编程(四)软件包管理(二)

    一、shell编程(四) 1、循环特殊用法 while 循环的特殊用法(遍历文件的每一行): while read line; do       循环体   done < /PATH/FROM/SOMEFILE 依次读取/P…

    Linux干货 2016-08-24