编写设备驱动程序

Procedure使用替代内核进行引导

为避免系统无法运行,应从内核副本和关联的二进制文件进行引导,而不是从缺省内核进行引导。

  1. /platform/* 中生成驱动程序的副本。


    # cp -r /platform/`uname -i`/kernel /platform/`uname -i`/kernel.test
    
  2. 将驱动程序模块放在 /platform/`uname -i`/kernel.test/drv 中。

  3. 引导替代内核,而非缺省内核。

    创建并存储替代内核后,可通过许多方法来引导此内核。

    • 可通过重新引导来引导替代内核:


      # reboot -- kernel.test/unix
      
    • 在基于 SPARC 的系统中,还可以从 PROM 进行引导:


      ok boot kernel.test/sparcv9/unix
      

      注 –

      要使用 kmdb 调试程序进行引导,请按模块调试程序入门中所述使用 -k 选项。


    • 在基于 x86 的系统中,当引导过程中显示 Select (b)oot or (i)nterpreter: 消息时,请键入以下命令:


      boot kernel.test/unix
      

示例 22–4 引导替代内核

以下示例说明如何使用替代内核进行引导。


ok boot kernel.test/sparcv9/unix
Rebooting with command: boot kernel.test/sparcv9/unix
Boot device: /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@0,0:a File and \
    args:
kernel.test/sparcv9/unix


示例 22–5 使用 -a 选项引导替代内核

也可以使用询问功能 (-a) 选项进行引导来更改模块路径。使用此选项会生成用于配置引导方法的一系列提示。


ok boot -a
Rebooting with command: boot -a
Boot device: /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@0,0:a File and \
args: -a
Enter filename [kernel/sparcv9/unix]: kernel.test/sparcv9/unix
Enter default directory for modules
[/platform/sun4u/kernel.test /kernel /usr/kernel]: <CR>
Name of system file [etc/system]: <CR>
SunOS Release 5.10 Version Generic 64-bit
Copyright 1983-2002 Sun Microsystems, Inc. All rights reserved.
root filesystem type [ufs]: <CR>
Enter physical name of root device
[/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@0,0:a]: <CR>