아이패드2 활용 실패기

작년 5월쯤에 3G가 되는 아이패드2를 개통했었다. 그러나 작년에 맥북을 넘겨줬듯이 이번에도 얼마전에 동생에게 아이패드2를 넘겨줘버렸다.

처음 실수한 것은 아이패드가 노트북의 역할을 어느 정도 대체할 수 있을 것이라 생각했다는 것이다. 실제로 당시 맥북 프로를 갖고 있었는데, 이걸로 하는 것도 딱히 없었고 단지 내 데스크탑 앞에 없을 때나 잠깐 잠깐 활용하는 정도여서 아이패드로 충분히 대체할 수 있을 줄 알았다. 그래서 맥북도 동생한테 줘버렸고.

그런데 실제로 대체하는 것은 너무 어려웠다. 아이패드는 본디 컨텐츠의 소비에 초점을 맞춘 기기이기 때문에 내가 데스크탑이든 맥북으로 하던 컨텐츠의 생산 활동, 예를 들자면 문서 작성, 블로그 글 게시, 프로그램 코드 작성 등 이런 것들은 아이패드에서는 거의 불가능했다. 물론 제한적으로나마 가능은 하지만 그 효율과 용이함을 따졌을 때 그냥 미뤄두고 집에서 데스크탑으로 작업하는 게 더 나은 선택이었던 경우가 대부분이었다.

그렇다면 컨텐츠의 소비 활동이라면 어떨까. 정말 아이패드는 컨텐츠를 소비하기에는 괜찮은 기기인 것 같다. 다만 여기서 괜찮다고 한정지은 것은, 손에 들고 있는 게 아이패드 밖에 없을 때에만 그러하다고 생각하기 때문이다. 당연하겠지만 맥북이나 데스크탑 앞에서라면 제아무리 컨텐츠 소비에 초점을 맞춘아이패드라 해도 앞의 기기들보다는 컨텐츠의 소비에서도 한없이 모자라기 때문이다. 웹서핑만 하더라도 플래시가 나오지 않는 걸 포함해서, 페이지 전환 속도, 해상도 등 여러 면에서 부족하다.

결국 맥북을 썼을 때와 마찬가지로 데스크탑에 있지 않을 때, 즉 집 밖에 있을 때에만 아이패드를 활용하게 된다는 것이다. 그런데 내가 살아가는 방식은 쉬는 건 집에서만 쉬고, 밖에서는 밖에서 해야하는 용무만 보는 식이다. 이렇다보니 밖이라한들 아이패드를 집을 일이 거의 없다는 것이다. 고작 버스나 지하철을 탈 때에 무료함을 달래기 위해서 이 무거운 걸 들고다니기에는 너무 귀찮고, 게다가 이미 스마트폰이 있는데 그 짧은 시간동안 그리 대단한 것을 하는 것도 아니기에 스마트폰으로도 잠깐의 유희를 즐기는 데에는 무리가 없었다. 밖에서도 쓸 일이 없었던 것이다.

이리하여 결국 아이패드2의 쓸모를 찾지 못하고, 한 달 5만원씩 꼬박꼬박 내는 이유를 찾지 못해서 그냥 동생에게 넘겨줘버렸다. 이로써 동생은 맥북 프로, 아이폰, 아이패드를 모두 갖게 된 셈이다.

안드로이드에서 ext로 포맷한 SD카드 사용하기 [실패]

친구가 떡밥을 던져서 시작하게 된 삽질.

FAT32 파일시스템은 단일 파일의 크기가 4GiB로 제한되어 있다. 그보다 더 큰 파일을 지원하는 파일시스템 중에서 안드로이드에서 쉽게 사용할 수 있는 파일시스템은 안드로이드도 리눅스 기반이기 때문에 ext 계열의 파일시스템이 유일하다.

그런고로 SD카드에 있던 원래 FAT32의 파티션을 지우고 ext3의 파티션을 새로 만들고 쓰고 있는 휴대폰인 갤럭시S2에 장착해보았다.

인식이 되지 않았다.
다시 말하자면 shell에서 mount 명령어로 수동적으로 마운트를 하는 것은 가능했으나 이를 자동으로 인식하고 마운트하지는 못했다.

좀 더 자세히 알아본 결과, 외장 스토리지는 안드로이드의 vold에 의해 자동적으로 마운트 되는데, 구글에서 안드로이드의 소스코드를 내려본 결과 vfat의 파일시스템에 대해서만 구현이 되어있었다. 다만, vold는 C++로 작성되었는데, 다른 파일시스템도 추후에 구현하여 추가할 수 있도록 설계된 것으로 보아서는 언젠가 다른 파일시스템도 지원할 것으로 보인다.

어쨌든 현재로서는 vfat만을 지원하고 있으니 ext3에 대해서도 구현을 해보기로 했다.
사실 그리 대단한 작업은 아니었다. 전체적인 구조는 그대로 두고, 클래스로 분리되어 구현된 vfat 파일시스템을 마운트하는 코드만 약간 수정하면 ext3도 마운트할 수 있게끔 고치는 작업이 전부였다.

갤럭시S2의 vold 구현과 원래의 vold 구현이 달라서 크고 작은 차이점들이 몇몇 있었지만 그리 중요한 것들은 아니었다. 일단 작업을 끝내고 빌드를 마친 후에 휴대폰에 옮겨본 결과 작동은 잘 됐다.

그러나 전혀 생각지 못한 문제가 있었는데 원래의 vfat 파일시스템을 외장스토리지로 마운트 했을 때에는, uid, gid, umask 옵션을 설정하고 마운트해서 외장스토리지의 모든 디렉토리와 파일이 동일한 사용자, 동일한 그룹, 동일한 권한을 갖고 있었는데 반해, ext3 파일시스템의 경우에는 그러한 옵션이 있지 않고 파일시스템 안의 메타데이터를 그대로 사용하기 때문에 문제가 있었다.

가령 ext3 파일시스템을 외장 스토리지로 마운트하고 카메라 앱을 구동시켜서 외장 스토리지로 사진을 저장하게끔 하고 사진을 찍으면 저장은 잘 되는데, 이때 생성되는 디렉토리와 파일이 카메라 앱이 소유한 것으로 저장되고 권한 또한 소유자 외의 그룹소유자와 그 밖의 사용자는 읽기 권한 조차 주어지지 않았다.

ext3 파일시스템이 마운트되는 디렉토리에 setgid를 통해 그 하위 디렉토리와 파일들이 같은 그룹소유자를 갖도록 해보았으나 역시 그룹사용자도 권한이 전혀 주어지지 않게끔 파일과 디렉토리가 생성되기 때문에 별로 도움이 되지 않았다. umask도 도움이 되지 않았다. 확인해본 결과 umask는 0000이었지만 이와 별개로 앱들은 소유자 자신만 권한을 갖도록 파일과 디렉토리를 생성하고 있었다. 만약 FreeBSD의 구현처럼 Linux도 디렉토리에 setuid를 설정했을 때 setgid처럼 소유자를 상속받도록 구현하고 있다면 실낱같은 희망이 있었겠으나 그런 거 없으므로 곤란하게 되었다.

결론적으로 간단하게 구현하는 것은 불가능했다. ext 파일시스템에 대해서도 uid, gid 등과 같은 마운트 옵션을 제공하도록 커널을 수정하든지 해야하는데 별로 그렇게까지 하고 싶지는 않아서 돌아는 가게 할 수 있었다는 정도에서 끝마치기로 했다.

아이스크림 샌드위치에서는 4기가 이상의 파일을 지원한다고 하니 그거나 기다리는 게 좋을 듯 하다.

이상 삽질기를 마친다.

가상화의 소소한 이점

아톰 베어본으로 간단한 라우터를 만들어서 쓰고 있는데 여기에 겸사겸사 VPN 서버도 올려놨지만 CPU의 성능 상 한계로 VPN 성능이 썩 좋지 못했다. CPU가 소켓으로 장착된 게 아니라서 교체도 어려워서 더 좋은 베어본을 새로 사야하나 싶었는데 필요 이상으로 돈이 들 것 같아서 잠시 고민을 했다.

그러다 든 생각이 VMware ESXi로 돌아가는 하이퍼바이저 서버가 있는데 여기에 VPN 서버를 두는 게 어떨까 싶었다. 다시 말해서, VPN 서버를 가상화해보면 어떨까 생각해봤었다.

행여나 가상 서버라서 느리지 않을까 싶었지만 그래도 아톰보다 느릴까란 생각에 시도해봤는데, 결과는 예상 이상으로 꽤 만족스러웠다. 가상 서버들이 대개 놀고 있는 시간이 많은데, 그 남는 자원을 활용함으로써 새 하드웨어에 대한 지출을 줄일 수 있었다. 별 건 없지만 가상화의 소소한 이점이라 할 수 있겠다.