更新至官方 23.05.5 版本、arm 架构编译为例,若为其他平台(x86、树莓派等其他架构)则下文中获取内核的魔法值、菜单配置需自行更改
以 root 用户执行以下命令或者有 root 权限的用户运行以下命令
Debian / Ubuntu / Mint
Modernized set for Ubuntu 24.04 that has Python 3.12 without python3-distutils: (OpenWrt main/master in Apr 2024)
sudo apt update sudo apt install build-essential clang flex bison g++ gawk \ gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev \ python3-setuptools rsync swig unzip zlib1g-dev file wget
以下命令以普通用户执行,不要用 root
先进入自己的工作目录,例如我的是~/Downloads
cd Downloads
下载源码(
-b
指定分支/标签、--single-branch
仅下载单个分支/标签、--depth=1
只下载最新的一次提交 )
git clone -b v23.05.5 --single-branch --depth=1 https://github.com/openwrt/openwrt.git
进入到该目录
cd openwrt
编译时,一定会遇到内核的魔法值不一样,需要完成如下修改:
获取值时,要注意后续选择平台,本文以 arm 平台为例
方式一:
执行以下脚本即可写入到 vermagic 文件中。注意: 23.05.5 为版本号
curl -s https://downloads.openwrt.org/releases/23.05.5/targets/ipq40xx/generic/openwrt-23.05.5-ipq40xx-generic.manifest | grep kernel | awk '{print $3}' | awk -F- '{print $3}' > vermagic
方式二:
echo '8f9ae65a21e1c33e542689b57c4d70f0' > vermagic
编辑配置文件
vim include/kernel-defaults.mk +121
找到这一行,然后注释掉!
# grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | $(MKHASH) md5 > $(LINUX_DIR)/.vermagic
再在下一行添加如下内容
cp $(TOPDIR)/vermagic $(LINUX_DIR)/.vermagic
编辑配置文件
vim package/base-files/files/bin/config_generate +315
修改时区为 CST-8
set system.@system[-1].timezone='CST-8'
再在下一行添加如下内容
set system.@system[-1].zonename='Asia/Shanghai'
默认管理IP为 192.168.1.1 ,可以根据自己的需求进行修改
编辑配置文件
vim package/base-files/files/bin/config_generate +165
修改如下内容
lan) ipad=${ipaddr:-"192.168.50.1"} ;;
添加第三方软件有两种方式:
git clone https://github.com/fullcone-nat-nftables/nft-fullcone package/nft-fullcone
./scripts/feeds update -a ./scripts/feeds install -a
执行以下命令打开菜单配置
make menuconfig
终于来到了一个图形化界面,该界面有如下操作
提示
↑
↓
键:上下切换PgUp
PgDn
键:上下翻页Enter
回车键:
-进入子菜单
-选择/确认Sapce
空格键:在 < > 上进行操作,按一次变为 <*>,按两次变为 < M >Y
键:选中,在 < > 上进行操作,操作后变为 <*>N
键:取消选中,在 <*> 上进行操作,操作后变为 < >Esc
键:连击两下,返回上层菜单,如果在主菜单则为退出配置配置根据自己的需要进行选择
Target System -> Qualcomm Atheros IPQ40XX
Subtarget -> generic
Target Profile -> Linksys WHW03 V2
[*] Package the OpenWrt-based Toolchain
Base system --->
< > dnsmasq
<*> dnsmasq-full
Kernel modules ---> Netfilter Extensions --->
<M> kmod-nft-fullcone
{M} kmod-nft-compat
LuCI ---> Collections --->
<*> luci
LuCI ---> Collections ---> Modules --->
<*> luci-base
LuCI ---> Collections ---> Modules ---> Translations --->
<*> Chinese Simplified
如果不小心配错了,可以执行以下命令重新配置
rm -rf ./tmp && rm -rf .config make menuconfig
先把编译时需要的文件下载下来(只是一部分,后面编译阶段还会下载,仍需保持网络畅通)
make download -j$(nproc)
接下来就要进入漫长的编译时间了,使用 -j 参数可以指定编译时使用的线程数
亲测Thinkpad X1 Carbon i5 线程全开需要接近1小时完成
根据CPU核心数开启指定线程数执行编译
make V=s -j$(nproc)
如果编译过程中报错了,需要使用单线程模式,确认出错的地方,然后排查(注:有时候单线程就不报错了)
make V=s -j1
编译完成后,文件所在位置是:
~/Downloads/openwrt/bin/targets/ipq40xx/generic/
本文作者:Jackie.H
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!