1. 程式人生 > >OpenWrt Image Builder 製作帶外掛的HG255D韌體記錄

OpenWrt Image Builder 製作帶外掛的HG255D韌體記錄

前幾天寫了一個編譯Openwrt ipk包的部落格《Ubuntu 使用Openwrt SDK交叉編譯ipk包過程全紀錄(超多圖)》,那篇文章是以WNDR4300為例,使用恩山上大神編譯的純淨版韌體,然後自己下載ss和luci的github原始碼使用openwrt SDK編譯出ipk安裝包,然後又在openwrt官網上找到ss和luci相關的依賴安裝,實現了最新版的ss和luci介面,並支援UDP轉發的ss代理。

但是WNDR4300昂貴的價格註定了它應用範圍不會太廣,只在家裡用用都覺得奢侈。而將同樣的功能移植到華為 hg255d這個又老又便宜的路由器上才是生產力。

首先華為hg255d具備16m ROM和32m RAM,已經具備了只能路由器的最低配置,完全可以跑Openwrt和ss外掛。同樣300m的路由器比如極路由1s要一百多快,而且刷好ss版的要更貴

其次我試過使用網山大神給的純淨版韌體,不過核心版本都不一致,luci的依賴包kmod-iptable-tproxy安裝不上,沒有圖形介面可用性就大大降低了。

最後其實最重要的是,刷好op的hg255d在某寶二手的售價僅為25人民幣,想想這麼點錢就能買一個能裝外掛的智慧路由器,而且還能開發USB、多撥等功能,實在是太超值了。

所以一方面為了獲得最新的ss和luci外掛,另一方面避免韌體核心不一致帶來的煩惱,非常需要自己動手編譯一套韌體。

在我的操作過程中發現ImageBuilder編譯韌體的過程要比SDK編譯ipk包容易的多,也不容易出錯,但是想要把ss這樣的功能直接編譯進韌體裡面,還是需要學會SDK編譯ipk包的方式,編譯韌體的主要目的不是為了新增新的軟體,而是為了解決ipk包的依賴,因為openwrt官網上給出的依賴包核心版本經常變化,不能通用。

下文會以Openwrt CC 15.05 為例,具體介紹如何在Ubuntu環境下交叉編譯純淨版韌體,向韌體中新增依賴庫,製作整合ss等功能韌體的方法

然後我們就有了shadowsocks-libev_2.5.5-2_ramips_24kec.ipk,luci-app-shadowsocks_1.3.6-1_all.ipk兩個檔案,先留著備用,當然沒有這兩個檔案也不耽誤我們編譯韌體,可以略過此步。

下面說一下各版本韌體的作用:

純淨版韌體:用於觀察ss或者其他第三方程式的依賴包,為編譯完整版做基礎。也可以做普通上網用

依賴包版韌體:因為ss等外掛頻繁更新,而韌體我們只想編譯一次,所以這個版本的韌體只編譯進ss的所有依賴包,方便以後opkg升級ss使用

完整版ss韌體:方便別人安裝使用,一勞永逸的韌體。

下面我們編譯一個純淨版韌體,儘可能少的安裝依賴和服務,力圖將ROM大小降到最低,滿足日常上網要求即可的高穩定性低資源消耗的純淨版本。


其中,packages是我們安裝ipk時尋找依賴包的地方

ImageBuilder是今天的主角,用來生成bin韌體的

SDK是編譯Github上c原始碼成ipk包的 

下面我們就下載ImageBuilder準備生成韌體吧,首先下載這個tar包,在windows上隨意下載,linux上可以直接使用wget下載,不過國內的網速實在很慢,很容易失敗,這個tar包大小在1.5G左右,儘量使用斷點續傳工具加國外代理進行下載。

下載之後放到Ubuntu系統上,使用tar xjf Openwrt-ImageBuilder-15.05-ramips-rt305x.Linux-x86_64.tar.bz2解壓這個tar包,由於這個包1.5G那麼大,需要等個兩三分鐘,不要以為是宕機了,耐心的等等就好。差一點的電腦可能要登上5分鐘或更久。

解壓完成之後,直接cd進解壓完畢的資料夾中,現在我們有兩件很重要的事情需要做

1、將ImageBuilder的Makefile放開對HG255d的支援

2、選擇合適依賴包編譯進韌體

其中第一點尤為重要,要是沒有處理ImageBuilder的Makefile,不管你編譯多少次都編譯不出能用的韌體來的。方法也不麻煩,編輯如下檔案:

nano target/linux/ramips/image/Makefile
搜尋HG255D,去掉前面的註釋符#,至於官方為什麼要註釋掉這一行,有一種說法是官方的版本只在lintel u-boot上測試過,如果刷在帶原廠u-boot的HG255D上會出問題,這也許是官方沒有提供HG255D韌體下載的原因吧。


下面開始選擇合適的依賴包。

為什麼要選擇依賴包呢,因為此時如果直接使用make是可以編譯出openwrt韌體來的,不過這樣的韌體幾乎除了一個核心之外別的什麼都沒有,沒有web介面的路由器後臺。所以要把路由器後臺的luci介面和一些其他和網路NAT有關的依賴包編譯進去,語法格式是

make image PROFILE=HG255D 

# HG255D為路由器名字, 預設只有基礎包
make image PROFILE=HG255D PACKAGES=”pk1 pk2 pk3 -pk4” 

# -pk4表示去掉pk4包

所以按照以往的經驗,我這裡給出一個基礎依賴包的列表

make image PROFILE=HG255D PACKAGES="base-files busybox dropbear firewall fstools jsonfilter libc libgcc mtd netifd opkg procd swconfig ubox ubus ubusd uci usign kmod-lib-crc-ccitt kmod-ipv6 kmod-ip6tables kmod-ipt-conntrack kmod-ipt-core kmod-ipt-nat kmod-nf-conntrack kmod-nf-conntrack6 kmod-nf-ipt kmod-nf-ipt6 kmod-nf-nat kmod-ppp kmod-pppoe kmod-pppox kmod-slhc kmod-gpio-button-hotplug kmod-spi-bitbang kmod-spi-gpio kmod-ath kmod-ath9k-common kmod-cfg80211 kmod-mac80211 libip4tc libip6tc libxtables libblobmsg-json libexpat libiwinfo libjson-c libnl-tiny libubox libubus libuci ip6tables iptables hostapd-common iw odhcp6c odhcpd ppp ppp-mod-pppoe iwinfo jshn libjson-script uboot-envtools base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools kmod-gpio-button-hotplug swconfig uboot-envtools kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev wget luci iptables-mod-nat-extra bind-dig dnsmasq-full kmod-leds-gpio wpad-mini kmod-usb-dwc2"
其中,最後三個包是openwrt指明單獨要給hg255d路由器新增的,可以使用make info來檢視

其實就是LED指示燈和USB介面的驅動

在列表中luci就是路由器後臺的web管理介面,luci-ssl指https連線,會因為沒有證書報站點不安全的異常,所以我們不用luci-ssl,用luci。

wget是用於http下載,下載一些ipk包的時候會用的上。

iptables用來做埠轉發,十分必要

dnsmasq換成dnsmasq-full,方便以後用ipset做域名過濾,功能比dnsmasq強大的多。網上有人說要先去掉dnsmasq再安裝如"-dnsmasq dnsmasq-full"但是我也沒詳細測試,因為在我打出的版本中,dnsmasq已經支援ipset了,或許並非是真正的dnsmasq-full,但是對於ipset來說已經夠用了


其餘的包都是系統必備的一些包,多數我也不清楚是做什麼用的。kmod開頭的經常會因為openwrt.org提供的核心版本發生變化,所以為了以後擴充套件方便,儘量把常用的kmod包都打進去

好了執行上面那一坨命令,開始編譯,編譯過程大概分一下幾部:

1、從openwrt.org更新本地依賴包的列表

2、根據更新後的依賴包列表和上面要求編譯的包名,去openwrt.org下載相應的ipk包

3、把指定的ipk包編譯進韌體中

速度視網速而定,一般三四分鐘就可以搞定,多數時間都在下載,編譯其實很快的。

編譯中如果出現哪個包無法編譯,直接把這個包從列表中拿走就行

比如我們在列表中加一個不存在的包“kmod-auth9k”就會報如下錯誤


這時候只要在列表中刪掉它即可

正常編譯的命令如下,注意列表上不要有換行


編譯成功後的終端顯示如下


然後就可以在/bin/ramips中找到編譯好的韌體,如下


然後我們的純淨版韌體就這樣做好了,整個過程比編譯ipk簡單。我編譯出來的純淨版大小為5377KB,已經是比較大了,網上有很多純淨包甚至編譯進ss的包菜3點幾兆。所以說明我們的純淨包並不純淨,比如編譯進了很多kmod和dnsmasq-full這樣的程式。

現在把這個韌體通過web後臺或者tftp的方式刷進路由器看看長啥樣


注意:在點選更新韌體之後不要將路由器斷電,大約要等10分鐘左右,tftp會快一點,可以不停的ping 192.168.1.1,知道能穩定的ping通就算刷完了,可以瀏覽器開啟192.168.1.1,這個韌體因為沒有配置LED指示燈,所以不插lan線所有燈都不亮屬正常現象(包括電源指示燈都不亮)。

刷成功之後只有LAN燈亮,wifi預設關閉

下一步我們就要配置路由器後臺的登入密碼,不然沒法用SSH登入路由器獲取root許可權,推薦使用者名稱root,密碼root

然後我們就可以通過SSH軟體登陸路由器安裝apk了,我使用的是Xshell5


可以看到純淨版沒有安裝ss。

下面我們將ss的ipk安裝包通過winscp上傳到路由器上嘗試安裝,並解決依賴。


先安裝ss,再安裝luci介面


從圖中可以看出,安裝ss非常順利,不需要解決什麼依賴(我在wndr4300上裝需要解決兩個依賴)在安裝luci介面的時候提示安裝ipset依賴,於是我們去openwrt官網下載ipset ipk安裝包


放到路由器上去繼續安裝


然後發現ipset還需要依賴包libmnl,那我們就先安裝libmnl,再安裝ipset,再安裝luci-Shadowsocks,如上圖

luci安裝好之後我們就可以試試能不能用啦


可以看到Shadowsocks-libev已經可以正常運行了


路由器後臺也出現了Shadowsocks的服務按鈕


點進去之後發現已經可以配置了,只是UDP轉發還不能用,提示缺少iptables-mod-tproxy和ip兩個包,那麼我們繼續下載安裝


這其中發現還需要額外安裝一個依賴包kmod-ipt-tproxy

現在應該都能用了


好了,現在路由器已經從純淨版武裝了各種依賴和外掛刷好,可以使用ss服務了,下面整理一下這個過程安裝的各種依賴


我上面編譯的純淨版韌體下載地址:

上面所列的所有ipk包的下載地址:

有了上面兩個包,下載下來就可以複製我上面的操作

如果想實現以後光升級ss和luci介面的ipk就好的目的,我們可以把這次安裝的各種依賴直接打包到韌體中去,下次就不需要去openwrt.org下載這麼多依賴包了,而且,有些依賴包隨著核心更新會無法安裝,為日後升級帶來困難,所以我們要在純淨版韌體的基礎上新增依賴支援

make image PROFILE=HG255D PACKAGES="base-files busybox dropbear firewall fstools jsonfilter libc libgcc mtd netifd opkg procd swconfig ubox ubus ubusd uci usign kmod-lib-crc-ccitt kmod-ipv6 kmod-ip6tables kmod-ipt-conntrack kmod-ipt-core kmod-ipt-nat kmod-nf-conntrack kmod-nf-conntrack6 kmod-nf-ipt kmod-nf-ipt6 kmod-nf-nat kmod-ppp kmod-pppoe kmod-pppox kmod-slhc kmod-gpio-button-hotplug kmod-spi-bitbang kmod-spi-gpio kmod-ath kmod-ath9k-common kmod-cfg80211 kmod-mac80211 libip4tc libip6tc libxtables libblobmsg-json libexpat libiwinfo libjson-c libnl-tiny libubox libubus libuci ip6tables iptables hostapd-common iw odhcp6c odhcpd ppp ppp-mod-pppoe iwinfo jshn libjson-script uboot-envtools base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools kmod-gpio-button-hotplug swconfig uboot-envtools kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev wget luci iptables-mod-nat-extra bind-dig dnsmasq-full kmod-leds-gpio wpad-mini kmod-usb-dwc2 libmnl kmod-ipt-tproxy ipset ip-full iptables-mod-tproxy"

後面幾個以來的名字就是上面我們用到的以來的名字,ImageBuilder會自動的去openwrt.org下載需要的ipk包然後編譯到韌體中去。

下載之後可以直接把用SDK編譯好的ss韌體刷入進去,不需要解決依賴,防止核心版本變化。

有時候我們編譯了韌體並不只給自己用,可以分享給網上的小夥伴,所以我們可以把Shadowsocks-libev和它的luci介面打成一個完成的韌體,交給其他人直接刷到HG255D中,但是openwrt.org上又沒有ss和luci的ipk包,我們怎樣編譯呢。

我們把要編譯的自定義包放到packages/base下,再修改make後面的包名列表,就可以把我們自己編好的ipk包打進去了


然後在make後面的包列表中把上面兩個自編譯包新增進去

make image PROFILE=HG255D PACKAGES="base-files busybox dropbear firewall fstools jsonfilter libc libgcc mtd netifd opkg procd swconfig ubox ubus ubusd uci usign kmod-lib-crc-ccitt kmod-ipv6 kmod-ip6tables kmod-ipt-conntrack kmod-ipt-core kmod-ipt-nat kmod-nf-conntrack kmod-nf-conntrack6 kmod-nf-ipt kmod-nf-ipt6 kmod-nf-nat kmod-ppp kmod-pppoe kmod-pppox kmod-slhc kmod-gpio-button-hotplug kmod-spi-bitbang kmod-spi-gpio kmod-ath kmod-ath9k-common kmod-cfg80211 kmod-mac80211 libip4tc libip6tc libxtables libblobmsg-json libexpat libiwinfo libjson-c libnl-tiny libubox libubus libuci ip6tables iptables hostapd-common iw odhcp6c odhcpd ppp ppp-mod-pppoe iwinfo jshn libjson-script uboot-envtools base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools kmod-gpio-button-hotplug swconfig uboot-envtools kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev wget luci iptables-mod-nat-extra bind-dig dnsmasq-full kmod-leds-gpio wpad-mini kmod-usb-dwc2 libmnl kmod-ipt-tproxy ipset ip-full iptables-mod-tproxy shadowsocks-libev luci-app-shadowsocks"

這個韌體也許對很多人都有用,我就把它放出來供大家下載,下載這個韌體之後只需刷到HG255D中就能使用,不需要登入SSH再設定

==================================================

後記:

在多次編譯測試出一個能用的ss版本之後,使用ss上網沒什麼問題了,但是發現電源指示燈和WAN指示燈不亮,而且第一次啟動路由器的時候wifi不會自動啟動,於是準備著手解決指示燈的問題。

我發現直接在路由器後臺配置LED的配置就可以不改動任何程式碼而修改LED的點亮情況,於是我直接從當前路由器的/etc/config目錄下把system檔案拷貝出來,準備當作配置直接打進韌體裡面,同樣打進去的還有network檔案,這裡面可以修改路由器網絡卡的mac地址,路由器的預設ip地址,子網掩碼等等資訊,都可以直接從配置好的路由器直接拷貝一份打進去,另外還有wireless檔案,打進這個就可以實現路由器首次開機wifi自動開啟,這三個檔案如下。

控制LED燈的system檔案

config system
	option hostname 'OpenWrt'
	option timezone 'UTC'

config timeserver 'ntp'
	list server '0.openwrt.pool.ntp.org'
	list server '1.openwrt.pool.ntp.org'
	list server '2.openwrt.pool.ntp.org'
	list server '3.openwrt.pool.ntp.org'
	option enabled '1'
	option enable_server '0'

config led 'led_wifi_led'
	option name 'wifi'
	option sysfs 'hg255d:wlan'
	option dev 'wlan0'
	option trigger 'netdev'
	option mode 'link tx rx'
	option default '0'

config led 'led_usb'
	option name 'USB'
	option sysfs 'hg255d:usb'
	option dev '1-1'
	option trigger 'usbdev'
	option interval '50'
	option default '0'

config led 'led_lan'
	option name 'lan'
	option sysfs 'hg255d:internet'
	option default '0'
	option trigger 'netdev'
	option dev 'eth0.2'
	option mode 'rx'

config led
	option default '0'
	option name 'Power'
	option sysfs 'hg255d:power'
	option trigger 'default-on'

控制無線自動開啟的wireless檔案
config wifi-device 'radio0'
	option type 'mac80211'
	option channel '11'
	option hwmode '11g'
	option path '10180000.wmac'
	option htmode 'HT20'

config wifi-iface
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'OpenWrt'
	option encryption 'none'
控制網絡卡mac地址和ip地址的network檔案
config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fd97:273f:919a::/48'

config interface 'lan'
	option ifname 'eth0.1'
	option force_link '1'
	option macaddr '00:0c:43:32:52:77'
	option type 'bridge'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config interface 'wan'
	option ifname 'eth0.2'
	option force_link '1'
	option macaddr '00:0c:43:32:52:78'
	option proto 'dhcp'

config interface 'wan6'
	option ifname 'eth0.2'
	option proto 'dhcpv6'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '1 2 3 4 6t'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '0 6t'
在ImageBuilder的目錄下新建一個files資料夾,把這三個檔案放到 files/etc/config下就可以,打包的時候新增引數FILES = files/即可,如圖


編譯命令改為

make image PROFILE=HG255D PACKAGES="base-files busybox dropbear firewall fstools jsonfilter libc libgcc mtd netifd opkg procd swconfig ubox ubus ubusd uci usign kmod-lib-crc-ccitt kmod-ipv6 kmod-ip6tables kmod-ipt-conntrack kmod-ipt-core kmod-ipt-nat kmod-nf-conntrack kmod-nf-conntrack6 kmod-nf-ipt kmod-nf-ipt6 kmod-nf-nat kmod-ppp kmod-pppoe kmod-pppox kmod-slhc kmod-gpio-button-hotplug kmod-spi-bitbang kmod-spi-gpio kmod-ath kmod-ath9k-common kmod-cfg80211 kmod-mac80211 libip4tc libip6tc libxtables libblobmsg-json libexpat libiwinfo libjson-c libnl-tiny libubox libubus libuci ip6tables iptables hostapd-common iw odhcp6c odhcpd ppp ppp-mod-pppoe iwinfo jshn libjson-script uboot-envtools base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools kmod-gpio-button-hotplug swconfig uboot-envtools kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev wget luci iptables-mod-nat-extra bind-dig dnsmasq-full kmod-leds-gpio wpad-mini kmod-usb-dwc2 shadowsocks-libev libmnl kmod-ipt-tproxy ipset ip-full iptables-mod-tproxy luci-app-shadowsocks" FILES=files/

下載我編譯好的內建ss的韌體:

ss版本:2.5.5-2

ss-luci版本:1.3.6-1

注:

1、原版uboot不能刷,會變磚

2、web頁面升級和tftp刷均可,不要使用wifi升級,會變磚

3、ss支援開機自啟(不開啟UDP轉發)

4、支援UDP轉發(不推薦開啟)

4、需要自己配置一個防DNS汙染的地址,否則facebook這樣的網站可能上不了

5、各個LED燈都正常點亮

使用截圖如下



注:即使如上圖使用了OpenDNS,但是在某些地方還是不能阻止DNS汙染,比如我在測試的時候facebook就上不去,但是google,twitter等正常,我只用pdnsd修復的這一問題

開啟DNS轉發示意圖:


附:編譯進韌體的各個元件的作用

base-files:

OpenWrt wiki:This package contains a base filesystem and system scripts for OpenWrt.
翻譯:這個包含了Openwrt的一個基礎的檔案系統和系統指令碼

busybox : 

OpenWrt wiki:OpenWRT uses BusyBox to implement the shell environment and most of the usual Unix commands. Instead of having a collection of separate binaries, BusyBox condenses them into one. Executables like vi, ls and grep are merely symbolic links to the BusyBox binary. BusyBox Command Help

翻譯:OpenWrt使用busybox來實現shell環境和常規的Unix命令。BusyBox把一系列單獨的二進位制可執行檔案合併成了一個,比如vi,ls和grep這些僅僅是一個BusyBox二進位制檔案的象徵性連線


dropbear:

配置檔案: /etc/config/dropbear

翻譯:SSH伺服器配置

firewall : 

配置檔案:/etc/config/firewall 

OpenWrt wiki:OpenWrt relies on netfilter for packet filtering, NAT and mangling. The UCI Firewall provides a configuration interface that abstracts from the iptables system to provide a simplified configuration model that is fit for most regular purposes while enabling the user to supply needed iptables rules on his own when needed.

翻譯:OpenWrt依靠netfilter來實現包過濾,NAT和包標記。UCI防火牆提供了一個從iptbales系統中抽象出的配置介面並實現了一個簡單的配置模型。當用戶需要的時候,該配置模板提供了很多iptables規則來滿足多數的常規應用。

libc:安裝bash需要的依賴庫

libgcc:GCC依賴庫

mtd:

OpenWrt wiki:mtd is a utility we use to write to an MTD (Memory Technology Device). Please read theNotes to learn more. cd /tmp wget http://www.example.org/original_firmware.bin mtd -r write /tmp/original_firmware.bin firmware

翻譯:mtd是一個我們用來寫記憶體裝置的工具

netifd:

OpenWrt wiki:netifd can (probably) bring up a wired, static ip configuration without shell scripts. For everything else (PPPoE or 3G) it needs protocol handlers implemented as sets of shell functions.

翻譯:netifd能夠在適用用shell指令碼的情況下搞一個有線的固定ip配置。對於其他的(PPPoE或3G)他需要通過一系列的shell功能該實現的協議處理機制。

procd:

OpenWrt wiki:procd is the new OpenWrt process management daemon written in C. It keeps track of processes started from init scripts (via ubus calls), and can suppress redundant service start/restart requests when the config/environment has not changed.

翻譯:procd是一個用C寫的新的OpenWrt 程序管理守護程序,它跟蹤從init指令碼中啟動的程序(經過 ubus呼叫),並且能夠在配置和環境沒有改變的時候阻止重複的服務啟動和重啟請求。

swconfig:

OpenWrt wiki:The program swconfig allows you to configure configurableEthernet network switches.

翻譯:wsconfig允許你配置可配置的網路開關


ubus:為了在OpenWrt中提供守護程序和應用程式間的通訊,開發了ubus專案工程。它包含了守護程序、庫以及一些額外的幫助程式。

uci:"uci"是"Unified Configuration Interface"(統一配置介面)的縮寫,意在OpenWrt整個系統的配置集中化。

kmod-ipt-conntrack:

Openwrt wiki: kmod-ipt-conntrack Version: 3.3.8-1 Netfilter (IPv4) kernel modules for connection tracking Includes: - conntrack - defrag - iptables_raw - NOTRACK - state

翻譯:Netfilter的連線跟蹤核心元件

kmod-ppp:

OpenWrt wiki:Kernel modules for PPP support

翻譯:為ppp提供支援的核心模組

iwinfo:

OpenWrt wiki:iwinfo is a CLI frontend to the custom library, which assembles information from various places. It is also used by LuCI

翻譯:iwinfo是一個自定義CLI前端庫,它可以組合來自多個位置的資訊,並且它也被LuCI所使用

jshn:

OpenWrt wiki: Library for parsing and generating JSON from shell scripts

翻譯:從shell指令碼中解析和產生JSON格式的庫

iw:

OpenWrt wiki: iw is the configuration utility for the nl80211API.
翻譯:iw是nl802.11API的一個配置功能

odhcpd:

用來通過relay方式使用ipv6網路的工具

kmod-usb-core:USB支援的核心

kmod-usb-ohci:OHCI USB控制器的核心支援

kmod-usb-uhci:UHCI USB控制器的核心支援

kmod-usb2: EHCI USB控制器的核心支援

kmod-ledtrig-usbdev: USB裝置的LED指示燈驅動

usbutils: USB裝置的列表功能