开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

solaris学习3:启动过程

简介:
+关注继续查看






 

 #---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Oracle Solaris 10 8/11 s10x_u10wos_17b X86
findroot (rootfs0,2,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris failsafe
findroot (rootfs0,2,a)
kernel /boot/multiboot kernel/unix -s
module /boot/x86.miniroot-safe
#---------------------END BOOTADM--------------------
title Windows
        rootnoverify (hd0,0)
        chainloader +1
 
 以上是solaris10的启动,正常启动重root下的/platform下调用文件,而failsafe则从/boot下调用引导文件。两者不一样,还没对solaris的引导机制理解,估测与linux可能有点不一样。等理解后再补充。

  现在有点时间来写些solaris的启动过程了,首先说说上面的solaris grub的启动菜单。

1、 menu.lst
       活动的grub menu.lst文件才能对OS启作用,其他的menu.lst文件对系统不起任何作用,这里就有个问题了,活动的menu.lst文件在哪里,即OS启动时会调用那个menu.lst?用命令bootadm查看:
 
 
 至于menu.lst文件中的solaris 启动文件,只有x86架构的solaris才有grub引导,solaris的内核文件在/platform下。而windows的部分,我发现一个有趣的现象:我在我的笔记本安装solaris,没有系统(全部重新分区了),只是将第一个主分区format成ntfs,放入grub、menu.lst等一些引导文件,第二个主分区为fat32,放入solaris的iso文件,然后用硬盘安装方式安装完毕后,呵呵,solaris的menu.lst也有windows的引导部分,看来solaris是检测到某个主分区为dos格式的,就会在menu.lst创建windows的引导部分。
另外failsafe是什么?我的理解是单用户模式的迷你引导boot,不需要root密码(区别单用户模式的关键),将/dev/dsk/c0d0s0 mounted,提供基本的修复命令。
 
2、 solaris引导过程(以sparc为例,没有grub引导)
  1. 引导PROM(简单理解就是加电硬件自检过程): x86架构为BIOS将运行自检诊断,验证硬件和内存,未发现硬件错误则进入自动引导过程。sparc架构类似,主机加电后,prom运行POST自检硬件,如果无错误,并且auto-boot为true,则进入自动引导过程。呵呵,这样说的太简单了,由于x86没什么说的,就以sparc架构说说:
  •   POST自检硬件和内存,通过后下一步(此时可以进入OK模式,即命令行模式操作一些启动设置)
  •   显示主机ID等信息:如cpu类型和速度,PROM版本号NVRAM sn号,网卡MAC,主机ID等
  • 读取PROM参数boot-device确定启动设备
  • 读取启动设备的0扇区的disk label(即VTOC)
  • 查找启动程序(grub启动的sector1~15内容)
  2. 引导程序过程
  •  bootlk将ufsboot加载到内存
  •  ufsboot加载内核:有两个内核,genunix是独立于平台的通用内核文件,unix是平台特定的内核文件。ufsboot将两个内核加载进内存,两个内核一起形成后来系统运行的内核。内核文件在:x86 /etc/`uname -m`/kernel   x64 /etc/`uname -m`/kernel/sparc9

         内核其他目录有:/kernel   /usr/kernel

         内核目录的子目录:drv  设备驱动  exec 可执行的文件  fs 文件系统类型 misc虚拟模块(usb、cdrom等) sched 调度 strmod 流模块(用户和设备间连接) sys 系统接口定义

      3.  内核初始化过程

  •     内核读取/etc/system文件(内核参数配置文件)
  •     内核初始化自己加载模块,内核用ufsboot命令加载文件,当挂载跟“/”完成后,内核unmap ufsboot program
  • 内核启动/etc/init进程,/etc/init 是 /sbin/init的link。

     4.   init过程

          init读取/etc/inittab,确定运行级别,solaris的级别是串行的,即先runlevel 1 在runlevel 2 ,再到runlevel 3。至于运行级别在下面说明。

      5.  svc.startd过程

          启动各种系统服务

  3、 运行级别

          各种系统的默认运行级别:redhat  5  solaris  3   mac os x 3   AIX 2等
 
 solaris的运行级别有8种
0     硬件维护模式   控制台访问进入OBP状态     /etc/rc0.d  命令脚本:/sbin/rc0
1    管理状态只有root用户可用  单用户  /etc/rc1.d    命令脚本:/sbin/rc1
2    第一个多用户状态,nfs等网络不可用  多用户  /etc/rc2.d  命令脚本:/sbin/rc2
3     多用户,网络可用     多用户   /etc/rc3.d   命令脚本:/sbin/rc3
4     用户自定义                 没有指定    没有目录
5     关闭电源状态        控制台访问    /etc/rc5.d   命令脚本:/sbin/rc5
6     关闭重启         单用户    /etc/rc6.d    命令脚本:/sbin/rc6
S     管理任务或修复系统文件  控制台访问   /etc/rcS.d  命令脚本:/sbin/rcS
 
每个运行级别在/sbin 目录下都有一个对应的RC脚本,init用这些RC脚本设置变量、测试环境、启动停止其他进程脚本。
 
 
 对于/etc/rc#.d 目录下的脚本文件,K开头为kill,S开头为start,忽略任何其他开头的文件,K、S一定要大写,并且按后面的数字顺序执行,如S10比S12优先。如果用户想在/etc/rc#.d目录自己建个启动脚本,脚本以 .sh结束则不需要start stop参数,否则需要提交start和stop参数。
 
查看运行级别:runlevel  或 who -r
切换运行级别:init n  (linux的命令就有几个:init    telinit  initctl 等 )
 init Q 或 init q  是init进程立即重新读取并处理inittab文件
 
另外有个概念要注意:里程碑
个人理解(摘自网络):指定类型的服务,是一个层次依靠关系,即服务运行到一种状态要依靠其它的服务运行才可以用的以类型依靠状态。
从运行级别来看,就是solaris10用来替代运行级别的概念,比如single-user里程碑相当于运行级别S,multi-user里程碑相当于运行级别2,multi-user-server相当于运行级别3.
有7种milestone,上面列了三种,还有:network  、 name-sevices、sysconfig、devices
 
  
4、 solaris注销:
linux注销在我的blog里说了,那么solaris怎样才能注销呢?开始对其了解不多,不过应该和linux相似,都有桌面运行环境,如gnome、cde、jds等,所以solaris的注销命令为:pkill -9 dtsession  ,是CDE桌面环境,我自己使用是没有问题的,希望大家有指正。那么JDS桌面环境如何注销,命令:pkill -9 Xsession 
今天详细测试了下,注销solaris的问题新的理解是:
无论CDE、JDS,结束桌面环境都可以用干掉Xsession进程的方法,自己在JDS中用干掉Xorg的方法也可以注销桌面。
今天又有一个发现:solaris里有个命令whodo,可以查看终端的运行进程记录:

这是在CDE桌面,要注销就结束Xsession、dtsession,在JDS桌面还有gnome-session,结束该进程也可以注销。



 
============================================================================
outlook历史记录清除方
现象:
如图:在收件人处输入字母:h   则出现三个收件人的地址  有些用户怕出错,不允许
这种情况出现,即输入字母 h   不会出现三个地址
 
具体方法如下,Outlook 2003 应用测试通过
方法一:
工具 -》 选项 -》 首选参数 -》电子邮件选项 -》高级电子邮件选项
去掉 “填写收件人、抄送人及密件抄送人字段时提示姓名” 的勾选
 
方法二:
C:\Documents and Settings\fuhaixiong\Application Data\Microsoft\Outlook下删除.nk2文件
 
方法三:
直接按delete删除
 
建议用第一种方法


      本文转自fuhaixiong 51CTO博客,原文链接:http://blog.51cto.com/heliy/170949,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载