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

1 什麼是opkg數據結構

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

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

2 什麼是ipk函數

  openwrt下的程序安裝包,用戶能夠很方便地安裝程序。spa

3 ipk與內核模塊code

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

  

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

4 編譯最簡單的ipk包進程

  我這裏使用的openwrt源碼爲12.09(attitude adjustment)ip

  1. 在OPENWRT下執行make menuconfig,而後選擇Utilities -> gpioctl爲<M>,保存退出就能夠了
  2. 在OPENWRT下執行make package/gpioctl/compile編譯就會獲得該ipk了

  

想要清理的話使用如下命令:路由

make package/gpioctl/clean

 5 驗證運行rem

  將這個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

相關文章
相關標籤/搜索