使用image builder定制指定rootfs大小openwrt镜像
About
之前一直在用别人编译好的镜像,也尝试了openwrt官方的OpenWrt Firmware Selector ,这东西没法生成指定rootfs大小的镜像,如果你需要一个超级精简的镜像可以使用这个官方的构建器,这玩意有时候会抽风,可能不是你的网问题,是这玩意真boom了(笑
准备工作
1.使用官方的指引进行环境配置:https://openwrt.org/docs/guide-user/additional-software/imagebuilder
我这里使用ubuntu 22.04,使用apt安装基础的编译工具
sudo apt install build-essential libncurses-dev zlib1g-dev gawk git \ gettext libssl-dev xsltproc rsync wget unzip python3 python3-distutils
2. 下载官方的image builder:https://archive.openwrt.org/releases/23.05.4/targets/x86/64/openwrt-imagebuilder-23.05.4-x86-64.Linux-x86_64.tar.xz
解压它
tar -xvf openwrt-imagebuilder*
3. 添加需要的包,如果你使用passwall这里需要dnsmasq-full,但注意这会与dnsmasq冲突需要列表后面添加-dnsmasq排除,这里额外添加了keepalived,wireguard-luci,ddns-script和中文界面。
官方源:
base-files busybox ca-bundle dnsmasq-full dropbear e2fsprogs firewall4 fstools grub2-bios-setup kmod-button-hotplug kmod-nft-offload kmod-nft-tproxy iptables-nft iptables-mod-socket iptables-mod-tproxy libc libgcc libustream-mbedtls logd mkf2fs mtd netifd nftables odhcp6c odhcpd-ipv6only opkg partx-utils ppp ppp-mod-pppoe procd procd-seccomp procd-ujail uci uclient-fetch urandom-seed urngd kmod-amazon-ena kmod-amd-xgbe kmod-bnx2 kmod-e1000e kmod-e1000 kmod-forcedeth kmod-fs-vfat kmod-igb kmod-igc kmod-ixgbe kmod-r8169 kmod-tg3 luci ddns-scripts ddns-scripts-cloudflare ddns-scripts-services luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn luci-i18n-opkg-zh-cn luci-proto-wireguard keepalived -dnsmasq
如果有第三方包添加进packages目录下,并添加在包后面,我这里添加了DDNS-GO和passwall插件
定制插件:
chinadns-ng ddns-go dns2socks dns2tcp hysteria ipt2socks luci-app-passwall luci-app-ddns-go microsocks naiveproxy shadowsocks-rust-sslocal shadowsocks-rust-ssserver shadowsocksr-libev-ssr-local shadowsocksr-libev-ssr-redir shadowsocksr-libev-ssr-server simple-obfs sing-box tcping trojan-plus tuic-client v2ray-geoip v2ray-geosite v2ray-plugin xray-core xray-plugin -dnsmasq
4. 编辑.config文件,修改rootfs分区大小,vim 斜杠搜索ROOTFS_PARTSIZE,修改为1024也就是1GB大小,这个空间是肯定够的。
CONFIG_TARGET_ROOTFS_PARTSIZE=1024
5. 开始构建
构建命令:
make image PROFILE="generic" PACKAGES="base-files busybox ca-bundle dnsmasq-full dropbear e2fsprogs firewall4 fstools grub2-bios-setup kmod-button-hotplug kmod-nft-offload kmod-nft-tproxy iptables-nft iptables-mod-socket iptables-mod-tproxy libc libgcc libustream-mbedtls logd mkf2fs mtd netifd nftables odhcp6c odhcpd-ipv6only opkg partx-utils ppp ppp-mod-pppoe procd procd-seccomp procd-ujail uci uclient-fetch urandom-seed urngd kmod-amazon-ena kmod-amd-xgbe kmod-bnx2 kmod-e1000e kmod-e1000 kmod-forcedeth kmod-fs-vfat kmod-igb kmod-igc kmod-ixgbe kmod-r8169 kmod-tg3 luci ddns-scripts ddns-scripts-cloudflare ddns-scripts-services luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn luci-i18n-opkg-zh-cn luci-proto-wireguard keepalived luci-app-travelmate chinadns-ng ddns-go dns2socks dns2tcp hysteria ipt2socks luci-app-passwall luci-app-ddns-go microsocks naiveproxy shadowsocks-rust-sslocal shadowsocks-rust-ssserver shadowsocksr-libev-ssr-local shadowsocksr-libev-ssr-redir shadowsocksr-libev-ssr-server simple-obfs sing-box tcping trojan-plus tuic-client v2ray-geoip v2ray-geosite v2ray-plugin xray-core xray-plugin -dnsmasq"
插件少几分钟就构建完成了,非常快。
构建完成的文件在/bin/targets/x86/64