ループデバイスのパーティションがスクリプトに見つからず、他の場所に表示される

ループデバイスのパーティションがスクリプトに見つからず、他の場所に表示される

現在、パーティショニングを使用してからディスクイメージをフォーマットしようとしています。partedまず、空のディスクイメージをループにマウントし、適切なパーティションを作成し、次を使用してそのパーティションをフォーマットしますmkfs

# Create and loop a blank image.
touch disk.img
truncate disk.img --size 6G
disk_loop=$(sudo losetup -Pf disk.img --show)
echo "Loop at $disk_loop."

# Set up partitions.
sudo parted $disk_loop mklabel gpt mkpart primary fat32 4MiB 516MiB mkpart primary ext4 516MiB 6143MiB

後で作成したパーティションをそれぞれ使用してフォーマットしようとしましたが、パーティションが見つからないためmkfs.fat失敗しました。mkfs.ext4/dev/loopNp1/dev/loopNp2

mkfs.fat 4.1 (2017-01-24)
mkfs.fat: unable to open '/dev/loop32p1': No such file or directory
mke2fs 1.45.5 (07-Jan-2020)
The file '/dev/loop32p2' does not exist and no size was specified.

まだこれらのパーティションを設定していないループに問題があると考えて、次のことを試しました。

  • partprobeフォーマットする前に、デバイスでこれを一度実行してくださいpartprobe /dev/loopN
  • 上記の作業を行った後、5〜20秒早く寝てください。
  • partx -v -a /dev/loopNデバイスまたはリソースが使用中であると不平を言うパーティションを追加します。

スリープモード中に別のコンソールウィンドウを開いて実行しましたが、ls /devパーティションは実際に作成されて表示されましたが、スクリプトはスリープモードの後に​​見つかりませんでした。ここで見落としている点は何ですか?フォーマットする前にこれらのパーティションを使用可能にするにはどうすればよいですか?/dev/loopNp1/dev/loopNp2

いくつかのサンプルスクリプト出力:

... prior script output, then fdisk -l /dev/loop0 is called ...
 
Device        Start      End  Sectors  Size Type
/dev/loop0p1    8192  1056767  1048576  512M Microsoft basic data
/dev/loop0p2 1056768 12580863 11524096  5.5G Linux filesystem
mkfs.fat 4.1 (2017-01-24)
mkfs.fat: unable to open '/dev/loop0p1': No such file or directory
mke2fs 1.45.5 (07-Jan-2020)
The file '/dev/loop0p2' does not exist and no size was specified.

ベストアンサー1

以下を試してくださいqemu-nbd

sudo qemu-nbd -c /dev/nbd0 disk.img

おすすめ記事