在openwrt上編譯一個最簡單的ipk包


1 什么是opkg

  Opkg 是一個輕量快速的套件管理系統,目前已成為 Opensource 界嵌入式系統標准。常用於路由、交換機等嵌入式設備中,用來管理軟件包的安裝升級與下載。

  opkg update 更新可以獲取的軟件包列表
  opkg upgrade 對已經安裝的軟件包升級
  opkg list 獲取軟件列表
  opkg install 安裝指定的軟件包
  opkg remove 卸載已經安裝的指定的軟件包

2 什么是ipk

  openwrt下的程序安裝包,用戶可以很方便地安裝程序。

3 ipk與內核模塊

  什么是內核模塊呢?這對於初學者無非是個非常難以理解的概念。內核模塊是Linux內核向外部提供的一個插口, 其全稱為動態可加載內核模塊(Loadable Kernel Module,LKM),我們簡稱為模塊。Linux內核之所以提供模塊機制,是因為它本身是一個單內核(monolithic kernel)。單內核的最大優點是效率高,因為所有的內容都集成在一起,但其缺點是可擴展性和可維護性相對較差,模塊機制就是為了彌補這一缺陷。
  模塊是具有獨立功能的程序,它可以被單獨編譯,但不能獨立運行。它在運行時被鏈接到內核作為內核的一部分在內核空間運行,這與運行在用戶空間的進程是不同的。模塊通常由一組函數和數據結構組成,用來實現一種文件系統、一個驅動程序或其他內核上層的功能。
  總之,模塊是一個為內核(從某種意義上來說,內核也是一個模塊)或其他內核模塊提供使用功能的代碼塊。

  

  按上面的說法,雖然openwrt編譯出的內核模塊也是一個ipk包,但它是無法獨立地運行的,它們的名字會以kmod-為開頭而取。

4 編譯最簡單的ipk包

  我這里使用的openwrt源碼為12.09(attitude adjustment)

  1. 在OPENWRT下執行make menuconfig,然后選擇Utilities -> gpioctl為<M>,保存退出就可以了
  2. 在OPENWRT下執行make package/gpioctl/compile編譯就會得到該ipk了

  

想要清理的話使用以下命令:

make package/gpioctl/clean

 5 驗證運行

  將這個gpioctl_1.0-1_ar71xx.ipk包文件使用ftp上傳到路由器上去。

復制代碼
ftp> put gpioctl_1.0-1_ar71xx.ipk gpioctl.ipk
local: gpioctl_1.0-1_ar71xx.ipk remote: gpioctl.ipk
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
2177 bytes sent in 0.00 secs (4745.5 kB/s)
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0            2177 Apr 14 06:29 gpioctl.ipk
-rw-r--r--    1 0        0             172 Apr 02 07:10 minicom.log
226 Directory send OK.
ftp> 
復制代碼

  運行結果:

   運行時若不帶任何參數的話會有這樣的提示信息:

gpioctl dirin|dirout|get|set|clear gpio

  說明該ipk包已經正常安裝運行了。

 

更進一步的內容穩步至此: http://wiki.openwrt.org/doc/devel/packages


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM