내 목표는 일반 파일을 만들고 그 안에 파티션과 파일 시스템(실제로는 가상 하드 드라이브)을 만든 다음 마지막으로 마운트하는 것이었으므로 다음과 같이 했습니다.
sudo dd if=/dev/zero of=imagem-zero.img count=20480000
약 20Gb 파일을 생성합니다. 그런 다음 partition 을 사용 cfdisk
하고 그 이후의 파일 상태는 다음과 같습니다.
$ gdisk -l imagem-zero.img
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk imagem-zero.img: 40960000 sectors, 19.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 544A9633-7FA3-4BE8-BEE7-612C151A4504
Partition table holds up to 128 entries
First usable sector is 2048, last usable sector is 40959966
Partitions will be aligned on 2048-sector boundaries
Total free space is 0 sectors (0 bytes)
Number Start (sector) End (sector) Size Code Name
1 2048 16779263 8.0 GiB 8304
2 16779264 40959966 11.5 GiB 8302
이제 이 두 파티션에 파일 시스템을 생성하고 싶지만 ext4
질문 제목에 오류 메시지가 표시되면서 실패했습니다.
$ sudo mkfs.ext4 imagem-zero.img offset=$((2048*512))
mke2fs 1.43.4 (31-Jan-2017)
mkfs.ext4: invalid blocks 'offset=1048576' on device 'imagem-zero.img'
$ sudo mkfs.ext4 imagem-zero.img offset=$((2048))
mke2fs 1.43.4 (31-Jan-2017)
mkfs.ext4: invalid blocks 'offset=2048' on device 'imagem-zero.img'
내 질문은 두 파티션 모두에 파일 시스템을 생성하기 위한 올바른 오프셋을 어떻게 찾느냐는 것입니다.
답변1
-E
스위치를 사용하는 것을 잊었습니다 !
또한 sudo
꼭 필요한 경우가 아니면 사용하지 않는 것이 좋습니다.
여기에는 필요하지 않은 0이 있는 파일을 만듭니다
sudo
.dd if=/dev/zero of=image-zero.dd count=20480000 status=progress
cfdisk
여기서는 필요하지 않지만 필요에 따라 0이 지정된 이미지를 분할합니다 .sudo
cfdisk image-zero.dd
파티션에 파일 시스템을 생성하려면 다음 명령을 사용하십시오. 필요하지 않습니다
sudo
.mkfs.ext4 image-zero.dd -E offset=$(( 512 * 2048 ))
일부 마운트 지점 디렉터리를 만듭니다.
mkdir mnttest
이미지를 설치하려면 다음이 필요합니다
sudo
.sudo mount -t ext4 -o offset=$(( 512 * 2048 )) image-zero.dd ./mnttest
Linux Mint 19에서 테스트되었습니다.
적합한 오프셋을 찾는 방법
귀하의 이미지는 다음과 같습니다:
논리 섹터 크기: 512바이트
첫 번째 파티션의 시작 섹터: 2048
두 번째 파티션 시작 섹터: 16779264
계산하다:
논리 섹터 크기에 파티션의 시작 섹터를 곱하고 셸을 사용하여 계산해 보겠습니다.
결과:
첫 번째 파티션:
offset=$(( 512 * 2048 ))
두 번째 파티션:
offset=$(( 512 * 16779264 ))
답변2
이 옵션을 사용하여 파일 시스템을 생성 할 수 있다고 가정하면 offset=
이를 어떻게 사용하시겠습니까?
맨 페이지에는 다음과 같은 내용이 있습니다.
-E 확장 옵션
파일 시스템의 확장 옵션을 설정합니다. 확장 옵션은 쉼표로 구분되며 등호("=")를 인수로 사용할 수 있습니다.
오프셋 = 오프셋
장치 또는 파일 시작 부분의 오프셋에 파일 시스템을 생성합니다. 이는 가상 머신용 디스크 이미지를 생성할 때 유용합니다.
따라서 올바른 구문은 다음과 같습니다.
sudo mkfs.ext4 imagem-zero.img -E offset=$((2048))
이를 통해 파일 시스템을 생성할 수 있지만 일부 파일을 작성하고 싶을 수도 있습니다. 따라서 순환 장비를 사용하는 것이 좋습니다.
losetup -P -f imagem-zero.img
/dev/loopX
이렇게 하면 및 파티션이 제공 됩니다 /dev/loopXp0
. 이러한 파티션에서 작업하고, 마운트하고, 이러한 파티션에 파일을 쓸 /dev/loopXp1
수 있습니다. mkfs
파티션을 마운트 해제한 후 다음을 수행하십시오.
losetup -d /dev/loopX