Linux

如何從頭開始創建格式化的分區映像文件?

  • December 8, 2021

/dev/zero我需要從一無所有( )中創建一個只有一個分區的文件系統。我嘗試了以下命令序列:

dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
   n
   p 
   2048
   131072

基本上,我需要創建一個用零填充的 64MB 圖像文件。然後我fdisk為新文件系統(最終應該是 FAT32)添加一個新分區,從扇區開始2048並使用所有剩餘的扇區。

losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1

但在這裡我遇到了問題。如果我設置一個loop設備並使用 格式化它mkfs -t vfat,分區表將被覆蓋,文件系統(FAT32)被放置到磁碟上。我不需要用 FAT32 格式化整個磁碟,我只需要我的主分區就是這樣。

有人知道如何只格式化原始磁碟映像的一個分區,而不是整個映像嗎?

如果在 Linux 上,在載入loop模組時,請確保將max_part選項傳遞給模組,以便循環設備是可分區的。

檢查目前值:

cat /sys/module/loop/parameters/max_part

如果為 0:

modprobe -r loop # unload the module
modprobe loop max_part=31

要使此設置持久化,請將以下行添加到/etc/modprobe.conf或添加到/etc/modprobe.d系統上存在該目錄的文件中:

options loop max_part=31

如果modprobe -r loop因為“Module loop is builtin”而失敗,您需要添加loop.max_part=31到核心命令行並重新啟動。如果您的引導載入程序是 Grub2,請將其添加到GRUB_CMDLINE_LINUXin的值etc/default/grub

現在,您可以創建一個可分區的循環設備:

truncate -s64M file # no need to fill it with zeros, just make it sparse
fdisk file # create partitions
losetup /dev/loop0 file
mkfs.vfat /dev/loop0p1 # for the first partition.
mount /dev/loop0p1 /mnt/

(請注意,您需要一個相對較新的 Linux 版本)。

引用自:https://unix.stackexchange.com/questions/87183