zoukankan      html  css  js  c++  java
  • solaris启动过程详解 分类: arm-linux-Ubuntu 2014-06-19 08:22 313人阅读 评论(0) 收藏

    在Sparc平台下,Solaris系统中有一个类似PC BIOS的芯片程序(EEPROM OpenBoot)负责识别分区、文
    件系统和加载内核,在Solaris 2.6之后的版本中,默认的内核文件存放在/platform/`arch`/kernel/unix
    位置,`arch`指令是指明系统的硬件体系,目前一般是i86pc(Intel IA32)或sun4u(Sun UntraSparc)。

    在Intel体系中,因为没有eeprom firmware,所以系统提供了一个模拟eeprom的引导程序,来负责
    内核的定位和加载,这个程序是工作在实模式下的,系统必须要给他提供一个fat12/16格式的boot分区,
    在系统引导完成之后可以在/boot/solaris下找到他的配置文件。(Solaris IA使用默认内核/kernel/unix)

    整个系统启动过程如下:
    ===========================================================================
    init 0 openboot模式 -> (引导内核,加载硬件驱动) 可以选择从cdrom引导进入维护模式
    |
    V
    init 1 单用户模式 -> (加载/分区) 登陆进入维护模式,或按Ctrl+D进入多用户模式
    |
    V
    init 2 网络工作站模式 -> (连接网络,运行网络工作站服务) 运行/etc/rc2脚本连接网络
    | |
    | ->-> 启动S69inet服务,运行部分inetd网络服务
    V
    init 3 网络服务器模式 -> (运行髦滞�绶�? 运行/etc/rc3脚本启动网络服务器


    <2>启动
    Solaris的启动进程是按照SYS V格式控制的,启动过程分为若干个运行级别(S,1-6),当系统内核
    运行完毕,加载好所有的驱动之后,就会把控制权移交给/sbin/init进程(PID:1),也就是所有进
    程的父进程,然后由init读取/etc/inittab,依次执行/etc/rc1(2,3)启动脚本,最终到达inittab
    中指定的默认运行级别。rc脚本会读取/etc/rc*.d中的启动脚本,启动脚本以大写字母S开头,在rc
    运行期间就会被执行,S后面的两位数字域决定启动顺序,因为启动进程之间有一定的依赖关系 (以K
    开头意味着进入这个级别时,服务将会被杀掉,其余字母开头的被忽略)。

    虽然同属于SYSV系统引导方式,但是Solaris的引导过程和我们常见的Linux却有很大差别,并且和
    传统Unix的init级别也略有不同。在Linux中,系统运行级别是并行式的,也就是系统加载完内核和
    mount /文件系统之后,就会直接跳转到相应的默认运行级别,而不依次执行各个级别的启动脚本。但
    在Solaris中,采取了一种串行化的引导方式,就是依次执行init 1/2/3,直到默认运行级别,在每
    个级别中的所有启动脚本都会被执行。所以在这里我以一种和传统Unix划分方式不同的说明方法,
    把Solaris的启动级别称为: 1,单用户模式 2,网络工作站模式 3,网络服务器模式

    下面是/etc中所有的启动运行脚本简要说明
    ===========================================================================
    init inittab rc0 rc1 rc2 rc3 rc5 rc6 rcS init.d
    init 系统启动超级进程
    inittab 进程启动配置文件
    rc0 - rc6 各启动级别的启动脚本
    rcS 单用户模式启动脚本
    init.d 启动脚本存放目录


    rc0.d: eeprom OpenBoot状态,可以进入硬件维护模式,或关闭机器。


    rc1.d: 单用户模式,可以对系统进行软件维护。
    S01MOUNTFSYS +加载文件系统
    S10lu =当运行live update后清理系统


    rc2.d: 多用户模式,启动网络工作站服务。 (最后会启动dtlogin允许图形界面工作站)
    S01MOUNTFSYS
    S05RMTMPFILES + 清空/tmp文件系统
    /tmp是系统缓存文件目录,和swap分区共享空间,如果分区满的话会
    对系统性能造成很大影响

    S10lu =

    S20sysetup + 设置系统初始参数

    设置hostname等
    S21perf = 性能记账服务(无效)
    开启accton记账服务,默认无效

    S30sysid.net + 配置基本网络参数
    设置系统ip地址等

    S40llc2 + 启动Class II logical link control driver
    逻辑链路控制程序驱动

    S42ncakmod = 启动Solaris Network Cache and Accelerator (NCA)
    NCA网络缓存加速驱动,可以提高HTTP Server吞吐率

    S47pppd - 启动拨号访问服务器进程
    串行线拨号访问服务器

    S69inet = 启动inetd进程
    Internet服务超级进程,配置文件/etc/inetd.conf,启动一系列
    服务,如telnet/ftp等

    s70uucp - 启动uucp
    uucp服务,无用

    S71rpc + 启动rpcbind服务
    rpcbind (RPC Portmap服务),如果需要CDE的话,这个进程是必需的

    S71sysid.sys + 配置一些系统参数

    S71ldap.client - 启动LDAP客户端

    S72directory - 启动目录服务

    S72inetsvc + 启动inet server,包含named/nis

    启动名字解析服务,包含named和nis两部分

    s72slpd - 启动slpd
    打印服务系统的一部分

    S72autoinstall = 启动自动安装守护进程
    当放入sun兼容的媒体介质时,会自动启动安装脚本

    S73cachefs.daemon - 启动cachefsd
    NFS缓存服务,可以提高NFS吞吐率

    S73nfs.client = 启动nfs客户端
    NFS客户端程序

    S74syslog + 启动syslog
    系统日志守护进程,必需

    s74autofs - 启动auto mount fsd
    当使用NFS时,这个进程会自动加载或卸载无用的用户网络文件系统
    配置文件/etc/auto_home和auto_master
    但是当没有使用nfs时,这个进程会对系统管理造成一些负面影响

    s74xntpd - 启动网络时间同步服务

    S75cron + 启动crontab服务
    系统任务自动调度守护进程

    S75savecore +

    S76nscd + 启动nscd,名字服务缓存
    DNS名字缓存服务

    S80kdmconfig = 启动kdmconfig
    如果系统启动时X-Window配置文件丢失,这个进程会启动X-Window配置

    S80spc - 启动lpd打印守护进程
    打印服务系统的一部分

    s80lp - 启动lpd打印调度守护进程
    打印服务系统的一部分

    S85lmgrd + 启动flexlm license服务器
    Solaris License管理服务器

    S85power + 启动电源守护进程

    S88utmpd + 启动utmpd

    s88sendmail - 启动sendmail

    S89PRESERVE =
    保留,无效

    S90wbem = 启动wbem,基于web的管理界面
    WBEM,Solaris系统管理界面服务器,可以使用/usr/sadm/bin/smc
    启动客户端程序连接管理

    S93cacheos.finish -

    S94ncalogd = 启动Solaris Network Cache and Accelerator LOGd
    NCA进程日志

    S95IIim + 启动输入法守护进程
    Solaris国际化支持的一部分,启动东亚语言输入法

    S95svm.sync + 启动 devfsadm ,devfs同步进程
    监控系统硬件,使/dev与/devices设备文件同步

    S99audit + 启动BSM审计进程
    Solaris Base Securiey Modula,启动Solaris C2安全审计
    默认未启动

    S99dtlogin = 启动CDE登录进程
    Solaris CDE图形界面启动进程


    rc3.d: 多用户模式,启动网络服务器模式
    S15nfs.server - 启动nfs服务器
    NFS网络文件服务器

    S13kdc.master - 启动Kerberos服务器
    S14kdc - 启动Kerberos服务器
    Kerberos认证服务器

    S16boot.server - 启动bootp服务器
    boot网络启动服务

    S34dhcp = 启动dhcp
    DHCP服务器

    S50apache - 启动apache服务器

    S76snmpdx - 启动snmp服务器
    启动SNMP服务,允许远程网络管理

    S77dmi - 启动snmp - dmi服务
    SNMP子服务

    S89sshd + 启动sshd服务器
    SSH服务器

    S80mipagent - 启动Mobile IP 代理
    S90samba - 启动samba服务器
    Samba CIFS网络文件服务器


    *在上面的启动脚本说明中,第二个域说明服务的必要性,个人的经验总结。
    +代表必须服务,系统正常运行必须
    =代表可选服务,由用户环境决定
    -代表无效,不必要,或不安全的服务


    <3>进程
    下面是系统启动后的默认进程情况,因为Solaris是一个系统环境相对较稳定的系统,所以每次启动
    之后,系统的基本进程和服务情况应该都差不多的,下面是常见的进程和服务说明。
    ===========================================================================
    # ps -el
    F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
    19 T 0 0 0 0 0 SY fec287cc 0 ? 0:01 + sched
    *系统进程调度
    8 S 0 1 0 0 40 20 de7a9808 319 de95ce16 ? 0:00 + init
    *init进程
    19 S 0 2 0 0 0 SY de7a9108 0 fec4d4b8 ? 0:00 + pageout
    *内存换页进程
    19 S 0 3 0 2 0 SY de7a8a08 0 fecea0bc ? 0:06 + fsflush
    *文件系统同步进程
    8 S 0 372 1 0 40 20 de7a8308 448 de955d68 ? 0:00 + sac
    *sac监控进程,和ttymon一起提供终端登陆功能
    8 S 0 381 355 0 40 20 de7a7c08 1581 de9c80a8 ? 0:01 = dtlogin
    *CDE登陆进程
    8 S 0 187 1 0 40 20 de7a7508 649 de955ee8 ? 0:00 + cron
    *crontab任务调度守护进程
    8 S 0 63 1 0 40 20 de7a6e08 680 de95c456 ? 0:00 + sysevent
    *??
    8 S 0 77 1 0 40 20 de7a6708 730 deb1ccb6 ? 0:02 = picld
    *??
    8 S 0 129 1 0 40 20 de7a6008 542 de5f083a ? 0:00 + rpcbind
    *rpc监控总进程,= portmat
    8 S 0 178 1 0 40 20 de7a1810 930 deb1c496 ? 0:00 + syslogd
    *syslog系统日志守护进程
    8 S 0 152 1 0 40 20 de7a1110 489 de5f077a ? 0:00 = inetd
    *internet服务超级守护进程
    8 S 0 195 1 0 40 20 de7a0a10 673 debedcd6 ? 0:00 = nscd
    *名字服务缓存进程
    8 S 1 161 1 0 40 20 de7a0310 613 de5f097a ? 0:00 - statd
    *rpc.statd,NFS文件服务状态同步子进程
    8 S 0 231 1 0 40 20 de79fc10 338 de79fc7c ? 0:00 = htt
    *httd,输入法进程
    8 S 0 163 1 0 40 20 de79f510 540 de5f067a ? 0:00 - lockd
    *rpc.lockd,NFS文件服务锁状态子进程
    8 S 0 208 1 0 40 20 de79ee10 339 debd34d6 ? 0:00 + powerd
    *电源管理服务,类似PC的APM
    8 S 0 225 224 0 40 20 de79e710 434 de5f05fa ? 0:00 - smcboot
    *??MobileIP服务?
    8 S 0 215 1 0 40 20 de79e010 275 de5f04ba ? 0:00 + utmpd
    *utmp登陆用户监控进程
    8 S 0 364 1 0 40 20 de79ca18 945 dee6aea6 ? 0:00 - snmpXdmi
    *snmp服务子进程
    8 S 0 234 231 0 40 20 de79c318 805 decce876 ? 0:00 = htt_serv
    *输入法服务器
    8 S 0 362 1 0 40 20 de79bc18 815 dedb0f82 ? 0:00 - dmispd
    *??
    8 S 0 334 1 0 40 20 de79b518 538 fed1e2de ? 0:00 + auditd
    *BSM审计守护进程
    8 S 0 400 398 0 40 20 ded93a38 73 ded93aa4 pts/2 0:01 sh
    *sh...
    8 S 0 397 381 1 40 20 ded93338 2502 dedb0b42 ? 0:02 dtgreet
    *CDE服务子进程
    8 R 0 398 379 1 50 20 ded92c38 1409 ? 0:02 + sshd
    *ssh服务器
    8 S 0 382 355 0 40 20 ded92538 583 dedb0e42 ?? 0:00 + fbconsol
    *framebuffer显示输出驱动
    8 S 0 378 372 0 40 20 ded91738 447 ded62216 ? 0:00 + ttymon
    *tty监控服务,和sac一起提供终端登陆功能,类似于其他Unix中的getty
    8 S 0 376 352 0 40 20 ded91038 649 deeecbce ? 0:01 - mibiisa
    *snmp服务子进程
    8 S 0 377 355 1 40 20 ded90840 4467 dedb0d42 ? 0:12 = Xsun
    *Solaris X服务器
    8 S 0 380 1 0 40 20 ded90140 786 ded62bd6 ? 0:01 + devfsadm
    */dev (devfs)同步进程
    8 S 0 355 1 0 40 20 ded8fa40 1245 dedb0cc2 ? 0:00 = dtlogin
    *CDE登录守护进程

    <4>inetd
    inetd进程启动了一系列的系统服务,而在Solaris中因为有很多RPC服务也在inetd中启动,因此
    inetd显得特别复杂,而其中的服务大多数都是不必要的 (全部都可以关闭)
    ===========================================================================
    #systat stream tcp nowait root /usr/bin/ps ps -ef
    #系统进程监控服务,允许远程察看进程

    #netstat stream tcp nowait root /usr/bin/netstat netstat -f inet
    #网络状态监控服务,允许远程察看网络状态

    #time stream tcp6 nowait root internal
    #time dgram udp6 wait root internal
    #网络时间服务,允许远程察看系统时间

    #echo stream tcp6 nowait root internal
    #echo dgram udp6 wait root internal
    #网络测试服务,回显字符串

    #discard stream tcp6 nowait root internal
    #discard dgram udp6 wait root internal
    #网络测试服务,丢弃输入

    #daytime stream tcp6 nowait root internal
    #daytime dgram udp6 wait root internal
    #网络测试服务,显示时间

    #chargen stream tcp6 nowait root internal
    #chargen dgram udp6 wait root internal
    #网络测试服务,回应随机字符串

    #RPC类服务
    #
    #100232/10 tli rpc/udp wait root /usr/sbin/sadmind sadmind
    #远程系统管理服务

    #100083/1 tli rpc/tcp wait root /usr/dt/bin/rpc.ttdbserverd rpc.ttdbserverd
    #CDE tooltalk服务

    #100221/1 tli rpc/tcp wait root /usr/openwin/bin/kcms_server kcms_server
    #Sun KCMS Profile服务

    #fs stream tcp wait nobody /usr/openwin/lib/fs.auto fs
    #X-Window字体服务器

    #100235/1 tli rpc/ticotsord wait root /usr/lib/fs/cachefs/cachefsd cachefsd
    #NFS缓存服务

    #dtspc stream tcp nowait root /usr/dt/bin/dtspcd /usr/dt/bin/dtspcd
    #CDE dtspc服务

    #100068/2-5 dgram rpc/udp wait root /usr/dt/bin/rpc.cmsd rpc.cmsd
    #CDE cmsd服务

    #100229/1 tli rpc/tcp wait root /usr/sbin/rpc.metad rpc.metad
    #100230/1 tli rpc/tcp wait root /usr/sbin/rpc.metamhd rpc.metamhd
    #100242/1 tli rpc/tcp wait root /usr/sbin/rpc.metamedd rpc.metamedd
    #SLVM Mediator系列服务,无用

    #printer stream tcp6 nowait root /usr/lib/print/in.lpd in.lpd
    #打印机守护进程

    #shell stream tcp nowait root /usr/sbin/in.rshd in.rshd
    #shell stream tcp6 nowait root /usr/sbin/in.rshd in.rshd
    #R远程登录系列服务,rsh
    #login stream tcp6 nowait root /usr/sbin/in.rlogind in.rlogind
    #R远程登录系列服务,rlogin
    #exec stream tcp nowait root /usr/sbin/in.rexecd in.rexecd
    #exec stream tcp6 nowait root /usr/sbin/in.rexecd in.rexecd
    #R远程登录系列服务,rexec

    #comsat dgram udp wait root /usr/sbin/in.comsat in.comsat
    #邮件通知服务
    #talk dgram udp wait root /usr/sbin/in.talkd in.talkd
    #本地通讯服务进程,talk
    #finger stream tcp6 nowait nobody /usr/sbin/in.fingerd in.fingerd
    #finger守护进程,允许远程查询登陆用户信息

    #rstatd/2-4 tli rpc/datagram_v wait root /usr/lib/netsvc/rstat/rpc.rstatd rpc.rstatd
    #rpc远程状态查询
    #rusersd/2-3 tli rpc/datagram_v,circuit_v wait root /usr/lib/netsvc/rusers/rpc.rusersd rpc.rusersd
    #rpc远程用户查询,类似rusers和finger
    #walld/1 tli rpc/datagram_v wait root /usr/lib/netsvc/rwall/rpc.rwalld rpc.rwalld
    #rpc广播发送,类似wall
    #sprayd/1 tli rpc/datagram_v wait root /usr/lib/netsvc/spray/rpc.sprayd rpc.sprayd
    #rpc网络吞吐量测试程序

    #100234/1 tli rpc/ticotsord wait root /usr/lib/gss/gssd gssd
    #GSS声音服务守护进程

    #tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot
    #tftp服务器

    #name dgram udp wait root /usr/sbin/in.tnamed in.tnamed
    #named,DNS服务器

    #telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd
    #telnet服务器

    #100155/1 tli rpc/ticotsord wait root /usr/lib/smedia/rpc.smserverd rpc.smserverd
    #smedia服务器

    #ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -a
    #ftp服务器

    #rexd/1 tli rpc/tcp wait root /usr/sbin/rpc.rexd rpc.rexd
    #rpc.rexd ,rpc远程命令执行服务,类似rexec

    #100134/1 tli rpc/ticotsord wait root /usr/lib/krb5/ktkt_warnd ktkt_warnd
    #Kerberos消息服务

    #rquotad/1 tli rpc/datagram_v wait root /usr/lib/nfs/rquotad rquotad
    #nfs 磁盘限额服务

    #100150/1 tli rpc/ticotsord wait root /usr/sbin/ocfserv ocfserv
    #OCF智能卡守护进程

    #uucp stream tcp nowait root /usr/sbin/in.uucpd in.uucpd
    #uucp服务器

    #krb5_prop stream tcp nowait root /usr/lib/krb5/kpropd kpropd
    #Kerberos数据库同步进程

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    ubuntu安装jdk的两种方法
    LeetCode 606. Construct String from Binary Tree (建立一个二叉树的string)
    LeetCode 617. Merge Two Binary Tree (合并两个二叉树)
    LeetCode 476. Number Complement (数的补数)
    LeetCode 575. Distribute Candies (发糖果)
    LeetCode 461. Hamming Distance (汉明距离)
    LeetCode 405. Convert a Number to Hexadecimal (把一个数转化为16进制)
    LeetCode 594. Longest Harmonious Subsequence (最长的协调子序列)
    LeetCode 371. Sum of Two Integers (两数之和)
    LeetCode 342. Power of Four (4的次方)
  • 原文地址:https://www.cnblogs.com/mao0504/p/4706596.html
Copyright © 2011-2022 走看看