15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

归档标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

月度归档 1月 7, 2026

【Linux】Linux创建虚拟硬盘脚本

#!/bin/bash

echo $1

diskP1=p1
diskP2=p2

if [[ $1 = "-h" || $1 = "-H" ]]; then
	echo "===========虚拟磁盘使用说明==========="
	echo "参数一:命令字,C-创建磁盘 D-删除磁盘 F-格式化磁盘 S-烧写固件 H-帮助"
	echo "参数二:硬盘大小,单位MB,最小硬盘1MB"
	echo "参数三:硬盘名称,自定义"
	echo "======================================"
	exit 1

else
	if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
        	echo "请输入有效的参数!"
        	exit 1
	elif [[ $1 = "-c" || $1 = "-C" ]]; then
		echo "开始创建虚拟磁盘!"
		dd if=/dev/zero of=$3 bs=1M count=$2
		# 非交互式执行 fdisk 命令
		# 这里的逻辑是:n(新建分区) -> p(主分区) -> 1(分区号) -> 回车(默认起始扇区) -> +10G(大小) -> w(保存)
		echo -e "n\np\n1\n\n+200M\nn\np\n\n\n\nw" | fdisk $3
		echo "创建磁盘完成!"
	elif [[ $1 = "-d" || $1 = "-D" ]]; then
		echo "开始删除虚拟磁盘!"
		sudo rm -rf $3

		echo "删除完成!"

	elif [[ $1 = "-f" || $1 = "-F" ]]; then
		echo "开始格式化虚拟磁盘!"
		sudo losetup -fP $3
		varInfo=$(losetup -l | grep $3)
		varInfo=(${varInfo//,/ })
		echo ${varInfo}

		sudo mkfs.fat ${varInfo}${diskP1}
		sudo mkfs.ext4 ${varInfo}${diskP2}

		sudo losetup -d $varInfo
		echo "格式化完成!"

	elif [[ $1 = "-s" || $1 = "-S" ]]; then
		echo "开始烧写固件!"
		sudo losetup -fP $3
		varInfo=$(losetup -l | grep $3)
                varInfo=(${varInfo//,/ })
                echo ${varInfo}
		sleep 1

		sudo mount ${varInfo}${diskP1} /mnt
		sudo cp Image s5000c-64c.dtb /mnt
		sync
		sudo umount /mnt
		sudo umount /mnt
		sleep 1

		sudo mount ${varInfo}${diskP2} /mnt
		sudo cp rootfs.tar /mnt
	        cd /mnt
		sudo tar -xvf rootfs.tar
		
		sleep 1	

		sync
		  
		sleep 5
		cd /
		sudo umount /mnt
		
		sudo umount /mnt
		sleep 1

		sudo losetup -d $varInfo
		echo "烧写完成!"

	fi


fi

【Linux】Linux创建虚拟磁盘并分区格式化

快速创建一个虚拟磁盘

你可以通过以下步骤在Linux上虚拟一个磁盘,并将其挂载到 /mnt/ 目录下:

步骤 1: 创建一个虚拟磁盘文件

使用 dd 命令创建一个虚拟磁盘文件(例如大小为1GB):

dd if=/dev/zero of=/root/virtual_disk.img bs=1M count=1024 

这将创建一个名为 virtual_disk.img 的1GB大小的文件。

步骤 2: 将虚拟磁盘文件格式化为ext4文件系统

使用 mkfs.ext4 命令将虚拟磁盘文件格式化为ext4文件系统:

mkfs.ext4 /root/virtual_disk.img 

步骤 3: 创建挂载点目录

创建一个挂载点,例如 /mnt/ 目录:

mkdir -p /mnt/virtual_disk 

步骤 4: 挂载虚拟磁盘文件

使用 mount 命令将虚拟磁盘挂载到 /mnt/virtual_disk

mount /root/virtual_disk.img /mnt/virtual_disk 

步骤 5: 检查挂载是否成功

使用 df -h 命令查看挂载是否成功:

df -h 

可选:开机自动挂载

如果希望在系统重启后自动挂载该虚拟磁盘,可以编辑 /etc/fstab 文件,添加以下内容:

/root/virtual_disk.img /mnt/virtual_disk ext4 defaults 0 0 

这样就成功在Linux系统上创建并挂载了一个虚拟磁盘文件。

单独挂载每个分区

在虚拟硬盘上创建分区并格式化后,可以单独挂载每个分区。具体步骤如下:

步骤 1: 使用 losetup 绑定虚拟硬盘到环回设备
假设你已经创建了一个虚拟硬盘文件,例如 /root/virtual_disk.img,并在其中创建了分区。首先,使用 losetup 将虚拟磁盘文件关联到一个环回设备(loop device):

losetup -fP /root/virtual_disk.img 
  • -f:自动选择一个未使用的环回设备。
  • -P:自动解析分区信息。

使用以下命令查看绑定的环回设备名(例如 /dev/loop0):

losetup -l 

步骤 2: 查看分区信息

使用 lsblk 或 fdisk -l 查看该环回设备的分区:

lsblk /dev/loop0 

或者:

fdisk -l /dev/loop0 

此时,你应该可以看到类似 /dev/loop0p1/dev/loop0p2 等分区。

步骤 3: 挂载单独的分区

假设你想挂载第一个分区 /dev/loop0p1,可以使用 mount 命令将其挂载到指定目录。例如,挂载到 /mnt/partition1

mkdir -p /mnt/partition1 
mount /dev/loop0p1 /mnt/partition1 

步骤 4: 检查挂载是否成功

使用 df -h 或 lsblk 检查分区是否成功挂载:

df -h 
lsblk 

可选:解除绑定环回设备

完成操作后,可以通过以下命令解除环回设备的绑定:

losetup -d /dev/loop0 

可选:开机自动挂载分区

如果希望分区在系统重启后自动挂载,可以在 /etc/fstab 中添加对应分区的挂载信息。例如:

/dev/loop0p1 /mnt/partition1 ext4 defaults 0 0 
/dev/loop0p2 /mnt/partition2 ext4 defaults 0 0 

通过上述步骤,你可以单独挂载虚拟磁盘中的每个分区。

losetup指令简介

losetup(set up and control loop devices) 是 Linux 中用于管理环回设备(loop devices)的命令。环回设备是一个虚拟设备,它将文件当作块设备来使用,从而可以像操作硬盘一样操作一个普通的文件。losetup 指令主要用于将文件与环回设备进行绑定或解除绑定,以及查看现有环回设备的状态。

基本用法

  1. 绑定一个文件到环回设备
losetup /dev/loopX /path/to/file.img 

将文件 /path/to/file.img 绑定到指定的环回设备 /dev/loopX,使其成为一个可以像物理硬盘一样操作的设备。

  1. 自动选择未使用的环回设备进行绑定
losetup -f /path/to/file.img 

-f 选项会自动查找并选择一个未使用的环回设备,避免手动指定。

3. 自动解析分区信息
losetup -fP /path/to/file.img 

-P 选项会自动扫描并解析文件中的分区表,使文件中的各个分区都能作为 /dev/loopXpN 设备挂载,类似于实际的硬盘分区。

4. 查看所有环回设备
losetup -a 

列出系统中所有已经绑定的环回设备及其关联的文件。

5. 查看特定环回设备的信息

losetup /dev/loopX

显示特定环回设备的详细信息。

6. 解除文件与环回设备的绑定
losetup -d /dev/loopX 

将环回设备 /dev/loopX 解除绑定,不再将其作为块设备使用。

7. 解除所有未使用的环回设备
losetup -D 

动解除所有未使用的环回设备的绑定。

常用选项
-f:自动查找一个未使用的环回设备。
-P:自动重新扫描分区表(适用于分区文件)。
-d:解除环回设备绑定。
-a:显示所有绑定的环回设备及其信息。
-l:列出系统中所有环回设备的详细信息。
-D:自动解除所有未使用的环回设备。

示例

  1. 创建并挂载一个虚拟磁盘:
dd if=/dev/zero of=/root/virtual_disk.img bs=1M count=100 
losetup -fP /root/virtual_disk.img 
mkfs.ext4 /dev/loop0 
mount /dev/loop0 /mnt 

2.解除虚拟磁盘的挂载和解除环回设备绑定:

umount /mnt 
losetup -d /dev/loop0 

用环回设备挂载虚拟磁盘和ISO文件的区别

主要区别如下:

  1. 分区处理:
    • 虚拟磁盘分区 需要通过 losetup 解析出每个分区,并为每个分区创建独立的环回设备。
    • 光盘文件 没有分区,只需将整个文件绑定到一个环回设备。
  2. 设备数量:
    • 虚拟磁盘 可能涉及多个环回设备(一个表示整个磁盘,其他表示各个分区)。
    • 光盘文件 通常只需要一个环回设备。
  3. 文件系统:
    • 虚拟磁盘 支持多种文件系统,每个分区可以使用不同的文件系统类型。
    • 光盘文件 通常使用 ISO 9660 或 UDF 文件系统,且是只读的。
  4. 操作复杂性:
    • 虚拟磁盘分区 需要先解析分区表并绑定多个环回设备。
    • 光盘文件 直接挂载整个文件,操作简单。