64位Ubuntu14.04系統下載入核心模組hello world
- 感謝這篇部落格,讓折騰了好久的我實現了核心模組載入
- 為什麼要構造原始碼樹?
- 驅動程式和使用者程式不一樣,它是作為一個模組連線到核心模組來執行的,執行在核心空間裡面。所以要執行我們自己構造的模組,需要自己的系統已經配置好核心樹,然後把目標模組和核心樹連線起來執行!
- 但為了熟悉整個的過程,我們也重新下載對應自己的編譯環境的“核心原始碼”並對其進行編譯,構造核心原始碼樹。首先要檢視自己使用的系統“核心版本 ”:
檢視自己 ubuntu 系統的版本:有兩種方法,第一種,cat /etc/issue ; 第二種,lsb_release -a 命令
- 核心原始碼樹構建步驟:
(3)使用命令 sudo apt-get install linux-source-3.13.0 下載安裝該“核心原始碼 ” (4)解壓核心原始碼包:進入 /usr/src/ 目錄,能找到 linux-source-3.13.0.tar.bz2 檔案,用解壓命令 sudo tar xjvf linux-source-3.13.0.tar.bz2 解壓。要注意上面目錄下的 linux-source-3.13.0.tar.bz2 檔案並不是軟體壓縮包檔案
進入 linux-source-3.13.0 資料夾,發現真正的 tar 原始碼壓縮包,解壓。
(5)對“核心原始碼”進行編譯前的配置從下面截圖可以看出,在解壓後,該資料夾下並沒有 .config 檔案。
進入原始碼解壓後的資料夾裡,為了方便,可以直接在使用 make menuconfig 命令開啟視覺化配置視窗,然後什麼都不要修改的退出。
在執行完 sudo make menuconfig 命令後並不會像上面那樣執行完畢,生成一個 .config 檔案,而是會先開啟下面的視覺化配置,畢竟我們的命令是 menuconfig(選單配置)。
什麼都不要操作,直接 Esc 退出,選擇 Save,從而可以在該資料夾下生成一個 .config 編譯配置檔案。
.config 配置檔案如下圖所示:
(6)使用 sudo make 命令進行核心編譯,當然不只是下面截圖那樣簡單,整個核心編譯過程是以小時計算的,編譯吧,linux君,我玩會再來看你。
編譯完,該資料夾下就生成了一個名為 vmlinux 的檔案了,但網上的教程大都說要執行完下面的 sudo make bzImage 命令才會生成 vmlinux 檔案。
(7)sudo make zImage 命令在我的本地編譯環境下是不能使用的。
(8)使用命令 sudo make bzImage 後,下面兩個截圖對其過程的中間過程省略。
(9)使用 sudo make modules 命令編譯模組 (10)使用 sudo make modules_install 命令安裝模組,執行完後,會在 /lib/modules 目錄下生成一個新的目錄 /lib/modules/3.13.0/ 。至此,核心就編譯完成了。
(11)由於我的本地 ubuntu 編譯環境中的核心版本就是為 3.13.0-32-generic,所以 /lib/modules/3.13.0-24-generic 本身就存在,所以其實我們這裡的 sudo make modules 和 sudo make modules_install 這兩步是不需要執行的。
(12)但我們這裡還是執行了 sudo make modules 和 sudo make modules_install 命令,看上面的截圖也就能判斷出,其實,在我們執行完 sudo make moduels 和 sudo make modules_install 命令後編譯生成了目錄 /lib/modules/3.13.11-ckt39
- 現在可以編寫 hello world 程式並載入該核心模組了
- 下面是是 Makefile (必須為這個檔名,連 makefile 都是不能直接使用 make 命令來進行編譯的)檔案,解釋下該檔案,加深理解。
(8)make 定義了很多預設變數,像常用的命令或者是命令選項之類的,什麼 CC ,什麼 CFLAGS,$(MAKE) 就是預設的 make 這個命令的名稱(或者是路徑)。make -p 可以檢視所有預定義的變數的當前值。看下面的截圖的最後一行就可以看出, $(MAKE) 變數其實就是 make 命令。
- 對驅動程式進行編譯的時候,發現 /lib/modules/ 目錄下的兩個庫資料夾都是能用的(在前面說過,其實安裝好的 ubuntu本地編譯環境是擁有核心原始碼樹的)。
- 編譯後,本來資料夾內只有 hello.c 和 Makefie 檔案,當執行完 sudo make 命令後會出現:
==================== 參考以下部落格:
相關推薦
64位Ubuntu14.04系統下載入核心模組hello world
感謝這篇部落格,讓折騰了好久的我實現了核心模組載入 為什麼要構造原始碼樹?我們做 Linux 開發一般是在PC機上編譯好,下到板子上去執行,板子上的 Linux 核心和 PC 機上的 Linux 版本很多時候都是不一樣的,比如:pc機上的是 Linux 2.6,板子上的系統
Ubuntu14.04系統下Kinect v2點雲圖的生成
Kinect v2為深度相機,能夠額外得到影象的深度資訊。如下圖 ,最近在Ubuntu14.04系統下,成功連線上了Kinect v2. 參考了下面的部落格,但是過程並不順利。 http://www.cnblogs.com/hitcm/p/5118196.h
Ubuntu14.04系統下安裝OpenCV 4.0.0開發環境全過程
最近研究一個專案時需要用到OpenCV,於是自己嘗試在Ubuntu 14.04系統下安裝了這個開發環境。下面就將具體的過程記錄一下,便於後期查閱和同行分享。 〇、開發環境 首先介紹一下我的開發環境: 物理系統:Win 10 64位; 虛擬工具:Virtualbo
ubuntu14.04系統下mips交叉編譯環境搭建
1.安裝必要軟體 2.下載解壓buildroot 3.配置編譯 4.設定環境變數 1.安裝必要軟體 sudo apt-get install build-essential bison flex 2.下載解壓 buildroot http://buildro
如何在64位的Win10系統下安裝.NET Framework 3.0
微軟的.NET Framework大家都很熟悉了,在Win XP,Win 2000,Win 7以及Win 10等系統上都很常見。但是,最近我的64位的Win 10系統上安裝.NET Framework 3.0時,卻遇到了很奇怪的問題,錯誤程式碼0x800F081
Ubuntu14.04系統下無法連線Wi-Fi無線網以及安裝BCM43142網絡卡驅動的解決方案
1.問題描述 博主近日開始學習ROS,首先必裝Linux作業系統,選擇的是Ubuntu14.04,安裝過程略過,直接講問題。安裝完系統之後發現一個重要問題,沒法使用Wi-Fi,只能使用有線網路,而且網
ubuntu14.04系統下torch框架下安裝hdf5方法
1.執行如下命令:sudo apt-get install libhdf5-serial-dev hdf5-tools如圖所示:2.依次執行如下三條命令:git clone https://github
用了一年ubuntu14.04系統,整理下常用的shell語句
文章目錄 因為要做深度學習,所以不可避免要使用linux系統,常用的就是ubuntu了。這裡可能寫的比較零碎,權當做學習記錄吧 一、對ubuntu系統的認識 最開始就是安裝ubuntu系統,14.04需要自行配置每個盤的空間,這個可以在網上搜到(比如
Ubuntu14.04+eclipse下cocos2d-x3.0正式版環境的搭建
div 新版 文件中 function ngs method ont alt src 環境: ubuntu14.04 adt-bundle-linux-x86_64 android-ndk-r9d-linux-x86_64 cocos2d-x-3.0正式版 apach
ubuntu14.04系統中virtualbox安裝Oracle VM VirtualBox Extension Pack包
默認 .so -m targe 控制 站點 clas data- ref ubuntu14.04系統中virtualbox默認不支持usb設備,須要安裝Oracle VM VirtualBox Extension Pack才行,但必須安裝下面版本號才幹夠成功安裝:Ora
Ubuntu16.04系統下 解決“無法獲得鎖 /var/lib/dpkg/lock -open (11:資源暫時不可用)、無法鎖定管理目錄(/var/lib/dpkg/),是否有其他進程正占用它?”的方法
方法 div 終端 例如 解決辦法 all -o 強制 安裝 在Ubuntu16.04下安裝軟件,例如:sudo apt-get install lrzsz時提示: 無法獲得鎖 /var/lib/dpkg/lock - open (11: 資源暫時不可用) 無法鎖定
影象腐蝕-ubnutu16.04系統下
檔案結構 [email protected]:~/opencv_test/1$ tree -L 1 . ├── build ├── CMakeLists.txt ├── main.cpp └── ubuntu.png main.cpp檔案
Ubuntu14.04環境下Qt5.5以上版本無法輸入中文的解決教程
參考:https://www.cnblogs.com/gcl0909031172/p/8676470.html 1、前言 由於Qt5.4之後對之前的Qt5版本不再二進位制相容,所以網上很多簡單的舊的辦法已經失效了,所以本教程的辦法是重新編譯fcitx-qt5,生成最新的libfcitxplatf
Ubuntu 16.04系統下MySQL的安裝
1.伺服器端安裝 安裝伺服器端:在終端中輸入如下命令,回車後,然後按照提示輸入 sudo apt-get install mysql-server 啟動服務 當前使用的ubuntu映象
Ubuntu 16.04 系統下安裝 FoxitReader
第一步:官網下載安裝包 網址:https://www.foxitsoftware.cn/products/reader/ 注:Ubuntu系統下安裝軟體的格式有三種:.bundle檔案、.tar類檔案、.deb檔案。 詳見(http://blog.csdn.net/su
騰訊雲伺服器ubuntu16.04系統下安裝Python版本管理工具pyenv
一、 系統環境 騰訊雲提供的系統是ubuntu 16.04 LTS,系統預設的Python版本是2.7.12,我想要安裝3.6和其他的版本。 比較方便的是騰訊雲已經預設安裝好了git和curl命令,可以很方便的下載安裝軟體 二、 pyenv的安裝 第一步 下載並安裝pyenv $ g
Ubuntu16.04系統下漢字顯示為方框解決辦法
問題詳情: 問題分析: 今天一開啟Ubuntu系統,竟然不支援中文顯示了。開始時以為是中文輸入法的問題,後面重灌了也不行。 然後我就一直在網上搜“Ubuntu系統不支援中文”,“Ubunt
用Buildroot製作樹莓派64位精簡嵌入式系統
使用Buildroot 2018.08.1 1、make raspberrypi3_64_defconfig 2、make menuconfig toolchain中修改選項,將c library改為glibc,以適應更多的第三方開發 System configura
ubuntu14.04系統中root許可權的獲取
作為剛學習Linux的新人,我在獲取root許可權時候竟然遇到了問題,解決之後特地來總結一下 一般不推薦直接以root身份登入,而是先以使用者登入,在用命令切換成root。 一.如果是第一次登入root 首先要設定
折騰記錄——Ubuntu14.04系統安裝NvidiaCUDA7.5並搭建
引言 最近幾天一直嘗試搭建Theano深度學習開發環境,並安裝英偉達CUDA Toolkit。這期間,有想過在Windows上搭建的,但是從網上了解後,發現還是在linux環境下更加合適。在搭建這個開發環境的過程中,其實入了不少坑,有點曲折。本不打算寫搭建過程的,因為網