OpenWRT编译笔记

这几天有群友问红雨的OpenWRT固件都是哪里来的,怎么才能找到一个能完美使用自己BCM57810网卡的固件,正巧内网主页有篇两年前写的文章,最开始觉得写的挺水的,就没发出来。修改一下发出来给大家参考一下吧。

怎么改都会很水的吧,为什么不去Google一下然后看看仓库Readme啊

1.配置环境

1
2
3
4
5
6
7
8
9
# 安装依赖
sudo apt update -y
sudo apt full-upgrade -y
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-pip libpython3-dev qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

2.下载源码包

1
2
3
# 下载源码包
git clone https://github.com/coolsnowwolf/lede.git
cd lede

3.调整 feeds 源

因为要使用JerryKuKu大佬的Argon主题,以及kenzok98大佬的一些软件包,方便起见直接添加二位大佬的仓库。

1
2
3
4
5
6
# 查看文件feeds.conf.default   
src-git packages https://github.com/coolsnowwolf/packages
src-git luci https://github.com/coolsnowwolf/luci
src-git routing https://github.com/coolsnowwolf/routing
src-git smpackage https://github.com/kenzok78/small-package
src-git jerry https://github.com/jerrykuku/openwrt-package

4.更新 Feeds

1
2
3
# Updating Feeds
./scripts/feeds update -a
./scripts/feeds install -a

如果之前已经执行过这一步骤,建议在update之前先clean一下,以防出现一些奇怪的问题。

5.编译配置

1
2
3
4
5
6
7
8
9
10
11
12
13
# 检查编译依赖
make defconfig

# 编译选项配置界面
make menuconfig # 仔细看界面上面的帮助

# 设置目标编译平台
(Target System)->x86 # x86 应该是最后一个
(Subtarget)->Generic
(Target Profile)->Generic
(Target Images) # 这里面是配置镜像参数的、包括生成的镜像类型、Kernel与Root分区的大小
# 这里选择什么按照需求而定,比如我自己的软路由需要5G wwan支持,就需要按照华为模块的Linux内核集成手册来进行驱动集成,需要使用2.5G光猫猫棒,就需要启用bnx2x的相关支持。总之都是需求而定。用什么选什么,不要贪多编译一堆自己用不上的东西。
# 以前启用BCM57810还要手动patch源码的,不过现在已经合入主线了,就不需要patch了。

6.开始编译

1
2
3
4
5
6
7
8
9
10
11
12
13
# 下载编译所需文件
make download -j8 # 因国内众所周知的网络环境,所以这个过程会很漫长,自己有科技这时候就打开用吧。

# 第一次编译
make -j1 V=s # 完成编译 结束。

# 非第一次
make V=s -j$(nproc)
# 等待编译结束。
# 编译时间视个人情况而定,红雨使用9900ks编译第一次进行了5小时,后续满速编译速度快了很多,只有不到半小时。建议打开ccache进行编译,这样速度会有不小的提升。启用方法是执行make相关命令之前在lede源码根目录下执行,执行一次即可,不需要每次编译之前都执行。
echo -e 'CONFIG_DEVEL=y\nCONFIG_CCACHE=y' >> .config; make defconfig
#或者在make menuconfig时手动开启。
# 编译生成的文件在bin/架构/ 下面 (例如./bin/x86/64)

7.测试

测试自己的编译结果可以在VMWare建立一个配置近似于你软路由的虚拟机,系统选择其他Linux 5.x即可,硬盘大小随便填写,网络模式使用NAT。

建立完成后编辑虚拟机硬件,删除你最开始的磁盘,新建驱动器的时候从你编译出的vhdx文件建立即可。

如果不会如上操作的话。可以直接重命名原来的VHDX文件然后替换掉原来的硬盘文件。

开机后等待屏幕上的日志静止下来之后按任意键呼出shell,执行如下命令:

1
2
3
4
5
6
uci set network.lan.proto=dhcp  # 因为op默认LAN设置是静态IP,如果想在虚拟机启动后用自己的主机访问到的话,就要把静态IP修改为DHCP(自动获取IP)。
uci commit # 提交修改
uci show network # 可以使用这条命令检查自己的修改是否生效
/etc/init.d/network restart # 重启网络模块,应用上面的更改
# 网络模块重新加载之后执行:
ip addr #获取当前IP

然后把获取到的IP输入浏览器即可验证自己的编译结果。

8.写入磁盘

我的软路由使用一个msata硬盘作为启动磁盘。

方案是2246EN双贴 Sandisk 15177 64GB

安装到硬盘直接使用win32diskmanager,PhysicalDiskWrite这类写盘工具写入磁盘即可,此处不做过多说明。

然后就可以使用自己的固件了。

/Create on 2020.1.19/

9.后记

又氵了一篇文章

其实在上面调试配置好自己的config和feeds之后就可以把编译工作交给Github Action了。无人值守,定期检测上游源码更新,编译完成自动上传到Release,简直不要太方便。

食用方法如下,也不做过多说明,大佬的教程基本上已经是傻瓜式的了。

https://p3terx.com/archives/build-openwrt-with-github-actions.html

/Latest Update :2022.08.21/

Author

Sumika1198

Posted on

2022-08-21

Updated on

2024-03-04

Licensed under

CC BY 4.0

Comments

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×