OpenWrt系统自编译指南

2022-08-28 17:56:13 6点赞 61收藏 4评论
  • 前言

一直有接触openwrt系统,但以前都是直接去恩山论坛找别人编译好的固件,恰逢此次某夕夕打折于是便入手了N5105软路由,去恩山发现没找到自己想要的X86固件,于是便打算自己尝试编译openwrt固件来给软路由使用,在网上各种教程大差不差,但本人编译还是花了好几天,其中也是经历了各种报错,便打算写一遍教程,以便给刚入坑的萌新小白们参考,因本人也是小小白,所以写的不对的地方,希望各位大佬不吝赐教,多多指正

  • 编译环境搭建

因为本人是小白,所以选用了带有图像界面的Ubuntu系统,版本选用了22.04.1-desktop,虚拟机软件选择了VMware WorkstationPro v16.2.4,以下为VMware安装Ubuntu系统过程,熟悉的大佬可以直接跳过此段,首先我们需要打开VMware左上角点击文件选择新建虚拟机,然后选择自定义再下一步

OpenWrt系统自编译指南

硬件兼容性不做更改,直接下一步,然后选择稍后安装操作系统,选择Linux,版本选择Ubuntu x64

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

接着下一步,虚拟机名称随意,继续点击下一步,选择处理器和内核数量,这里按照自己想法选择,我选择了处理器数量4,内核数量2,然后下一步选择虚拟机运行内存,因为我内存较大,所以我直接给了4096MB

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

然后一路默认选项到下一步分配磁盘大小,这里我选择了100GB,储存为单个文件以获得最大性能,继续下一步,来到这个界面

OpenWrt系统自编译指南

我们选择自定义硬件

OpenWrt系统自编译指南

而后点击新CD/DVD选项,选择使用ISO映像文件,选择到下载好的Ubuntu镜像,点击确认,然后点完成

OpenWrt系统自编译指南

OpenWrt系统自编译指南

点击完成后即可开启虚拟机,准备安装Ubuntu系统,开启虚拟机电源后,看到如下界面直接回车

OpenWrt系统自编译指南

然后下滑选择简体中文,选择安装Ubuntu

OpenWrt系统自编译指南

然后继续 选择键盘布局后,下一步选择最小化安装 ,安装类型默认即可 大佬可以自行分区

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

选择完时区后继续 填写用户名和密码等信息 然后继续

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

显示下载文件时可以点击skip跳过 然后等待就会显示安装完毕

OpenWrt系统自编译指南

这时选择关机而不重启 关机后编辑虚拟机设置 把CD/DVD改成自动检测

OpenWrt系统自编译指南

保存后开启虚拟机电源 开机后 输入密码 然后跳过各种提示 接着选择桌面右键 选择显示设置 改成你想要的分辨率

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

我这里改成了2560*1600 缩放200

接着打开软件更新器 把源改成你看得顺眼的源 我选择了阿里云

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

而后点击重新载入即可 有提示语言支持没有完整安装 直接安装即可

OpenWrt系统自编译指南

等待安装完毕后 我们需要安装vmware tools 以达到能在虚拟机和主机之间复制

粘贴等功能

打开终端 输入命令

sudo apt-get update

sudo apt-get install open-vm-tools

输入y 确定安装 而后继续输入

sudo apt-get install open-vm-tools-desktop

安装完毕后 重启下虚拟机

OpenWrt系统自编译指南

OpenWrt系统自编译指南

  • 安装编译依赖

此时即可开始准备部署编译所需环境 可选择编译原版openwrt或者Lean大佬的固件 由于本人只是小白 于是便选择了Lean大佬的源码 插件仓库使用kenzo大佬打包好的 接下来就可以开始部署环境

注意 不要使用root用户 且需要全局科学上网

安装依赖

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

克隆源代码

git clone https://github.com/coolsnowwolf/lede

cd lede

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

git pull

./scripts/feeds update -a

./scripts/feeds install -a

make menuconfig

至此应该进入TUI文本图形界面了 在此界面我们可以做各种功能的选取 生成.config文件 进行编译 建议默认不更改选项编译一次 以下是TUI界面基本操作说明

1 上下方向键选择子项目 左右方向键对应下方Exit Save Load

2 回车键进入选项 空格键可以选择选项 单击空格出现M标志 代表以Mod形式编译 编译完的可执行文件不加入内核 双击空格出现*标志 表示将该文件编译进内核 但是固件包会变大 我这边所需要的 一律选择了* 需要取消的话 按空格到未选中状态即可

3 连按2次ESC返回上级目录

首次编译我只在Target images改了内核文件和系统文件大小

OpenWrt系统自编译指南

接着右键Save保存

  • 预编译

接着输入下方代码下载dl库

Make download -j8

接着输入如下代码开始编译

make V=s -j$(nproc)

然后开始编译固件 我这里选择了调用所有线程编译

如果调用所有线程编译失败的话 请尝试单线程编译 以便查找问题

单线程编译代码为

make V=s -j1

编译成功后会显示如下图

编译好的固件在lede/bin/targets 因为我是x86架构所以显示x86点击进去 再点64 即为编译完成的固件

OpenWrt系统自编译指南

OpenWrt系统自编译指南

到这首次编译成功 接下来可以正式编译我们所需要的固件了

  • 正式编译

首先需要确认自己构建目标 也就是TUI界面的Target System选项 可选择CPU架构

因为我软路由是X86架构 所以我需要编译的是X86架构的固件

然后确定自己的需求 比如是否需要IPV6 还有需要编译的插件

我个人需要魔法 阿里DDNS及广告屏蔽 上网控制 KMS服务器等功能

确认好需求 就可以开始编译所需固件

在lede文件夹 打开终端 接着输入make menuconfig

进入TUI界面选择所需要的功能

在选择玩自己架构及CPU型号后 进入Tatget images选项

选择好自己所需要的格式 若无虚拟机需求 可以去掉VMDK格式

建议选择squashfs 如需后期升级固件 记得勾选GZIP images

因为我需要部署在esxi 所以我勾选了GRUB EFI images

在Kernel partition size设置内核大小这里需要根据你的路由器内存来设置

在Root filesystem partition size 设置系统大小 还是根据你路由器内存来设置

因为我是软路由 所以直接放飞自我 给了256和512

OpenWrt系统自编译指南

然后双击ESC退回上一级 进入Base System 找到dns masq-full

建议把这个选项的所有子选项全部勾选 有些插件会依赖这个组件

然后返回主页面 选择Extra packages 勾选上ipv6 helper 以支持IPV6

同时因为我有NAS 所以取消勾选auto samba选项

回主页 在Network Firewall ip6tables下选择ip6tables-extra和ip6tables-mod-nat选项

在Network勾选odhcp6c和odhcpd-ipv6only

继续回主页 选择LuCI 再选Collections 把Luci选上

返回上页 打开Modules 选择Luci-compat勾选上

返回上页 在Protocols选择luci-proto-ipv6和luci-proto-ppp

返回上页 在Translations选择语言 默认简体中文可不用修改

返回上页 接着在Applications选择自己需要的插件

然后在Kernel modules --- Network Devices中可以选择需要的有线网卡驱动

在Kernel modules --- Wireless Devices中可以选择需要的无线网卡驱动

接下来就可以 Save保存config文件

如果需要修改默认的IP地址和主机名可以找到

lede/package/basefiles/files/bin/config_generate

在大约150行和290行可以看到 直接vi修改即可

如果需要修改版本号 位置则在

lede/package/lean/default-settings/files/zzz-default-settings

有需要可以在 lede/package/base-files/files/etc/banner 可以修改SSH欢迎信息

OpenWrt系统自编译指南

OpenWrt系统自编译指南

OpenWrt系统自编译指南

然后回到终端 输入make V=s -j$(nproc) 等待编译完成

OpenWrt系统自编译指南

而后在bin/targets 找到自己编译好的固件既可以使用

编译好的固件我用虚拟机测试了一下 可用

OpenWrt系统自编译指南

至此 教程结束

  • 总结

感谢Lean Kenzok及来自五湖四海提供丰富插件的作者们

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
4评论

  • 精彩
  • 最新
  • 666 [高兴]

    校验提示文案

    提交
  • 看了就是会了,扔进收藏夹吃灰去吧

    校验提示文案

    提交
  • [棒棒哒] 先保存,以后在学习

    校验提示文案

    提交
  • 收藏、退出,一气呵成

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

橘子味de猫

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
61
扫一下,分享更方便,购买更轻松