惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
雷峰网
雷峰网
小众软件
小众软件
博客园 - 【当耐特】
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
Engineering at Meta
Engineering at Meta
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans
H
Help Net Security
博客园_首页
P
Proofpoint News Feed
GbyAI
GbyAI
大猫的无限游戏
大猫的无限游戏
N
Netflix TechBlog - Medium
爱范儿
爱范儿
MyScale Blog
MyScale Blog
Blog — PlanetScale
Blog — PlanetScale
The Cloudflare Blog
MongoDB | Blog
MongoDB | Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News

LanYunのBlog

优化macOS Dock栏的显示与隐藏 解决macOS全屏模式下某些情况显示原始鼠标指针的问题 Yarn从Classic迁移到Modern nginx自编译 用santa对二进制进行监控和授权 ESXI 8.0安装黑群晖DSM 7.x 编译monero For macOS ARM 自建busuanzi不蒜子平台统计平台 浅记博客更新日志 (机翻)Kubo配置文件 修改brew services中服务的启动参数 技术杂记📝 解决Surge模块不能同步问题 为Arch Linux配置邮件服务 自编译NutClient-ESXI,更改邮件逻辑 解决ESXI和群晖使用SSH密钥登录问题 为J4125软路由ESXI中群晖提供UPS服务 在arch linux上搭建rustdesk server 解决虚拟机扩容中GPT PMBR大小不符问题 搭建Tuic V5 优雅地为macOS提供python多版本的支持 修复root路径下文件权限问题 解决macOS 14上利用Whisky运行steam时有关问题 在macOS中用PhpStorm配置Xdebug调试 利用CloudFlare Workers快速自建一个IP获取器 如何自动续期证书? 从0开始速配VPS用于网站等 搭建一个基于ChatGPT的QQ机器人(Yunzai-Bot) For Mac 010 Editor For Mac 13.0.1 Crack 破解 关于部署Cloudflare Zero Trust遇到的问题浅记录📝
openwrt编译过程记录
LanYun · 2023-10-28 · via LanYunのBlog

前言

本文编译的为openwrt分支lede,本文主要以记录为主,因为中间有时候报错没弄,断断续续1个月左右搞好.

本文以ubuntu x86作为编译机.

编译成品: https://github.com/LanYunDev/lede_compile

安装依赖

1
2
3
4
5
6
7
sudo apt install -y ack antlr3 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-pyelftools \
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
vim wget xmlto xxd zlib1g-dev python3-setuptools zstd ninja-build meson

添加用户

如果你有非root用户,可跳过创建,后续都需要用非root用户进行操作.

1
2
3
4
5
6
7
8
9
10

adduser openwrt

passwd openwrt

usermod -a -G sudo openwrt

su openwrt

cd ~

编译

1
2
3
4
5
6
7
git clone https://github.com/coolsnowwolf/lede.git
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
make download -j8 || make download || make download V=s
make -j1 || make -j1 V=s

可选:

添加第三方包来源

1
2
3
4
echo >> feeds.conf.default
echo 'src-git istore https://github.com/linkease/istore;main' >> feeds.conf.default
sed -i '$a src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default
sed -i '$a src-git small https://github.com/kenzok8/small' feeds.conf.default

更换golang版本

编译新版Sing-box和hysteria,需golang版本1.20或者以上版本.

若自带的版本过低,可用下面命令换成openwrt官方golang版本

1
2
3
pushd feeds/packages/lang
rm -rf golang && svn co https://github.com/openwrt/packages/branches/openwrt-23.05/lang/golang
popd

删除默认的 argon 主题

记得选.

choose LUCI->Theme->Luci-theme-argon

choose LUCI->Application->Luci-app-argon-config

1
2
3
4
5
6
cd ./package/lean
rm -rf luci-theme-argon
git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git luci-theme-argon
rm -rf luci-app-argon-config
git clone -b 18.06 https://github.com/jerrykuku/luci-app-argon-config.git luci-app-argon-config
cd ../../

修改默认主题为argone

1
sed -i 's/luci-theme-bootstrap/luci-theme-argone/g' feeds/luci/collections/luci/Makefile

添加ddns-go

1
git clone https://github.com/sirpdboy/luci-app-ddns-go.git package/ddns-go

修改用户名

站内文章: OpenWrt 修改登陆用户名

二次编译

1
2
3
4
5
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make -j1 || make -j1 V=s

干净编译

编译出现问题且用make clean依然无法解决的情况.

1
2
3
4
5
6
7
8

git pull
./scripts/feeds update -a
./scripts/feeds install -a
make dirclean;make dirclean V=s
make -j1 clean; make -j1 clean V=s
make download || make download V=s
make -j1 || make -j1 V=s

杂项

如果是ext4镜像,修改某些文件,提示:Read-only file system

用这个命令将根目录解锁即可.

1
mount -o remount,rw /

默认没有安装Git,自带的ssh没有ssh-agent功能,可以通过如下命令配置:

1
2
3
4
5
6
7
opkg update

opkg remove git
opkg install git-http
opkg install ca-bundle

opkg install openssh-client openssh-keygen openssh-sftp-server

安装并信任根 CA 证书 参考

  1. 获取根 CA 证书 (若已有,可跳过,这里演示生成)
1
2
3
openssl s_client -connect ca.private-domain.tld:443 < /dev/null > /tmp/temporary.out
openssl x509 -outform PEM < /tmp/temporary.out > /tmp/ca.private-domain.tld.cert
rm /tmp/temporary.out
  1. 安装 CA 根证书

受信任的证书安装在/etc/ssl/certs,但是遵循FHS 3并用于/usr/local/share与体系结构无关的文件是一个很好的做法.

1
2
3
mkdir -p /usr/local/share/ca-certificates
mv /tmp/ca.private-domain.tld.cert /usr/local/share/ca-certificates/
ln -s /usr/local/share/ca-certificates/ca.private-domain.tld.cert /etc/ssl/certs/ca.private-domain.tld.cert
  1. 将根 CA 证书添加到系统的信任存储中

证书已安装,但尚未被信任.您需要提供证书的哈希值.

1
2
3
4
5
6
7
8

HASH="$(openssl x509 -hash -noout -in /etc/ssl/certs/ca.private-domain.tld.cert).0"


echo "$HASH"


ln -s "/ect/ssl/certs/ca.private-domain.tld.cert" "/etc/ssl/certs/$HASH"

注意: 如果其他证书有相同的哈希值,请使用后缀.1.2,而不是.0.

解决配置文件无法保存问题:

临时:

1
mount -o remount rw /

永久:

1
vim /etc/rc.local

exit 0之前添加命令mount -o remount rw /然后保存,并赋权.

1
chmod +x /etc/rc.local

或者编译解决:

1
2
3
4
make menuconfig 中把 block-mount 去掉

Extra packages ---> automount
Base system ---> block-mount

或者在luci中 系统 -> 挂载点 -> 挂载点 取消根目录 / 挂载点.

编译修改ssh端口:

1
2
vim ./package/network/services/dropbear/files/dropbear.config

修改内核大版本

1
vim ./target/linux/x86/Makefile 

修改KERNEL_TESTING_PATCHVER即可.如果没有则修改KERNEL_PATCHVER

  • WeChat

    WeChat

  • AliPay

    AliPay