如何自己本地编译 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

参考文章

标签 :

相关文章

如何在 React 中进行状态管理?使用 Zustand!

计数器 import { create } from 'zustand' const useStore = create(set => ({ count: 1, inc: () => set(state => ({ count: state.count + 1 })), })) function Controls() { const inc = useStore(state => state.inc) return <button onClick={inc}>one up</button> } function Counter() { const count = useStore(state => state.count) return <h1>{count}</h1> } 用法 创建状态 state 操作 action Basic typescript usage doesn’t require anything special except for writing create<State>()(...) instead of create(...)… import { create } from 'zustand' interface BearState { bears: number increase: (by: number) => void } const useBearStore = create<BearState>()((set) => ({ bears: 0, increase: (by) => set((state) => ({ bears: state.bears + by })), })) const useFishStore = create((set) => ({ salmon: 1, tuna: 2, deleteEverything: () => set({}, true), // clears the entire store, actions included deleteTuna: () => set((state) => omit(state, ['tuna']), true), })) const useSoundStore = create((set, get) => ({ sound: "grunt", action: () => { const sound = get().sound // you still have access to state outside of it through get // ... } }) export default useBearStore 在 react 之外使用呢?

阅读更多
用 Beancount 复式记账,Double-Entry!

🤔动机 已经有很多次记账的尝试,包括各种 App 如圈子账本(现已倒闭下架)等。但有几个痛点还没法解决: 大多数都是简单的记载收支,这对手握多个银行账户、信用卡等的我来说,显得不够用 数据安全问题,数据在服务提供者手上,既有隐私担忧,又受制于人,谁知道什么时候就删库跑路了 数据报表,大多数 App 的统计都比较垃,甚至需要 VIP 才能看

阅读更多
Remarkable2 配置中文字体与其他 Tips

动机 每次更新系统之后,我的字体就没了,我哭😭 主旨 导入文档 下面尝试导入 PDF、EPUB 来看看阅读效果。首先肯定要去官方的支持网站,看看用户手册。 官方的导入方案中,总的来说就两种,一个是通过它的云同步服务,在客户端程序上导入,另一个就是通过 USB 连接到电脑,通过浏览器网页导入。

阅读更多