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)
- 在OPENWRT下執行make menuconfig,然后選擇Utilities -> gpioctl為<M>,保存退出就可以了
- 在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