分类:
2008-04-08 17:02:31
本节介绍对不同架构需使用的编译选项,以及安装驱动程序的位置。
使用 -D_KERNEL 选项指示该代码用于定义内核模块。
若在编译 64 位的 SPARC 架构,则使用 -xarch=v9 选项:
% cc -D_KERNEL -xarch=v9 -c dummy.c % ld -r -o dummy dummy.o |
若在编译 64 位的 x86 架构,则使用 -xarch=amd64 选项和 -xmodel=kernel 选项:
% cc -D_KERNEL -xarch=amd64 -xmodel=kernel -c dummy.c % ld -r -o dummy dummy.o |
若在编译 32 位架构,则使用下列构建命令:
% cc -D_KERNEL -c dummy.c % ld -r -o dummy dummy.o |
在安装驱动程序时要确保您是用户 root。
在完成对 _info()、_init() 和attach() 例程的修改和测试以前,要将驱动程序安装在 /tmp 目录里。将驱动程序的二进制文件复制到 /tmp 目录。从内核驱动程序目录连接到本驱动程序。
如果某一驱动程序的 _info()、_init() 或 attach() 函数出现了错误,机器可能会陷入一种没完没了的忙乱之中。忙乱之后,Solaris 操作系统会自动重启。在启动过程中,Solaris 操作系统会加载它可以加载的任何驱动程序。如果在加载驱动程序时导致系统忙乱的 attach() 函数中存在错误,则在该忙乱之后再行重启时系统将会再度陷入忙乱。系统将不停地重复忙乱、重启、忙乱循环,因为在忙乱之后每次重启时,它都力图重新加载这个有毛病的驱动程序。
为了避免没完没了的忙乱,请把驱动程序保存在 /tmp 区,直到完全测试好之后为止。从内核驱动程序区连接到 /tmp 区的驱动程序。每当系统重启时,Solaris 操作系统都会删除 /tmp 区的所有文件。若驱动程序导致了忙乱,Solaris 操作系统可以成功重启,因为驱动程序已从 /tmp 区自动删除。内核驱动程序区中的连接无处可指。错误的驱动程序加载不上,故系统不会再次陷入忙乱。您可以修改驱动程序、将其重新复制到 /tmp 区,并继续进行测试和开发。当驱动程序测试好后,将其复制到 /usr/kernel/drv 区,这样在重启后它就会仍然可用。
# cp dummy /tmp |
在 64 位的 SPARC 架构上,连接到 sparcv9 目录:
# ln -s /tmp/dummy /usr/kernel/drv/sparcv9/dummy |
在 64 位的 x86 架构上,连接到 amd64 目录:
# ln -s /tmp/dummy /usr/kernel/drv/amd64/dummy |
在 32 位架构上,创建连接:
# ln -s /tmp/dummy /usr/kernel/drv/dummy |
将配置文件复制到系统的内核驱动程序区。
# cp dummy.conf /usr/kernel/drv |