您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Ubuntu TF卡开机自动烧写镜像的方法是什么
## 引言
在嵌入式开发、单板计算机(如树莓派)或批量设备部署场景中,经常需要通过TF卡自动烧写系统镜像。Ubuntu系统提供多种工具和方法实现这一需求。本文将详细介绍基于Ubuntu环境实现TF卡开机自动烧写镜像的完整方案。
---
## 方法一:使用dd命令 + udev规则自动化
### 1. 准备工作
- 已安装Ubuntu的PC或服务器
- 待烧写的`.img`系统镜像文件
- 至少一张空白TF卡(建议容量大于镜像文件)
### 2. 基础dd命令烧写
```bash
sudo dd if=your_image.img of=/dev/sdX bs=4M status=progress
其中/dev/sdX
需替换为实际TF卡设备名(可通过lsblk
查看)
sudo nano /etc/udev/rules.d/99-automount.rules
添加以下内容(以树莓派镜像为例):
ACTION=="add", KERNEL=="sd*", SUBSYSTEM=="block", ENV{ID_SERIAL}=="*", RUN+="/usr/local/bin/auto_flash.sh"
sudo nano /usr/local/bin/auto_flash.sh
脚本内容:
#!/bin/bash
if [[ $ID_FS_TYPE == "vfat" ]]; then
IMG_PATH="/path/to/your_image.img"
TARGET_DEV="/dev/$kernel"
# 确认设备未挂载
umount ${TARGET_DEV}* 2>/dev/null
# 执行烧写
echo "Start flashing to $TARGET_DEV..."
dd if=$IMG_PATH of=$TARGET_DEV bs=4M status=progress
# 烧写完成后弹出设备
eject $TARGET_DEV
echo "Flash completed!"
fi
赋予执行权限:
sudo chmod +x /usr/local/bin/auto_flash.sh
sudo udevadm control --reload-rules
sudo service udev restart
curl -1sLf 'https://dl.cloudsmith.io/public/balena/etcher/setup.deb.sh' | sudo -E bash
sudo apt-get install balena-etcher-electron
#!/bin/bash
DEVICE=$(lsblk -J -o NAME,TRAN,RM | jq -r '.blockdevices[] | select(.tran == "usb" and .rm == true) | .name')
if [ -z "$DEVICE" ]; then
echo "No removable USB device found"
exit 1
fi
balena-etcher-cli /path/to/image.img --drive /dev/$DEVICE --yes
适用于需要烧写后自动调整分区的场景
sudo apt install parted dosfstools
#!/bin/bash
# 自动检测最新插入的TF卡
TARGET=$(dmesg | grep -oP 'sd[a-z]$\b' | tail -n1)
# 烧写镜像
sudo dd if=raspbian.img of=/dev/$TARGET bs=4M
# 自动扩展分区
sudo parted /dev/$TARGET --script resizepart 2 100%
sudo e2fsck -f /dev/${TARGET}2
sudo resize2fs /dev/${TARGET}2
lsblk -d -o NAME,TRAN,RM,SIZE,MODEL
注意查找TRAN=usb
且RM=1
的设备
sha256sum your_image.img
sudo umount /dev/sdX*
使用USB集线器配合多卡读卡器,修改脚本为:
for dev in /dev/sd{b..f}; do
dd if=image.img of=$dev bs=4M &
done
wait
通过PXE网络启动实现:
# 在DHCP服务器配置
filename "pxelinux.0";
next-server 192.168.1.100;
# TFTP服务器存放自动烧写脚本
ocs-sr -batch -nogui -icds -j2 -senc -p reboot savedisk sda sdb
sudo cmp -n $(stat -c %s image.img) image.img /dev/sdX
tee -a /var/log/flash.log
记录操作日志通过上述方法,Ubuntu系统可以实现高效可靠的TF卡自动烧写。根据实际需求选择: - 简单场景:dd+udev方案 - 复杂需求:BalenaEtcher或Pishrink - 生产环境:建议增加校验环节和错误处理机制
附录: - 官方udev文档 - Raspberry Pi镜像下载 “`
注:实际使用时请根据具体需求调整:
1. 替换/path/to/your_image.img
为实际镜像路径
2. 根据硬件环境修改设备检测逻辑
3. 生产环境建议添加邮件通知等完整功能
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。