OpenIndiana 添加驅動心得

其它Linux/Unix/BSD/OSX等发行版讨论
回复
头像
torachiyo
帖子: 81
注册时间: 2015-11-29 8:32
系统: Kali Linux
送出感谢: 0
接收感谢: 4 次

OpenIndiana 添加驅動心得

#1

帖子 torachiyo » 2018-10-09 15:24

實際試了Openindana 實機安裝後發現,有些新硬體驅動不支援,例如 Realtek ALC 283

後來看了他的 Open Source 之後發現,根本就還停留在 OpenSolaris 的階段 驅動幾乎沒什麼更新。

不過很慶幸的是他有開放原始碼,可以自己修改編譯驅動,原先以為很難參考 BSD 跟 Linux的原始碼想試圖修改看看,後來發現他的原始碼寫的真不錯,只要添加 PCI ID 進去就行了,音效卡驅動不用在個別定義什麼 Code 、節點之類 ....

OpenIndiana 重新編譯驅動與安裝的方法
範例 : Realtek ALC 283 驅動 audiohd DEV_ID 0x10ec0283 控制晶片是8 Series HD Audio Controller pci8086,9c20

* 查看 Audio 裝置 ID

代码: 全选

cat /dev/sndstat
SunOS Audio Framework

Audio Devices:
0: audiohd#0 onboard1, a (DUPLEX)
1: audiohd#1 onboard1, a (DUPLEX)

Mixers:
0: audiohd#0 onboard1, a HDMI
        Unknown HD codec: 0x80862807
1: audiohd#1 onboard1, a
        Unknown HD codec: 0x10ec0283
0x80862807 是 Intel HDMI 沒在用
0x10ec0283 是 Realtek ALC 283 喇叭是接在這個裝置上

* 安裝編譯工具
sudo pkg install build-essential

* 下載 OpenIndiana 原始碼
git clone https://github.com/illumos/illumos-gate.git

修改 Audio 驅動原始碼
到 $HOME/illumos-gate/usr/src/uts/common/io/audio/drv/audiohd 目錄內
打開 audiohd.c 在 audiohd_codec_info_t audiohd_codecs 裡面 添加 {0x10ec0283, "Realtek ALC283", (NO_SPDIF)},

* 編譯
cd $HOME/illumos-gate/usr/src/uts/common/io/audio/drv/audiohd
export PATH=$PATH:/opt/gcc/4.4.4/bin
CFLAGS="-I$HOME/illumos-gate/usr/src/uts/common"
cc -D_KERNEL -m64 -xarch=sse2a -xmodel=kernel $CFLAGS -c audiohd.c
ld -dy -r -o audiohd audiohd.o -N drv/audio

* 安裝驅動
# Unload Module

代码: 全选

MODNAME=audiohd
sudo rem_drv $MODNAME
MOD_PID=$(modinfo | grep $MODNAME | awk '{print $1}')
sudo modunload -i $MOD_PID
# Install Module

代码: 全选

sudo rm -rf /kernel/drv/amd64/audiohd
sudo ginstall -D -m755 audiohd /kernel/drv/amd64/audiohd
sudo chown root:sys /kernel/drv/amd64/audiohd
# load Module

代码: 全选

sudo add_drv -i 'pci8086,9c20' -m'* 0666 root sys' $MODNAME
sudo modload -p drv/$MODNAME
sudo devfsadm -i $MODNAME
sudo bootadm update-archive -fv
回复

回到 “其它类Unix OS发行版”