AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 771277
Accepted
Murmi
Murmi
Asked: 2024-02-29 02:15:36 +0800 CST2024-02-29 02:15:36 +0800 CST 2024-02-29 02:15:36 +0800 CST

使用 msdos 分区表和 fat32 创建磁盘映像

  • 772

我想创建一个磁盘映像文件以包含在我的单元测试中。这个磁盘文件应该包含一些我想读取的文件。当我创建 SD 卡或 USB 记忆棒的副本时,dd磁盘映像非常大,即使压缩它,大小也太大。

所以我想创建一个新的磁盘映像并随后安装它。然后添加新数据并压缩磁盘映像以进行版本控制

我目前的步骤:

  1. 创建磁盘映像:dd if=/dev/zero of=DISK1.img bs=1M count=1200
  2. 打开分开:sudo parted DISK1.img
  3. 创建分区表(使用parted):mklabel msdos
  4. 创建分区(带parted):mkpart primary fat32 1MB 100%
  5. 打印:
    (parted) print                                                            
    Modell:  (file)
    Festplatte  <path>/DISK1.img:  1258MB
    Sektorgröße (logisch/physisch): 512B/512B
    Partitionstabelle: msdos
    Disk-Flags: 
    
    Nummer  Anfang  Ende    Größe   Typ      Dateisystem  Flags
     1      1049kB  1258MB  1257MB  primary  fat32        lba
    

现在,当我退出并重新打开parted时,文件系统不再被识别:

(parted) print                                                            
Modell:  (file)
Festplatte  <path>/DISK1.img:  1258MB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags: 

Nummer  Anfang  Ende    Größe   Typ      Dateisystem  Flags
 1      1049kB  1258MB  1257MB  primary               lba

如何从头开始创建图像?

编辑 2024-03-02

使用@Stephen Kitt 的评论,它起作用了:

  1. dd if=/dev/zero of=DISK1.img bs=1M count=1200
  2. parted DISK1.img
  3. 创建分区表(使用parted):mklabel msdos
  4. 创建分区(带parted):mkpart primary fat32 1MB 100%
  5. 退出分手
  6. mkfs.vfat -v --offset 2048 DISK1.img

挂载分区:

  1. 找到startsector:(fdisk -lu DISK1.img同上)
  2. 获取偏移量(以字节为单位):512bytes * 2048sectors = 1048576
  3. lopsetup分区:sudo losetup -o 1048576 /dev/loop0 DISK1.img
  4. 山:sudo mount /dev/loop0 DISK_MOUNT
  5. 将数据复制到已安装的分区(需要root)
  6. 卸载sudo umount /dev/loop0
  7. 分离lostup:sudo losetup -d /dev/loop0

现在新数据位于磁盘映像中

disk-image
  • 2 2 个回答
  • 42 Views

2 个回答

  • Voted
  1. eyoung100
    2024-02-29T02:46:14+08:002024-02-29T02:46:14+08:00

    您的步骤是正确的,只需添加:

    sudo mkfs.vfat -F 32 DISK1.img在程序中的步骤 1 之后和步骤 2 之前。

    请参阅mkfs.vfat 联机帮助页

    • 1
  2. Best Answer
    Stephen Kitt
    2024-03-01T02:12:10+08:002024-03-01T02:12:10+08:00

    parted创建分区表和分区条目,但您还需要创建文件系统:parted在步骤 5 后退出,然后使用适当的偏移量创建文件系统(我正在使用它,-v以便mkfs.vfat显示它正在做什么):

    $ /sbin/mkfs.vfat -v --offset 2048 DISK1.img
    mkfs.fat 4.2 (2021-01-31)
    Auto-selecting FAT32 for large filesystem
    DISK1.img has 64 heads and 63 sectors per track,
    hidden sectors 0x0000;
    logical sector size is 512,
    using 0xf8 media descriptor, with 2455551 sectors;
    drive number 0x80;
    filesystem has 2 32-bit FATs and 8 sectors per cluster.
    FAT size is 2400 sectors, and provides 306339 clusters.
    There are 32 reserved sectors.
    Volume ID is 97413b09, no volume label.
    

    这会将第一个分区(从扇区 2048 开始)格式化为 FAT32 卷。当您重新加载图像时parted,它将显示:

    $ /sbin/parted DISK1.img
    …
    (parted) print
    Disk …/DISK1.img: 1258MB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start   End     Size    Type     File system  Flags
     1      1049kB  1258MB  1257MB  primary  fat32        lba
    

    一般来说,要在处理图像时确定适当的偏移量,您可以将单位更改为parted扇区:

    (parted) unit s                                                           
    (parted) print                                                            
    Model:  (file)
    Disk …/DISK1.img: 2457600s
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start  End       Size      Type     File system  Flags
     1      2048s  2457599s  2455552s  primary  fat32        lba
    

    (请注意,由于您正在处理自己的磁盘映像,因此不需要sudo,只需指定 和 的完整路径,parted因为mkfs.vfat它们位于/sbin或中/usr/sbin,因此不在您的 中PATH。)

    如果您的映像中不需要分区表,您可能会发现使用文件系统映像比使用完整磁盘映像更容易;您可以通过一个命令完成所有操作mkfs.vfat:

    $ /sbin/mkfs.vfat -v -C DISK2.img $((1200*1024))
    mkfs.fat 4.2 (2021-01-31)
    Auto-selecting FAT32 for large filesystem
    DISK2.img has 64 heads and 63 sectors per track,
    hidden sectors 0x0000;
    logical sector size is 512,
    using 0xf8 media descriptor, with 2457567 sectors;
    drive number 0x80;
    filesystem has 2 32-bit FATs and 8 sectors per cluster.
    FAT size is 2400 sectors, and provides 306591 clusters.
    There are 32 reserved sectors.
    Volume ID is a452a0bf, no volume label.
    
    • 0

相关问题

  • Clonezilla 制作的图像比实际驱动器大小更小

  • 如何捕获 2 个输出值并处理它们

  • 在主动/被动系统之间共享 KVM 虚拟磁盘是否安全

  • 获取 ddrescue 图像文件的内容

  • 使用命令 pv 可以克隆驱动器,如何挂载它?[复制]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve