루프 장치의 파티션을 스크립트에서 찾을 수 없고 다른 곳에서 볼 수 있음

루프 장치의 파티션을 스크립트에서 찾을 수 없고 다른 곳에서 볼 수 있음

현재 파티셔닝을 사용한 다음 디스크 이미지를 포맷하려고 합니다. 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

관련 정보