debian non-free firmware adventure

debian 的安裝光碟裡面是去除了所有版權問題的驅動,因此如果遇到安裝時找不到驅動的問題,可以到官網下載這些 non-free firmware 透過 usb 來讀取這些韌體,可能是要放在 firmware 的資料夾下讓他掃瞄吧。

那如果我只有光碟機勒,不就很麻煩嗎?其實可以自己製作一個包含 non-free 驅動的 iso,透過像是 magic iso 作為 iso 編輯器,將下載來的 DVD 打開,把抓下來的 firmware deb 都放到光碟內原本是空的 firmware 資料夾內,將 iso 存檔。就會得到一份…non-free 的安裝光碟了,接下來的安裝就會很順利了。

需注意編輯 iso 軟體的軟體最好要支援可以設定 bootable 的,否則放進去結果光碟不能開機也是瞭然阿~免費軟體的話 free iso creater 好像支援吧,只是沒辦法直接編輯 iso。

這次遇到可能需要編譯 bnx2 的 driver 的情況,套件是 firmware-bnx2 ,網卡是 Broadcom NetXtremeII 5706 用到的韌體是
* Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-06-5.0.0.j3.fw)
沒什麼概念,不知道從哪裡開始, 就去 broadcom 官網抓最新的 driver 下來自己編譯,make KVER=xxx 蠻順利就過了,只是開機時寫說

bxn2: Can’t load firmware file “bnx2/bnx-mips-06-6.2.1.fw”

檢查一下 /lib/firmware/bnx2 資料夾是真的沒有這個版本( 6.2.1) 檔,跟 debian  6.0.4 用到 fw 檔不太一樣,apt-get 可以用以下指令來抓原始碼來參考看,裡面看起來都只有一些 firmware 二進制檔

$ apt-get source firmware-bnx2

這才找到原本 linux kernel 本來就有這個 driver 跟 firmware 的各種不同版本了 。就直接從 linux kernel 抓正確對應的版本下來放到 /lib/firmware 了。結果重開機還是有同樣的錯誤,才發現只要更新一下 ramfs 好像就可以了?!詳細原理還不太清楚…

$ update-initramfs -u

另外可以用以下指令來檢查 module 裡面的 fw ?! ,原生 debian non-free bnx2 版本可以看到很多 fw 結果自己編的版本卻不行,不知道這是在幹麼的阿阿~

filename: /lib/modules/2.6.32-5-amd64/kernel/drivers/net/bnx2.ko
firmware: bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw
firmware: bnx2/bnx2-rv2p-09-5.0.0.j3.fw
firmware: bnx2/bnx2-mips-09-5.0.0.j3.fw
firmware: bnx2/bnx2-rv2p-06-5.0.0.j3.fw
firmware: bnx2/bnx2-mips-06-5.0.0.j3.fw

慘考資料:

http://forum.proxmox.com/threads/8303-bnx2-Can-t-load-firmware-file