操作系统流程及更改界面图片

一、操作系统的简单启动流程

POST –>BIOS(Boot Sequence)启动次序–>MBR(bootloader,446)–>Kernel–>initrd–> (ROOTFS)/sbin/init(/etc/inittab)

启动次序:自上而下,找到启动设备的MBR

bootloader作用:主要用于完成根据MBR当中分区表查找活动分区,也就意味着找到你的系统所在那个分区,并加载那个分区上的操作系统的内核的。

如果第一个设备上没有MBR,或者是MBR中没有bootloader,那就该着第二个设备了,但是,如果第一个MBR上的bootloader坏了,它是不会去找第二个启动设备的。

Kernel(内核):文件系统 进程管理 内存管理 网络管理 安全管理 驱动程序

init:是二进制的可执行程序,所有在用户空间所启用的进程,都有init来负责管理的,因此对于用户空间的管理则交由init来完成,除非需要和硬件打交道,我们才需要从用户空间切到内核空间 。

二、内核设计风格:

单内核:内核一个字系统坏了,可能影响全局。好处:逻辑简单 。Linux (LWP)轻量级内核

核心:ko (Kernel object)内核专用模块

so(共享对象)

微内核:单个坏了,不会影响全局。Windows,Solaris

Redhat ,SUSE

核心:动态加载 内核模块 /boot/vimlinuz-version

内核:/lib/modules/"内核版本号命名的目录"/

vmlinuz-2.6.32(内核名称)

/lib/modules/2.6.32/ :以内核版本号命名的目录

在/dev/net下的ko文件,就是对应的类型的网卡设备的驱动程序,由此可见我们不需要把它做进内核只需要把它们做进其它目录,当需要的时候安装哪个就行了,不过这种机制将大多数硬件的驱动程序做成模块,需要的时候再去装载又保持了内核自身的体积仍然是很小的,但是这个目录并不小。(我们的目录58M,而内核只有1.9M)如图:

这时候出现了问题,就是内核的模块在这个设备上,而它要驱动这个设备,而驱动程序就在这个设备上,我们该如何办?我们要在中间添加一个文件,而这个文件主要是为内核提供设备的驱动的。Redhat 5上称为ramdisk,Redhat上称为ramfs。

Redhat 5:ramdisk–>initrd :上面真正的文件名,就是被内核装载在内存的小根的文件名叫initrd

Redhat 6:ramfs–>initramfs :真正的文件名叫initramfs

chroot:实现根切换[目录,临时根]

chroot /PATH/TO/TEMPROOT[ COMMAND…]

chroot /test/ivrrot /bin/bash

从图中我们明明看到已经有bash了,为什么上面还是说没有呢,是因为一个应用程序在运行的时候是要依赖于库的,这个目录下虽然后bash了,但是bash所依赖的库的目录是不存在的。一旦切换过去之后,当前这个系统跟目标那个系统是没有关系了,那个小根自我独立运行,也就是说,它这里面没有任何库文件,是运行不了的,香港虚拟主机,但是bash依赖于什么库呢?这里用到了这个命令。

ldd:显示共享库依赖关系。例如:ldd /bin/bash

我们只需要把这库里面的文件一并复制到/test/virroot/下面就行了。所以我们要在下面再建一个lib目录。

从图中可以看到,已经可以切换了。跟切换好处就是锁定在某个特定的目录下,其他目录就访问不了了。

三、启动的服务不同:/etc/inittab

运行级别:0-6

0:halt 关机

人之所以有一张嘴,而有两只耳朵,原因是听的要比说的多一倍。

操作系统流程及更改界面图片

相关文章:

你感兴趣的文章:

标签云: