2014년 2월 13일 목요일

ODROID에 EXT4 외장 저장장치 사용하기(Use external storage fomatted Ext filesystem on ODROID)

ODROID에 microSD(SD)와 USB 이동식 저장 장치를 지원합니다.

지원되는 파일시스템이 fat32와 NTFS를 지원합니다.
fat에는 4Gbyte 이상의 파일을 넣을 수 없는 문제가 있습니다.
NTFS는 4Gbyte이상의 파일을 넣을 수 있지만 readonly로만 mount 되고 불안전 합니다.
그래서 Ext4 파일 시스템을 지원해 보겠습니다.

system/vold/Volume.h/cpp를 아래와 같이 Ext4를 추가 합니다.

 50 protected:
 51     char *mLabel;
 52     char *mMountpoint;
 53     VolumeManager *mVm;                                                                              
 54     bool mDebug;
 55     int mPartIdx;
 56     int mOrigPartIdx;                                                                                
 57     bool mRetryMount;                                                                                
 58     int filesystem;                                                                                  
 59    

 46 #include "Fat.h"
 47 #include "Ntfs.h"
 48 #include "Ext4.h"
 49 #include "Process.h"
 50 #include "cryptfs.h"

260     if (filesystem == VFAT) {
261         if (Fat::format(devicePath, 0)) {
262             SLOGE("Failed to format (%s)", strerror(errno));
263             goto err;
264         }
265     } else if (filesystem == EXT4) {
266         if (Ext4::format(devicePath)) {
267             SLOGE("Failed to format (%s)", strerror(errno));
268             goto err;
269         }
270     }

403     filesystem = VFAT;
404 
405     for (i = 0; i < n; i++) {
406         char devicePath[255];
407 
408         sprintf(devicePath, "/dev/block/vold/%d:%d", MAJOR(deviceNodes[i]),
409                 MINOR(deviceNodes[i]));
410 
411         SLOGI("%s being considered for volume %s\n", devicePath, getLabel());
412 
413         errno = 0;
414         setState(Volume::State_Checking);
415 
416         if (Fat::check(devicePath)) {
417             if (errno == ENODATA) {
418                 SLOGW("%s does not contain a FAT filesystem\n", devicePath);
419                 if (Ntfs::doMount(devicePath, getMountpoint(), false, false, false,
420                     1000, 1015, 0702, false)) {
421                     SLOGE("%s failed to mount via NTFS (%s)\n", devicePath, strerror(errno));
422                     if (Ext4::doMount(devicePath, getMountpoint(), false, false, false)) {
423                         SLOGE("%s failed to mount via Ext4 (%s)\n", devicePath, strerror(errno));
424                     } else {
425                         filesystem = EXT4;
426                         SLOGE("Ext4 mounted");
427                         continue;
428                     }
429                 } else {
430                     filesystem = NTFS;
431                     SLOGE("NTFS mounted");
432                     continue;
433                 }
434             }

ubuntu PC에서 SD Card나 USB Storage를 Ext4로 format하시고 아래와 같이 권한을 변경해 주세요.

sudo nautilus로 실행하시면 됩니다.




댓글 쓰기