不久前,
為了移植某驅動程序,筆者可謂絞盡腦汁,在4.1內核版本上,嘗試了很多次都沒能成功,后來仔細分析,才知道是內核版本過高導致的,本文給出降低內核版本的方法,具體編譯環境的搭建,還請自行查閱其他文章。
1. 登錄Linux編譯服務器,在當前用戶目錄下創建一個新的目錄,如erm。
2. 輸入以下命令
git clone git://git.openwrt.org/openwrt.git
接下來便進入漫長的等待過程,如下圖
3. git clone完成后,會出現如下提示
4. 進入openwrt目錄,輸入以下命令
git log
并使用Page Up/Down與上下方向箭頭查看log內容,可以發現,在46553版本中,移除了對3.18內核版本的支持,如下圖。
5. 找到一個合適的仍然支持Linux 3.18的版本,這里筆者選擇了46550。將46550版本對應的commit字符串復制下來,并按“q”退出git log。輸入以下命令
git checkout 367c4188921d77f5edb3dcfd148a59652fbfff37
然后便可以看到“HEAD is now at 367c418…”的字樣,如下圖。
6. 安裝軟件包,輸入以下命令
./scripts/feeds update
./scripts/feeds install –a
7. 輸入make menuconfig命令,選擇Advanced configuration options (for developers)—>Toolchain options,然后選擇C library implementation,選擇uclibc,如下圖。
然后退出并保存配置。
8. 編輯target/linux/ar71xx/Makefile,將內核版本由4.1修改為3.18;編輯target/linux/ar71xx/image/Makefile,修改flash分區。
9. 筆者需要編譯QCA9531的固件,所以需要再次make menuconfig,并將Target Profile選擇為AP143。
10. 最后make V=s -j 29(多線程編譯),即可得到用于QCA9531的3.18內核版本的固件。