Wiki
編譯環境準備
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
1.環境說明本教程以烏班圖22.04作為環境
請確保編譯過程全域性魔法
2.基礎編譯過程
設定環境變數(不知道有沒有用):
注意使用root编译会报错,可以在/etc/profile 最后添加export FORCE_UNSAFE_CONFIGURE=1,然后执行
export FORCE_UNSAFE_CONFIGURE=1
- 系統軟體包更新
sudo apt-get -y update && sudo apt-get -y upgrade
- 安裝依賴關係與編譯工具鏈
sudo apt install -y ack antlr3 aria2 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
- 下載 OpenWrt 原始碼
git clone https://github.com/openwrt/openwrt.git && cd openwrt
git clone https://github.com/coolsnowwolf/lede && cd lede
# 还有个
git clone https://github.com/istoreos/istoreos
(原始碼有很多,本教程以官方原始碼和LEDE為例)
- 切換適合分支
openwrt-22.03 已將 iptables 移除,為避免相容性問題,暫時切換到 openwrt-21.02分支:
git checkout openwrt-21.02
- 更新並安裝 feeds 軟體源
./scripts/feeds update -a && ./scripts/feeds install -a
(以下為校園網防檢測部署)
- 加入模組
git clone https://github.com/Zxilly/UA2F.git package/UA2F
git clone https://github.com/CHN-beta/rkp-ipid.git package/rkp-ipid
- 配置編輯
make menuconfig
配置編譯 rdp-ipid:
- Kernel modules → Other modules → kmod-rkp-ipid
配置編譯 ua2f:
- Network → Routing and Redirection → UA2F
配置編譯 iptables 模組(Firewall中)
選中:
- iptables-mod-filter
- iptables-mod-ipopt
- iptables-mod-u32
基本介面配置:
- LuCI → Collections → luci (lede 預設已選)
- LuCI → Modules → Translations → Chinese Simplified (zh_Hans) (lede 預設已選)
- LuCI → Modules → luci-compat
- LuCI → Applications → luci-app-ttyd(網頁終端)
- LuCI → Themes → xxxxx (根據需要自己選管理介面的主題,如果路由器儲存太小,建議就維持預設的)
其他配置:
- 新增EXT4硬碟格式支援:Kernel modules > Filesystem > kmod-fs-ext4
- 新增USB支援(如不新增可能會不響應鍵盤):Kernel modules > USB Support
網絡卡驅動配置:
- 經查詢網絡卡使用的是Intel IG211-AT,走的是PCIE通道,這裡要選用e1000e
- Kernel modules > Network Devices將kmod-e1000e,kmod-igb驅動選中
無線網絡卡驅動:
- 核心中的無線驅動找到RTL8821AE的驅動
- Kernel modules > Wireless Drivers
作者:KANSUNG 連結:https://www.jianshu.com/p/5190ab903820 來源:簡書
新增其他工具(可選):
- LuCI > Applications -> luci-app-openclash
- LuCI > Applications -> luci-app-adblock
- LuCI > Applications -> luci-app-ddns-go
新增必要元件:
- Kernel modules -> Network Support -> kmod-tun (openclash TUN模式必須)
排除衝突元件:
- Base system -> dnsmasq (取消勾選,因為預設會安裝dnsmasq-full,需要排除dnsmasq避免衝突報錯)
編輯配置檔案:
- 使用 vim .config,在開頭新增一行(UA2F 外掛需要):
CONFIG_NETFILTER_NETLINK_GLUE_CT=y
- 編譯和配置核心
make kernel_menuconfig
make -j1 V=sc kernel_menuconfig # 日志更详细
配置路徑: Networking support → Networking options → Network packet filtering framework (Netfilter) (要先選中再進去)→ Core Netfilter Configuration →
選中以下選項:
- Netfilter NFNETLINK interface
- Netfilter LOG over NFNETLINK interface
- Netfilter connection tracking support
- Connection tracking netlink interface
- NFQUEUE and NFLOG integration with Connection Tracking
- 編譯 下載編譯工具:
make download -j$(nproc) V=s
開始編譯:
make -j$(nproc) V=s
make -j1 V=sc 2> build.log # 错误输出到日志
二次編譯需要更新原始碼:
git pull
2.1.重新配置如果需要重新配置:
rm -rf ./tmp && rm -rf .config
make menuconfig
make -j$(($(nproc) + 1)) V=s # 多线程编译失败后自动进入单线程编译,失败则输出详细日志
2.2.編譯更換其它CPU架構的韌體(建議操作)
清除舊的編譯產物:
make clean
在原始碼有大規模更新或者核心更新後執行,以保證編譯質量。此操作會刪除/bin和/build_dir目錄中的檔案。
清除舊的編譯產物、交叉編譯工具及工具鏈等目錄:
make dirclean
更換架構編譯前必須執行。此操作會刪除/bin和/build_dir目錄的中的檔案(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的檔案。
清除 OpenWrt 原始碼以外的檔案(可選):
make distclean
除非是做開發,並打算 push 到 GitHub 這樣的遠端倉庫,否則幾乎用不到。此操作相當於make dirclean外加刪除/dl、/feeds目錄和.config檔案。
還原 OpenWrt 原始碼到初始狀態(可選):
git clean -xdf
如果把原始碼改壞了,或者長時間沒有進行編譯時使用。
清除臨時檔案:
rm -rf tmp
刪除執行make menuconfig後產生的一些臨時檔案,包括一些軟體包的檢索資訊,刪除後會重新載入package目錄下的軟體包。若不刪除會導致一些新加入的軟體包不顯示。
刪除編譯配置檔案:
rm -f .config
在不刪除的情況下如果取消選擇某些元件它的依賴元件不會自動取消,所以對於需要調整元件的情況下建議刪除。
注意:所有操作不要使用root使用者
版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。
原文連結:https://blog.csdn.net/u010674953/article/details/129280724