60 FreeBSD连载:缺省内核配置选项( 三 )


由于只有586以上的芯片才支持SMP,因此这需要在cpu行的设置中删除386和486行的设置,明确指定处理器的类型 。否则就会发生逻辑冲突 。
controller isa0controller eisa0controller pci0这三行定义了三种控制器的基本支持代码:ISA、EISA和PCI总线控制器 。
ISA总线类型是个人计算机的标准配置,很多驱动程序代码都基于ISA控制器的代码,因此系统必须对ISA总线进行支持 。EISA总线类型是ISA的扩展,使用在一些较老型号的服务器中,今天已经逐渐被PCI总线代替,它是可选的 。PCI选项支持PCI总线设备的通用代码,当前PCI总线主板是个人计算机的主流,这个选项也是必须的 。
如果用户的计算机不存在EISA总线,可以删除对EISA选项的支持 。但是,由于后面设置的一些设备是EISA总线类型的设备,依赖这个选项的支持,必须同时也必须删除所有的EISA总线类型的设备,否则就存在逻辑错误 。配置程序并不会自动删除那些并不存在的设备选项,这样就导致直到编译时才会发现EISA总线设备的驱动程序发生编译错误,编译不能正常完成 。
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2diskfd0 at fdc0 drive 0diskfd1 at fdc0 drive 1控制器fdc0是支持标准软盘控制器的基本代码,一般个人计算机能支持两个软盘驱动器,fd0和fd1设备 。通过drive参数的值可以指定这两个软盘的顺序 。fdc0使用的资源是个人计算机缺省设置,因此不存在系统探测问题 。此外,虽然让内核自动探测软盘的数量没什么坏处,但删除不必要的选项可以略微加快系统启动的速度
options"CMD640" # work around CMD640 chip deficIEncycontroller wdc0 at isa? port "IO_WD1" bio irq 14#controller wdc0 at isa? port "IO_WD1" bio irq 14 flags 0x00ff8004diskwd0 at wdc0 drive 0diskwd1 at wdc0 drive 1controller wdc1 at isa? port "IO_WD2" bio irq 15diskwd2 at wdc1 drive 0diskwd3 at wdc1 drive 1optionsATAPI#Enable ATAPI support for IDE busoptionsATAPI_STATIC #Don"t do it as an LKMdeviceacd0#IDE CD-ROMdevicewfd0#IDE Floppy (e.g. LS-120)前面的这些选项是用于支持IDE驱动器及硬盘的配置,事实上这些设置不但支持IDE驱动器,还支持一些较老的ST506或ESDI界面的硬盘设备,虽然那些硬盘设备已经淘汰,没有人再使用它们了 。
"CMD640"用于修正使用CMD640控制芯片的系统主板的问题,wdc0是第一个IDE接口控制器,wdc1为第二个IDE控制器,一个个人计算机系统中只能存在两个标准IDE控制器,并且一个IDE驱动器能带两个硬盘设备,因此wdc0上能连接两个硬盘wd0和wd1,wdc1能连接wd2和wd3 。其中wd0和wd2为主硬盘,wd1和wd3为从硬盘 。当然可以通过指定磁盘的参数at和drive参数的设置,改变硬盘号的顺序 。
由于IDE经过了一个长期的发展,控制器是由不同的制造厂商制造的,因此在一些细微的方面也存在有差异,主要是新的控制器能够支持更强的传输模式,当然它也支持原有的兼容模式 。为这些细小的差异没有必要重写驱动程序,只需要更改配置行中的参数设置,就能支持某些IDE控制器的高级功能 。
每个控制器都有长32位的flags标志位,用于定义IDE硬盘的I/O类型,其中前16位定义drive 1的标志,后16位定义drive 0的标志 。例如wdc0的标志为0x00ff8004,表示定义了wd0的标志为0x8004,使用32位I/O每次传送4个扇区,而wd1设置为0x00ff,不探测32位传输而使用兼容模式 。这个标志也可以分割为两个16位的部分,也在每个磁盘设备的标志中定义 。
IDE控制器中还支持光盘驱动器,首先需要ATAPI提供IDE界面使用的ATAPI类型光驱基本代码,ATAPI_STATIC这一选项使ATAPI代码直接编译到内核文件中,而不编译为可加载模块 。而acd0就为IDE光驱的驱动程序 。由于光驱就是连接在IDE控制器上,因此IDE接口的光驱还需要相应IDE驱动器的支持,例如光驱接在第二个IDE控制器上,则必须增加wdc1控制器选项 。如果光驱上的主/从(master/slave)跳线不正确,就不能正确侦知IDE光驱,很多IDE光驱出厂设置位从设备,在该IDE总线上没有其他设备的情况下,应该将光驱跳为主设备 。

推荐阅读