星期日, 十二月 25, 2005

[Debian] 启动时加载 sisfb 模块并指定参数

系统:Debian/sid
内核:2.6.14
initrd工具:yaird

  有一台联想台式机,液晶显示器,在启动的时候,如果启用vesafb(即:内核参数是 vga=0x318之类),出现的文字基本上无法看清,显示器会出现一个提示信息,说要使用 1024x768@75的模式(一般液晶的都是60HZ),而在目前的模式下,不给内核打补丁,是没有办法调整 vesafb 的 vga 模式的。

  因为这台机器集成的是 sis 的显卡,所以决定试试 sisfb 模块。
  按照内核文档的提示,sisfb 模块在载入的时候可以手动指定参数
Example for sisfb as part of the static kernel: Add the following line to your lilo.conf:
    append="video=sisfb:mode:1024x768x16,mem:12288,rate:75"
Example for sisfb as a module: Start sisfb by typing
    modprobe sisfb mode=1024x768x16 rate=75 mem=12288
即:如果 sisfb 编入了内核,则可以在启动时加入分辨率,刷新率等参数,如果是内核模块,则可以在命令行载入是加入参数。

  可是,我现在需要的是在作为模块的情况下,需要在启动的时候加入刷新率和分辨率。

解决办法是:
/etc/yaird/Default.cfg 文件中加入sisfb的模块项:
OPTIONAL MODULE sisfb
这样在创建initrd文件时,会在initrd文件中加入sisfb的内核模块。
创建 /etc/modprobe.d/sisfb(名字自己随意取),在这个文件中加入如下内容
options sisfb mode=1024x768x16 rate=75
这样在加载模块时,会自动加入刷新率和分辨率的参数。

Why?
这是因为 yaird 在创建 initrd 的时候,会参考 /etc/yaird/Default.cfg 来获取需要加载的模块名称,而在具体的添加 加载模块的命令的时候,是调用的 modprobe -v -n 命令来确定模块的位置和模块加载的参数(参考 /usr/lib/yaird/perl/ModProbe.pm),因此需要自己将模块的参数加入到 /etc/modprobe.d/ 下的文件中(更具体的信息,请 man modprobe.conf)

0 Comments:

发表评论

<< Home