[{"data":1,"prerenderedAt":1099},["ShallowReactive",2],{"wiki-page-/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei":3,"wiki-doc-items-/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei":1053,"language-switcher-data-/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei":1083,"wiki-i18n-paths-/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei":1098},{"id":4,"title":5,"body":6,"canonicalPath":1034,"chapter":1035,"chapterSort":1036,"date":1037,"description":30,"docI18nKey":1038,"docKey":1039,"docRoot":1040,"docTitle":1041,"extension":1042,"i18nKey":1043,"isBlogPost":1044,"isWikiDoc":406,"isWikiIndex":1044,"layout":1045,"legacyPath":1045,"locale":1046,"localeSlug":1047,"meta":1048,"navigation":406,"path":1034,"seo":1049,"sourcePath":1050,"sourceStem":1043,"stem":1051,"wikiDepth":38,"__hash__":1052},"content/_i18n/zh-tw/wiki/2021-09-16-OpenWrt编译教学/ch1-编译环境准备.md","編譯環境準備",{"type":7,"value":8,"toc":1030},"minimark",[9,14,18,21,24,68,75,106,111,354,359,423,426,431,434,449,454,478,481,486,515,521,534,537,543,546,551,554,557,568,571,588,591,599,602,610,613,621,634,637,648,651,656,659,664,667,672,687,693,721,724,727,744,750,774,777,811,814,826,831,880,884,887,899,904,907,919,924,927,939,944,947,962,967,970,984,989,992,1006,1011,1014,1026],[10,11,13],"h3",{"id":12},"環境說明本教程以烏班圖2204作為環境","環境說明本教程以烏班圖22.04作為環境",[15,16,17],"p",{},"請確保編譯過程全局魔法",[10,19,20],{"id":20},"基礎編譯過程",[15,22,23],{},"設置環境變量（不知道有沒有用）：",[25,26,31],"pre",{"className":27,"code":28,"language":29,"meta":30,"style":30},"language-bash shiki shiki-themes github-light github-dark","注意使用root编译会报错，可以在/etc/profile 最后添加export FORCE_UNSAFE_CONFIGURE=1,然后执行\nexport FORCE_UNSAFE_CONFIGURE=1\n","bash","",[32,33,34,50],"code",{"__ignoreMap":30},[35,36,39,43,47],"span",{"class":37,"line":38},"line",1,[35,40,42],{"class":41},"sScJk","注意使用root编译会报错，可以在/etc/profile",[35,44,46],{"class":45},"sZZnC"," 最后添加export",[35,48,49],{"class":45}," FORCE_UNSAFE_CONFIGURE=1,然后执行\n",[35,51,53,57,61,64],{"class":37,"line":52},2,[35,54,56],{"class":55},"szBVR","export",[35,58,60],{"class":59},"sVt8B"," FORCE_UNSAFE_CONFIGURE",[35,62,63],{"class":55},"=",[35,65,67],{"class":66},"sj4cs","1\n",[69,70,71],"ol",{},[72,73,74],"li",{},"系統軟件包更新",[25,76,78],{"className":27,"code":77,"language":29,"meta":30,"style":30},"sudo apt-get -y update && sudo apt-get -y upgrade\n",[32,79,80],{"__ignoreMap":30},[35,81,82,85,88,91,94,97,99,101,103],{"class":37,"line":38},[35,83,84],{"class":41},"sudo",[35,86,87],{"class":45}," apt-get",[35,89,90],{"class":66}," -y",[35,92,93],{"class":45}," update",[35,95,96],{"class":59}," && ",[35,98,84],{"class":41},[35,100,87],{"class":45},[35,102,90],{"class":66},[35,104,105],{"class":45}," upgrade\n",[69,107,108],{"start":52},[72,109,110],{},"安裝依賴關係與編譯工具鏈",[25,112,114],{"className":27,"code":113,"language":29,"meta":30,"style":30},"sudo apt install -y ack antlr3 aria2 asciidoc autoconf automake autopoint binutils bison build-essential \\\nbzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \\\ngit gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \\\nlibmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \\\nmkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils \\\nrsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev\n",[32,115,116,161,201,236,265,309],{"__ignoreMap":30},[35,117,118,120,123,126,128,131,134,137,140,143,146,149,152,155,158],{"class":37,"line":38},[35,119,84],{"class":41},[35,121,122],{"class":45}," apt",[35,124,125],{"class":45}," install",[35,127,90],{"class":66},[35,129,130],{"class":45}," ack",[35,132,133],{"class":45}," antlr3",[35,135,136],{"class":45}," aria2",[35,138,139],{"class":45}," asciidoc",[35,141,142],{"class":45}," autoconf",[35,144,145],{"class":45}," automake",[35,147,148],{"class":45}," autopoint",[35,150,151],{"class":45}," binutils",[35,153,154],{"class":45}," bison",[35,156,157],{"class":45}," build-essential",[35,159,160],{"class":66}," \\\n",[35,162,163,166,169,172,175,178,181,184,187,190,193,196,199],{"class":37,"line":52},[35,164,165],{"class":59},"bzip2 ",[35,167,168],{"class":45},"ccache",[35,170,171],{"class":45}," cmake",[35,173,174],{"class":45}," cpio",[35,176,177],{"class":45}," curl",[35,179,180],{"class":45}," device-tree-compiler",[35,182,183],{"class":45}," fastjar",[35,185,186],{"class":45}," flex",[35,188,189],{"class":45}," gawk",[35,191,192],{"class":45}," gettext",[35,194,195],{"class":45}," gcc-multilib",[35,197,198],{"class":45}," g++-multilib",[35,200,160],{"class":66},[35,202,204,207,210,213,216,219,222,225,228,231,234],{"class":37,"line":203},3,[35,205,206],{"class":59},"git ",[35,208,209],{"class":45},"gperf",[35,211,212],{"class":45}," haveged",[35,214,215],{"class":45}," help2man",[35,217,218],{"class":45}," intltool",[35,220,221],{"class":45}," libc6-dev-i386",[35,223,224],{"class":45}," libelf-dev",[35,226,227],{"class":45}," libglib2.0-dev",[35,229,230],{"class":45}," libgmp3-dev",[35,232,233],{"class":45}," libltdl-dev",[35,235,160],{"class":66},[35,237,239,242,245,248,251,254,257,260,263],{"class":37,"line":238},4,[35,240,241],{"class":59},"libmpc-dev ",[35,243,244],{"class":45},"libmpfr-dev",[35,246,247],{"class":45}," libncurses5-dev",[35,249,250],{"class":45}," libncursesw5-dev",[35,252,253],{"class":45}," libreadline-dev",[35,255,256],{"class":45}," libssl-dev",[35,258,259],{"class":45}," libtool",[35,261,262],{"class":45}," lrzsz",[35,264,160],{"class":66},[35,266,268,271,274,277,280,283,286,289,292,295,298,301,304,307],{"class":37,"line":267},5,[35,269,270],{"class":59},"mkisofs ",[35,272,273],{"class":45},"msmtp",[35,275,276],{"class":45}," nano",[35,278,279],{"class":45}," ninja-build",[35,281,282],{"class":45}," p7zip",[35,284,285],{"class":45}," p7zip-full",[35,287,288],{"class":45}," patch",[35,290,291],{"class":45}," pkgconf",[35,293,294],{"class":45}," python2.7",[35,296,297],{"class":45}," python3",[35,299,300],{"class":45}," python3-pip",[35,302,303],{"class":45}," libpython3-dev",[35,305,306],{"class":45}," qemu-utils",[35,308,160],{"class":66},[35,310,312,315,318,321,324,327,330,333,336,339,342,345,348,351],{"class":37,"line":311},6,[35,313,314],{"class":59},"rsync ",[35,316,317],{"class":45},"scons",[35,319,320],{"class":45}," squashfs-tools",[35,322,323],{"class":45}," subversion",[35,325,326],{"class":45}," swig",[35,328,329],{"class":45}," texinfo",[35,331,332],{"class":45}," uglifyjs",[35,334,335],{"class":45}," upx-ucl",[35,337,338],{"class":45}," unzip",[35,340,341],{"class":45}," vim",[35,343,344],{"class":45}," wget",[35,346,347],{"class":45}," xmlto",[35,349,350],{"class":45}," xxd",[35,352,353],{"class":45}," zlib1g-dev\n",[69,355,356],{"start":203},[72,357,358],{},"下載 OpenWrt 源碼",[25,360,362],{"className":27,"code":361,"language":29,"meta":30,"style":30},"git clone https://github.com/openwrt/openwrt.git && cd openwrt \ngit clone https://github.com/coolsnowwolf/lede && cd lede\n\n# 还有个\ngit clone https://github.com/istoreos/istoreos\n",[32,363,364,386,402,408,414],{"__ignoreMap":30},[35,365,366,369,372,375,377,380,383],{"class":37,"line":38},[35,367,368],{"class":41},"git",[35,370,371],{"class":45}," clone",[35,373,374],{"class":45}," https://github.com/openwrt/openwrt.git",[35,376,96],{"class":59},[35,378,379],{"class":66},"cd",[35,381,382],{"class":45}," openwrt",[35,384,385],{"class":59}," \n",[35,387,388,390,392,395,397,399],{"class":37,"line":52},[35,389,368],{"class":41},[35,391,371],{"class":45},[35,393,394],{"class":45}," https://github.com/coolsnowwolf/lede",[35,396,96],{"class":59},[35,398,379],{"class":66},[35,400,401],{"class":45}," lede\n",[35,403,404],{"class":37,"line":203},[35,405,407],{"emptyLinePlaceholder":406},true,"\n",[35,409,410],{"class":37,"line":238},[35,411,413],{"class":412},"sJ8bj","# 还有个\n",[35,415,416,418,420],{"class":37,"line":267},[35,417,368],{"class":41},[35,419,371],{"class":45},[35,421,422],{"class":45}," https://github.com/istoreos/istoreos\n",[15,424,425],{},"（源碼有很多，本教程以官方源碼和LEDE為例）",[69,427,428],{"start":238},[72,429,430],{},"切換適合分支",[15,432,433],{},"openwrt-22.03 已將 iptables 移除，為避免兼容性問題，暫時切換到 openwrt-21.02分支:",[25,435,437],{"className":27,"code":436,"language":29,"meta":30,"style":30},"git checkout openwrt-21.02\n",[32,438,439],{"__ignoreMap":30},[35,440,441,443,446],{"class":37,"line":38},[35,442,368],{"class":41},[35,444,445],{"class":45}," checkout",[35,447,448],{"class":45}," openwrt-21.02\n",[69,450,451],{"start":267},[72,452,453],{},"更新並安裝 feeds 軟件源",[25,455,457],{"className":27,"code":456,"language":29,"meta":30,"style":30},"./scripts/feeds update -a && ./scripts/feeds install -a\n",[32,458,459],{"__ignoreMap":30},[35,460,461,464,466,469,471,473,475],{"class":37,"line":38},[35,462,463],{"class":41},"./scripts/feeds",[35,465,93],{"class":45},[35,467,468],{"class":66}," -a",[35,470,96],{"class":59},[35,472,463],{"class":41},[35,474,125],{"class":45},[35,476,477],{"class":66}," -a\n",[15,479,480],{},"（以下為校園網防檢測部署）",[69,482,483],{"start":311},[72,484,485],{},"加入模塊",[25,487,489],{"className":27,"code":488,"language":29,"meta":30,"style":30},"git clone https://github.com/Zxilly/UA2F.git package/UA2F\ngit clone https://github.com/CHN-beta/rkp-ipid.git package/rkp-ipid \n",[32,490,491,503],{"__ignoreMap":30},[35,492,493,495,497,500],{"class":37,"line":38},[35,494,368],{"class":41},[35,496,371],{"class":45},[35,498,499],{"class":45}," https://github.com/Zxilly/UA2F.git",[35,501,502],{"class":45}," package/UA2F\n",[35,504,505,507,509,512],{"class":37,"line":52},[35,506,368],{"class":41},[35,508,371],{"class":45},[35,510,511],{"class":45}," https://github.com/CHN-beta/rkp-ipid.git",[35,513,514],{"class":45}," package/rkp-ipid\n",[69,516,518],{"start":517},7,[72,519,520],{},"配置編輯",[25,522,524],{"className":27,"code":523,"language":29,"meta":30,"style":30},"make menuconfig\n",[32,525,526],{"__ignoreMap":30},[35,527,528,531],{"class":37,"line":38},[35,529,530],{"class":41},"make",[35,532,533],{"class":45}," menuconfig\n",[15,535,536],{},"配置編譯 rdp-ipid:",[538,539,540],"ul",{},[72,541,542],{},"Kernel modules → Other modules → kmod-rkp-ipid",[15,544,545],{},"配置編譯 ua2f:",[538,547,548],{},[72,549,550],{},"Network → Routing and Redirection → UA2F",[15,552,553],{},"配置編譯 iptables 模塊（Firewall中）",[15,555,556],{},"選中：",[538,558,559,562,565],{},[72,560,561],{},"iptables-mod-filter",[72,563,564],{},"iptables-mod-ipopt",[72,566,567],{},"iptables-mod-u32",[15,569,570],{},"基本界面配置：",[538,572,573,576,579,582,585],{},[72,574,575],{},"LuCI → Collections → luci （lede 默認已選）",[72,577,578],{},"LuCI → Modules → Translations → Chinese Simplified (zh_Hans) （lede 默認已選）",[72,580,581],{},"LuCI → Modules → luci-compat",[72,583,584],{},"LuCI → Applications → luci-app-ttyd（網頁終端）",[72,586,587],{},"LuCI → Themes → xxxxx (根據需要自己選管理界面的主題，如果路由器儲存太小，建議就維持默認的)",[15,589,590],{},"其他配置：",[538,592,593,596],{},[72,594,595],{},"添加EXT4硬盤格式支持：Kernel modules > Filesystem > kmod-fs-ext4",[72,597,598],{},"添加USB支持（如不添加可能會不響應鍵盤）：Kernel modules > USB Support",[15,600,601],{},"網卡驅動配置：",[538,603,604,607],{},[72,605,606],{},"經查找網卡使用的是Intel IG211-AT，走的是PCIE通道，這裡要選用e1000e",[72,608,609],{},"Kernel modules > Network Devices將kmod-e1000e，kmod-igb驅動選中",[15,611,612],{},"無線網卡驅動：",[538,614,615,618],{},[72,616,617],{},"內核中的無線驅動找到RTL8821AE的驅動",[72,619,620],{},"Kernel modules > Wireless Drivers",[622,623,624],"blockquote",{},[15,625,626,627,633],{},"作者：KANSUNG\n鏈接：",[628,629,630],"a",{"href":630,"rel":631},"https://www.jianshu.com/p/5190ab903820",[632],"nofollow","\n來源：簡書",[15,635,636],{},"添加其他工具（可選）：",[538,638,639,642,645],{},[72,640,641],{},"LuCI > Applications -> luci-app-openclash",[72,643,644],{},"LuCI > Applications -> luci-app-adblock",[72,646,647],{},"LuCI > Applications -> luci-app-ddns-go",[15,649,650],{},"添加必要組件：",[538,652,653],{},[72,654,655],{},"Kernel modules -> Network Support -> kmod-tun （openclash TUN模式必須）",[15,657,658],{},"排除衝突組件：",[538,660,661],{},[72,662,663],{},"Base system -> dnsmasq (取消勾選，因為默認會安裝dnsmasq-full，需要排除dnsmasq避免衝突報錯）",[15,665,666],{},"編輯配置文件：",[538,668,669],{},[72,670,671],{},"使用 vim .config，在開頭添加一行（UA2F 插件需要）：",[25,673,675],{"className":27,"code":674,"language":29,"meta":30,"style":30},"CONFIG_NETFILTER_NETLINK_GLUE_CT=y\n",[32,676,677],{"__ignoreMap":30},[35,678,679,682,684],{"class":37,"line":38},[35,680,681],{"class":59},"CONFIG_NETFILTER_NETLINK_GLUE_CT",[35,683,63],{"class":55},[35,685,686],{"class":45},"y\n",[69,688,690],{"start":689},8,[72,691,692],{},"編譯和配置內核",[25,694,696],{"className":27,"code":695,"language":29,"meta":30,"style":30},"make kernel_menuconfig\nmake -j1 V=sc kernel_menuconfig  # 日志更详细\n",[32,697,698,705],{"__ignoreMap":30},[35,699,700,702],{"class":37,"line":38},[35,701,530],{"class":41},[35,703,704],{"class":45}," kernel_menuconfig\n",[35,706,707,709,712,715,718],{"class":37,"line":52},[35,708,530],{"class":41},[35,710,711],{"class":66}," -j1",[35,713,714],{"class":45}," V=sc",[35,716,717],{"class":45}," kernel_menuconfig",[35,719,720],{"class":412},"  # 日志更详细\n",[15,722,723],{},"配置路徑：\nNetworking support →\nNetworking options →\nNetwork packet filtering framework (Netfilter) （要先選中再進去）→\nCore Netfilter Configuration →",[15,725,726],{},"選中以下選項：",[538,728,729,732,735,738,741],{},[72,730,731],{},"Netfilter NFNETLINK interface",[72,733,734],{},"Netfilter LOG over NFNETLINK interface",[72,736,737],{},"Netfilter connection tracking support",[72,739,740],{},"Connection tracking netlink interface",[72,742,743],{},"NFQUEUE and NFLOG integration with Connection Tracking",[69,745,747],{"start":746},9,[72,748,749],{},"編譯\n下載編譯工具：",[25,751,753],{"className":27,"code":752,"language":29,"meta":30,"style":30},"make download -j$(nproc) V=s\n",[32,754,755],{"__ignoreMap":30},[35,756,757,759,762,765,768,771],{"class":37,"line":38},[35,758,530],{"class":41},[35,760,761],{"class":45}," download",[35,763,764],{"class":66}," -j$(",[35,766,767],{"class":41},"nproc",[35,769,770],{"class":66},")",[35,772,773],{"class":45}," V=s\n",[15,775,776],{},"開始編譯：",[25,778,780],{"className":27,"code":779,"language":29,"meta":30,"style":30},"make -j$(nproc) V=s\nmake -j1 V=sc 2> build.log  # 错误输出到日志\n",[32,781,782,794],{"__ignoreMap":30},[35,783,784,786,788,790,792],{"class":37,"line":38},[35,785,530],{"class":41},[35,787,764],{"class":66},[35,789,767],{"class":41},[35,791,770],{"class":66},[35,793,773],{"class":45},[35,795,796,798,800,802,805,808],{"class":37,"line":52},[35,797,530],{"class":41},[35,799,711],{"class":66},[35,801,714],{"class":45},[35,803,804],{"class":55}," 2>",[35,806,807],{"class":45}," build.log",[35,809,810],{"class":412},"  # 错误输出到日志\n",[15,812,813],{},"二次編譯需要更新源碼：",[25,815,817],{"className":27,"code":816,"language":29,"meta":30,"style":30},"git pull\n",[32,818,819],{"__ignoreMap":30},[35,820,821,823],{"class":37,"line":38},[35,822,368],{"class":41},[35,824,825],{"class":45}," pull\n",[827,828,830],"h4",{"id":829},"重新配置如果需要重新配置","重新配置如果需要重新配置：",[25,832,834],{"className":27,"code":833,"language":29,"meta":30,"style":30},"rm -rf ./tmp && rm -rf .config\nmake menuconfig\nmake -j$(($(nproc) + 1)) V=s   # 多线程编译失败后自动进入单线程编译，失败则输出详细日志\n",[32,835,836,856,862],{"__ignoreMap":30},[35,837,838,841,844,847,849,851,853],{"class":37,"line":38},[35,839,840],{"class":41},"rm",[35,842,843],{"class":66}," -rf",[35,845,846],{"class":45}," ./tmp",[35,848,96],{"class":59},[35,850,840],{"class":41},[35,852,843],{"class":66},[35,854,855],{"class":45}," .config\n",[35,857,858,860],{"class":37,"line":52},[35,859,530],{"class":41},[35,861,533],{"class":45},[35,863,864,866,869,871,874,877],{"class":37,"line":203},[35,865,530],{"class":41},[35,867,868],{"class":66}," -j$(($(",[35,870,767],{"class":41},[35,872,873],{"class":66},") + 1))",[35,875,876],{"class":45}," V=s",[35,878,879],{"class":412},"   # 多线程编译失败后自动进入单线程编译，失败则输出详细日志\n",[827,881,883],{"id":882},"編譯更換其它cpu架構的固件建議操作","編譯更換其它CPU架構的固件（建議操作）",[15,885,886],{},"清除舊的編譯產物：",[25,888,890],{"className":27,"code":889,"language":29,"meta":30,"style":30},"make clean\n",[32,891,892],{"__ignoreMap":30},[35,893,894,896],{"class":37,"line":38},[35,895,530],{"class":41},[35,897,898],{"class":45}," clean\n",[622,900,901],{},[15,902,903],{},"在源碼有大規模更新或者內核更新後執行，以保證編譯質量。此操作會刪除/bin和/build_dir目錄中的文件。",[15,905,906],{},"清除舊的編譯產物、交叉編譯工具及工具鏈等目錄：",[25,908,910],{"className":27,"code":909,"language":29,"meta":30,"style":30},"make dirclean\n",[32,911,912],{"__ignoreMap":30},[35,913,914,916],{"class":37,"line":38},[35,915,530],{"class":41},[35,917,918],{"class":45}," dirclean\n",[622,920,921],{},[15,922,923],{},"更換架構編譯前必須執行。此操作會刪除/bin和/build_dir目錄的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件。",[15,925,926],{},"清除 OpenWrt 源碼以外的文件（可選）：",[25,928,930],{"className":27,"code":929,"language":29,"meta":30,"style":30},"make distclean\n",[32,931,932],{"__ignoreMap":30},[35,933,934,936],{"class":37,"line":38},[35,935,530],{"class":41},[35,937,938],{"class":45}," distclean\n",[622,940,941],{},[15,942,943],{},"除非是做開發，並打算 push 到 GitHub 這樣的遠程倉庫，否則幾乎用不到。此操作相當於make dirclean外加刪除/dl、/feeds目錄和.config文件。",[15,945,946],{},"還原 OpenWrt 源碼到初始狀態（可選）：",[25,948,950],{"className":27,"code":949,"language":29,"meta":30,"style":30},"git clean -xdf\n",[32,951,952],{"__ignoreMap":30},[35,953,954,956,959],{"class":37,"line":38},[35,955,368],{"class":41},[35,957,958],{"class":45}," clean",[35,960,961],{"class":66}," -xdf\n",[622,963,964],{},[15,965,966],{},"如果把源碼改壞了，或者長時間沒有進行編譯時使用。",[15,968,969],{},"清除臨時文件：",[25,971,973],{"className":27,"code":972,"language":29,"meta":30,"style":30},"rm -rf tmp\n",[32,974,975],{"__ignoreMap":30},[35,976,977,979,981],{"class":37,"line":38},[35,978,840],{"class":41},[35,980,843],{"class":66},[35,982,983],{"class":45}," tmp\n",[622,985,986],{},[15,987,988],{},"刪除執行make menuconfig後產生的一些臨時文件，包括一些軟件包的檢索信息，刪除後會重新加載package目錄下的軟件包。若不刪除會導致一些新加入的軟件包不顯示。",[15,990,991],{},"刪除編譯配置文件：",[25,993,995],{"className":27,"code":994,"language":29,"meta":30,"style":30},"rm -f .config\n",[32,996,997],{"__ignoreMap":30},[35,998,999,1001,1004],{"class":37,"line":38},[35,1000,840],{"class":41},[35,1002,1003],{"class":66}," -f",[35,1005,855],{"class":45},[622,1007,1008],{},[15,1009,1010],{},"在不刪除的情況下如果取消選擇某些組件它的依賴組件不會自動取消，所以對於需要調整組件的情況下建議刪除。",[15,1012,1013],{},"注意：所有操作不要使用root用戶",[622,1015,1016,1019],{},[15,1017,1018],{},"版權聲明：本文為博主原創文章，遵循 CC 4.0 BY-SA 版權協議，轉載請附上原文出處鏈接和本聲明。",[15,1020,1021,1022],{},"原文鏈接：",[628,1023,1024],{"href":1024,"rel":1025},"https://blog.csdn.net/u010674953/article/details/129280724",[632],[1027,1028,1029],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":30,"searchDepth":52,"depth":52,"links":1031},[1032,1033],{"id":12,"depth":203,"text":13},{"id":20,"depth":203,"text":20},"/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei","1",1000000,"2021-09-16","wiki/2021-09-16-openwrt-bian-yi-jiao-xue","zh-tw:2021-09-16-openwrt-bian-yi-jiao-xue","/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue","OpenWrt编译教学","md","wiki/2021-09-16-OpenWrt编译教学/ch1-编译环境准备",false,null,"zh-TW","zh-tw",{},{"title":5,"description":30},"/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei","_i18n/zh-tw/wiki/2021-09-16-OpenWrt编译教学/ch1-编译环境准备","C49Lb7xJ4XvvlvdDJYTzqRysde7mMKccekk_65jKhKE",[1054,1055,1061,1067,1073,1079],{"path":1034,"stem":1051,"title":5,"date":1037,"chapter":1035,"chapterSort":1036,"docKey":1039,"docRoot":1040,"docTitle":1041,"isWikiDoc":406,"isWikiIndex":1044},{"path":1056,"stem":1057,"title":1058,"date":1037,"chapter":1059,"chapterSort":1060,"docKey":1039,"docRoot":1040,"docTitle":1041,"isWikiDoc":406,"isWikiIndex":1044},"/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch2-ge-xing-hua-pei-zhi","_i18n/zh-tw/wiki/2021-09-16-OpenWrt编译教学/ch2-个性化配置","個性化配置","2",2000000,{"path":1062,"stem":1063,"title":1064,"date":1037,"chapter":1065,"chapterSort":1066,"docKey":1039,"docRoot":1040,"docTitle":1041,"isWikiDoc":406,"isWikiIndex":1044},"/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch3-cha-jian-kai-fa","_i18n/zh-tw/wiki/2021-09-16-OpenWrt编译教学/ch3-插件开发","插件開發","3",3000000,{"path":1068,"stem":1069,"title":1070,"date":1037,"chapter":1071,"chapterSort":1072,"docKey":1039,"docRoot":1040,"docTitle":1041,"isWikiDoc":406,"isWikiIndex":1044},"/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch4-bu-chong-gong-ju","_i18n/zh-tw/wiki/2021-09-16-OpenWrt编译教学/ch4-补充工具","補充工具","4",4000000,{"path":1074,"stem":1075,"title":1076,"date":1037,"chapter":1077,"chapterSort":1078,"docKey":1039,"docRoot":1040,"docTitle":1041,"isWikiDoc":406,"isWikiIndex":1044},"/zh-tw/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch5-qi-ta-can-kao-zi-liao-tian-jia-usb-he-ying-pan-ge-shi-hai-you-wang-ka-jiao-cheng","_i18n/zh-tw/wiki/2021-09-16-OpenWrt编译教学/ch5-其他参考资料添加USB和硬盘格式还有网卡教程：","其他參考資料添加USB和硬盤格式還有網卡教程：","5",5000000,{"path":1040,"stem":1080,"title":1081,"date":1037,"chapter":1045,"chapterSort":1082,"docKey":1039,"docRoot":1040,"docTitle":1041,"isWikiDoc":406,"isWikiIndex":406},"_i18n/zh-tw/wiki/2021-09-16-OpenWrt编译教学/index","OpenWrt編譯教學",0,{"variants":1084},[1085,1088,1091,1094,1095],{"path":1086,"localeSlug":1087,"i18nKey":1043},"/en-us/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei","en-us",{"path":1089,"localeSlug":1090,"i18nKey":1043},"/zh-hant/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei","zh-hant",{"path":1092,"localeSlug":1093,"i18nKey":1043},"/zh-hk/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei","zh-hk",{"path":1034,"localeSlug":1047,"i18nKey":1043},{"path":1096,"localeSlug":1097,"i18nKey":1043},"/zh-cn/wiki/2021-09-16-openwrt-bian-yi-jiao-xue/ch1-bian-yi-huan-jing-zhun-bei","zh-cn",[1086,1050,1089,1050,1092,1050,1034,1050,1096,1050],1780673971830]