如题所述
ï¼!ææ«ï¼éå 人çå¦æåçç¼è¯OPENWRTçTXTå
容ï¼å¯ç´æ¥è·³è³æ«å°¾ï¼æä¾åï¼
ãOpenwrt å®æ¹æ£å¼çåè¡çæ¯å·²ç¼è¯å¥½äºçæ åæ件ï¼åç¼åbinætrxãtrx2ï¼ï¼æ¤æ åæ件å¯ä»Openwrtå®æ¹ç½ç«çä¸è½½é¡µé¢ä¸è½»æ¾è·åå°ï¼è¿æ¥å°å为 OpenWrtå®æ¹ç½ç«ãè¿äºç¼è¯å¥½çæ åæ件æ¯åºäºé»è®¤çé 置设置ï¼ä¸åªé对åæ¯æçå¹³å°æ设å¤çãå æ¤ï¼ä¸ºä»ä¹è¦æé ä¸ä¸ªèªå·±çæ åæ件ï¼çç±æ以ä¸åç¹ï¼
æ¨æ³æ¥æä¸ä¸ªä¸ªæ§åçé ç½®OpenWrtï¼å½°æ¾ä¸ªæ§ï¼å¨æåååéæ¾ææ¾æï¼å¼ä¸ªç©ç¬ï¼ï¼
æ¨æ³å¨å®éªæ§çå¹³å°ä¸æµè¯OpenWrtï¼
æ¨åä¸æµè¯æåä¸å¼åOpenWrtçå·¥ä½ï¼
æè ï¼æç®åçç®çå°±æ¯ä¸ºäºä¿æèªå·±çOpenwrt为ææ°çæ¬ï¼
ãè¥æ³å®ç°ä¸è¿°ç®çï¼å ¶å®å¾ç®åï¼æä¸è¿°æåå³å¯æåç¼è¯åºä¸ä¸ªæ¨çOpenwrtæ¥ã
åå¤å·¥ä½
å¨å¼å§ç¼è¯Openwrtä¹åéè¦æ¨åäºåå¤å·¥ä½ï¼ä¸å ¶ä»ç¼è¯è¿ç¨ä¸æ ·ï¼ç±»ä¼¼çç¼è¯å·¥å ·åç¼è¯ç¯å¢æ¯å¿ ä¸å¯å°çï¼
ä¸ä¸ªæ建OpenWrtæ åçç³»ç»å¹³å°ï¼ç®å说就æ¯åå¤ä¸ä¸ªæä½ç³»ç»ï¼æ¯å¦UbuntuãDebiançï¼ï¼
ç¡®ä¿å®è£ äºæéçä¾èµå ³ç³»åºï¼ ï¼å¨debianç³»ç»ä¸å°±æ¯å®è£ åç§éè¦ç软件å ï¼
OpenWrtæºä»£ç å¯æ¬
é¦å ï¼ å¼æºç»éå°æ¯æç¼è¯Openwrtçæä½ç³»ç»ï¼åºè¯äºï¼ãå®ä½æºæè èææº(Vmware æè Qemu)éçæä½ç³»ç»é½è¡ï¼è¿éæ¨è使ç¨Linuxç³»ç»ã bsdåmac osxç³»ç»ä¹å¯ä»¥ç¼ï¼ä½ä¸æ¨èï¼ä¸æªéªè¯æ¯å¦å¯ç¼è¯æåãä¸æåå®æ¨ä½¿ç¨çæ¯Debianæä½ç³»ç»ï¼ä½¿ç¨ apt-get æ¥ç®¡çå . æ¿ä»£çéæ©æ¯ Ubuntu (åæ¯ Kubuntu, Xubuntu çå³å¯)ã
第äºæ¥, å°±æ¯å®è£ æéè¦çåç§è½¯ä»¶å , å æ¬ç¼è¯å¨,解åå·¥å ·,ç¹å®çåºç. è¿äºå·¥ä½å¯ä»¥ç®åçéè¿é®å ¥ä»¥ä¸å½ä»¤ (é常éè¦root æè æ¯ sudo æé)ï¼ä»¥rootæéå®è£ ä¸å软件å (å¯è½å¹¶ä¸å®æ´ï¼ä¼ææ示ï¼æ示缺å°å³è£ å°±å¯ä»¥äºï¼:
32ä½(x86)请æ§è¡ä¸åå½ä»¤:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev
64ä½(x86_64)请æ§è¡ä¸åå½ä»¤ï¼å¤è£ äºåªäºåºæ软件å å¢ï¼è¯·æ¨ä»ç»çä¸çå¦ï¼:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs \
lib32gcc1 libc6-dev-i386
åè æ¬åè¡¨ä¸ æåçç¼è¯ç¯å¢æéè¦è½¯ä»¶å æåºã
æäºä¾èµç为åºæ软件å ä¹è®¸æä½ç³»ç»ä¸å·²ç»å®è£ è¿ï¼æ¤æ¶apt-getä¼ä½åºæ示ï¼æ示æ¨å¿½ç¥æéæ°å®è£ çï¼ï¼å«ç´§å¼ ï¼æ¾è½»æ¾äºï¼ç¼è¯Openwrtä¸ä¼åç¼è¯DDï¼WRTé£æ ·é¾çï¼è³å°æ¬äººæ¯ä½ä¼å°äºç¼è¯DDï¼WRTçé¾ï¼ã
æåä¸è½½ä¸ä»½å®æ´ç Openwrt æºç å°ç¼è¯ç¯å¢ä¸ãå ³äºOpenwrtçæºä»£ç ä¸è½½ï¼éå¾æäºï¼ä¸æ¯éè¿ svn ï¼ä¸æ¯éè¿ gitï¼å»ºè®®ä½¿ç¨ svn ï¼å 为Openwrt主è¦ä»¥ svn æ¥ç»´æ¤Openwrtç³»ç»ççæ¬ãå¦å¤ï¼è¯·æ³¨æOpenwrtä¸ä¸åçåæ¯çæ¬ï¼ä¸ä¸ªæ¯ç¨å¾è¾å¤çå¼åå¿«ç §ï¼ä¿ç§° trunkï¼äºæ¯ç¨³å®çï¼ä¿ç§° backfireã
å®è£ Subversion
è¥ä½ æ³éè¿svnä¸è½½æºä»£ç ,ä½ éå®è£ SubversionãSubversion,æ称SVN, æ¯OpenWrtçprojectä¸ç¨æ¥æ§å¶çæ¬çç³»ç»,å®é常类似ç CVSççé¢å使ç¨æ¡æ¬¾ã æ§è¡ä¸è¿°å½ä»¤å³å¯å®è£ SVNï¼å¾å®¹æçï¼
# apt-get install subversion
Subversionå®è£ å®æ¯ï¼éè¿SVNå½ä»¤å¯è·åå¾å°ä¸ä»½OpenWrt纯åæºä»£ç ãæ¨è¿å¾å建ä¸ä¸ªç®å½ä»¥ä¾¿åæ¾è·åå¾å°çOpenwrtæºä»£ç ï¼è¦è·åæºä»£ç ä½ è¿å¾è¾å ¥subversionå½ä»¤æ¥è·å (svnéè¿ç§æä½ç§°ä¹ä¸º'check out') ãå½ä»¤å¾ç®åçï¼ç»§ç»çä¸å»å°±è½è§å°äºï¼å«çæ¥ï¼èå¿ç¹å¿ã
ç¼è¯æµç¨
ç¼è¯ä¸å±äºæ¨ç设å¤çç¹å®Openwrtåºä»¶ä»¥ä¸ä¸äºä¸ªæ¥éª¤ï¼
éè¿Subversionå½ä»¤è·å¾æºä»£ç ï¼
æ´æ°(æå®è£ ) package feedsï¼»package feedsæ æ³ç¡®åç¿»è¯ï¼å¾ è¯å§ï¼ï¼
å建ä¸ä¸ªé»è®¤é 置以æ£æ¥ç¼è¯ç¯å¢æ¯å¦æå»ºå¥½äº (åå¦éè¦çè¯)ï¼
ç¨Menuconfigæ¥é ç½®å³å°ç¼è¯çæçåºä»¶æ åæ件çé 置项ï¼
æåå¼å§ç¼è¯åºä»¶ï¼
ä¸è½½æºä»£ç
æåï¼ä¸è½½ä¸ä»½å®æ´çOpenWrtæºä»£ç ãä½ å¯éæ©ï¼
ä¸è½½ç¨³å®åè¡çï¼æ
ä¸è½½å¼åç (ä¿ç§°"trunk"ç)ã
使ç¨åè¡ççæºç
æªæ¢æ¬ææ¶, Openwrtå ¬å¼åè¡ç稳å®ç为 OpenWrt 10.03 "backfire"ãæ¤çæ¬æ¯æ稳å®çï¼ä½ä¹è®¸ä¸å æ¬ææ°æ´æ°çè¡¥ä¸æææ°ç¼åçåºçæ°åè½ã
ä¸è¿°ä»£ç å³ä¸¾ä¾è¯´æäºéè¿svnä»brandkfireè·å¾backfireæºä»£ç ï¼æ¤çæ¬æææ¯ä»trunkåæ¯çè¡¥ä¸ä¹å¨backfireçæ¬ä¸äºï¼å³å å«ä¿®å¤è¡¥ä¸ï¼ï¼
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/branches/backfire
注解: ä¸è¿°svnå½ä»¤å°å¨å½åç®å½å建ä¸ä¸ª OpenWrt/backfire/ åç®å½ï¼æ¤ç®å½å å«æ¤å½ä»¤è·åå°çæºä»£ç ã
æ¨ä¹å¯ä»¥éè¿ä¸è¿°å½ä»¤ï¼ä¸è½½ä¸å«ä¿®å¤è¡¥ä¸çbackfireçåçæºç ï¼
# svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03
使ç¨å¼åçæºä»£ç
å½åçå¼åçæ¬åæ¯(trunk)å·²å å«ææ°çå®éªè¡¥ä¸ãæ¤åæ¯æ许è¿çªç ´äºOpenwrtåæ¥æä¸æ¯æç硬件设å¤çéå¶å¦ï¼æåçåæ¶ä¹æé£é©åå¨ãå æ¤ï¼ç¼è¯trunkçï¼æ ä¹ï½
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/trunk/
æ´å¤è¯¦ç»èµæ详è§ï¼ https://dev.openwrt.org/wiki/GetSource.
è·è¿å¹¶æ´æ°æºä»£ç
å Openwrtçæºä»£ç éæ¶é½ä¼åå¨ï¼æ æ¤å½ä»¤å°ç¡®ä¿æ¨æè·åå¾å°çæºç çææ°æ§ãä¸è¿°å设æ¨ç¨çæ¯backfireçæ¬çæºç ï¼
## Here, backfire is the directory name of the current release branch you're tracking
# cd OpenWrt/backfire/
# svn up
'svn up' å½ä»¤ç¨äºæ´æ°SVNä¸æ´æ°äºï¼ä½æ¬å°å°æªæ´æ°çè¿é¨åæºä»£ç ï¼æ¬äººå®è·µè¯ææ¤å½ä»¤ä¼å°æ¬å°æºç ä¸SVNä¸çæºç å æ¯è¾ï¼è¥SVNææ´æ°æä¼ä¸è½½æ´æ°çé¨åï¼å¾å®ç¨çä¸ä¸ªå½ä»¤ï¼ãå¦ææªæå®ç®æ è·¯å¾ï¼åæ¤å½ä»¤å°æ´æ°å½åç®å½åå½åç®å½çåç®å½å çæºç ã
Feedsä¸è½½
Feedså³ä¸ºå å«å°ä½ çOpenWrtç¯å¢ä¸çé¢å¤è½¯ä»¶å çç´¢å¼ä¹ç±»çãï¼feedè¯åå¾å¤ï¼è«è¡·ä¸æ¯ï¼è³2008å¹´åºä¸ºæ¢ï¼è¿æ²¡æä¸ä¸ªååéç¨èå¤å认å¯çä¸æè¯åï¼æ以æ¤æå½ä¸æ们ç¨è±æfeedæ¥ç§°å¼ï¼ã æ主è¦çFeedsæ以ä¸ä¸ä¸ªï¼
'packages' - è·¯ç±çåºæ¬åè½,
'LuCI' - OpenWrté»è®¤çGUIï¼WEB管ççé¢ï¼, å
'Xwrt' - å ¶ä»çGUIã
ä¸è¬æ åµï¼ä½ è³å°éè¦å« 'packages' å 'LuCI'两个Feedsã
ä¸è½½å®feedsä¹åï¼ (为ç¼è¯OpenWrtçrecipiesé¢å¤çé¢å®ä¹å ) æ¨å¯ä»¥æ£æ¥åªäºfeedsè¦å æ¬å¨å ãç¼è¾å¨ä½ çç¼è¯ç¯å¢çæ ¹ç®å½ä¸ç'feeds.conf.default'æ件ã
ç¶å使ç¨ä¸åå½ä»¤å¼å§ä¸è½½ï¼æ³¨ï¼å¯è½ä½ éè¦å è¿è¡cd trunkè¿å ¥trunkç®å½æè½æåæ§è¡ä¸åå½ä»¤ï¼ï¼
# ./scripts/feeds update -a
å¨æ¤ä¹åï¼ä¸è½½ç软件å éè¦å®è£ ã亦å³æçä¸è¾¹çå½ä»¤å¦ãè¥è·¯è¿ä¸è¾¹çinstallå½ä»¤ååç»make menuconfigå°æ æ³æåæ§è¡ï¼ï¼æ³¨ï¼å¯è½ä½ éè¦å è¿è¡cd trunkè¿å ¥trunkç®å½æè½æåæ§è¡ä¸åå½ä»¤ï¼ï¼
# ./scripts/feeds install -a
åªéç¼è¾Feedsçé ç½®æ件æè¿è¡æ´æ°å½ä»¤ï¼å³å¯å¾æ¹ä¾¿å°æ´æ°ææ·»å æ°çå®éªæ§çpackageså°æºç ä¸å¹¶ç¼è¯å°OpenWrtåºä»¶å»ã
注æï¼è¯·èåååæ§çæ°é»ç»æå们注æäºï¼è¿ä¸æ¥å代äºå建符å·é¾æ¥symlinksçèåæ³å¦ã
æ´æ°Feeds
诸å¦æ¤ç±»æºç ,ä½ å¾å®ææ´æ°Feedsã éè¿å¦ä¸ç¸åçå½ä»¤:
# ./scripts/feeds update -a
# ./scripts/feeds install -a
注æ:è¥ä½ æ¸ æ¥å°ç¥éä½ ä¸éæ·»å æ°çpackageså°menuconfigä¸å»ï¼é£ä¹ä½ å¯å¨æ´æ°Feedsæ¶è·³è¿è¿ä¸æ¥ã
çæé ç½®
You may not have to make configration always after updating sources and feeds, but making it ensures that all packages from source and feeds are correctly included in your build configuration.
Defconfig
ä¸ä¸æ¥æ¯æ£æ¥ç¼è¯ç¯å¢ï¼è¥å¯è¿è¡ç¼è¯åçæé»è®¤é ç½®ï¼
# make defconfig
è¥defconfigåæ¾æ示缺å°è½¯ä»¶å æç¼è¯åºçä¾èµï¼åææ示å®è£ æ缺软件å æåºçå³å¯ï¼ä¸é¾çï¼ç»å¿ç¹å°±è¡ã
Menuconfig
menuconfigæ¯ä¸ä¸ªåºäºææ¬çå·¥å ·ï¼å®å¤çéæ©çç®æ ï¼éè¦è¿æ¯ä¸éè¦ï¼ãç¼è¯çæ软件å ï¼openwrtä¸æ¯IPKGæ ¼å¼ï¼ä»¥åå æ ¸é项ï¼ç¼è¯æ模åè¿æ¯å æ ¸ï¼çç
# make menuconfig
å¨ä½ 离å¼å¹¶ä¿åé ç½®æ件ï¼é»è®¤é½æ¯.configï¼åï¼å°èªå¨é ç½®ä¾èµå ³ç³»ï¼è®©ä½ å¯ä»¥çæç¼è¯æ´æ°çåºä»¶ã
大ä¼å¯éè¿'menuconfig'è¿ä¸ç®åçå¾å½¢åçé ç½®ç¯å¢ï¼é常轻æ¾å°ç¼è¯åºä¸å±æ¨æ¬äººçOpenWrtåºä»¶ã
å¯ä»¥ç¨'menuconfig'ï¼ä»¥å¼åçæå¾æ¥ç¼è¯OpenWrtçåºä»¶ï¼ä¸ºèªå·±ï¼ä¸ªäººï¼åé ä¸ä¸ªç»æç®åä½æ¯åè½å¼ºå¤§çç¯å¢ãï¼ä¸å¥å®å¨é¾ç¿»è¯ï¼åªè½æè¯ã并ä¸ä¹è¯·å¤§å®¶é½å¦ä¹ ä¸ç¼è¯OPåºä»¶ï¼è®©ä»¥OPåºä»¶çå©ç人丢æé£è®èçé¥ç¢ï¼ï¼
Menuconfigæå¤æå°æäºé¾ä»¥è¯´æçå°æ¹ï¼å³ä½¿æ¯æä¸ä¸çé ç½®ï¼ä¹å¯ä»¥å¯»æ±å¸®å©å¹¶å 以解å³ã éè¦ä½ æå®ä½ç§ç®æ å¹³å°ï¼è¦å å«çpackage软件å åå æ ¸æ¨¡åçåéè¦ä½ æå®ï¼é ç½®æ åçè¿ç¨ä¸ä¼å æ¬ä¿®æ¹ï¼
ç®æ å¹³å°ï¼å³è·¯ç±å¨ä½ç§æ¶æï¼BCMå¢è¿æ¯ARåå¯éæ©ï¼
éæ©è¦å å«çpackage软件å
æ建系ç»è®¾ç½®
å æ ¸æ¨¡å
Target system is selected from the extensive list of supported platforms, with the numerous target profiles â ranging from specific devices to generic profiles, all depending on the particular device at hand. Package selection has the option of either 'selecting all package', which might be un-practical in certain situation, or relying on the default set of packages will be adequate or make an individual selection. It is here needed to mention that some package combinations might break the build process, so it can take some experimentation before the expected result is reached. Added to this, the OpenWrt developers are themselves only maintaining a smaller set of packages â which includes all default packages â but, the feeds-script makes it very simple to handle a locally maintained set of packages and integrate them in the build-process.
åå¦ä½ éè¦LuCI, è¦å°Administration èåé,å¨LuCIç»ä»¶çåèåä¸, 并éæ©: luci-admin-core, luci-admin-full, and luci-admin-miniç»ä»¶å ã
åå¦ä½ ä¸éè¦PPP,ä½ å¯å°Networkèåä¸åæ¶å¯¹å®çéæ©ï¼ä»¥ä¾¿ç¼è¯æ¶ä¸å å«æ¤ç»ä»¶ã
Menuconfigç¨æ³: ç¡®ä¿è¿äºç»ä»¶å æ¯ä»¥ '*'æå·æ è®°èä¸æ¯ 'M'æ è®°ã
å¦æä½ æ¯ä»¥æå· '*'æ 记该ç»ä»¶å , å该ç»ä»¶å å°ç¼è¯è¿æç»çæçOpenWrtåºä»¶ä¸ã
å¦æä½ ä» ä»¥ 'M'æ 记该ç»ä»¶å , å该ç»ä»¶å å°ä¸ä¼ç¼è¯è¿æç»çæçOpenWrtåºä»¶ä¸ã
The final step before the process of compiling the intended image(s) is to exit 'menuconfig' â this also includes the option to save a specific configuration or load an already existing, and pre-configured, version.
Exit and save.
Source Mirrors
The 'Build system settings' include some efficient options for changing package locations which makes it easy to handle a local package set:
Local mirror for source packages
Download folder
In the case of the first option, you simply enter a full URL to the web or ftp server on which the package sources are hosted. Download folder would in the same way be the path to a local folder on the build system (or network). If you have a web/ftp-server hosting the tarballs, the OpenWrt build system will try this one before trying to download from the location(s) mentioned in the Makefiles . Similar if a local 'download folder', residing on the build system, has been specified. The 'Kernel modules' option is required if you need specific (non-standard) drivers and so forth â this would typically be things like modules for USB or particular network interface drivers etc.
ç¼è¯åºä»¶
ä¸äºå ·å¤ï¼åªæ¬ ä¸é£,éè¿ä¸é¢ç®åçmakeå½ä»¤æ¥ç¼è¯:
# make
å¨å¤æ ¸çµèä¸ç¼è¯
å ·æå¤æ ¸CPUå¤çå¨ççµèè¿è¡ç¼è¯ï¼ä½¿ç¨ä¸è¿°åæ°å¯ä»¤ç¼è¯è¿ç¨å éã 常è§ç¨æ³ä¸º <æ¨cpuå¤çå¨çæ°ç® + 1> â ä¾å¦ä½¿ç¨3è¿ç¨æ¥ç¼è¯ (å³åæ ¸CPU), å½ä»¤ååæ°å¦ä¸:
# make -j 3
åå°ç¼è¯
è¥ä½ å¨è¿ä¸ªç³»ç»å ç¼è¯OpenWrtçåæ¶è¿å¤çå ¶ä»ï¼å¯ä»¥è®©é²ç½®çI/OåCPUæ¥å¨åå°ç¼è¯åºä»¶ (åæ ¸CPU):
# ionice -c 3 nice -n 20 make -j 2
ç¼è¯ç®åçåºæ¬ç软件å
å½ä½ 为OpenWrtå¼åææå 软件å ,ç¼è¯ç®åçåºæ¬ç软件å å¯ä»¥å¾è½»æå°ç¼è¯è¯¥è½¯ä»¶å (ä¾å¦ï¼ 软件å cups):
# make package/cups/compile V=99
ä¸ä¸ªå¨Feedséç软件å 大约æ¯è¿æ ·åç:
# make package/feeds/packages/ndyndns/compile V=99
ç¼è¯é误
å¦æå æç§ä¸ç¥éçåå èç¼è¯å¤±è´¥,ä¸é¢æç§ç®åçæ¹æ³æ¥å¾ç¥ç¼è¯å°åºéå¨åªéäº:
# make V=99 2>&1 |tee build.log |grep -i error
ä¸è¿°ç¼è¯å½ä»¤æ为ï¼V99åæ°ï¼å°åºéä¿¡æ¯ä¿åå¨build.logï¼çæè¾åºå®æ´è¯¦ç»çå¯æ¬ï¼with stdout piped to stderrï¼ï¼åªæå¨å±å¹ä¸æ¾ç¤ºçé误ã
举ä¾è¯´æ:
# ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 \
|tee build.log |egrep -i '(warn|error)'
The above saves a full verbose copy of the build output (with stdout piped to stderr) in build.log and outputs only warnings and errors while building using only background resources on a dual core CPU.
ãOpenwrt å®æ¹æ£å¼çåè¡çæ¯å·²ç¼è¯å¥½äºçæ åæ件ï¼åç¼åbinætrxãtrx2ï¼ï¼æ¤æ åæ件å¯ä»Openwrtå®æ¹ç½ç«çä¸è½½é¡µé¢ä¸è½»æ¾è·åå°ï¼è¿æ¥å°å为 OpenWrtå®æ¹ç½ç«ãè¿äºç¼è¯å¥½çæ åæ件æ¯åºäºé»è®¤çé 置设置ï¼ä¸åªé对åæ¯æçå¹³å°æ设å¤çãå æ¤ï¼ä¸ºä»ä¹è¦æé ä¸ä¸ªèªå·±çæ åæ件ï¼çç±æ以ä¸åç¹ï¼
æ¨æ³æ¥æä¸ä¸ªä¸ªæ§åçé ç½®OpenWrtï¼å½°æ¾ä¸ªæ§ï¼å¨æåååéæ¾ææ¾æï¼å¼ä¸ªç©ç¬ï¼ï¼
æ¨æ³å¨å®éªæ§çå¹³å°ä¸æµè¯OpenWrtï¼
æ¨åä¸æµè¯æåä¸å¼åOpenWrtçå·¥ä½ï¼
æè ï¼æç®åçç®çå°±æ¯ä¸ºäºä¿æèªå·±çOpenwrt为ææ°çæ¬ï¼
ãè¥æ³å®ç°ä¸è¿°ç®çï¼å ¶å®å¾ç®åï¼æä¸è¿°æåå³å¯æåç¼è¯åºä¸ä¸ªæ¨çOpenwrtæ¥ã
åå¤å·¥ä½
å¨å¼å§ç¼è¯Openwrtä¹åéè¦æ¨åäºåå¤å·¥ä½ï¼ä¸å ¶ä»ç¼è¯è¿ç¨ä¸æ ·ï¼ç±»ä¼¼çç¼è¯å·¥å ·åç¼è¯ç¯å¢æ¯å¿ ä¸å¯å°çï¼
ä¸ä¸ªæ建OpenWrtæ åçç³»ç»å¹³å°ï¼ç®å说就æ¯åå¤ä¸ä¸ªæä½ç³»ç»ï¼æ¯å¦UbuntuãDebiançï¼ï¼
ç¡®ä¿å®è£ äºæéçä¾èµå ³ç³»åºï¼ ï¼å¨debianç³»ç»ä¸å°±æ¯å®è£ åç§éè¦ç软件å ï¼
OpenWrtæºä»£ç å¯æ¬
é¦å ï¼ å¼æºç»éå°æ¯æç¼è¯Openwrtçæä½ç³»ç»ï¼åºè¯äºï¼ãå®ä½æºæè èææº(Vmware æè Qemu)éçæä½ç³»ç»é½è¡ï¼è¿éæ¨è使ç¨Linuxç³»ç»ã bsdåmac osxç³»ç»ä¹å¯ä»¥ç¼ï¼ä½ä¸æ¨èï¼ä¸æªéªè¯æ¯å¦å¯ç¼è¯æåãä¸æåå®æ¨ä½¿ç¨çæ¯Debianæä½ç³»ç»ï¼ä½¿ç¨ apt-get æ¥ç®¡çå . æ¿ä»£çéæ©æ¯ Ubuntu (åæ¯ Kubuntu, Xubuntu çå³å¯)ã
第äºæ¥, å°±æ¯å®è£ æéè¦çåç§è½¯ä»¶å , å æ¬ç¼è¯å¨,解åå·¥å ·,ç¹å®çåºç. è¿äºå·¥ä½å¯ä»¥ç®åçéè¿é®å ¥ä»¥ä¸å½ä»¤ (é常éè¦root æè æ¯ sudo æé)ï¼ä»¥rootæéå®è£ ä¸å软件å (å¯è½å¹¶ä¸å®æ´ï¼ä¼ææ示ï¼æ示缺å°å³è£ å°±å¯ä»¥äºï¼:
32ä½(x86)请æ§è¡ä¸åå½ä»¤:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev
64ä½(x86_64)请æ§è¡ä¸åå½ä»¤ï¼å¤è£ äºåªäºåºæ软件å å¢ï¼è¯·æ¨ä»ç»çä¸çå¦ï¼:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs \
lib32gcc1 libc6-dev-i386
åè æ¬åè¡¨ä¸ æåçç¼è¯ç¯å¢æéè¦è½¯ä»¶å æåºã
æäºä¾èµç为åºæ软件å ä¹è®¸æä½ç³»ç»ä¸å·²ç»å®è£ è¿ï¼æ¤æ¶apt-getä¼ä½åºæ示ï¼æ示æ¨å¿½ç¥æéæ°å®è£ çï¼ï¼å«ç´§å¼ ï¼æ¾è½»æ¾äºï¼ç¼è¯Openwrtä¸ä¼åç¼è¯DDï¼WRTé£æ ·é¾çï¼è³å°æ¬äººæ¯ä½ä¼å°äºç¼è¯DDï¼WRTçé¾ï¼ã
æåä¸è½½ä¸ä»½å®æ´ç Openwrt æºç å°ç¼è¯ç¯å¢ä¸ãå ³äºOpenwrtçæºä»£ç ä¸è½½ï¼éå¾æäºï¼ä¸æ¯éè¿ svn ï¼ä¸æ¯éè¿ gitï¼å»ºè®®ä½¿ç¨ svn ï¼å 为Openwrt主è¦ä»¥ svn æ¥ç»´æ¤Openwrtç³»ç»ççæ¬ãå¦å¤ï¼è¯·æ³¨æOpenwrtä¸ä¸åçåæ¯çæ¬ï¼ä¸ä¸ªæ¯ç¨å¾è¾å¤çå¼åå¿«ç §ï¼ä¿ç§° trunkï¼äºæ¯ç¨³å®çï¼ä¿ç§° backfireã
å®è£ Subversion
è¥ä½ æ³éè¿svnä¸è½½æºä»£ç ,ä½ éå®è£ SubversionãSubversion,æ称SVN, æ¯OpenWrtçprojectä¸ç¨æ¥æ§å¶çæ¬çç³»ç»,å®é常类似ç CVSççé¢å使ç¨æ¡æ¬¾ã æ§è¡ä¸è¿°å½ä»¤å³å¯å®è£ SVNï¼å¾å®¹æçï¼
# apt-get install subversion
Subversionå®è£ å®æ¯ï¼éè¿SVNå½ä»¤å¯è·åå¾å°ä¸ä»½OpenWrt纯åæºä»£ç ãæ¨è¿å¾å建ä¸ä¸ªç®å½ä»¥ä¾¿åæ¾è·åå¾å°çOpenwrtæºä»£ç ï¼è¦è·åæºä»£ç ä½ è¿å¾è¾å ¥subversionå½ä»¤æ¥è·å (svnéè¿ç§æä½ç§°ä¹ä¸º'check out') ãå½ä»¤å¾ç®åçï¼ç»§ç»çä¸å»å°±è½è§å°äºï¼å«çæ¥ï¼èå¿ç¹å¿ã
ç¼è¯æµç¨
ç¼è¯ä¸å±äºæ¨ç设å¤çç¹å®Openwrtåºä»¶ä»¥ä¸ä¸äºä¸ªæ¥éª¤ï¼
éè¿Subversionå½ä»¤è·å¾æºä»£ç ï¼
æ´æ°(æå®è£ ) package feedsï¼»package feedsæ æ³ç¡®åç¿»è¯ï¼å¾ è¯å§ï¼ï¼
å建ä¸ä¸ªé»è®¤é 置以æ£æ¥ç¼è¯ç¯å¢æ¯å¦æå»ºå¥½äº (åå¦éè¦çè¯)ï¼
ç¨Menuconfigæ¥é ç½®å³å°ç¼è¯çæçåºä»¶æ åæ件çé 置项ï¼
æåå¼å§ç¼è¯åºä»¶ï¼
ä¸è½½æºä»£ç
æåï¼ä¸è½½ä¸ä»½å®æ´çOpenWrtæºä»£ç ãä½ å¯éæ©ï¼
ä¸è½½ç¨³å®åè¡çï¼æ
ä¸è½½å¼åç (ä¿ç§°"trunk"ç)ã
使ç¨åè¡ççæºç
æªæ¢æ¬ææ¶, Openwrtå ¬å¼åè¡ç稳å®ç为 OpenWrt 10.03 "backfire"ãæ¤çæ¬æ¯æ稳å®çï¼ä½ä¹è®¸ä¸å æ¬ææ°æ´æ°çè¡¥ä¸æææ°ç¼åçåºçæ°åè½ã
ä¸è¿°ä»£ç å³ä¸¾ä¾è¯´æäºéè¿svnä»brandkfireè·å¾backfireæºä»£ç ï¼æ¤çæ¬æææ¯ä»trunkåæ¯çè¡¥ä¸ä¹å¨backfireçæ¬ä¸äºï¼å³å å«ä¿®å¤è¡¥ä¸ï¼ï¼
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/branches/backfire
注解: ä¸è¿°svnå½ä»¤å°å¨å½åç®å½å建ä¸ä¸ª OpenWrt/backfire/ åç®å½ï¼æ¤ç®å½å å«æ¤å½ä»¤è·åå°çæºä»£ç ã
æ¨ä¹å¯ä»¥éè¿ä¸è¿°å½ä»¤ï¼ä¸è½½ä¸å«ä¿®å¤è¡¥ä¸çbackfireçåçæºç ï¼
# svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03
使ç¨å¼åçæºä»£ç
å½åçå¼åçæ¬åæ¯(trunk)å·²å å«ææ°çå®éªè¡¥ä¸ãæ¤åæ¯æ许è¿çªç ´äºOpenwrtåæ¥æä¸æ¯æç硬件设å¤çéå¶å¦ï¼æåçåæ¶ä¹æé£é©åå¨ãå æ¤ï¼ç¼è¯trunkçï¼æ ä¹ï½
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/trunk/
æ´å¤è¯¦ç»èµæ详è§ï¼ https://dev.openwrt.org/wiki/GetSource.
è·è¿å¹¶æ´æ°æºä»£ç
å Openwrtçæºä»£ç éæ¶é½ä¼åå¨ï¼æ æ¤å½ä»¤å°ç¡®ä¿æ¨æè·åå¾å°çæºç çææ°æ§ãä¸è¿°å设æ¨ç¨çæ¯backfireçæ¬çæºç ï¼
## Here, backfire is the directory name of the current release branch you're tracking
# cd OpenWrt/backfire/
# svn up
'svn up' å½ä»¤ç¨äºæ´æ°SVNä¸æ´æ°äºï¼ä½æ¬å°å°æªæ´æ°çè¿é¨åæºä»£ç ï¼æ¬äººå®è·µè¯ææ¤å½ä»¤ä¼å°æ¬å°æºç ä¸SVNä¸çæºç å æ¯è¾ï¼è¥SVNææ´æ°æä¼ä¸è½½æ´æ°çé¨åï¼å¾å®ç¨çä¸ä¸ªå½ä»¤ï¼ãå¦ææªæå®ç®æ è·¯å¾ï¼åæ¤å½ä»¤å°æ´æ°å½åç®å½åå½åç®å½çåç®å½å çæºç ã
Feedsä¸è½½
Feedså³ä¸ºå å«å°ä½ çOpenWrtç¯å¢ä¸çé¢å¤è½¯ä»¶å çç´¢å¼ä¹ç±»çãï¼feedè¯åå¾å¤ï¼è«è¡·ä¸æ¯ï¼è³2008å¹´åºä¸ºæ¢ï¼è¿æ²¡æä¸ä¸ªååéç¨èå¤å认å¯çä¸æè¯åï¼æ以æ¤æå½ä¸æ们ç¨è±æfeedæ¥ç§°å¼ï¼ã æ主è¦çFeedsæ以ä¸ä¸ä¸ªï¼
'packages' - è·¯ç±çåºæ¬åè½,
'LuCI' - OpenWrté»è®¤çGUIï¼WEB管ççé¢ï¼, å
'Xwrt' - å ¶ä»çGUIã
ä¸è¬æ åµï¼ä½ è³å°éè¦å« 'packages' å 'LuCI'两个Feedsã
ä¸è½½å®feedsä¹åï¼ (为ç¼è¯OpenWrtçrecipiesé¢å¤çé¢å®ä¹å ) æ¨å¯ä»¥æ£æ¥åªäºfeedsè¦å æ¬å¨å ãç¼è¾å¨ä½ çç¼è¯ç¯å¢çæ ¹ç®å½ä¸ç'feeds.conf.default'æ件ã
ç¶å使ç¨ä¸åå½ä»¤å¼å§ä¸è½½ï¼æ³¨ï¼å¯è½ä½ éè¦å è¿è¡cd trunkè¿å ¥trunkç®å½æè½æåæ§è¡ä¸åå½ä»¤ï¼ï¼
# ./scripts/feeds update -a
å¨æ¤ä¹åï¼ä¸è½½ç软件å éè¦å®è£ ã亦å³æçä¸è¾¹çå½ä»¤å¦ãè¥è·¯è¿ä¸è¾¹çinstallå½ä»¤ååç»make menuconfigå°æ æ³æåæ§è¡ï¼ï¼æ³¨ï¼å¯è½ä½ éè¦å è¿è¡cd trunkè¿å ¥trunkç®å½æè½æåæ§è¡ä¸åå½ä»¤ï¼ï¼
# ./scripts/feeds install -a
åªéç¼è¾Feedsçé ç½®æ件æè¿è¡æ´æ°å½ä»¤ï¼å³å¯å¾æ¹ä¾¿å°æ´æ°ææ·»å æ°çå®éªæ§çpackageså°æºç ä¸å¹¶ç¼è¯å°OpenWrtåºä»¶å»ã
注æï¼è¯·èåååæ§çæ°é»ç»æå们注æäºï¼è¿ä¸æ¥å代äºå建符å·é¾æ¥symlinksçèåæ³å¦ã
æ´æ°Feeds
诸å¦æ¤ç±»æºç ,ä½ å¾å®ææ´æ°Feedsã éè¿å¦ä¸ç¸åçå½ä»¤:
# ./scripts/feeds update -a
# ./scripts/feeds install -a
注æ:è¥ä½ æ¸ æ¥å°ç¥éä½ ä¸éæ·»å æ°çpackageså°menuconfigä¸å»ï¼é£ä¹ä½ å¯å¨æ´æ°Feedsæ¶è·³è¿è¿ä¸æ¥ã
çæé ç½®
You may not have to make configration always after updating sources and feeds, but making it ensures that all packages from source and feeds are correctly included in your build configuration.
Defconfig
ä¸ä¸æ¥æ¯æ£æ¥ç¼è¯ç¯å¢ï¼è¥å¯è¿è¡ç¼è¯åçæé»è®¤é ç½®ï¼
# make defconfig
è¥defconfigåæ¾æ示缺å°è½¯ä»¶å æç¼è¯åºçä¾èµï¼åææ示å®è£ æ缺软件å æåºçå³å¯ï¼ä¸é¾çï¼ç»å¿ç¹å°±è¡ã
Menuconfig
menuconfigæ¯ä¸ä¸ªåºäºææ¬çå·¥å ·ï¼å®å¤çéæ©çç®æ ï¼éè¦è¿æ¯ä¸éè¦ï¼ãç¼è¯çæ软件å ï¼openwrtä¸æ¯IPKGæ ¼å¼ï¼ä»¥åå æ ¸é项ï¼ç¼è¯æ模åè¿æ¯å æ ¸ï¼çç
# make menuconfig
å¨ä½ 离å¼å¹¶ä¿åé ç½®æ件ï¼é»è®¤é½æ¯.configï¼åï¼å°èªå¨é ç½®ä¾èµå ³ç³»ï¼è®©ä½ å¯ä»¥çæç¼è¯æ´æ°çåºä»¶ã
大ä¼å¯éè¿'menuconfig'è¿ä¸ç®åçå¾å½¢åçé ç½®ç¯å¢ï¼é常轻æ¾å°ç¼è¯åºä¸å±æ¨æ¬äººçOpenWrtåºä»¶ã
å¯ä»¥ç¨'menuconfig'ï¼ä»¥å¼åçæå¾æ¥ç¼è¯OpenWrtçåºä»¶ï¼ä¸ºèªå·±ï¼ä¸ªäººï¼åé ä¸ä¸ªç»æç®åä½æ¯åè½å¼ºå¤§çç¯å¢ãï¼ä¸å¥å®å¨é¾ç¿»è¯ï¼åªè½æè¯ã并ä¸ä¹è¯·å¤§å®¶é½å¦ä¹ ä¸ç¼è¯OPåºä»¶ï¼è®©ä»¥OPåºä»¶çå©ç人丢æé£è®èçé¥ç¢ï¼ï¼
Menuconfigæå¤æå°æäºé¾ä»¥è¯´æçå°æ¹ï¼å³ä½¿æ¯æä¸ä¸çé ç½®ï¼ä¹å¯ä»¥å¯»æ±å¸®å©å¹¶å 以解å³ã éè¦ä½ æå®ä½ç§ç®æ å¹³å°ï¼è¦å å«çpackage软件å åå æ ¸æ¨¡åçåéè¦ä½ æå®ï¼é ç½®æ åçè¿ç¨ä¸ä¼å æ¬ä¿®æ¹ï¼
ç®æ å¹³å°ï¼å³è·¯ç±å¨ä½ç§æ¶æï¼BCMå¢è¿æ¯ARåå¯éæ©ï¼
éæ©è¦å å«çpackage软件å
æ建系ç»è®¾ç½®
å æ ¸æ¨¡å
Target system is selected from the extensive list of supported platforms, with the numerous target profiles â ranging from specific devices to generic profiles, all depending on the particular device at hand. Package selection has the option of either 'selecting all package', which might be un-practical in certain situation, or relying on the default set of packages will be adequate or make an individual selection. It is here needed to mention that some package combinations might break the build process, so it can take some experimentation before the expected result is reached. Added to this, the OpenWrt developers are themselves only maintaining a smaller set of packages â which includes all default packages â but, the feeds-script makes it very simple to handle a locally maintained set of packages and integrate them in the build-process.
åå¦ä½ éè¦LuCI, è¦å°Administration èåé,å¨LuCIç»ä»¶çåèåä¸, 并éæ©: luci-admin-core, luci-admin-full, and luci-admin-miniç»ä»¶å ã
åå¦ä½ ä¸éè¦PPP,ä½ å¯å°Networkèåä¸åæ¶å¯¹å®çéæ©ï¼ä»¥ä¾¿ç¼è¯æ¶ä¸å å«æ¤ç»ä»¶ã
Menuconfigç¨æ³: ç¡®ä¿è¿äºç»ä»¶å æ¯ä»¥ '*'æå·æ è®°èä¸æ¯ 'M'æ è®°ã
å¦æä½ æ¯ä»¥æå· '*'æ 记该ç»ä»¶å , å该ç»ä»¶å å°ç¼è¯è¿æç»çæçOpenWrtåºä»¶ä¸ã
å¦æä½ ä» ä»¥ 'M'æ 记该ç»ä»¶å , å该ç»ä»¶å å°ä¸ä¼ç¼è¯è¿æç»çæçOpenWrtåºä»¶ä¸ã
The final step before the process of compiling the intended image(s) is to exit 'menuconfig' â this also includes the option to save a specific configuration or load an already existing, and pre-configured, version.
Exit and save.
Source Mirrors
The 'Build system settings' include some efficient options for changing package locations which makes it easy to handle a local package set:
Local mirror for source packages
Download folder
In the case of the first option, you simply enter a full URL to the web or ftp server on which the package sources are hosted. Download folder would in the same way be the path to a local folder on the build system (or network). If you have a web/ftp-server hosting the tarballs, the OpenWrt build system will try this one before trying to download from the location(s) mentioned in the Makefiles . Similar if a local 'download folder', residing on the build system, has been specified. The 'Kernel modules' option is required if you need specific (non-standard) drivers and so forth â this would typically be things like modules for USB or particular network interface drivers etc.
ç¼è¯åºä»¶
ä¸äºå ·å¤ï¼åªæ¬ ä¸é£,éè¿ä¸é¢ç®åçmakeå½ä»¤æ¥ç¼è¯:
# make
å¨å¤æ ¸çµèä¸ç¼è¯
å ·æå¤æ ¸CPUå¤çå¨ççµèè¿è¡ç¼è¯ï¼ä½¿ç¨ä¸è¿°åæ°å¯ä»¤ç¼è¯è¿ç¨å éã 常è§ç¨æ³ä¸º <æ¨cpuå¤çå¨çæ°ç® + 1> â ä¾å¦ä½¿ç¨3è¿ç¨æ¥ç¼è¯ (å³åæ ¸CPU), å½ä»¤ååæ°å¦ä¸:
# make -j 3
åå°ç¼è¯
è¥ä½ å¨è¿ä¸ªç³»ç»å ç¼è¯OpenWrtçåæ¶è¿å¤çå ¶ä»ï¼å¯ä»¥è®©é²ç½®çI/OåCPUæ¥å¨åå°ç¼è¯åºä»¶ (åæ ¸CPU):
# ionice -c 3 nice -n 20 make -j 2
ç¼è¯ç®åçåºæ¬ç软件å
å½ä½ 为OpenWrtå¼åææå 软件å ,ç¼è¯ç®åçåºæ¬ç软件å å¯ä»¥å¾è½»æå°ç¼è¯è¯¥è½¯ä»¶å (ä¾å¦ï¼ 软件å cups):
# make package/cups/compile V=99
ä¸ä¸ªå¨Feedséç软件å 大约æ¯è¿æ ·åç:
# make package/feeds/packages/ndyndns/compile V=99
ç¼è¯é误
å¦æå æç§ä¸ç¥éçåå èç¼è¯å¤±è´¥,ä¸é¢æç§ç®åçæ¹æ³æ¥å¾ç¥ç¼è¯å°åºéå¨åªéäº:
# make V=99 2>&1 |tee build.log |grep -i error
ä¸è¿°ç¼è¯å½ä»¤æ为ï¼V99åæ°ï¼å°åºéä¿¡æ¯ä¿åå¨build.logï¼çæè¾åºå®æ´è¯¦ç»çå¯æ¬ï¼with stdout piped to stderrï¼ï¼åªæå¨å±å¹ä¸æ¾ç¤ºçé误ã
举ä¾è¯´æ:
# ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 \
|tee build.log |egrep -i '(warn|error)'
The above saves a full verbose copy of the build output (with stdout piped to stderr) in build.log and outputs only warnings and errors while building using only background resources on a dual core CPU.
温馨提示:答案为网友推荐,仅供参考
第1个回答 2017-04-08
openwrt的话,你可以下载对AA,BB,CC,trunk四个版本。每个版本对应的SVN/git地址是不一样的。OpenWrt.pro上详细的介绍。