重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一、boot过程详解
那曲ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
以下具体讲解系统引导的整个过程,主要以SPARC平台为例:
lPoweron 过程
为服务器打开电源开关需要注意以下几个部分,几乎所有服务器都带有锁来固定几个状态:电源开关正常位置、锁住电源开关、开机诊断、关闭电源开关,开电之前一定要确认钥匙的位置。
lPOST过程
服务器电源打开后,系统将首先进入一个上电自检的过程。diag-switch?开关参数如果设置为true,那么将可以从服务器的串口看到详细的输出。diag-level参数决定着POST的过程,缺省设置为min,设置为max时候,串口能看到更多的信息输出,但是系统进入OBP而引导OS的时间也将大大推延了!在POST过程中,系统将对所有硬件一一作测试诊断,对于系统管理员来说,有可疑的硬件故障就有可能从POST过程中诊断出来。
l系统初始化Init SYSTEM
POST结束后,系统将进一步进行初始化,该过程又可以具体分为以下几个部分:
oOBP:OpenBoot PROM定制了系统的一些信息,自检结束后,系统进入OBP,同时将MMU(memory management unit)设为有效(enable)
oNVRAM:use-nvramrc?参数设置为true的话,系统将读取NVRAMRC,并执行之,这里面可能包括一些引导设备的信息,比如说如果系统盘使用vxvm或者DiskSuite封装的,将需要修改这些脚本来指明引导设备。
oProbe All:这将检测所有的SCSI或者其它类型的磁盘和设备
oInstall Consle:系统在此状态下,如果安装了键盘和鼠标以及显示器的话,显示器将有输出并点亮,如果只有串口的话,那么此时串口已经作为console台可以进行访问了。
oBanner:决定console台后,系统将在console台输出Banner信息
oCreate Devices Tree:所有硬件设备的设备树将在此时由OBP程序创建,这个非常重要,这对后面的引导OS起着非常重要的作用。
auto-boot?
OBP程序创建了设备树后,系统将进入引导OS的过程,PROM参数auto-boot?参数设置为true,boot过程将自动进行,如果为false,boot过程将中止而进入OBP的ok〉提示符下,由用户手工来完成boot。
注意:在auto-boot?设置为true的情况下,引导过程将自动执行,引导设备是由boot-device指定的,但是在diag-switch?被设置为true的时候,引导自动进行时的引导设备将由diag-device来决定。
bootblk
OBP程序找到引导设备后,就直接将引导设备上所存储的bootblk调入内存进行执行,如果该引导块不存在或者已经损坏,系统将无法完成boot,Solaris 8会返回一条信息,The file just loaded can not to be executed。这说明需要重新创建bootblk,方法非常简单,用光驱引导系统,将原盘系统根mount起来,使用installboot命令来重新生成bootblk。
ufsboot:
执行完bootblk后系统将执行第二个程序/platform/`arch –k`/ufsboot ,该程序将UNIX的kernel的p_w_picpath文件调入内存,如果该文件损坏的话,系统将无法继续引导,返回一条类似的信息,a bootlbk:Can’t find the boot program。
kernel:
系统的影像p_w_picpath文件调用和运行,在32位和64位系统将调用不同的文件,32位系统将涉及以下两个文件:
1./platform/`arch –k`/kernel/unix
2./kernel/genunix
64位系统将涉及以下两个文件
1. /platform/`arch –k`/kernel/sparcV9/unix
2. /kernel/genunix
kernel的p_w_picpath文件调用进内存并作进一步的初始化,而且将加载各种模块,使用ufsboot读取各文件,在mount根系统之前将所需模块全部调用进内存。在这点,ufsboot不在起作用,而kernel将使用自己的驱动,此时如果根文件系统存在问题,系统将无法继续引导。
/etc/system:
/etc/system文件将由kernel从根系统从读取,该文件定制了系统参数:
以下是几种定制系统参数的option:
moddir: 用来指定和改变系统kernel模块的路径
forceload: 强制将系kernel模块调用进OS
exclude:用以执行一个特定的系统模块
rootfs:用以指定系统根系统类型,ufs文件系统为缺省值
rootdev: 指定根系统设备物理路径
set: 设置kernel可调节的系统参数
如果需要修改/etc/system文件,强烈建议先做拷贝然后再编辑,否则该文件错误严重的情况下将导致系统无法完成boot,而有了备份,那么在系统引导时候可以使用-a的boot option来进行选择/etc/system.bak来引导系统,如果没有做备份就必须使用boot cdrom –s的方式将系统根系统mount起来再手工修改错误的/etc/system文件。
kernel initialized:
kernel按照系统文件参数完成所有的module的调用后,首先创建系统的第一进程sched,其进程号为0,而该进程有时候被叫做“swapper”。
init:
init进程是第二个被创建的,该进程创建后读取/etc/inittab文件和/etc/default/init文件,这两个文件对系统的定制作了一些规定,比如说系统的缺省运行级别,系统时区和语言环境等等,该进程是系统以后所有进程的父进程。
rc scripts:
init进程创建以后,系统就根据/etc/inittab文件中指定的运行级别来执行相关的启动脚本,所有的启动rc脚本都存放在/etc/rc#.d目录下,不同级别执行不同的脚本以启动与级别相对应的进程。需要注意的是/etc/rc#.d目录下的脚本都将被执行,首先执行K打头的脚本,然后执行S打头的脚本,并安装ASCII码的顺序执行。