android phone(난 HTC desire를 사용한다)의 SD card는 vfat 형식의 filesystem을 사용하고 있으며, android platform에서는 핵심적인 component이다. vfat은 그 기반이 매우 빈약하여 현재 통용되는 filesystem 중에 가장 문제를 만들어낼 가능성이 크다할 수 있다.
data storage의 문제는 여러가지가 있겠지만, 내가 겪은 문제는 SD card를 umount하고 phone을 shutdown/bringup해 버리면 일시적인 해결이 가능한 것으로 미루어 보아, SD card 자체의 결함이거나 filesystem의 논리적인 오류일 가능성이 컸다고 판단했다.
SD card 자체 결함, 즉 hardware적인 문제라면 SD card를 새 것으로 교체하는 것으로 해결할 수 있다. filesystem, vfat의 논리적인 오류라면 filesystem을 새로 작성하면 해결될 것으로 기대했다.
우선 당장할 수 있는 것부터 해 보는 것이 맞는 선택.
HTC desire에서 SD card를 축출한 다음, 나의 laptop에 삽입했다. 나의 laptop은 ubuntu가 동작하고 있다. 일단 directory를 살펴보니, /LOST.DIR 에 여든개 이상의 파일들이 숫자를 이름으로 하여 있었다. unix filesystem 혹은 이와 유사한 filesystem(ext3 等)에서 볼 수 있는 'lost+found'의 vfat 버전으로 간략 설명할 수 있다. 이름에서도 알 수 있듯이 '유실물 보관소' 즉, files가 제 자리를 잃고 있어야 할 곳에서의 chine이 끊어진 것들이라 볼 수 있다. 이들은 대부분 data 유실과 관계가 있다. 파일의 성격은 대부분 web browser의 cache라고 의심했고, 성격을 알 수 없는 files도 다수 있었다 - 도체 난 어떤 data를 잃어버린 것일까?
난 tar 명령으로 SD card 內의 모든 files를 backup하고, 'mkfs -t vfat'으로 filesytem을 다시 작성했다. ext3 filesystem도 시도해 봤지만, android 2.1에서는 인식하지 못하였다(booting이 끝나자 인식할 수 없는 SD card를 format하겠냐고 물어오는 대화상자가 떴다). mobile phone과 같이 작은 전자기기에서 내부경계를 고려하지 않는 것이 어쩌면, 더 나은 결과(활용성 용이성 단순함)를 낳을 수 있고 FAT 계열의 채용은 관련된 platform 설계시 보다 diet하게 만들 수 있는 이점이 분명있다. 하지만, (기본값은 아니더라도) kernel에 ext3 정도를 인식할 수 있게 만들면 android platform이 비대해질까? kernel 뿐만 아니라, apps 등 많은 부분에서 복잡성이 더해질 수 있겠다는 생각을 해 본다. 하지만, 분명 사용자의 불편은 비켜갈 수 있다는 생각이다.
filesystem을 새로 작성한 (물론 vfat이다) SD card를 mount한 다음, tar로 묶어 놓았던 것을 restore했다.
android platform의 문제도 HTC desire의 문제도 물론 아니었다. (현재까지의 결과에 비추어 보면)
jhin@jhin-laptop:~$ mount //---------------- snip -------------------// /dev/mmcblk0p1 on /media/6362-6464 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=202100,gid=202100,shortname=mixed,dmask=0077,utf8=1,flush)
이 문제는 종국에, Micro SD Card를 새로 구매하는 수준에서 일단락되었다. 번들되었던 8GB Micro SD Card의 국지적인 문제였다. 현재 SanDisk에서 제작된 32GB의 그것으로 교체하였다.
No comments:
Post a Comment