admin管理员组

文章数量:1532256

2023年12月26日发(作者:)

Mac 0S X苹果电脑系统启动完整过程详解

启动过程:

1、电源开启。

2、执行固件中的代码。

3、收集硬件信息并初始硬件。

4、选择启动项(通常是选择OS,但有时会选择硬件测试等类似情況。)。用户可能会被提示进行启动先择。

5、控制权交给/System/Library/CoreServices/BootX(启动引导器)。BootX载入内核并描绘OS标识(如有)。BootX尝试载入先前绶存的设备驱动列表(根据/usr/sbin/kextcache进行创建或更新)。绶存的类型为mkext且为多内核扩展包含了信息词典(info dictionaries)与二进制文件。注意:如果mkext缓存丢失或损坏,BootX将在/System/Library/Extensions中搜索当前方案中所需要的扩展(由该扩展包中文件的OSBundleRequired属性值进行决定。)

6、执行内核中的init例程。決定要启动之系统的根设备。从此刻起,将不再使用固件中的程序。

7、由内核初始各种Mach/BSD数据结构。

8、初始I/O(输入输出)设备。

9、内核开始运行/sbin/mach_init,Mach服务命名(引导程序)后台。Mach_init为服务名和要准备访问其它服务所用的Mach端口提供映射。到这步时,启动开始转为用户等级。

10、mach_init开始/sbin/init,传统的BSD初始化(init)进程。初始化将决定运行等级,并运行/etc/(设置让机器能够运行单用户-single user模式)。在此步中,将执行:与其它rc脚本源程序/etc/,一个包含实用功能的shell脚本,如

CheckForNetwork()(检查如网络已启动),GetPID(),purgedir()(仅删除目录内容,而非结构),等。

11、rc.boot会显示要启动的类型(多用户,安全模式,光驱,网络等等)。网络启动的情況下(sysctl的变量t将会为何种情况而设之为1),其将用个启动参数来运行/etc/t。/etc/t会处理网络启动的参数特征。例如:执行网络和(如有)本地挂载。其还会呼叫/usr/bin/nbst来关联当作根设备使用的磁盘镜像到个影子文件(shadow file)。此方法是将那个希望处于本地存储器的文件(磁盘)重定向写入到影子文件。

12、rc boot会在必须进行文件系统一致性检查(file system consistency check,fsck)时,显示图形。单用户模式和用光盘启动时不会运行fsck。安全模式启动时总会运行fsck。也会处理fsck的返回状态。

13、如果成功退出,/etc/rc多用户启动脚本将会运行。如果正在从一个光驱启动,脚本将切換到/etc/(安装)。

14、/etc/rc挂载本地文件系统(HFS+、HFS、UFS、/dev/fd、/.vol),确保目录/private/var/tmp存在,然后运行/etc/ler_cleanup如果有(重启前,会由安装器离开)。

15、/etc/p运行。其将“清理"一定数量的Unix与Mac特殊目录/文件。

16、启动绶存(BootCache)开始。

17、各种sysctl变量被设置(如:vnodes的最大值、System V IPC等)。如果/etc/已存在(在Mac OS X Server中为/etc/),它将读取和设置sysctl变量为已包含在其中的。

18、syslogd开始。

19、创建机器检查符号文件(Mach symbol file)。

20、/etc/rc开始kextd后台进程,用来从内核或委托进程(client processes)加载所需的内核扩展。

21、/usr/libexec/register_mach_bootstrap_servers将运行以加载包含在/etc/mach_init.d中的各种Mach引导程序所基于的服务。

22、portmap与netinfo开始。

23、如/System/Library/位于/System/Library/Extensions,/etc/rc将删除已存在的mkext并创建一个新的(不存在时,会创建)。

24、/etc/rc启动/usr/sbin/update,一个后台程序,用来频繁地清空磁盘上的互联网文件系统缓存。

25、/etc/rc启动虚拟内存系统。设置/private/var/vm为个交換目录。/sbin/dynamic_pager以适当的参数启动(交换文件名路径模板、已创建的交换文件大小、当创建额外交换文件或删除已存在文件时,指定高、低水平的警报切换开关。)

26、/etc/rc启动/usr/libexec/fix_prebinding以修复错误地预连编二进制文件(prebound

binaries)。

27、/etc/rc执行/etc/p以清除并重置文件与设备。

28、/etc/rc最后将启动/sbin/Systemstarter,处理启动项从下列位置:/System/Library/Startupltems与/Library/Startupltems。一个启动项是个程序、一个shell脚本、匹配一个文件夹名的名称。文件夹包含一个属性列表文件含有一些配对的关键值,如:Description、Provides、Requires、Orderpreference、启动与停止信息等等。您可以运行Systemstarter-n-D以作为根用户(root)来进行程序打印调试与从属信息(不包含现在已经在运行的任何项目)。

29、CoreGraphics启动开始Apple类型服务后台(ATSServer)和Window服务器

(WindowServer)。默认下,loginwindow程序(位于/System/Library/CoreServices目录下)已为控制设备执行。如果您不想运行到图形登录,可以修改/etc/ttys中相关的行。

本文标签: 启动文件运行程序内核