init
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
dl/*
|
||||
output/*
|
||||
target/*
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 安装依赖
|
||||
apt install -y build-essential libncurses-dev zlib1g-dev gawk git \
|
||||
gettext libssl-dev xsltproc rsync wget unzip python3 qemu-utils mkisofs zstd
|
||||
|
||||
# 下载并解压image builder
|
||||
imagebuilder_url="https://downloads.immortalwrt.org/releases/25.12.0/targets/x86/64/immortalwrt-imagebuilder-25.12.0-x86-64.Linux-x86_64.tar.zst"
|
||||
wget -O immortalwrt-imagebuilder.tar.zst $imagebuilder_url && tar -I zstd -xvf immortalwrt-imagebuilder.tar.zst --strip-components=1
|
||||
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
# =============================================================
|
||||
# OpenWrt Image Builder 构建脚本
|
||||
# 使用方法: 将本脚本放在 imagebuilder 根目录下运行
|
||||
# 运行: bash main.sh
|
||||
# =============================================================
|
||||
|
||||
# ────────────────────────────────────────────
|
||||
# 设备 Profile
|
||||
# 运行 `make info` 查看所有可用 profile
|
||||
# ────────────────────────────────────────────
|
||||
PROFILE="generic" # x86_64 通用 profile,可改为 x86_64 等
|
||||
|
||||
# ────────────────────────────────────────────
|
||||
# 自定义文件目录(映射到固件根文件系统)
|
||||
# ────────────────────────────────────────────
|
||||
FILES_DIR="files"
|
||||
|
||||
# ────────────────────────────────────────────
|
||||
# 固件输出目录
|
||||
# ────────────────────────────────────────────
|
||||
OUTPUT_DIR="$(pwd)/output"
|
||||
|
||||
# ────────────────────────────────────────────
|
||||
# 固件文件名附加标识(可留空)
|
||||
# ────────────────────────────────────────────
|
||||
EXTRA_IMAGE_NAME=""
|
||||
|
||||
# =============================================================
|
||||
# 插件包列表
|
||||
# - 前面加 - 表示从固件中移除该包,例如 -dnsmasq
|
||||
# - 每行一个,方便增删注释
|
||||
# =============================================================
|
||||
PKG_LIST=(
|
||||
-dropbear
|
||||
openssh-server
|
||||
openssh-sftp-server
|
||||
vim-full
|
||||
nano-plus
|
||||
luci-i18n-vlmcsd-zh-cn
|
||||
luci-i18n-argon-config-zh-cn
|
||||
luci-i18n-package-manager-zh-cn
|
||||
luci-i18n-firewall-zh-cn
|
||||
luci-i18n-arpbind-zh-cn
|
||||
|
||||
luci-i18n-daed-zh-cn
|
||||
luci-i18n-homeproxy-zh-cn
|
||||
sing-box
|
||||
|
||||
ripgrep
|
||||
diffutils
|
||||
less
|
||||
eza
|
||||
fish
|
||||
|
||||
luci-i18n-diskman-zh-cn
|
||||
cfdisk
|
||||
resize2fs
|
||||
e2fsprogs
|
||||
losetup
|
||||
)
|
||||
|
||||
# 动态拼接成字符串
|
||||
PACKAGES=$(printf "%s " "${PKG_LIST[@]}")
|
||||
|
||||
|
||||
# =============================================================
|
||||
# 以下内容一般无需修改
|
||||
# =============================================================
|
||||
|
||||
# 颜色输出
|
||||
GREEN="\033[0;32m"
|
||||
YELLOW="\033[1;33m"
|
||||
RED="\033[0;31m"
|
||||
NC="\033[0m"
|
||||
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN} OpenWrt Image Builder 开始构建${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e " Profile : ${YELLOW}${PROFILE}${NC}"
|
||||
echo -e " Files 目录 : ${YELLOW}${FILES_DIR}${NC}"
|
||||
echo -e " 输出目录 : ${YELLOW}${OUTPUT_DIR}${NC}"
|
||||
echo -e " 镜像标识 : ${YELLOW}${EXTRA_IMAGE_NAME}${NC}"
|
||||
echo ""
|
||||
|
||||
|
||||
# 修改.config文件, 不构建以下格式,
|
||||
sed -i \
|
||||
-e 's/^CONFIG_ISO_IMAGES=y/# CONFIG_ISO_IMAGES is not set/' \
|
||||
-e 's/^CONFIG_QCOW2_IMAGES=y/# CONFIG_QCOW2_IMAGES is not set/' \
|
||||
-e 's/^CONFIG_VDI_IMAGES=y/# CONFIG_VDI_IMAGES is not set/' \
|
||||
-e 's/^CONFIG_VMDK_IMAGES=y/# CONFIG_VMDK_IMAGES is not set/' \
|
||||
-e 's/^CONFIG_VHDX_IMAGES=y/# CONFIG_VHDX_IMAGES is not set/' \
|
||||
.config
|
||||
|
||||
|
||||
# 检查是否在 imagebuilder 目录下
|
||||
if [ ! -f "Makefile" ]; then
|
||||
echo -e "${RED}[错误] 未找到 Makefile,请在 imagebuilder 根目录下运行本脚本!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 创建 files 目录(如果不存在)
|
||||
if [ ! -d "$FILES_DIR" ]; then
|
||||
echo -e "${YELLOW}[提示] files/ 目录不存在,已自动创建${NC}"
|
||||
mkdir -p "$FILES_DIR"
|
||||
fi
|
||||
|
||||
mkdir -p "$OUTPUT_DIR"
|
||||
|
||||
# 执行构建
|
||||
make image \
|
||||
PROFILE="$PROFILE" \
|
||||
PACKAGES="$PACKAGES" \
|
||||
FILES="$FILES_DIR" \
|
||||
BIN_DIR="$OUTPUT_DIR" \
|
||||
EXTRA_IMAGE_NAME="$EXTRA_IMAGE_NAME"
|
||||
|
||||
# 构建结果判断
|
||||
if [ $? -eq 0 ]; then
|
||||
echo ""
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN} 构建成功!${NC}"
|
||||
echo -e "${GREEN} 固件路径: ${OUTPUT_DIR}${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
else
|
||||
echo ""
|
||||
echo -e "${RED}========================================${NC}"
|
||||
echo -e "${RED} 构建失败,请检查上方错误日志${NC}"
|
||||
echo -e "${RED}========================================${NC}"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user