1. 程式人生 > >降低OpenWRT的Linux核心版本

降低OpenWRT的Linux核心版本

不久前,關閉了官方的svn伺服器,導致很多客戶無法按照正旗通訊的韌體編譯指導文件獲取程式碼,只能使用git方式。相比於svn,git貌似無法直接獲取指定版本的程式碼。然而,使用git獲取的程式碼已經將Linux核心升級到4.1版本,最新的已經是4.4版本了。這樣的更新速度對於業餘愛好者也許是件好事,可是對於產品開發者,卻未必如此。

為了移植某驅動程式,筆者可謂絞盡腦汁,在4.1核心版本上,嘗試了很多次都沒能成功,後來仔細分析,才知道是核心版本過高導致的,本文給出降低核心版本的方法,具體編譯環境的搭建,還請自行查閱其他文章。

1. 登入Linux編譯伺服器,在當前使用者目錄下建立一個新的目錄,如erm。

2. 輸入以下命令

git clone git://git.openwrt.org/openwrt.git

接下來便進入漫長的等待過程,如下圖

receiving-objects

3. git clone完成後,會出現如下提示

git-clone-done

4. 進入openwrt目錄,輸入以下命令

git log

並使用Page Up/Down與上下方向箭頭檢視log內容,可以發現,在46553版本中,移除了對3.18核心版本的支援,如下圖。

remove-linux-3.18-support

5. 找到一個合適的仍然支援Linux 3.18的版本,這裡筆者選擇了46550。將46550版本對應的commit字串複製下來,並按“q”退出git log。輸入以下命令

git checkout 367c4188921d77f5edb3dcfd148a59652fbfff37

然後便可以看到“HEAD is now at 367c418…”的字樣,如下圖。

git-checkout

6. 安裝軟體包,輸入以下命令

./scripts/feeds update

./scripts/feeds install –a

7. 輸入make menuconfig命令,選擇Advanced configuration options (for developers)—>Toolchain options,然後選擇C library implementation,選擇uclibc,如下圖。

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核心版本的韌體。