
우분투 12.04 시스템에서 다음 명령을 실행해 보았습니다.
sudo mount minix203.img -o loop -t minix /mnt/myminix/
minix 파티션을 사용하여 .img 파일을 마운트하려면 다음 오류가 발생합니다.
mount: Not a directory
내 명령에 문제가 있나요?
답변1
Bruce가 말한 것이 사실이라고 생각합니다. 여기에는 전체 파티션 테이블이 포함되어 있습니다. 그렇다면 여기서는 사용할 수 없는 것이 없습니다. 다음 명령의 경우 util-linux
버전 2.21 이상이 필요합니다.
sudo losetup --find --show -P minix203.img
그러면 이미지가 루프백 장치에 연결되고 이미지가 연결된 루프백 장치가 표시됩니다(예 /dev/loop0
: ). 가상적으로 fdisk -l /dev/loop0
파티션 테이블과 장치 이름은 마운트할 수 있도록 표시되어야 합니다. 그래서 당신은 다음과 같이 끝날 것입니다 :
sudo mount /dev/loop0p1 -t minix /mnt/myminix
작동해야합니다. 이 loop
옵션이 사라졌으니 losetup
해당 섹션에서 작업하세요.
util-linux
그러나 올바른 버전의 패키지가 없는 경우 fdisk
수동으로 사용하고 수행 할 수 있습니다 losetup
(또는 외부 소스에서 패키지를 설치하는 것이 더 좋습니다). 이 경우에는 몇 가지 계산만 하면 됩니다. 첫 번째는 전체 드라이브의 이미지를 첨부하는 것입니다.
sudo losetup --find --show part.img
이것은 장치 이름을 알려줄 것입니다 /dev/loop0
. 그런 다음 fdisk -l
파티션 레이아웃을 얻으려면 다음을 시도하십시오.
fdisk -l /dev/loop0
내 파일의 경우 다음과 같은 결과가 나타납니다.
Disk /dev/loop0: 67 MB, 67108864 bytes, 131072 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
Disk identifier: 0x2645940b
Device Boot Start End Blocks Id System
/dev/loop0p1 2048 63487 30720 83 Linux
/dev/loop0p2 63488 131071 33792 83 Linux
속지 마십시오. 기존 장치 이름이 아닐 수도 있습니다. 이 테이블을 사용하여 마운트할 파티션을 결정해야 합니다. 크기나 파일 시스템 유형에 따라 몇 가지 가정을 해야 합니다.
이제 계산 시간입니다. 파티션의 오프셋과 크기가 필요합니다. 섹터 크기에 단위 크기를 곱하여 결과(바이트)를 얻을 수 있습니다. 내 섹터 크기가 512바이트라는 것을 알 수 있으므로 fdisk
마운트하려는 경우 /dev/loop0p1
(2048 * 512)바이트에서 시작됩니다. 이는 1048576과 동일한 오프셋입니다(물론 이 예의 경우).
섹터 크기는 end_sector_number - start_sector_number + 1
이 숫자를 포함하므로(최종 섹터는 해당 크기 내에 있음)입니다. 여기서는 61440 섹터 == 31457280 바이트와 같습니다. 그게 우리에게 필요한 전부입니다.
이제 루프백 장치를 분리했다가 다시 연결하여 마운트하려는 특정 파티션으로 크기를 제한할 수 있습니다(이 숫자를 원하는 것으로 바꾸십시오).
sudo loopback -d /dev/loop0
sudo loopback -f --show -o 1048576 --sizelimit 31457280 part.img
에 연결할 수 있습니다 /dev/loop0
. 이제 안전하게 설치할 수 있습니다.
mount -t minix /dev/loop0 /mnt/myminix
이는 전체 드라이브의 MBR이 일반적으로 영향을 받는 상황(예: mkfs로 포맷)을 제외하고는 거의 완전히 작동해야 합니다.
어떻게 작동하나요?
MBR 파티션 테이블의 레이아웃은 간단합니다. 먼저 파티션이 시작하고 끝나는 위치에 대한 512바이트 설명과 데이터가 있습니다. 확장된 파티션의 경우 이는 다소 어려울 수 있습니다. 일반 하드 드라이브에 대해 커널이 직접 수행하는 파티션 제한을 수동으로 설정할 수 있습니다.
답변2
꽤 오래된 Minix 버전입니다.
하나 있다Google 그룹스 페이지귀하의 답변은 다음과 같습니다. 해당 기사를 인용하자면:
minix203.img에는 파티션 테이블을 포함한 완전한 HD 이미지가 있습니다. 마운트는 처음에 첫 번째 파티션이 아닌 파티션 테이블을 검색합니다. 그래서 설치에 실패했습니다.
나는 최신 Minix 3 ISO 이미지에도 동일한 상황이 존재한다고 생각합니다. 설치 프로그램은 더 작은 Joliet 파일 시스템과 더 큰 Minix 파일 시스템이 있다는 것을 알고 있습니다. 따라서 ISO 이미지(루프백)를 마운트하고 콘텐츠를 볼 수는 없습니다.
답변3
이 답변은 당장 관련이 없을 수도 있지만 설문조사에서 찾았습니다.
chroot 구조.
내 상황:
컴퓨터에 Ubuntu를 설치한 후 Windows를 설치했는데 부트로더(grub)가 손상되어운영 체제 감지기시스템에서 Ubuntu 이미지를 볼 수 없습니다.
내가 한 일은 다음과 같습니다.
1) Ubuntu Live CD를 사용하여 부팅합니다.
2) 디스크 관리자에서 내 볼륨의 위치를 찾습니다:
root - /dev/sda6
boot - /dev/sda8
3) 임시 디렉터리 /tmp/mydir을 만들고 루트로 다음 명령을 실행합니다.
mount /dev/sda6 /tmp/mydir
mount --bind /proc /tmp/mydir/proc
mount --bind /sys /tmp/mydir/sys
mount --bind /dev /tmp/mydir/dev
mount --bind /dev/pts /tmp/mydir/dev/pts
마지막으로 부팅 장치 /dev/sda8을 /tmp/mydir/boot 폴더에 바인딩하려고 하는데 문제가 시작됩니다.
mount --bind /dev/sda8 /tmp/mydir/boot
다음 오류가 발생합니다.
mount : not a directory
처음에는 이것과 이것 사이에서 조금 헷갈렸어요GitHub 기사나를 위해 해결했습니다. 이미 마운트된 장치(여기서는 /dev/sda6)에 장치(여기서는 /dev/sda8)를 마운트하려고 할 때 문제가 발생합니다. 간단히 말해서 해당 --bind
옵션에는 입력으로 /dev/sda8과 같은 블록 장치가 아닌 디렉터리가 필요하기 때문에 이 작업을 수행할 수 없습니다 .
이제 좋은 소식이 왔습니다! 해결책이 있습니다. 부팅 볼륨을 /tmp의 다른 디렉터리에 마운트한 다음 이 디렉터리를 /tmp/mydir/boot에 바인딩했습니다.
mount /dev/sda8 /tmp/booty
mount --bind /tmp/booty /tmp/mydir/boot
이로 인해 mount : not a directory
오류가 해결되었습니다.
chroot
4) 나는 마지막 문제를 해결하기 위해 구조 하러 갔다 .