Loopdevice 파티션이 표시되지 않습니다

Loopdevice 파티션이 표시되지 않습니다

디스크에 파티션과 파일 시스템을 생성하는 프로그램이 있습니다. 테스트하기 위해 이미지 파일을 만들었습니다.

dd if=/dev/zero of=disk.img bs=1M count=100

그리고 다음을 설치하세요:

sudo losetup /dev/loop0 disk.img

파티셔닝 프로세스가 작동하는 것 같지만 오류가 발생합니다 mkfs.

mkfs.vfat: unable to open /dev/loop0p2: No such file or directory

파티션을 볼 수 있습니다 fdisk -l.

sudo fdisk -l /dev/loop0
Disk /dev/loop0: 1000 MiB, 1048576000 bytes, 2048000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B2CB131D-0091-4102-89E1-1D94EC49484A

Device         Start     End Sectors  Size Type
/dev/loop0p1    2048   10239    8192    4M BIOS boot
/dev/loop0p2   10240  272383  262144  128M EFI System
/dev/loop0p3  272384 1320959 1048576  512M Linux swap
/dev/loop0p4 1320960 2047966  727007  355M Linux filesystem

그러나 다음은 포함되지 않습니다 lsblk:

sudo lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0  1000M  0 loop 
sda      8:0    0 465,8G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi
├─sda2   8:2    0 457,3G  0 part /
└─sda3   8:3    0     8G  0 part [SWAP]

내가 뭘 잘못했나요?

답변1

partprobe( parted패키지의 일부인) 을 사용해 보십시오 . kpartx그렇지 않으면 커널이 파티션에 대한 정보를 얻게 됩니다.

마운트/파티션 루프백 장치로 인해 커널이 항상 파티션 테이블을 다시 읽는 것은 아닙니다.

정보를 얻을 때 일반적인 시나리오는 다음과 같습니다.

Re-reading the partition table failed.: Device or resource busy.
The kernel still uses old table [...]

losetup -P다음 명령을 사용하여 커널이 루프백 장치의 파티션 테이블을 다시 읽도록 강제할 수도 있습니다.

설명서에 명시된 대로:

   -P, --partscan
          Force the kernel to scan the partition table on a newly created loop device.

관련 정보