在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

相关文章
相关标签/搜索