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中搜索当前方案中所需要的扩展(由该扩展包中Info.plist文件的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/rc.boot(设置让机器能够运行单用户-single user模式)。在此步中,将执行:rc.boot与其它rc脚本源程序/etc/rcmon,一个包含实用功能的shell脚本,如CheckForNetwork()(检查如网络已启动),GetPID(),purgedir()(仅删除目录内容,而非结构),等。
11、rc.boot会显示要启动的类型(多用户,安全模式,光驱,网络等等)。网络启动的情況下(sysctl的变量kernboot将会为何种情况而设之为1),其将用个启动参数来运行/
etc/rc.Netboot。/etc/rcboot会处理网络启动的参数特征。例如:执行网络和(如有)本地挂载。其还会呼叫/usr/bin/nbst来关联当作根设备使用的磁盘镜像到个影子文件(shadow file)。此方法是将那个希望处于本地存储器的文件(磁盘)重定向写入到影子文件。
12、rc boot会在必须进行文件系统一致性检查(file system consistency check,fsck)时,显示图形。单用户模式和用光盘启动时不会运行fsck。安全模式启动时总会运行fsck。rc.boot也会处理fsck的返回状态。
13、如果rc.boot成功退出,/etc/rc多用户启动脚本将会运行。如果正在从一个光驱启动,脚本将切換到/etc/rc.cdrom(安装)。
14、/etc/rc挂载本地文件系统(HFS+、HFS、UFS、/dev/fd、/.vol),确保目录/private/var/tmp存在,然后运行/etc/rc.installer_cleanup如果有(重启前,会由安装器离开)。
15、/etc/rc.cleanup运行。其将“清理"一定数量的Unix与Mac特殊目录/文件。
16、启动绶存(BootCache)开始。
17、各种sysctl变量被设置(如:vnodes的最大值、System V IPC等)。如果/f已存在(在Mac OS X Server中为/f),它将读取和设置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/Extensions.mkext位于/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/rc.cleanup以清除并重置文件与设备。
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程序(loginwindow.app位于/System/Library/CoreServices目录下)已为控制设备执行。如果您不想运行到图形登录,可以修改/etc/ttys中相关的行。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论