如何自己本地编译 OpenWrt ?

目录

感觉不如直接下载,然后用转换工具把 img 搞成 vmfs,见linux - VMware安装OpenWrt,工具下载链接https://www.starwindsoftware.com/tmplink/starwindconverter.exe。 关于系统 LEAN 的不行,还是 ImmortalWrt 更好!还可直接下载 vmfs,注意系统日志等级它默认的 debug 可不行。 关于上网控制插件,注意会和广告过滤 ACC 加速等冲突,有舍有得啊,openwrt上网时间控制为什么设置后无效-OPENWRT专版-恩山无线论坛 (right.com.cn)。 老老实实用 clash for windows 了,OpenWrt 很不稳定啊,github 时好时坏。

🤔为老古董编译 Openwrt-Old【失败】

为家里的老古董 Mercury MW316R 编译 Openwrt。

这么弱的路由,别折腾了,不如花钱买时间!

Untitled

lib/fseterr.c:77:3: error: #error “Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib.”

Untitled

cd /root/openwrt-old/build_dir/host/bison-3.0.4
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h

编译

make menuconfig
make -j1 V=s

Untitled

老版本,实在编译不动了,时间别浪费了……

🤗为 VMware 虚拟机编译 Openwrt

哭泣,编译完,发现想要的软件包没选上,后期直接换用 LEAN 的配置来编译 注意,OpenClash 好像就是要自己手动安装!!!

参考:[OpenWrt Wiki] Toolchain

系统:Debian 11 (bullseye)

换用 非 root 用户,先安装 sudo 软件,再/etc/sudoers 添加。

sudo apt update
sudo apt install build-essential ccache ecj fastjar file g++ gawk \
gettext git java-propose-classpath libelf-dev libncurses5-dev \
libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget \
python3-distutils python3-setuptools python3-dev rsync subversion \
swig time xsltproc zlib1g-dev

# Download and update the sources
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
git pull
 
# Select a specific code revision
git branch -a
git tag
git checkout v22.03.3
 
# Update the feeds
./scripts/feeds update -a
./scripts/feeds install -a
 
# Configure the firmware image and the kernel
make menuconfig
make -j $(nproc) kernel_menuconfig
 
# Build the firmware image
make -j $(nproc) V=s defconfig download clean world

关于编译的配置,请看 https://github.com/haiibo/OpenWrt【后期直接换 Lean 的仓库,不用官方】:

git clone https://github.com/coolsnowwolf/lede
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig

# 下载 dl 库、编译固件
make download -j8
make V=s -j1

Untitled

别改太大,否则:

Untitled

编译产物

基于 LEAN 的编译(自己编译的linux6.1,真的不好用):

openwrt-x86-64-generic-squashfs-combined-efi.vmdk

使用方法,见我写的另一篇关于 Openwrt 旁路由的文章。

  • combined-ext4.img.gz(rootfs工作区存储格式为ext4。)
  • combined-squashfs.img.gz(squashfs相当于可以恢复出厂设置的固件,如果使用中配置错误,可直接恢复默认设置。)
  • generic-rootfs.tar.gz(rootfs的镜像,不带引导,可自行定义用grub或者syslinux来引导。)
  • rootfs-ext4.img.gz(rootfs的镜像,不带引导,可自行定义用grub或者syslinux来引导,需要存储区是ext4。)
  • rootfs-squashfs.img.gz(rootfs的镜像,不带引导,可自行定义用grub或者syslinux来引导,如果使用中配置错误,可直接恢复默认设置。)

fatal error: closing dependency file .deps/parseopt.Tpo: No space left on device

Untitled

解决:

https://github.com/coolsnowwolf/lede/issues/1454

有说,kernel分区空间不够了,编译配置里进入Target Images菜单,把kernel默认16M改成32M,成功编译,老树莓派可用

但我这里,确实空间不够了

Untitled

linux 扩容,除了 Vmware 调整之外,还要进系统扩容,想想 Windows 磁盘管理和 Ubuntu 的磁盘管理?

Untitled

实际上才用了 20GB。

fdisk /dev/sda 命令进行分区,依次输入 m、n、p、默认回车、默认回车、w 命令。

Untitled

输入 lsblk 命令查看新加的硬盘分区状况。

Untitled

之后要安装 LVM 工具,(Linux Logical Volume Manager):apt install lvm2

然后 vgdisplay vgextend 等命令,发现都没用!!!

最后 centos7根目录扩容(根目录在sda3 vgdisplay为空) - 知乎 (zhihu.com) 成功:

把所有的删了重建,从头到尾只用到 fdisk /dev/sda,不停 d,最后 n

Untitled

之后,参考 如何无损扩展 Debian 硬盘分区 - azhuge233’s

注意分区是好了,但是还没在 df 中显现,需要 apt install cloud-utils

然后:resize2fs /dev/sda1(这一步很关键

Untitled

Untitled

修改 /etc/default/grub 文件之后: update-grub

But that file is already provided by package * dnsmasq

Untitled

参考:openwrt 编译 出现dnsmasq 错误_dnsmasq-full_liu1250836704的博客-CSDN博客

进入到 Base system  —>  菜单找到dnsmasq 选项将其去掉

Untitled

成功

Untitled

参考文章

标签 :

相关文章

在电脑上安装 Openwrt 作为旁路网关

🤔场景 既然回家了,有了家用路由器,就希望各个设备能够不需要安装对应的软件而直接科学上网、屏蔽广告等。 但原来的路由器太小众,没人提供相应的固件,也就是说没法刷机。 后来,我看到有关旁路网关的介绍,觉得这可

阅读更多
Snapcast 多房间音频控制一体化

动机 想要手头的两台 MBP 能同时无延迟播放音频,拒绝使用直播流的形式。 主旨 Vmware Ubuntu 中安装 snapserver 接受 Airplay 的信号 sudo apt install snapserver sudo apt install -y shairport-sync sudo systemctl disable --now shairport-sync 该虚拟机网络采用桥接方式 注意该服务会自动启动,你可能需要设置下配置文件位置 sudo vi /lib/systemd/system/snapserver.service

阅读更多
最小生成树

最小生成树:Kruskal算法和Prim算法的实现 这里直接给出离散数学中的几个定理和推论: 无向图G具有生成树当且仅当G连通. G为n阶m条边的无向连通图,则 m >= n - 1. G是树 $\Leftrightarrow$ G中任意两个顶点之间存在唯一

阅读更多