找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 3736|回复: 5

[openwrt(x86)] 开个帖子,讲一下怎么编译 openwrt

[复制链接]
发表于 2024-7-27 14:56 | 显示全部楼层 |阅读模式
各位基友好,最近一个多周,一直在自己编译自己的ImmortalWrt,作为小白,一瓶半不满半瓶晃悠的那种,我还是想拿出来分享一下,途中遇到了很多问题,最后各种折腾之后,还是搞成了,给大家分享一下我的方法。
勿喷,有问题的话,大家可以指出来一下


按照ImmortalWrt在GitHub 仓库 的介绍,最好是用 Debian11,但是现在 Debian 官网只有 12 的版本,因此在网上搜到了这个网站,分享给大家,可以在里面找打 debian11.10(记得是)


介绍下我这边的情况,我是在零刻 n100 上搭了一套 esxi8.0 的环境,然后装的 debian11,4 核8g100g,这个自己看到起搞就可以了。
在 esxi 上正常安装完成 debian11 之后,默认 ssh 应该就是开启的,可以给分个固定的 IP ssh 上去,这样配置起来更快。如果你ssh 没有开启,那么去网上搜一下 debian 开启 ssh 的教程啥的,一般在安装系统的时候,最后一步我记得是开启 ssh 的。
最后注意,最好是有课学的环境哈。


——————————debian11环境配置——————————
进来之后,先开始搞一下 debian 的环境配置
首先要切换到你的 root 账户
  1. su root
复制代码

然后更新一下软件包,顺便安装一下 sudo(如果已经安装 sudo 了可以跳过这步)(一条一条执行)
  1. apt update
  2. apt upgrade -y
  3. apt install sudo
复制代码
在安装debian 的过程中,除了 root 之外,你肯定是加了一个普通用户的,因此这里在安装完成 sudo 之后,要加上你普通用户的权限
  1. #编辑 sudoers 文件
  2. nano /etc/sudoers

  3. # 找到 root ALL=(ALL:ALL) ALL,然后在他下面添加下面的行,如果没有root ALL=(ALL:ALL) ALL,那你直接将这两行添加到文件末尾就行
复制代码
然后,我这里因为家里用的 ipv6,但是原来我在用 debian 的时候,遇到过 ipv6 的网络问题,所以,我还要吧 debian 上的 v6 给关掉,这个看大家情况,执行不执行都行
  1. ## 关闭 ipv6
  2. sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
  3. sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
  4. sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
复制代码

欧克,以上就是在root 账户下,把能配置完成的都配置完成了,可以重启一下其实

然后切换到你的普通用户(我这里为了方便,就叫 opa 了)
  1. # 切换到 opa 用户
  2. su opa
复制代码
然后在 opa 这个账户下,继续配置环境...
  1. #安装一些必要的软件包
  2. sudo apt update
  3. sudo apt upgrade -y
  4. sudo apt install sudo curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates clang build-essential autoconf automake libtool pkg-config
复制代码
这些包,貌似官方给的依赖项里面可能没有,我是这样搞的,因为遇到过这方面的问题,所以就直接这样搞了
这部分安装完了之后,就可以开始按照ImmortalWrt在GitHub 仓库 的介绍的依赖项直接进行配置了,我这里直接复制过来了,大家也可以去官方仓库去看一下
  1. ## 配置编译的依赖
  2. sudo bash -c 'bash <(curl -s https://build-scripts.immortalwrt.org/init_build_environment.sh)'
复制代码
我在后期编译的时候,报错过,在网上搜了一下后,下面这部分我也会装上去
  1. sudo apt-get update && sudo apt-get install -y libev-dev lm-sensors libpam0g-dev liblzma-dev libsnmp-dev curl python3 iperf3 libglib2.0-dev libgpiod-dev
复制代码
还有一部分内容,需要调整,也是因为编译过程中,我碰到的错误,主要是针对 Rust 编程语言(我也不懂是啥,gpt 给我的解决办法,执行就完了)
  1. ## 安装基础工具,包括 build-essential 和 curl
  2. sudo apt-get install build-essential curl musl-tools
  3. ## 安装 Rust 和 rustup
  4. curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  5. ## 上一部执后,会有选项出来,貌似是“>”几个让你选择,出来之后直接回车,啥都不用管,执行完成之后开始执行下面的命令
复制代码


以上正常搞完了之后,debian 11 的环境,我是彻底搞完了,后面编译也没再因为环境报错了,有点啰嗦了...我也是小白起来的,大家凑合看吧


——————————正式开始编译——————————

环境在搞完了之后,最好是 reboot 一下,继续用 opa 这个账户进去
开始拉仓库了,我这里是拉了 3 个仓库
首先是immortalwrt的官方仓库
  1. git clone https://github.com/immortalwrt/immortalwrt.git
复制代码
其次是我需要用到sirpdboy的几个插件,但是因为在编译 immortalwrt 的固件的时候,会发生缺少依赖报错的情况,所以我要把他的仓库拉下来在编译之前把缺失的依赖搞到 imm 里面
  1. git clone https://github.com/sirpdboy/sirpdboy-package.git
复制代码
最后还有个库,是 op 的库,也是在编译 immortalwrt 固件的时候遇到的报错了,跟上面 sirpdboy 的库用途一致
  1. git clone https://github.com/openwrt/packages.git -b openwrt-23.05
复制代码
git 的时候,需要注意一下,immortalwrt的库有点大,所以,最好是课学环境稳定一点,要不然,不行的。


下面开始正常搞了,添加一下自己的软件源了
  1. nano feeds.conf.default
复制代码


因为我编译的时候报错,前面git 了sirpdboy-package和openwrt packages,下面需要拷到immortalwrt的源码文件中
  1. #这里是第一个缺失的,因为我用到了https://github.com/brvphoenix/luci-app-wrtbwmon.git这个插件,但是提示我缺失wrtbwmon,我在sirpdboy-package发现有这个之后,就直接拉下来考进去就可以了,如果你不用luci-app-wrtbwmon,也可以在前面git 仓库的时候,不 git sirpdboy-package的库
复制代码

然后就可以开始更新了(每一行执行完成之后在执行下面一行)
  1. ./scripts/feeds clean
复制代码


因为我是编译我自己的包,所以,有一些单独的插件,我就没想从别个的软件源中去选了,我直接 git 到我编辑文件夹里面了,如果你没这方面需求,下面的代码你可以不执行的,直接用软件源的包的
  1. # 同步项目的源代码
  2. cd /home/opa/immortalwrt/package/feeds/luci
  3. ## 下载源码自定义软件包 源码
  4. git clone https://github.com/sirpdboy/luci-app-advancedplus.git &&  \
  5. git clone https://github.com/购物8/luci-app-filetransfer.git &&  \
  6. git clone https://github.com/sirpdboy/netspeedtest.git &&  \
  7. git clone https://github.com/rufengsuixing/luci-app-onliner.git &&  \
  8. git clone https://github.com/xiaorouji/openwrt-“师夷长技以制夷”.git &&  \
  9. git clone https://github.com/sirpdboy/luci-app-poweroffdevice.git &&  \
  10. git clone https://github.com/brvphoenix/luci-app-wrtbwmon.git
复制代码

搞完上一部,回到源码的目录中,再安装一下软件包(一样的,如果没上一步的需求,可以不执行,因为你当前还是在/home/opa/immortalwrt这个目录下面的
  1. ## 回到源码目录中
  2. cd /home/opa/immortalwrt

  3. ## 再次更新安装软件包
  4. ./scripts/feeds install -a
复制代码

插句话,我自己编译的主要目的一个是空间太小,其次我是想一开始就一步到位,后面我不想再自己装包了,所以....就大费周章,所以我首次编译的时候,就遇到了下一个问题
我首次编译 imm 的包的时候,编译完了之后,发现很多东西跟官方下载的包是不一样的,基本上是完全不一样的,因此我就想了个法子,先把官方下载的包安装起,然后 ssh 上去查一下(具体怎么查,各位自己搜一下吧,我就不说了),然后复制出来,搞成一个文件



这是我自己查出来的,后面如果自己编译的话,可以按照这个方法搞一下,我是有点不明白,为啥编译 lede 的时候不会这样,但是编译 imm 包的就会这样(有知道的大神可以给讲一下
同时你还得准备个 sh 文件(我这边直接起名add_packages.sh),等会把这个 list 文件中的 ipk 列表在编译的.config 文件中选中
  1. #!/bin/bash
  2. PACKAGES_FILE="packages.list"

  3. # 遍历packages.list中的每一行
  4. while IFS= read -r package
  5. do
  6.     echo "CONFIG_PACKAGE_$package=y" >> .config
  7. done < "$PACKAGES_FILE"
复制代码


这两个文件,需要拷贝到/home/opa/immortalwrt下面,等会要用


进入到编译菜单
  1. make menuconfig
复制代码


进来之后,怎么选我就不说了,选完了 save 一下退出来
然后吧刚才我们的packages.list通过执行add_packages.sh脚本的方式添加到刚才你 make menuconfig 生成的.config 文件中,执行下面的代码
  1. chmod +x add_packages.sh
  2. ./add_packages.sh
复制代码


下面,你还得进入一下make menuconfig,让刚才执行的add packages的包的依赖生效,进去之后,也可以继续调整自己的选项,也可以直接退出


开始编译了
首先要把编译需要的包预下载下来
  1. make download -j4
复制代码

然后检查文件完整性,删除一下错误文件

  1. find dl -size -1024c -exec ls -l {} \; -exec rm -f {} \;
复制代码


给目录赋权(我是为了保险才这样做的)
  1. sudo chown -R opa:opa /home/opa/immortalwrt
复制代码



可以开始编译了
  1. make V=s -j4
复制代码

我一般直接 -j4了,有问题我再 -j1试试


最后应该就可以搞出来了

最最最后,我不是大神,我是自己一点一点折腾出来的,所以遇到问题,各位还是要自己多多 Google 啥的,gpt 也是需要多问问,4-o 很好用哈哈哈哈



感谢sirpdboy,感谢immortalwrt,感谢 lede,有问题大家可以一起交流。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2024-7-27 15:04 | 显示全部楼层
默认设置的情况下基本直接通过,依赖问题也都是傻瓜式复制安装

点评

就是找依赖有点麻烦  发表于 2024-7-27 15:36
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-7-27 15:45 | 显示全部楼层
搞了一周,看了各种教程没有成功过一次。正在试傻瓜式的在线编译

点评

我从虚拟机到unbutu 到编译lede的折腾一天 正在编译就是摸索配置费点时间 最后编译就吃饭出去玩回来就ok了  详情 回复 发表于 2024-7-27 20:41
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-7-27 20:41 来自手机 | 显示全部楼层
Meredith 发表于 2024-7-27 15:45
搞了一周,看了各种教程没有成功过一次。正在试傻瓜式的在线编译

我从虚拟机到unbutu 到编译lede的折腾一天
正在编译就是摸索配置费点时间 最后编译就吃饭出去玩回来就ok了

点评

可以教学下不  详情 回复 发表于 2025-12-15 04:19
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-12-15 04:19 | 显示全部楼层
hyr20211101 发表于 2024-7-27 20:41
我从虚拟机到unbutu 到编译lede的折腾一天
正在编译就是摸索配置费点时间 最后编译就吃饭出去玩回来就ok ...

可以教学下不
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 21:18

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表