当前位置首页 > 百科> 正文

FREEBSD系统启动脚本

2019-04-29 13:05:29 百科

FREEBSD系统启动脚本

FreeBSD 核心探测过系统硬体之后,就启动进程0和进程1。

开始启动过程

进程0:用于清除记忆体,将所有的记忆体单元置零
进程1:为 init进程,将负责启动系统和各种守护进程。init将系统带入多用户状态,并按照/etc/rc启动脚本启动服务程式。

/etc/rc启动脚本

/etc/rc启动脚本将完成很多非常重要的工作,包括设定磁碟交换、检查磁碟错误、设定网路界面,启动网路服务程式等非常重要的工作。
/etc/rc档案将也将执行另外的 rc 档案,如执行 rc.conf 用于大部分系统参数的设定,rc.network 用于网路设定,rc.firewall 用于设定防火墙,以及 rc.local ,用于管理员对本机特定的启动设定等。其中 rc.conf 档案中包含了用户能够更改的很多设定参数,这些设定参数在其他 rc 档案中使用,用于配置系统的参数,因此对系统管理来讲最为重要。
由于大部分伺服器程式都是网路程式,因此如果系统的网路设定不正确,这些服务程式将不能正常执行。而且有些程式的逾时设定的很长,因此出现错误时会出现系统停留在某个程式上不再继续执行。一般可以不必理会,等待程式逾时退出即可,或者可以尝试使用 Ctrl-C 中断该程式。
如果启动脚本真的出现无法继续执行的错误,如 果能够通过网路登录,可以先登录进系统再更改启动脚本,而大部分正在执行启动脚本的情况下,网路服务并没有启动,那幺就必须重新启动系统进入单用户状态,再修改启动脚本来纠正错误。
#! /bin/sh
swapfile="NO" # Set to name of swapfile if aux swapfile desired.
apm_enable="NO" # Set to YES if you want APMenabled.
pccard_enable="NO" # Set to YES if you want to configure PCCARD devices.
pccard_mem="DEFAULT"# If pccard_enable=YES, this is card memory address.
pccard_ifconfig="NO" # Specialized pccard ethernet configuration (or NO).
local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d" # startup script dirs.
上面是 /etc/rc.conf 的部分内容,可以看出参数的设定形式,相应的设定值都给出了提示,使得更改这些参数设定非常容易。rc.onf 中的大部分设定可以通过 /stand/sysinstall 系统安装程式来进行设定 ,但也有部分参数不能通过 sysinstall 进行设定,必须通过手工修改这个档案来完成。按照 FreeBSD 的习惯 ,这些rc档案,rc.conf用于参数配置,可以由 sysinstall 安装程式和管理员更改,rc.local 中定义这台计算机特定的启动命令,可以由管理员重新设定,而其他rc档案应该保留不变。这只是一种习惯做法,而非硬性规定,然而遵从习惯的好处是系统设定比较清晰,便于系统维护和管理,并且当管理员进入一个新系统中,能立即找到需要的配置档案。
在版本3.1-release之前,/etc/rc.conf 中包括了所有参数设定,这样在系统长期运行之后,就无法区分哪个参数为预设值,哪个参数为管理员更改过的值。在3.1-release中,rc.conf 划分为两个档案,/etc/default/rc.conf和/etc/rc.conf,其中 /etc/default/rc. conf 是设定各个参数的系统预设值,而/etc/rc.conf仅仅设定本地系统在安装和运行过程中更改的参数,例如 hostname 等,因此3.1-release之后的 /etc/rc.conf 档案中的内容较少。事实上 /etc/default/rc.conf 中不但设定了读取/etc/rc.conf档案中的设定,还包括读取 /etc/rc.conf.local 档案的设定,以适应更複杂的计算机设定情况。对于一般的情况,用不到那幺複杂的设定档案,仅仅注意 /etc/rc.conf 中的设定就满足设定要求了。

不同OS比较

BSD Unix 传统上只使用 rc.local 来维护本机特定的启动命令,这样如果系统在启动时需要配置的内容过多,这个档案就会变得相当庞大,不利于系统维护。Unix System V 风格的系统使用启动目录而非档案来维护启动命令,每个启动一个特定功能的设定被放入一个单独脚本中,然后将所有的脚本都放入启动目录中,系统启动时逐项检 查这个目录中的执行脚本,自动执行这些命令。
System V 和 BSD 的启动管理有很大不同,System V 引入了启动级别的概念,可以有6种不同的启动级别,而 BSD 只简单的分为多用户状态、单用户状态和停机状态3种。在启动的管理方面,System V 比 BSD 更友好一些。
因此 FreeBSD 吸取 System V 中的启动目录的思想,在 rc.conf 中定义了本计算机的系统启动档案存放的目录 local_startup 参数,预设使用 /usr/local/etc/rc.d 目录存放伺服器程式的启动脚本,使用 /usr/X11R6/etc/rc.d 目录存放本地 X Window 相关的程式启动脚本。这些目录中的以 sh 结尾并具备执行属性的 shell 脚本程式将在启动时被自动执行。这两个目录中的脚本程式也是由系统管理员设定和修改的,必须以“.sh” 结尾,其他后缀的档案将被忽略。习惯上这两个目录里的脚本程式负责启动伺服器程式,而 rc.local 主要用于调整系统的一些非标準参数设定(rc.conf中没有涉及的设定)。
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net