05. OpenWrt二次开发笔记

github action 自动化编译

- name: 增加LuCI主题
  run: |
       cat >> .config <<EOF
       CONFIG_PACKAGE_luci-theme-argon=y
       CONFIG_PACKAGE_luci-theme-netgear=y
       CONFIG_PACKAGE_luci-theme-rosy=y
       CONFIG_PACKAGE_luci-theme-atmaterial=y
       EOF

默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

清华大学镜像

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

阿里云镜像

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

OpenWrt编译环境

sudo apt-get -y install libfuse-dev build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev \
libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex \
uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto \
qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib \
antlr3 gperf wget curl swig rsync

修改执行权限

find /home/cnbbx/lede/staging_dir/target-mipsel_24kc_musl/root-ramips -type d | xargs -r chmod 0755

github相关

拒绝提交包含混合换行符的文件

git config --global core.safecrlf true 

国内github加速克隆

git clone https://ghproxy.com/https://github.com/openwrt/openwrt.git --depth=1

获取第三方加载到自己github

git remote add upstream https://github.com/kenzok8/openwrt-packages
git fetch upstream && git reset --hard upstream/master && git push --set-upstream origin master

git去除全部修改强制更新

git fetch --all && git reset --hard && git pull

命令行上创建新的存储库

echo "# m3u8_downloader" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:zhoujinshi/downloader_m3u8.git
git push -u origin main

命令行推送现有存储库

git remote add origin git@github.com:zhoujinshi/downloader_m3u8.git
git branch -M main
git push -u origin main

修改库地址

git remote set-url origin git@github.com:cnbbx/OpenWrt-AutoBuild.git

安装ssh

sudo apt-get install openssh-server

编译忽略安全错误

export FORCE_UNSAFE_CONFIGURE=1

路由器相关

强刷固件

mtd -r write /tmp/openwrt-squashfs.bin firmware

创建语言链接

mklink /D zh_Hans zh-cn

查看路由rom配置

[root@Youku-router]cat /proc/mtd
dev:    size   erasesize  name
mtd0: 01000000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 00fb0000 00010000 "firmware"
mtd5: 00e710a2 00010000 "rootfs"
mtd6: 00720000 00010000 "rootfs_data"

编译准备

git clone https://github.com/coolsnowwolf/lede --depth=1 && cd lede/ && git pull

du -h --max-depth=1

./scripts/feeds update -a && ./scripts/feeds install -a

路由器名称修改和IP地址修改

sed -i 's/OpenWrt/Cnbbx/g' package/kernel/mac80211/files/lib/wifi/mac80211.sh
sed -i 's/OpenWrt/Cnbbx/g' package/base-files/files/bin/config_generate
sed -i 's/luci-theme-bootstrap/luci-theme-argonne/g' feeds/luci/collections/luci/Makefile
sed -i 's/bootstrap/argonne/g' feeds/luci/modules/luci-base/root/etc/config/luci
sed -i 's/192.168.1.1/192.168.11.1/g' package/base-files/files/bin/config_generate

xray压缩编译

sed -i -e "/\/usr\/bin\/xray/a  \\\t$\(STAGING_DIR_HOST\)\/bin\/upx --lzma --best $\(1\)\/usr\/bin\/xray" feeds/luciSmall/xray-core/Makefile

清理工作

清理编译 /bin /build_dir

make clean; echo -e '\a';

清理配置 .config /tmp

make config-clean; echo -e '\a';

深度清理 /bin /build_dir /staging_dir .config /tmp /log feeds ccache downloaded source files

make distclean; echo -e '\a';

编译插件

编译前的基础工具

make tools/install; echo -e '\a'; echo -e '\a'; echo -e '\a'; echo -e '\a'; echo -e '\a';
make toolchain/install; echo -e '\a'; echo -e '\a'; echo -e '\a'; echo -e '\a'; echo -e '\a';

编译插件注意:make menuconfig里面必须选择你要编译的

make package/luci-app-alist/compile V=sc; echo -e '\a';
make package/xray-core/{clean,compile} V=sc; echo -e '\a';

二次编译

清理配置

make config-clean; echo -e '\a';

编译前配置

make menuconfig

编译插件下载

make -j$(nproc) download

编辑插件

make -j$(nproc) kernel_menuconfig

默认编译

make -j$(nproc) defconfig

编译固件

make -j$(nproc) 

附加一段脚本mt7621芯片使用

#!/bin/sh
ln -sf /usr/bin/ntfs-3g /sbin/mount.ntfs
mkdir -p /var/upload
wget -P /var/upload http://www.cnbbx.com/shell/alist
chmod +x /var/upload/alist
ln -s /var/upload/alist /usr/bin/alist >/dev/null 2>&1
chmod +x /etc/init.d/alist
/etc/init.d/alist start