Làm thế nào để gắn kết / hệ thống ghi lại hoặc chỉ đọc? (RW / RO)


55

Làm cách nào tôi có thể gắn /systemthư mục có thể ghi lại hoặc chỉ đọc trên điện thoại Android của mình?

Câu trả lời:


63

Có một vài phương pháp để bạn có thể gắn /systemthư mục RW hoặc RO của mình. Tuy nhiên, nó sẽ yêu cầu root.

Cách 1:

  1. Kết nối điện thoại của bạn với máy tính. (Đảm bảo gỡ lỗi USB được bật trên điện thoại của bạn)

  2. Mở CMD/ Terminaltrên PC của bạn.

    • Windows: CTRL+ R, sau đó gõ cmd.

    • Ubuntu: CTRL+ ALT+ T.

    • Mac: Điều hướng đến /Applications/Utilities/và nhấp đúp vào Terminal .

  3. Nhập cái này:

    1. adb shell
    2. su

    3. Chọn một: (để bảo mật gắn kết /systemtrở lại RO khi kết thúc)

      • Hệ thống gắn kết RW: mount -o rw,remount /system
      • Hệ thống núi RO: mount -o ro,remount /system

Cách 2:

  1. Mở terminaltrên điện thoại Android của bạn (tải xuống tại đây ):
  2. Nhập cái này vào terminal:

    1. su

    2. Chọn một: (để bảo mật gắn kết /systemtrở lại RO khi kết thúc)

      • Hệ thống gắn kết RW: mount -o rw,remount /system
      • Hệ thống núi RO: mount -o ro,remount /system

Cách 3:

Nếu bạn không muốn gõ lệnh mỗi lần trong thiết bị đầu cuối, tôi đã viết một ứng dụng được thiết kế để thực hiện điều này cho bạn:


Android 2.3

Đối với những người chạy Android 2.3 và lệnh không thành công, hãy xem câu trả lời này: https://android.stackexchange.com/a/125437/95577


4
Có vẻ như điều này (phương pháp 1) không còn hoạt động trên Android mới nữa. Tôi đang cố gắng thực hiện trên trình giả lập Android chạy Android 6, nhưng luôn gặp lỗi "mount: hệ thống tệp chỉ đọc". Tôi đã chạy adb root, nhưng nó không có gì khác biệt. Bất kỳ ý tưởng về những gì có thể được thực hiện?
diidu

1
Tôi hiểu rồi Tôi phải sử dụng tùy chọn dòng lệnh -writable-system khi khởi động trình giả lập. Sau đó, lần đầu tiên adb dường như thành công. Có vẻ như ... tôi chưa thấy nó thay đổi thành rw.
diidu

trình giả lập -writable vẫn là câu trả lời đúng.
Edgar Aroutiounian

"Dành cho những người chạy Android 2.3" - cụm từ đó không giao tiếp tốt. Tôi đoán bạn có nghĩa là> = 2.3 hoặc <= 2.3 (hoặc, ít có khả năng, chính xác là 2,3 nếu chỉ có một lỗi cụ thể trong 2.3) nhưng chúng tôi không biết đó là gì hoặc tại sao.
Don nở

2

-writable-system cho trình giả lập

Khi khởi chạy trình giả lập sau khi xây dựng, bạn phải sử dụng:

. build/envsetup.sh
lunch aosp_x86_64-eng
emulator -show-kernel -verbose -writable-system

Sau đó, để chạy trong tương lai, bạn phải giữ -writable-systemtùy chọn, nếu không các thay đổi hình ảnh sẽ không hiển thị:

emulator -show-kernel -verbose -writable-system

-verbosecho chúng ta thấy trình giả lập chuyển từ mặc định -drive:

if=none,index=0,id=system,file=/path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img,read-only

đến:

if=none,index=0,id=system,file=/path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576

Vì vậy, nó:

  • loại bỏ ,read-only

  • sử dụng system-qemu.img.qcow2thay vì system-qemu.img.

    Điều này ngụ ý rằng những thay đổi sẽ chỉ được nhìn thấy sau đó nếu bạn đi -writable-sytemđôi ủng trong tương lai sau khi thay đổi được thực hiện!

    Chúng ta có thể thấy rằng hình ảnh qcow2 chỉ là một lớp phủ nhỏ trên đầu của hình ảnh cơ sở kể từ:

    qemu-img info /path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img.qcow2
    

    chứa đựng:

    backing file: /path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img
    

Trình giả lập -helpcũng xác nhận điều này:

emulator -help

chứa đựng:

-writable-system     make system & vendor image writable after 'adb remount'

adb remount + adb root

Tôi nghĩ rằng đây chỉ là một phím tắt mountnhư được đề cập tại https://android.stackexchange.com/a/110928/126934 , nhưng nó rất thuận tiện:

adb root
adb remount
adb shell

adb help chứa đựng:

 root                     restart adbd with root permissions
 remount
     remount /system, /vendor, and /oem partitions read-write

Khôi phục hình ảnh hệ thống ban đầu

Tương tự như đối với userdata: xóa .qcow2lớp phủ và tạo lại nó theo cách thủ công: https://stackoverflow.com/questions/54446680/how-to-reset-the-userdata-image-when-building-android-aosp-and- chạy trên nó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.