forked from armbian/build
-
Notifications
You must be signed in to change notification settings - Fork 293
Open
Description
Armbian-unofficial_25.11.0-trunk_Onecloud_bookworm_current_6.12.43.img
U盘刷写后,插机成功启动,用armbian-install 安装到eMMC失败,报错提示Error: no u-boot package found, exiting。
查找了root目录,boot目录,都没有响应的install.sh类似的安装脚本。
我尝试借助AI帮我写的脚本进行手动安装。
编写了一个/root/install.sh脚本 内容如下:
#!/bin/bash
set -e # 报错立即停止,避免后续问题
echo "==============================================="
echo "玩客云第三代WS1608 完整eMMC安装脚本(适配新版内核)"
echo "警告:将清空eMMC所有数据!"
echo "==============================================="
read -p "是否继续?(输入 y 确认,其他键退出) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "已退出安装"
exit 1
fi
# 第一步:安装必需依赖(确保无缺失)
echo "【1/6】安装依赖工具..."
apt update -y && apt install -y abootimg rsync parted dosfstools || { echo "依赖安装失败!"; exit 1; }
# 第二步:确认eMMC设备(防止误操作U盘)
EMMC="/dev/mmcblk1"
echo "【2/6】验证eMMC设备..."
if [ ! -b $EMMC ]; then
echo "未找到eMMC设备($EMMC),请检查启动是否正常!"
exit 1
fi
echo "已识别eMMC设备:$EMMC"
# 第三步:清空eMMC分区表,重新分区(GPT格式,适配UBoot)
echo "【3/6】重新分区eMMC..."
# 强制清空分区表
dd if=/dev/zero of=$EMMC bs=1M count=10 && sync
# 创建GPT分区表
parted -s $EMMC mklabel gpt
# 分区1:boot区(256MB,FAT32,启动标记)
parted -s $EMMC mkpart primary fat32 16MB 272MB # 16MB偏移+256MB大小
parted -s $EMMC set 1 boot on
# 分区2:root区(占满剩余空间,ext4)
parted -s $EMMC mkpart primary ext4 272MB 100%
echo "分区完成:boot区($EMMC p1)、root区($EMMC p2)"
# 第四步:格式化分区(确保文件系统兼容)
echo "【4/6】格式化分区..."
mkfs.vfat -F32 -n BOOT ${EMMC}p1 # 命名为BOOT,UBoot易识别
mkfs.ext4 -F -L ROOT ${EMMC}p2 # 命名为ROOT,系统易识别
echo "格式化完成"
# 第五步:挂载分区,复制完整系统(无遗漏)
echo "【5/6】复制系统文件到eMMC..."
mkdir -p /mnt/emmc_boot /mnt/emmc_root
mount ${EMMC}p1 /mnt/emmc_boot
mount ${EMMC}p2 /mnt/emmc_root
# 复制根文件系统(排除临时目录和挂载点)
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/root/.bash_history"} / /mnt/emmc_root
# 复制boot目录所有文件(含内核、initrd)
rsync -aAXv /boot/ /mnt/emmc_boot/
echo "系统文件复制完成"
# 第六步:创建适配的启动镜像(关键!用你的实际内核文件名)
echo "【6/6】创建启动镜像,配置引导..."
KERNEL="/boot/vmlinuz-6.12.43-current-meson"
INITRD="/boot/initrd.img-6.12.43-current-meson"
# 验证内核文件存在
if [ ! -f $KERNEL ] || [ ! -f $INITRD ]; then
echo "内核文件缺失!请检查/boot目录"
umount /mnt/emmc_boot /mnt/emmc_root
exit 1
fi
# 用abootimg创建适配UBoot的启动镜像(无多余参数,避免兼容问题)
abootimg --create /mnt/emmc_boot/u-boot.img \
-k $KERNEL \
-r $INITRD \
-c "pagesize=2048" # 玩客云UBoot默认pagesize,必加!
echo "启动镜像创建完成"
# 收尾:卸载分区,清理临时文件
umount /mnt/emmc_boot /mnt/emmc_root
rm -rf /mnt/emmc_boot /mnt/emmc_root
echo "==============================================="
echo "安装全部完成!现在执行关机..."
echo "后续操作:拔掉U盘 → 接通电源 → 蓝灯常亮=启动成功"
echo "若仍红灯:换hzyitc 5.88版本镜像重试(兼容性更稳)"
echo "==============================================="
poweroff # 自动关机,无需手动操作
关机后拔掉U盘重新上电开机,一直红灯,路由器也识别不了设备,ping也ping不通,看状态是没成功启动。
目前个人条件特殊,没有串口工具,没有线刷工具,没有拆机工具,人在国外,网络状态很糟糕,网速卡得很,像在国内一样外网被墙,同时国内大部分网也被墙。
向大家请教,玩客云如何解决这个问题,从U盘把刷写好的armbian系统安装到eMMC里去。
Metadata
Metadata
Assignees
Labels
No labels