請問如何查找驅動程式 [論壇 - Ubuntu硬體支援]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

« 1 (2)


回覆: 請問如何查找驅動程式
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 885
MP : 640 / 26629
EXP: 40
離線
下載「linux-firmware」這個套件。


$ apt-get download linux-firmware




解開


$ dpkg -x linux-firmware_1.127.19_all.deb linux-firmware



觀看資料夾結構


$ tree linux-firmware



因為檔案很多就不列結果了。

列第一層資料夾


$ ls linux-firmware -1



顯示


lib
usr




若有安裝「linux-firmware」這個套件。
除了上面的方法,也可以執行下面的指令,來了解有安裝什麼檔案在系統上面。


$ dpkg -L linux-firmware



一樣檔案很多,所以就不列出來顯示結果了,請自行動手執行上面的指令觀看。


所以根據這個套論串的例子

可以執行


$ dpkg -L linux-firmware | grep real



顯示


/usr/share/doc/linux-firmware/licenses/LICENCE.realtek-firmware.txt



或是執行


$ dpkg -L linux-firmware | grep realtek



顯示


/usr/share/doc/linux-firmware/licenses/LICENCE.realtek-firmware.txt




執行


$ dpkg -L linux-firmware | grep rtl_nic



顯示


/lib/firmware/rtl_nic
/lib/firmware/rtl_nic/rtl8168g-3.fw
/lib/firmware/rtl_nic/rtl8105e-1.fw
/lib/firmware/rtl_nic/rtl8107e-2.fw
/lib/firmware/rtl_nic/rtl8106e-1.fw
/lib/firmware/rtl_nic/rtl8168e-2.fw
/lib/firmware/rtl_nic/rtl8168e-3.fw
/lib/firmware/rtl_nic/rtl8168h-2.fw
/lib/firmware/rtl_nic/rtl8106e-2.fw
/lib/firmware/rtl_nic/rtl8402-1.fw
/lib/firmware/rtl_nic/rtl8168g-2.fw
/lib/firmware/rtl_nic/rtl8411-1.fw
/lib/firmware/rtl_nic/rtl8168e-1.fw
/lib/firmware/rtl_nic/rtl8168h-1.fw
/lib/firmware/rtl_nic/rtl8411-2.fw
/lib/firmware/rtl_nic/rtl8168f-2.fw
/lib/firmware/rtl_nic/rtl8168d-2.fw
/lib/firmware/rtl_nic/rtl8168g-1.fw
/lib/firmware/rtl_nic/rtl8168d-1.fw
/lib/firmware/rtl_nic/rtl8107e-1.fw
/lib/firmware/rtl_nic/rtl8168f-1.fw


2016/1/10 18:59
應用擴展 工具箱
回覆: 請問如何查找驅動程式
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 885
MP : 640 / 26629
EXP: 40
離線
執行


$ apt-get source linux-image-3.19.0-43-generic



顯示


Reading package lists... Done
Building dependency tree
Reading state information... Done
Picking 'linux-lts-vivid' as source package instead of 'linux-image-3.19.0-43-generic'
NOTICE: 'linux-lts-vivid' packaging is maintained in the 'Git' version control system at:
http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-trusty.git
Need to get 134 MB of source archives.
...略...




$ apt-get source linux-image-extra-3.19.0-43-generic



顯示


Reading package lists... Done
Building dependency tree
Reading state information... Done
Picking 'linux-lts-vivid' as source package instead of 'linux-image-extra-3.19.0-43-generic'
NOTICE: 'linux-lts-vivid' packaging is maintained in the 'Git' version control system at:
http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-trusty.git
Need to get 134 MB of source archives.




可以知道「linux-image-3.19.0-43-generic」和「linux-image-extra-3.19.0-43-generic
這兩個套件的「Source Package」都是「linux-lts-vivid」。

除了可以從上面的指令顯示的訊息知道,(Picking 'linux-lts-vivid' as source package instead of 'linux-image-3.19.0-43-generic')
也可以從套件的網頁資訊知道,(頁面上會看到「[ Source: linux-lts-vivid]」這樣的字樣)
另外也可以從下面的指令知道「Source Package」。

可以執行


$ apt-cache showsrc linux-image-3.19.0-43-generic
$ apt-cache showsrc linux-image-extra-3.19.0-43-generic




================================================================

執行


$ apt-get source linux-lts-vivid






$ apt-get source linux-image-3.19.0-43-generic
$ apt-get source linux-image-extra-3.19.0-43-generic



結果都是一樣的


$ ls ./ -1



顯示


linux-lts-vivid-3.19.0
linux-lts-vivid_3.19.0-43.49~14.04.1.diff.gz
linux-lts-vivid_3.19.0-43.49~14.04.1.dsc
linux-lts-vivid_3.19.0.orig.tar.gz



觀看「linux-lts-vivid-3.19.0」這個資料夾結構


$ tree linux-lts-vivid-3.19.0



一樣檔案很多,所以就不列出來顯示結果了,請自行動手執行上面的指令觀看。


根據這個案例,執行下面的指令查詢「8111G」相關的檔案


$ grep 8111G ./linux-lts-vivid-3.19.0/* -Ri



顯示


./linux-lts-vivid-3.19.0/drivers/net/ethernet/realtek/r8169.c: _R("RTL8168g/8111g", RTL_TD_1, FIRMWARE_8168G_2,
./linux-lts-vivid-3.19.0/drivers/net/ethernet/realtek/r8169.c: _R("RTL8168g/8111g", RTL_TD_1, NULL, JUMBO_9K, false),
./linux-lts-vivid-3.19.0/drivers/net/ethernet/realtek/r8169.c: _R("RTL8168g/8111g", RTL_TD_1, FIRMWARE_8168G_3,




觀看資料夾「linux-lts-vivid-3.19.0/drivers/net/ethernet/realtek/」


$ ls linux-lts-vivid-3.19.0/drivers/net/ethernet/realtek/ -1



顯示


8139cp.c
8139too.c
atp.c
atp.h
Kconfig
Makefile
r8169.c




參考

V字龍 寫到:
GNU/Linux 作業系統的驅動程式多半由 Linux 作業系統核心提供,您可以到

* Linux Wireless wiki
https://wireless.wiki.kernel.org/
* kernel/git/torvalds/linux.git - Linux kernel source tree
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/

網站查詢關鍵字

以 Realtek® 8111G 為例,查詢後可得知 r8169 驅動於 c558386b836ee97762e12495101c6e373f20e69d 修訂編號之版本提交開始支援 Realtek® 8111G
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c558386b836ee97762e12495101c6e373f20e69d
,根據該修訂版之 Makefile 文件可確定採用 3.6 版以上的 Linux 作業系統核心會有該裝置的驅動程式

Ubuntu 14.04 採用 3.13 版的 Linux 作業系統核心,故應有提供 Realtek® 8111G 的驅動程式
此外根據 r8169 驅動來源程式碼可知它會載入 rtl_nic/rtl8168g-2.fw 韌體資料,查詢 Ubuntu 14.04 提供的 linux-firmware 軟體來源代碼可得知有提供該韌體


觀看「linux-lts-vivid-3.19.0/drivers/net/ethernet/realtek/r8169.c」,可以對照上面給的「網址」內容。


$ less linux-lts-vivid-3.19.0/drivers/net/ethernet/realtek/r8169.c




執行


$ cat linux-lts-vivid-3.19.0/drivers/net/ethernet/realtek/r8169.c | grep 8111G -i



顯示


_R("RTL8168g/8111g", RTL_TD_1, FIRMWARE_8168G_2,
_R("RTL8168g/8111g", RTL_TD_1, NULL, JUMBO_9K, false),
_R("RTL8168g/8111g", RTL_TD_1, FIRMWARE_8168G_3,



執行


$ cat linux-lts-vivid-3.19.0/drivers/net/ethernet/realtek/r8169.c | grep RTL8168g -i



顯示


#define FIRMWARE_8168G_2 "rtl_nic/rtl8168g-2.fw"
#define FIRMWARE_8168G_3 "rtl_nic/rtl8168g-3.fw"
_R("RTL8168g/8111g", RTL_TD_1, FIRMWARE_8168G_2,
_R("RTL8168g/8111g", RTL_TD_1, NULL, JUMBO_9K, false),
_R("RTL8168g/8111g", RTL_TD_1, FIRMWARE_8168G_3,
static void rtl8168g_1_hw_phy_config(struct rtl8169_private *tp)
static void rtl8168g_2_hw_phy_config(struct rtl8169_private *tp)
rtl8168g_1_hw_phy_config(tp);
rtl8168g_2_hw_phy_config(tp);


2016/1/10 19:03
應用擴展 工具箱
回覆: 請問如何查找驅動程式
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 885
MP : 640 / 26629
EXP: 40
離線
最後題外話

執行


$ apt-cache search realtek



顯示


flashrom - Identify, read, write, erase, and verify BIOS/ROM/flash chips
librtlsdr-dev - Software defined radio receiver for Realtek RTL2832U (library)
librtlsdr0 - Software defined radio receiver for Realtek RTL2832U (development files)
nictools-pci - Diagnostic tools for many PCI Ethernet cards
r8168-dkms - dkms source for the r8168 network driver
rtl-sdr - Software defined radio receiver for Realtek RTL2832U (tools)



只有到這,其他沒深究了,Orz...

先附上一篇剛發現的文章「Linux DKMS 機制導入筆記」,還沒深究,先貼上來。

以上報告完畢,小的暫時告退了...



2016/1/10 19:06
應用擴展 工具箱

« 1 (2)

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.