![为 RPi 生成 SD 卡映像](https://linux22.com/image/79476/%E4%B8%BA%20RPi%20%E7%94%9F%E6%88%90%20SD%20%E5%8D%A1%E6%98%A0%E5%83%8F.png)
我正在使用 buildroot 为 RPi 生成 Linux 系统。作为输出,我得到 rootfs.tar 和 zImage。我想从该输出(以及其他一些文件)生成一个准备好的 SD 卡映像,以便可以使用 dd 安装它。我该如何做到这一点(如果可能的话,使用 bash 自动执行)?该映像有两个分区:较小的 VFAT 和较大的用于根文件系统。
答案1
不确定是否有更好的方法。这对我行得通:
#!/bin/bash
if [ -z "$1" ]; then
echo "provide the path to buildroot folder as parameter"
exit 1
fi
echo "Generating SD card image"
cd build/
rm -f sdcard.img
rm -rf boot
rm -rf root
dd if=/dev/zero of=./sdcard.img bs=1M count=250
losetup /dev/loop0 ./sdcard.img
echo -e "o\nn\np\n1\n\n+60M\nn\np\n2\n\n\nt\n1\nb\np\nw" | fdisk /dev/loop0
losetup -o 1048576 /dev/loop1 /dev/loop0
losetup -o 63963136 /dev/loop2 /dev/loop0
mkfs.vfat /dev/loop1
mkfs.ext3 /dev/loop2
mkdir boot
mkdir root
mount /dev/loop1 ./boot
mount /dev/loop2 ./root
cp $1/output/images/*.dtb ./boot
#cp $1/output/images/zImage ./boot
cp $1/output/images/rpi-firmware/* ./boot
tar xf $1/output/images/rootfs.tar -C ./root
$1/output/host/usr/bin/mkknlimg $1/output/images/zImage ./boot/zImage
# copy other staff to root fs
echo "Finishing"
umount ./boot
umount ./root
rm -r boot
rm -r root
losetup -D