문제

Linux FileSystem에서 루프를 어떻게 작성합니까? Linux 파일 시스템의 DAG (Directed Acyclic Graph) 속성을 깨고 싶습니다. 이게 가능해? 우분투에 스크래치 박스 크로스 컴파일러를 설치했을 때이 조건을 한 번 보았습니다.

나는 지금 그것을 재생산하는 방법을 모른다.

도움이 되었습니까?

해결책

다른 응답자들은 이미 루프백 장치를 사용하여 마운트를 설정하는 방법에 답했지만 구체적으로 물었습니다. bind 조금 다른 마운트. 바인드 마운트를 사용하려면 --bind 마운트 명령에서. 예를 들어:

mount --bind /original/path /new/path

이렇게하면 파일 시스템 위치에 액세스 할 수 있습니다 /original/path 또한 접근 가능 /new/path. 이것이 그렇게 될 것입니다 ~ 아니다 MountPoints 다음! 예를 들어 다음 마운트 포인트가 있다고 가정합니다.

/something
/something/underneath/that

이제 내가 만든다고 가정 해 봅시다 bind 마운트 /something:

mount --bind /something /new_something

같은 파일에 액세스 할 수 있습니다 /something/myfile 경로를 통해 /new_something/myfile. 그러나 전 할겁니다 ~ 아니다 같은 파일에 액세스 할 수 있습니다 /something/underneath/that/otherfile 경로를 통해 /new_something/underneath/that/otherfile. 별도를 설정해야합니다 bind 각 파일 시스템 마운트; 또는 비교적 새로운 커널이있는 경우 사용할 수 있습니다. rbind 마운트 하다 MountPoints를 따르십시오 :

mount --rbind /something /new_something

하나의 경고 rbind 마운트 : 파일 시스템이 다음에 장착 된 경우를 처리하지 않습니다. rbind 설정입니다. 즉, 다음과 같은 산이 있다고 가정 해 봅시다.

/something

그런 다음 내 설정을 설정했습니다 rbind 위와 같이 그 다음에 나는 마운트한다 /something/underneath/that: rbind 마술처럼 새 마운트를 rbind 위치. 또한 커널의 버그로 인해 분명히 마운트 할 수는 없습니다. rbind 산.

또한 "마운트 (2) 시스템 호출을 사용하여 바인드 마운트를 설정하는 방법"을 의미하는 경우를 대비하여 : MS_BIND 깃발 (정의 된 mount.h) 전화 할 때 mount(2) 정기적으로 bind 산. 용을 위해 rbind 마운트, 당신은 지정해야합니다 MS_BIND 그리고 문서화 MS_REC 깃발 (정의 된 linux/fs.h).

도움이되기를 바랍니다.

에릭 멜스키

다른 팁

지금까지 모든 답변은 루프백 장치에 장착하고 사용 루프를 생성하지 않는 것 같습니다. 바인딩 마운트.

아마 발견했듯이

$ mkdir -p test/test
$ mount --bind test test/test

액세스 할 수 있습니다 test/test/test, 그리고 더 이상. 조차도

$ mount --rbind test test/test

재귀 바인드-마운트는 소스에서 기존 마운트를 찾고 대상에 바인딩하기 때문에 작동합니다.

바인드 마운트가 마운트 포인트를 교차하지 않기 때문에 요청한 것은 불가능합니다. 파일 시스템 루프를 정말로 시뮬레이션하려면 의사 결합 마운트를 사용해보십시오. Localfs. 나는 나 자신을 시도하지 않았다. 그 자체로 제공되는 파일 시스템을 읽을 때 잠겨있을 수있다. 방금 NFS 트리를 crossmnt 그 자체로 그것을 장착하지만 비슷한 이유로 실패합니다.

mount /path/to/device /path/to/mount/location -o loop

여기서/path/to/device는 마운트하려는 파티션 또는 디스크 이미지로가는 경로로,/path/to/mount/location은 장치/이미지를 장착하려는 폴더의 경로입니다. 아래에

SO와 같은 파일 시스템의 유형을 포함해야 할 수도 있습니다 (FAT16/FAT32 사용) :

mount /path/to/device /path/to/mount/location -o loop -t vfat

처음부터 하나를 만들 수 있습니다.

먼저 이미지 파일을 만들고 초기화하십시오

dd if=/dev/zero of=/tmp/loop.img bs=1024k count=$IMG_SIZE

다음으로 FS 유형의 선택을 사용하여 유효한 파티션으로 만드십시오.

mkfs.ext3 -F /tmp/loop.img

새 이미지를 장착하십시오

mkdir -p /mnt/image
mount /tmp/loop.img /mnt/image -o loop

이제 새 이미지에서 파일 및 디렉토리를 만들/복사 할 수 있습니다.

재미있어

젠장!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top