DragonOS/tools/create_hdd_image.sh
guanjinquan 5ed4cd4602
Patch gcc toolchain (#111)
* 添加了GCC_cross_compile——tool_chain

* - 解决环境变量路径拼接时,多了`/`的问题
- apt安装时增加-y,不需用户确认

* 解决添加环境变量的命令有误的问题

* 修正编译错误时,还会执行下一步的问题

* new: 编译完成后清理临时文件

* 更新makefile

* 调整:把grub安装在 $HOME/opt/dragonos-grub下

* new: 新增dockerfile

* 将镜像源换成中科大的(原因是清华的总是ban掉用于构建镜像的服务器的ip)

* 修改为基于debian bullseye构建

* 取消指定版本

* 修复MBR磁盘镜像未设置启动标志的bug

* 取消在docker中安装grub

* 安装grub的过程改到客户机上进行

* bootstrap.sh 添加--no-docker

* 使用新版的docker编译镜像

* 修补, 添加了一些关于gcc的check

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-22 21:09:12 +08:00

90 lines
2.0 KiB
Bash
Executable File
Raw 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分区表的磁盘镜像请这样运行它 bash create_hdd_image.sh -P MBR
# 要创建一个GPT分区表的磁盘镜像请这样运行它 bash create_hdd_image.sh -P GPT
# 请注意这个脚本需要root权限
# 请注意运行这个脚本之前需要在您的计算机上安装qemu-img和fdisk以及parted
#
# 这个脚本会在当前目录下创建一个名为disk.img的文件这个文件就是磁盘镜像
# 在完成后会将这个文件移动到bin目录下
########################################################################
format_as_mbr() {
echo "Formatting as MBR..."
# 使用fdisk把disk.img的分区表设置为MBR格式(下方的空行请勿删除)
fdisk disk.img << EOF
o
n
a
w
EOF
}
format_as_gpt() {
echo "Formatting as GPT..."
sudo parted disk.img << 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: -- "$@"`
# 创建一至少为64MB磁盘镜像类型选择raw
qemu-img create -f raw disk.img 64M
#将规范化后的命令行参数分配至位置参数($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.img) \
|| 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.img
mv ./disk.img ../bin/