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

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

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 关机

1:single user mode 单用户模式【直接以管理员的身份切入】表示1级别;s S

2:multi user mode,多用户模式,no NFS(不启用NFS)

3:multi user mode,多用户模式, text mode(不是图形模式)

4:reseved 保留级别

5:multi user mode ,graphic mode 多用户模式(图形界面)

6:reboot 重启

四、详解启动过程:

1、 bootloader(MBR)

LILO:LInux LOader不支持大硬盘

GRUB:GRand Unified Bootloader

Stage1:MBR (第一阶段主要引导第二阶段)

Stage1_5: (第1.5阶段就就是用来识别不同类型的文件系统的)

Stage2:/boot/grub/(第二阶段主要引导操作系统的)

例如我们来查看一下第二阶段如图:

在grub的配置文件中,/etc/grub.conf是个链接,我们用ls l 来查看一下。

2、grub.conf的主要内容: 这里的title可以有多个,如果你有n个操作系统或者有n个内核,可以有很多title,如果我们不选就是默认的,默认default=0,就是从上向下选择title进行启动的。【提示:图中的红字是为了安全自己设定密码的位置】

default=0 #设置默认的启动的title 的编号,从0开始编号

timeout=5 #等待用户选在的超时时常,单位为秒钟

splashimage=(hd0,0)/grub/splash.xpm.gz # grub的背景图片

hiddenmenu #隐藏菜单

passw redhat()【编辑需要密码】

password –md5 [密码串]密码加密 【提示:在grub-md5-crypt命令可以生成密码串】如图:

title Red Hat Enterprise Linux Server (2.6.18-308.el5) #内核标题,或操作系统名称,字符串,可自由修改

root (hd0,0) #内核文件所在的设备:对grub而言,所有类型应硬盘一律为hd:格式为(hd#,N):hd#,#表示第几个磁盘;最后的N表示对应的磁盘的分区

kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet #内核文件路径,及传递给内核的参数

initrd /initrd-2.6.18-308.el5.img #文件路径

【password –md5 [密码串]密码加密 】启动内核需要编辑密码

title Install Red Hat Enterprise Linux 5

root (hd0,0)

kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6

initrd /initrd-5

password –md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.

这里我们查看一下initrd,也在根下,initrd的版本号一定要和内核版本号保持一致,initrd的版本号多了一个.img这是镜像文件,展开以后可以当做一个磁盘来用。

我们在这里可以安装一个gimp软件,是一款在linux上的编辑图片工具。我们可以用gimp 直接进入。我们还要首先下载一个图片,图片在ftp服务器上的/pub/ pictures下面,任意选一张就行了(前面我们已经告诉如何下载了,这里不多说了)

开始编辑图片(红色框中就是打开编辑)。主要是调整其中的像素,把它调整为640*480的,而且文件类型要使用xpm格式(下图进入第一个黑框找到另存为后进入第二个黑框然后进行改后缀,按照右边的红色框的提示使用缩影的方式将默认的256的像素调到14,这样图片可能就会不是太清楚)。

然后我们就将下载的这个图片进行压缩,压缩了移动到/boot/grub/下。

然后我们开始编辑/etc/grub.conf文件内容。

然后我们shutdown r now重启,就发现前面的图片换好了。

五、查看运行级别;

runlevel: N # (N是显示上一次级别,#显示当前级别)

who -r:也能显示当前级别

七、在grub 模式下

grub find

grub root(hd#,N)

grub kernel /PATH/TO/KERNEL_FILE

grub initrd /PATH/TO/INITRD_FILE

grub boot

八、Kernel初始化过程:

1、设备探测

2、驱动初始化(可能会从initrd(initramfs)文件中装驱动模块)

3、以只读挂载根文件系统;

4、装在第一个进程init(PID:1)

九、/sbin/init (/etc/inittab)

/etc/rc.d/init.d, /etc/init.d

中的脚本称作服务类脚本:

SysV: /etc/rc.d/init.d

start|stop|restart|status

reload|configtest

这个init到今天为止发生了巨大变化,早先这个init可能是个脚本,也可能是一个能够支持运行级别的二进制程序但是在RedHat6.0后init使用的是upstart,虽然名字还是init,读取的文件依旧是/etc/inittab。这个upstart是ubuntu组织开发的。而upstart支持并行启动。它是实现事件驱动的给予d-bus各子系统之间通信,所以有很多配置文件。

id:runlevels:action:process

id:标识符

runlevels:在哪个级别下才运行的。

action:在什么情况下执行此行

process:要运行程序

ACTION:

initdefault:设定默认运行级别

sysinit:系统初始化

wait:等待级别切换至此级别时执行

respawn:一旦程序终止,会重新启动

/etc/rc.d/rc.sysinit的内容

1、激活udev和selinux:(现在可以不读)

2、根据、etc/ sysctl.conf 文件,来设定内核参数

3、设定时钟时钟

4、装在键盘映射;

5、启用交换分区

6、设置主机名

7、跟我那件系统检测,并以读写凡是从新挂载;

8、激活RAID和LVM设备

9、启用磁盘配额

10、根据/etc/fstab,检查并挂载其它文件系统;

11、清理过期的锁和PID文件

K*: stop

S*: start

##:关闭或启动的优先次序,数据越小优先被选定

一般而言,先关闭以k开头的服务。

十、内核

核心:/boot/vmlinuz-version

内核模块:(ko);/lib/modules/version

内核设计:

单内核

模块化模式

微内核

装载模块:

insmod

modprobe

1、用户空间访问、监控内核的方式

/proc,/sys

2、伪文件系统

/proc/sys:此目录中的文件很多是可读写的

/sys/:某些文件可写

3、设定内核参数值的方法

echo VALUE /proc/sys/TO/SOMEFILE

sysclt -w kernel.hostname=

能立即生效,但无法永久有效;

能永久有效,但不能立即生效;/etc/sysctl.conf

修改五年间完成后,执行如下命令可立即生效

sysctl -p

sysctl -a 显示所有内核参数及其值

4、内核模块管理:

lsmod:查看

modprobe MOD_NAME:装载某模块

modprobe -r MOD_NAME:卸载某模块

modprobe MOD_NAME:查看模块的具体信息

insmod /PATH/TO/MODULE_FILE:装载模块

rmmod MOD_NAME

depmod /PATH/TO/MODILES_DIR

5、内核中的功能除了核心功能之外,在编译的时候,大多时候都有三种选择

1、不使用此公能

2、编译成内核模块

3、编译进内核

/proc/sys:此目录中的文件很多是可读写的

与其用泪水悔恨今天,不如用汗水拼搏今天。

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

相关文章:

你感兴趣的文章:

标签云: