linux內核編譯,配置本機驅動

来源:http://www.cnblogs.com/yuuyuu/archive/2016/01/01/5093335.html
-Advertisement-
Play Games

1.前言 編譯linux內核失敗的原因很多時候就是驅動選錯,適合自己本機的驅動沒編譯進去。面對特殊平臺(或者有些潔癖者,我就是^_^),要編譯精簡內核,只要本機驅動,其他都不需要。面對內核裡面這麼多驅動,不懂硬體的我們,看到都頭大。本人第一次安裝gent...


1.前言                                                  

編譯linux內核失敗的原因很多時候就是驅動選錯,適合自己本機的驅動沒編譯進去。面對特殊平臺(或者有些潔癖者,我就是^_^),要編譯精簡內核,只要本機驅動,其他都不需要。面對內核裡面這麼多驅動,不懂硬體的我們,看到都頭大。本人第一次安裝gentoo的時候,內核編譯了5次,前4次主要失敗原因是乙太網卡驅動、無線網卡驅動、顯卡驅動、音效卡驅動都沒一次性配置正確。雖然gentoo提供了genkernel命令,可以自動幫你編譯內核,但還是想自己手工嘗試下。

2.獲取本機驅動信息                              

既然跟內核掛鉤,我們獲取本機內核驅動信息最直接的辦法就是使用lspci命令,這個命令可以輸出本機驅動信息,配合-k選項可以看到此驅動在內核的位子。

一般編譯內核的場景:更新舊內核,安裝定製版linux發行版(gentoo,arch等),嵌入式平臺,其他特殊平臺等等...

大部分場景在下都可以使用lspci命令,安裝gentoo的livecd版都提供了該工具,如果其他系統沒有就安裝該工具

debian系列安裝

1 $:sudo apt-get install pciutils 

或者源碼編譯安裝,下載地址https://www.kernel.org/pub/software/utils/pciutils/

然後我們獲取本機環境現存的驅動信息,下麵是我的機器上面的信息:

 1 $:lspci -k
 2 00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
 3     Subsystem: Lenovo Device 21e2
 4 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
 5     Kernel driver in use: pcieport
 6 00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
 7     Subsystem: Lenovo Device 21e3
 8     Kernel driver in use: i915
 9 00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
10     Subsystem: Lenovo Device 21e2
11     Kernel driver in use: mei_me
12 00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
13     Subsystem: Lenovo Device 21e2
14     Kernel driver in use: ehci-pci
15 00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)
16     Subsystem: Lenovo Device 21e2
17     Kernel driver in use: snd_hda_intel
18 00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)
19     Kernel driver in use: pcieport
20 00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2 (rev b4)
21     Kernel driver in use: pcieport
22 00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b4)
23     Kernel driver in use: pcieport
24 00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b4)
25     Kernel driver in use: pcieport
26 00:1c.7 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 8 (rev b4)
27     Kernel driver in use: pcieport
28 00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
29     Subsystem: Lenovo Device 21e2
30     Kernel driver in use: ehci-pci
31 00:1f.0 ISA bridge: Intel Corporation HM65 Express Chipset Family LPC Controller (rev 04)
32     Subsystem: Lenovo Device 21e2
33     Kernel driver in use: lpc_ich
34 00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)
35     Subsystem: Lenovo Device 21e2
36     Kernel driver in use: ahci
37 00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)
38     Subsystem: Lenovo Device 21e2
39 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Seymour [Radeon HD 6400M/7400M Series] (rev ff)
40     Kernel driver in use: radeon
41 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
42     Subsystem: Lenovo Device 21e2
43     Kernel driver in use: r8169
44 04:00.0 System peripheral: Ricoh Co Ltd PCIe SDXC/MMC Host Controller (rev 07)
45     Subsystem: Lenovo Device 21e2
46     Kernel driver in use: sdhci-pci
47 09:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)
48     Subsystem: Realtek Semiconductor Co., Ltd. Device 8195
49     Kernel driver in use: rtl8192ce

我們可以看到每個驅動後面都有Kernel driver in use:,代表驅動在內核中的鏈接位子。

3.配置內核驅動                              

下載內核源碼https://www.kernel.org/,我這裡下載的是stable 4.3.3,解壓後進入源碼目錄執行:

1 $:make menuconfig

接下來就會彈出編譯選項界面,如圖:

我們可以看到上面有快捷鍵操作說明,我重點在</> for Search,在界面直接按反斜杠,進入搜索界面。接下來挑個重點驅動說明一下,我們看

Network controller,可以看到型號是Realtek  RTL8188CE,然後Kernel driver in use: rtl8192ce,在內核的位子鏈接是rtl8192ce

我們按</>,輸入rtl8192ce,然後回車,就會出現詳細位子,如圖:

我們可以看到Pormt提示上面跟我要的型號一樣,具體選項的前面有個(1),註意這裡同一個Symbol(就是剛剛輸入的rtl8192ce)有的對應很多選項,根據前面的序號,按對應的數字就可以直接進入選項,按<esc>可以返回來這個界面。這裡,我直接按1。按1後,就到具體選項了,如圖:

我們看到上面,發行版為了相容各種機器,把所有Realtek的驅動都編譯進成了模塊。接下來就保留自己的驅動型號,去掉其他不要的。

剩下的驅動跟上面操作一樣的,還有的不必要驅動是直接編譯進了內核,非模塊。對照自己的驅動,其他都可以不要。配置好後的內核

配置文件最好保存下來,如果驅動沒配置成功,再配置的時候把保存的配置文件複製一份到源碼目錄,命名為.config。繼續make menuconfig配置。 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、簡介 pkg-config用來檢索系統中安裝庫文件的信息。典型的是用作庫的編譯和連接。 二、實例 http://blog.chinaunix.net/uid-20595934-id-1918368.html 三、常見問題 1)PKG_CONFIG_PATH和PKG_CONFIG的路徑設置問題 h...
  • seq
    Linux 中seq 命令的用法用於產生從某個數到另外一個數之間的所有整數用法:seq [選項]... 尾數 或:seq [選項]... 首數 尾數 或:seq [選項]... 首數 增量 尾數‐f 選項 指定格式% 後面指定數字的位數 預設是"%g","%3g"那麼數字位數不足部分是空格seq ‐...
  • 2015年各大技術公司八仙過海,各顯神通。微軟在其中尤為顯目。以下是2015年微軟公司推出的十大技術視頻。按照瀏覽量排序,排在第一位的視頻有55萬次之多。Windows 10, HoloLens, Visual Studio 2015成了2015年微軟的重頭戲。No.1: Visual Studio...
  • 任務調度的使用1:設置任務。 crontab -e2:分配任務-每隔第一時間去執行 date > /home/mydata1 希望,每天凌晨兩點執行date >> /home/mydata2 可以在crontab -e中加入0 2 * * * date >> /home/mydata2調度文件的規則...
  • 本文主要內容:1)管程(Monitor)介紹;2)管程實現;3)管程應用
  • 1.批量創建10個用戶stu01-stu10,並且設置隨機8位密碼,要求不能用shell迴圈(例如:for,while等),只能用命令及管道實現。 1 ##方法1: 2 [root@server tmp]# echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#us...
  • 配置Samba 如果沒有普通用戶,添加用戶,指令: useradd -m aaa passwd bbb 添加Samba用戶指令: smbpasswd -a aaa passwdword: …… 修改配置文件/etc/samba/smb.conf[aaa] comment = aaa ...
  • 1.先上圖 下麵是tcpdump的源碼。顏色根據自己的喜好配置,我比較喜歡亮的顏色,看的清楚!2.下載輔助配置文件 首先,我們下載一個vim的插件xterm-color-table.vim,下載地址:http://www.vim.org/scripts/sc...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...