터미널에서 특정 폴더에 디스크 이미지 마운트하기

이전에 쓴 Case-sensitive partition 생성에 그냥 이어서 진행합니다.

디스크 이미지를 마운트 하는 것도 hdiutil을 이용합니다. 작업 순서는 다음과 같습니다.

  1. 마운트할 폴더를 생성한다. 본인이 쓰기 편한 폴더를 만들어서 거기에 마운트 시키면 된다.
  2. 해당 폴더에 아래 명령어를 입력하여 마운트를 시킨다.

hdiutil attach ~/ext_disk.dmg -mountpoint ~/ext_disk

스크린샷 2014-02-07 오후 9.40.42

위에 처럼 디스크 정보를 보여주면서 출력 되면 마운트가 된 상황입니다.

근데 이게 글 하나를 쓸 정도의 내용인가요?

이거 자기가 뭔 작업했는지 모르면 무지 헷갈립니다. ㅇㅅㅇ;;

제가 제 홈폴더에 직접 작업을 했습니다. 이걸 파인더로 열어서 보면 어떤 상황일까요? 그냥 ext_disk란 폴더랑 ext_disk.dmg 파일 있겠지라고 생각하시겠죠?

 

GUI로만 보면 모릅니다. ㅇㅅㅇ 저기 밑에 보면 untitled 라고 되어 있는 장비에 있는 것이 마운트 된 것이라는 건 누구나 알겠지만, 저 홈폴더 밑에 목록에 똑같이 untitled라고 나와 있는 것이 ext_disk 폴더라는 것은 모를 수 있습니다. 이걸 터미널로 확인해 보죠.

ext_disk 라고 제대로 폴더 표기도 되어있죠? 저기로 이동하면 그대로 파일 쓰고 할 수도 있도록 되어 있습니다. 리눅스에 익숙한 분들이라면 이런 사용방법 좋아하실지도요. ㅇㅂㅇ;

저도 첨에 뭐가 뭔지 몰랐던 바보같은 짓을 했었기에 한번 알려드리려고 적어봤습니다.

p.s. 규링은 첨에 삽질 많이 합니다….
p.s.2. 이건 일본의 어떤 이상한 용자 블로그에서 찾은 글인데.. 저기에 공개 키 이용해서 맘대로 마운트 못하게 하는 디스크 만들고 거기다 ㅇㄷ 넣는 인간들도 있다고 합니다. (왜그러냐..)

Case-sensitive partition 생성

이전 글에서 대소문자 구분 가능한 파티션과 그렇지 않은 파티션이 있다고 대충 알려만 준 상태인데… 그럼 대소문자 구분 가능한 파티션을 일일이 디스크 관리에서 만들고 해야 할까요?

아뇨. 터미널 열고 명령어 한번만 치면 dmg 이미지 파일(디스크 이미지 파일)을 쉽게 만들 수 있습니다. (생성 시간은 좀 걸립니다)

hdiutil create -fs ‘Case-sensitive Journaled HFS+’ -size 40g ~/ext_disk.dmg

맥 OS X에서의 이미지 생성 툴인 hdiutil 명령을 이용하여 생성할 수 있습니다. 사용 방법은 이 링크를 클릭하시면 애플 개발자 센터 문서를 보실 수 있습니다. 내용이 많기 때문에 우선 명령어로 쓴 부분만 간단하게 설명을 드리기로 하죠.

  • -fs [파일시스템]: 파일 시스템을 적습니다. 오타 하나라도 나면 안되기 때문에 반드시 문서를 보고 쓰셔야 합니다.
  • -size [용량]: 디스크 이미지 파일의 용량을 지정합니다. 고정 용량이기 때문에 저처럼 바로 40g로 잡고 하면 디스크 용량이 40G 줄어들어 있을 겁니다. ㅇㅅㅇ;;
  • [파일 이름]: 생성할 파일 디렉토리와 파일 이름을 지정해 줍니다.

스크립트를 실행한 후에 파일이 생겼는지 확인했습니다.

 

용량 제대로 먹고 있습니다. ㅇㅅㅇ;;

그럼 이걸 마운트 해서 써야겠죠? GUI 에서 마운트 하는 것이야 더블클릭 하면 됩니다. 그리고 Volume 폴더에서 찾아서 들어가면 됩니다. 그러나, 리눅스와 유닉스 같이 원하는 폴더에 마운트하여 쓸 수도 있습니다. 그 방법을 알려드리겠습니다.

case-preserving but case-insensitive

맥 OS의 파티션에 대해서 알아볼 때, 다음과 같은 경우를 볼 수 있습니다. (디스크 관리에서 파티션 설정하고 포맷할 때 보실 수 있습니다.

 

Mac OS X 확장에 보시면 한글로는 대소문자 구분이라고 되어 있죠. 근데 아마 여러분이 처음 사신 맥의 파티션에는 대소문자 구분에 대한 것이 안되어 있는 그냥 일반 저널링만 된 파티션이 보일 것입니다.

근데 이게 제가 쓰면서 알게 된 글의 대상이 되었습니다. 바로 다른 소스에 크로스 컴파일을 할 때(특히 리눅스에서만 동작하는 소스들)을 쓸 때 여러모로 문제가 되더군요. Git같은 버전관리 시스템의 경우에도 대소문자 구분되는 파티션 시스템에서 처리되는 것과 아닌 것에 대해서는 동작이 전혀 다르게 돌아가기도 합니다. (잘 되긴 하죠. 근데 몇몇 분들처럼 warning을 보기 싫다면 파티션 같은 부분도 고려해야 합니다만..)

이번에 제가 리눅스 커널 소스를 맥에서 빌드해 보면서 case-sensitive 파일시스템을 사용한 디스크 파티션이 필요해서 여러모로 알아보다가 이게 차이가 있는 녀석이란 걸 알게 되었습니다.

다음 글에는 case-sensitive한 파티션을 만들어서 쓰는 방법을 소개해 드리겠습니다.