DragonOS/tools/create_hdd_image.sh
GnoCiYeH 2f6f547ae0
Patch fix sched (#419)
1.解决waitqueue sleep的时候,由于preempt count不为0,导致sched失败,从而导致该waitqueue下一次wakeup时,会把pcb多次加入调度队列的bug
2.修复socket inode 的read和write方法里面没有使用no_preempt的问题
3. 修复cpu0的内核栈由于脏数据导致new_idle的时候set pcb报错的问题

---------

Co-authored-by: longjin <longjin@DragonOS.org>
2023-11-04 21:35:25 +08:00

90 lines
2.1 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: -- "$@"`
# 创建一至少为256MB磁盘镜像类型选择raw
qemu-img create -f raw disk.img 256M
#将规范化后的命令行参数分配至位置参数($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/