Solaris操作系统可加载模块
Solaris是一个基于Unix的操作系统,由Sun Microsystems开发,Sun被Oracle收购后,被称为Oracle Solaris。它以其可扩展性和创新特性而闻名,例如DTrace、ZFS、Time Slider等。
Solaris内核
内核是操作系统的核心,其主要功能是通过适当分配资源来管理硬件。Solaris采用微内核设计,无法创建单片Solaris内核。
在Solaris中,从本地磁盘引导内核可通过以下步骤完成:
加载引导块
将引导块读取并加载到内存是Solaris引导的第一步。这使用PROM中的系统固件,称为Open Boot PROM (OBP)。完成的步骤包括提供系统参数、构建硬件设备树以及为手动或自动系统引导提供引导支持。
加载ufsboot
引导块定位辅助引导程序ufsboot。加载ufsboot后,控制权从引导块传递到ufsboot。引导块程序不能大于7680字节,因此在这个空间内只能执行读取Unix目录、定位文件并将其加载到内存的操作。
加载核心内核和链接器
ufsboot程序定位并加载核心内核和链接器到/platform//kernel/unix和/kernel/misc/krtldn分别。ufsboot程序可以加载所需的krtldn程序并将其控制权传递给它,因为它可以解析可执行文件和链接格式头。
加载所需的内核模块
krtldn搜索特定模块,其路径由一个关键变量确定。此变量可在OBP固件中设置,也可以手动输入到引导程序的命令行中。
初始化内核
Solaris内核使用虚拟内存地址空间运行,但在启动用户应用程序之前需要进行一些初始化。处理器寄存器被初始化,并调用mlsetup()、main()和startup()。
init进程
init进程是第一个真正的用户进程,它分配的是用户地址空间而不是内核地址空间。init是内核创建的最后一个进程,用于启动系统。
Solaris可加载内核模块
Solaris具有一个小型核心内核,该内核具有可以动态链接的不同模块。这些模块在某种程度上类似于层,因为它们都有其定义的任务以及与其他模块的接口。
但是,每个模块可以根据需要相互联系。这消除了通过多个中间层进行交互的问题。
Solaris可加载模块可以使用给定的图表表示: