DragonOS/tools/create_hdd_image.sh
LoGin c75089286e
调整脚本,使得能够创建riscv的磁盘镜像,并引导进入riscv下的grub (#450)
* 安装musl toolchain以及riscv相关的工具链

* 调整脚本,使得能够创建riscv的磁盘镜像,并引导进入riscv下的grub

```shell
export ARCH=riscv64
make write_diskimage
make qemu
```

即可在serial_opt.txt看到进入grub的提示信息
2023-11-21 13:42:18 +08:00

98 lines
2.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

########################################################################
# 这是一个用于创建磁盘镜像的脚本
# 用法:./create_hdd_image.sh -P MBR/GPT
# 要创建一个MBR分区表的磁盘镜像请这样运行它 ARCH=x86_64 bash create_hdd_image.sh -P MBR
# 要创建一个GPT分区表的磁盘镜像请这样运行它 ARCH=x86_64 bash create_hdd_image.sh -P GPT
# 请注意这个脚本需要root权限
# 请注意运行这个脚本之前需要在您的计算机上安装qemu-img和fdisk以及parted
#
# 这个脚本会在当前目录下创建一个名为disk-${ARCH}.img的文件这个文件就是磁盘镜像
# 在完成后会将这个文件移动到bin目录下
########################################################################
echo "create_hdd_image.sh: Creating virtual disk image... arch=${ARCH}"
# 给变量赋默认值
export ARCH=${ARCH:=x86_64}
DISK_NAME=disk-${ARCH}.img
format_as_mbr() {
echo "Formatting as MBR..."
# 使用fdisk把disk.img的分区表设置为MBR格式(下方的空行请勿删除)
fdisk ${DISK_NAME} << EOF
o
n
a
w
EOF
}
format_as_gpt() {
echo "Formatting as GPT..."
sudo parted ${DISK_NAME} << EOF
mklabel gpt
y
mkpart
p1
FAT32
0
-1
I
set
1
boot
on
print
q
EOF
}
echo "Creating virtual disk image..."
ARGS=`getopt -o P: -- "$@"`
# 创建一至少为256MB磁盘镜像类型选择raw
qemu-img create -f raw ${DISK_NAME} 2048M
#将规范化后的命令行参数分配至位置参数($1,$2,...)
eval set -- "${ARGS}"
#echo formatted parameters=[$@]
#根据传入参数进行MBR/GPT分区
case "$1" in
-P)
if [ $2 == "MBR" ];
then
format_as_mbr
elif [ $2 == "GPT" ];
then
format_as_gpt
else
echo "Invalid partition type: $2"
exit 1
fi
;;
--)
# 如果没有传入参数-P则默认为MBR分区
format_as_mbr
;;
*)
echo "Invalid option: $1"
exit 1
;;
esac
LOOP_DEVICE=$(sudo losetup -f --show -P ${DISK_NAME}) \
|| exit 1
echo ${LOOP_DEVICE}p1
sudo mkfs.vfat -F 32 ${LOOP_DEVICE}p1
sudo losetup -d ${LOOP_DEVICE}
echo "Successfully created disk image."
mkdir -p ../bin
chmod 777 ${DISK_NAME}
mv ./${DISK_NAME} ../bin/