Saturday, May 11, 2013

Cài android ra bộ nhớ ngoài cho điện thoại mất bộ nhớ trong

Đây là vấn đề không liên quan đến lập trình android, mà nó liên quan đến sửa điện thoại. Tuy nhiên mình vừa mắc phải sự cố này: con Samsung captivate (I897) đột nhiên chết bộ nhớ trong, bootloop, không thể khởi động lên được. Mình mò mẫm các nơi tìm cách xử lý và tìm được ở xdadeveloper (cái này dùng cho galaxy tab, nhưng cũng tương tự) hay ở youtube (dùng cho I9000M, nhưng cũng tương tự)

CẢNH BÁO: ai có đọc bài này mà cố làm theo thì tự chịu trách nhiệm về hành động của mình! Bạn cần hiểu mình đang làm gì, đọc đi đọc lại cách làm nhiều lần trước khi tiến hành.

Hiện tượng:
+ Bootloop
+ Vào recovery thấy báo lỗi /dev/block/mmcblk0p1
+ Cố gắng format mọi thứ liên quan đến bộ nhớ trong (data, datadata) đều vô dụng

Cách xử lý (ngắn gọn): cài OS ra bộ nhớ ngoài

Cách xử lý (đầy đủ)

Chuẩn bị:
+ Thẻ nhớ càng to càng nhanh càng tốt: như mình 16GB class 10.

+ Phần mềm minitool partition dùng để phân vùng cho thẻ nhớ cho giống với bộ nhớ trong được phân vùng khi xuất xưởng
+ ROM và công cụ để flash ROM (samsung là odin; hãng khác thì không rõ)
+ Công cụ để root và adb.

Tiến hành:

+ Bước 1: dùng minitool partition tạo phân vùng cho thẻ nhớ (cắm vào đầu đọc thẻ USB) giống với bộ nhớ trong khi mà nó được xuất xưởng. Cái này thấy bảo tùy vào điện thoại. Ở con Galaxy S của Samsung (và các biến thể) thì: một Primary + FAT32 (để làm bộ nhớ ngoài) và Primary +Ext4 (để cài os - 2GB-4GB). Cách dùng thì các bạn mò sẽ biết. Chú ý các phân vùng phải là Primary.
+ Bước 2: cắm thẻ nhớ đã phân vùng vào điện thoại và dùng odin (cho samsung) hoặc cái gì tương tự (cho hãng khác) để flash ROM stock vào cho máy. Bạn phải biết cái này rồi. Đừng hỏi cách flash ở đây.
+ Bước 3: chắc là máy đã có thể khởi động. Nhưng vấn đề là nó không nhận phân vùng FAT32 kia làm bộ nhớ ngoài. Phải tiến hành đổi chỗ internal và external  (đây chỉ là ảo thôi, internal chết rồi còn đâu). Nếu ai đã quen thuộc với android: adb, root, thì bước này không quá khó, với ai chưa quen thì mình cũng chịu chả biết phải chỉ dẫn từ đâu.

EDIT:
Bước 3 khá là mơ hồ nên mình sẽ nói thêm, nhưng nó áp dụng cho máy I897 của mình, và không chắc nó sẽ đúng với máy của bạn. Tuy nhiên chắc nó cũng sẽ gần giống.
Ở bước này máy đã có thể khởi động và nhưng nó không nhận vùng nhớ FAT32 làm bộ nhớ ngoài. Bạn cần tiến hành ROOT máy.
Sau đó tải Es explorer về (https://play.google.com/store/apps/details?id=com.estrongs.android.pop). Dùng phần mềm này vì nó có root explorer và text edit khá tiện.
Dùng Es explorer (đã bật chế độ root explorer) tìm đến /system/etc/ 
Mở file vold.fstab
Nội dung file đại khái như sau:
FIXME: Swap again?
# internal sdcard
dev_mount emmc /storage/sdcard1 auto /devices/platform/s3c-sdhci.2/­­­mmc_host/mmc2
# external sdcard
dev_mount sdcard /storage/sdcard0 1 /devices/platform/s3c-sdhci.0/­­­mmc_host/mmc0

Ở phiên bản android khác nhau thì nội dung file nhìn khác nhau. Nhưng dù thế nào thì cũng cứ đổi chỗ 2 cái cho nhau: đỏ đổi với đỏ, xanh đổi với xanh. Nó thành như sau:
FIXME: Swap again?
# internal sdcard
dev_mount sdcard /storage/sdcard0 auto /devices/platform/s3c-sdhci.2/­­­mmc_host/mmc2
# external sdcard
dev_mount emmc /storage/sdcard1 1 /devices/platform/s3c-sdhci.0/­­­mmc_host/mmc0

Save lại.
Restart lại điện thoại là sẽ thấy thẻ nhớ ngoài (chính là vùng FAT32)


10 comments:

  1. bạn ơi! có thể hướng dẫn bước 3 cụ thể hơn tí nữa không? mình sài huawei u8800 mất bộ nhớ trong khi root máy vẫn báo lỗi sao mà đổi chỗ internal và external được.

    ReplyDelete
    Replies
    1. Mình sẽ edit vào trong bài thêm về phần này.

      Delete
  2. Bạn cho mình hỏi làm sao root đc khi nó k nhận bộ nhớ, vì khi mình root nó báo k tìm thấy đường dẫn file update.zip

    ReplyDelete
    Replies
    1. Có nhiều cách root khác mà không cần file update.zip mà.
      Như mình làm thì mình cài ngay bản ROM đã root sẵn. Hoặc phần mềm root từ máy tính như là: kingo android root.

      Delete
    2. Cám ơn b đã trợ giúp, nhưng mình làm k may giờ nó hiện hình điện thoại với máy tính và chấm than ở giữa rồi. Chắc phải đem ra hàng thôi. Cám ơn b nhé

      Delete
    3. Hiện hình điện thoại với máy tính và chấm than ở giữa rồi không có gì đáng ngại đâu. Vẫn có thể flash lại rom bình thường. Trước mình cũng bị vài lần với con captivate rồi.

      Delete
  3. thanhks rất nhiều. đã làm đc

    ReplyDelete
  4. ban oi neu lam binh thuong thi FAT32 cung la` sdcaed1 ma` ban cho minh` hoi ngu ti neu doi~~ cho? nhu vay thi` FAT32 se tro? thanh` bo nho may ha?? tai k hieu buoc cuoi cung` moi hoi vi` cung co 1 em ACE 3 bi chet bo nho trong minh` lam` nhu the nay` thi` ok roi` nhug ma k hieu FAT32 da? la` bo nho ngoai`{the? nho']} roi` thi` can` gi` phai? doi~ cho ma tai sao no k nhan FAT32 la` sdcard1 vay ad

    ReplyDelete
  5. neu nhan dc thi` giai thic minh` nha dang thac mac' lam'

    ReplyDelete
  6. Chào bạn,
    Mình đang sử dụng điện thọai di động Cynus T8 và đã root xong. Theo hướng dẫn của bạn mình đã làm hết mọi cách để tìm file vold.fstab, và cũng đã tìm đến /system/etc/ và toàn bộ trong tất cả các files trong root bằng PC và bằng rất nhiều Apps Root Exploder, kể cả bật chức năng cho hiển thị các files ẩn. Vậy các bạn nào biết làm ơn chỉ mình nhé. Mình đang cài ổ ngoài với 32GB và được format với Fat32.
    Cám ơn bạn rất nhiều

    ReplyDelete