พยายามที่จะแฟลช system.img ฉันเอากับ dd - ล้มเหลว


16

ผู้ชาย UNIX เป็นเวลานานที่นี่ แต่ค่อนข้างใหม่สำหรับโลกของ Android อ่านต่อ.

ตอนที่ 1: การสำรองข้อมูลใหม่ (ฉันหวังว่า)

ฉันเพิ่งซื้อ Asus MemoPAD (ME103K) เมื่อเร็ว ๆ นี้; จากนั้นฉันเริ่มรูทและนำddรูปsystemพาร์ติชั่นแบบอ่านอย่างเดียวไปยังการ์ด SD ภายนอก:

$ su
# dd if=/dev/block/platform/msm_sdcc.1/by-name/system \
         of=/storage/MicroSD/system.img bs=1M
# ls -l /storage/MicroSD/system.img
-rw-r--r-- 1 root root 2147483648 Sep 27 13:15 system.img

ขนาด (2GiB ที่แน่นอน) ค่อนข้างน่าสงสัย - เป็นไปได้ไหมว่านี่เป็นเพราะพาร์ติชัน FAT32 บนการ์ด SD?

ไม่ไม่ - tune2fs -lเปิดเผยว่านี่เป็นภาพ EXT4 ที่ถูกต้องซึ่งมีขนาดเท่ากับ 2GiB ซึ่งผ่านไปfsck -fโดยไม่มีข้อผิดพลาด แต่อย่างใด และfastboot(จากเครื่องลินุกซ์ที่ติดอยู่กับแท็บเล็ต) เห็นด้วยหลังจากadb reboot bootloader:

linuxbox# fastboot getvar all
(bootloader)  version-bootloader: 3.03
(bootloader)  version-hardware: rev_c
(bootloader)  variant: LEOPARDCAT 16G
(bootloader)  version-baseband: H00_0.16.F_0521
(bootloader)  serialno: 0a3dXXXX
...
(bootloader)  partition-type:system: ext4
(bootloader)  partition-size:system: 0x0000000080000000

ขนาดนั้นแน่นอน 2GB:

linuxbox# python2 -c 'print 0x0000000080000000'
2147483648

ดังนั้นทั้งหมดเป็นสิ่งที่ดี - ฉันมีการสำรองข้อมูลของภาพ ตอนนี้เพื่อทดสอบการกู้คืน

ฉันพยายามแฟลช system.img กลับไปที่แท็บเล็ต - เพื่อให้แน่ใจว่าฉันสามารถกู้คืนได้จากทุกสิ่งการสำรองข้อมูลแบบกันกระสุนที่เราทำในโลก Unix ( เช่นคืนค่าเนื้อหาของไดรฟ์ผ่านdd if=backup.image of=/dev/sdXXX )

ทุกอย่างเกี่ยวข้องกับadbและfastbootทำงานอย่างไม่มีที่ติ - ดังนั้นฉันจึงลอง ...

linux_box# fastboot devices
0a3dXXXX     fastboot

linux_box# mount /dev/sdcard /mnt/sdcard
linux_box# cp /mnt/sdcard/system.img .
linux_box# fastboot flash system system.img
error: cannot load 'system.img'

อืมมม ฉันดาวน์โหลดและสร้างการandroid-tools-5.1.1กระจายของฉันจากแหล่งที่มาเพิ่มข้อมูลการดีบัก - และขั้นตอนในการดีบักเกอร์เพื่อดูความล้มเหลวนี้:

linuxbox# gdb --args fastboot flash system system.img
...

ความล้มเหลวเนื่องจากขนาดลบ!

ที่น่าสนใจ - แม้ว่าฉันอยู่ในเครื่อง 64bit เห็นได้ชัดว่ามีปัญหาที่จะเปลี่ยนขนาดของไฟล์ "เชิงลบ" (ในโลก 32bit มีขนาดไฟล์ของภาพของฉัน 2 ^ 31 ถือว่าแน่นอนลบ - -2147483648เป็นที่แน่นอน

ตกลงดี - พวกเขาแฟลชไฟล์ภาพขนาดใหญ่ใน Android ได้อย่างไร

Google ค้นหา - ปรากฎว่าพวกเขาใช้make_ext4fsเครื่องมือนี้ที่สร้างภาพที่สามารถแฟลชได้ ในความเป็นจริงมันเป็นส่วนหนึ่งของสิ่งที่ฉันเพิ่งรวบรวมดังนั้นฉันอาจใช้มัน:

linuxbox# mkdir /system
linuxbox# mount -o loop,ro system.img /system
linuxbox# ls -l /system
total 208
drwxr-xr-x 106 root root   8192 Sep 17 22:24 app
drwxr-xr-x   3 root 2000   8192 Sep 26 21:08 bin
-rw-r--r--   1 root root   6847 Sep 12 16:59 build.prop
drwxr-xr-x  19 root root   4096 Sep 26 21:08 etc
drwxr-xr-x   2 root root   4096 Aug 11 22:27 fonts
drwxr-xr-x   4 root root   4096 Sep 12 16:56 framework
drwxr-xr-x  10 root root  16384 Sep 12 16:59 lib
drwxr-xr-x   2 root root   4096 Jan  1  1970 lost+found
drwxr-xr-x   3 root root   4096 Aug 11 22:18 media
drwxr-xr-x  59 root root   4096 Aug 11 22:29 priv-app
-rw-r--r--   1 root root 126951 Aug  1  2008 recovery-from-boot.p
drwxr-xr-x   3 root root   4096 Aug 11 21:02 scripts
drwxr-xr-x   3 root root   4096 Aug 11 21:02 tts
drwxr-xr-x  11 root root   4096 Sep 26 21:08 usr
drwxr-xr-x   8 root 2000   4096 Aug 11 22:29 vendor
drwxr-xr-x   2 root 2000   4096 Sep 26 21:09 xbin

linuxbox# ../extras/source/extras/ext4_utils/make_ext4fs \
      -l 2048M new_system.img /system
Creating filesystem with parameters:
    Size: 2147483648
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8192
    Inode size: 256
    Journal blocks: 8192
    Label: 
    Blocks: 524288
    Block groups: 16
    Reserved block group size: 127
Created filesystem with 2666/131072 inodes and 375014/524288 blocks

เยี่ยมมาก - ดังนั้นฉันจึงสามารถสร้างอิมเมจระบบจากโฟลเดอร์เก่าแบบธรรมดาได้ ท้องฟ้าจะเป็นขีด จำกัด ของฉัน - ฉันจะสามารถเพิ่มสิ่งที่ฉันต้องการในภาพนี้

มาเผามันกันเถอะ ...

linuxbox# fastboot flash system new_system.img
erasing 'system'...
OKAY [  0.064s]
sending 'system' (2088960 KB)...
^C

ฉันรอเป็นเวลา 1 ชั่วโมงก่อนกดปุ่ม Ctrl-C และต้องใช้พลังงานรอบแท็บเล็ตซึ่งบูตกลับมาในโหมด fastboot

มันดูไม่ดีเลย

ถ้าฉันสร้างภาพที่เล็กลงจะเป็นอย่างไร บางที 2GB อาจเป็นปัญหาอย่างใดอย่างหนึ่งและพาร์ติชันนี้ไม่ได้ใช้อย่างเต็มประสิทธิภาพ - มีพื้นที่ว่าง:

linuxbox# ../extras/source/extras/ext4_utils/make_ext4fs \
      -l 1536M new_system.img /system

linuxbox#  ./fastboot flash system system.img 
erasing 'system'...
OKAY [  0.065s]
sending 'system' (1572864 KB)...
OKAY [ 51.039s]
writing 'system'...
OKAY [235.080s]
finished. total time: 286.183s

ตกลงสิ่งนี้ดูมีแนวโน้มมาก (และใช้เวลาเพียง 5 นาที) ฉันเดาว่าตอนนี้ฉันสามารถรีบูตและทุกอย่างควรเป็นปกติใช่ไหม

ไม่ :-)

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่คิดอุปกรณ์ bricked ชั่วคราวตราบเท่าที่ฉันไม่ได้รับการควบคุมมันในที่สุด (เครื่องที่ว่าผมไม่ได้ต้นแบบของการเป็นเครื่องผมไม่สนใจที่จะทำงาน ;-)

ความคิดเห็นใด ๆ เกี่ยวกับสิ่งที่ฉันทำผิดและฉันจะแก้ไขได้อย่างไร

ขอบคุณล่วงหน้า.

PS ฉันตรวจสอบหน้าสนับสนุน Asus สำหรับแท็บเล็ตของฉัน - พวกเขาให้แหล่งที่มาสำหรับเคอร์เนลเท่านั้นและไฟล์ Over-the-air .zip ในทางกลับกันมีการสำรองข้อมูลระดับระบบไฟล์จากรูท - เช่นมีsystemโฟลเดอร์อยู่ในนั้นเป็นเพียงโฟลเดอร์ไม่ใช่รูปภาพไม่ใช่ไฟล์system.imgที่ฉันสามารถแฟลชได้ - ดังนั้นมันจึงไม่ช่วยฉันจริงๆ

ตอนที่ 2: การโจมตีของ Custom Boots

ในกรณีที่ไม่มีอะไรrecovery.imgจาก Asus (ทำไมผู้ผลิตถึงต้องการเผยแพร่ fastboot-flashable recovery.imgทำไมต้องเป็น ... ) และไม่มีภาพกู้คืนจากเว็บไซต์ CWM และ TWRP ที่คล้ายกัน ... ฉันออกจากการต่อสู้ทั้งหมด คนเดียว

โชคดีที่ไฟล์อัพเดทแบบ over-the-air จาก Asus มีอยู่ข้างใน ...

linuxbox# unzip -l /opt/Asus/firmware/UL-K01E-WW-12.16.1.12-user.zip |\
     grep boot.img$
7368704  2011-03-22 11:21   boot.img

... อิมเมจการบูตของแท็บเล็ต ตอนนี้อาจจะ - บางที - ฉันสามารถทำอะไรกับสิ่งนี้

linuxbox$ mkdir rootfs
linuxbox$ cd rootfs
linuxbox$ abootimg -x /path/to/boot.img
linuxbox$ ls -l
bootimg.cfg
initrd.img
zImage

การขยาย ramdisk ...

linuxbox$ mkdir initrd
linuxbox$ cd initrd
linuxbox$ gzip -cd ../initrd.img | cpio -ivd
...
linuxbox$ vi default.prop

ฉันตั้งค่าdefault.propให้รูทเมื่อเคอร์เนลบูท:

ro.secure=0
ro.debuggable=1
ro.adb.secure=0
androidboot.selinux=disabled

ฉันยังคัดลอก/system/bin/sh( จากแฟ้ม over-the-air Asus .zip ) /sbin/shลง ฉันทำเช่นเดียวกันกับbusybox - เครื่องมือที่มีประโยชน์มาก

และรีบูต bootedimg ...

busybox$ find . | cpio --create --format='newc' | gzip -9 > ../initrd.custom.gz
busybox$ cd ..
busybox$ abootimg --create ../new_boot_busybox.img \
    -f bootimg.cfg -k zImage -r initrd.custom.gz

abootimgจริง ๆ แล้วล้มเหลวในครั้งแรกที่ฉันเรียกใช้งานนี้เนื่องจากbootimg.cfgต้องมีการปรับปรุง - bootsizeพารามิเตอร์ต้องมีการเปลี่ยนแปลงเนื่องจากแพคเกจมีขนาดใหญ่กว่าตอนนี้ abootimgรายงานสิ่งที่ต้องการเพื่อให้ง่ายพอ

และตอนนี้ฉันบูตภาพที่กำหนดเองของฉัน ...

linuxbox# fastboot boot new_boot_busybox.img

... และเป็นพยานต่อไปนี้ ...

linuxbox# adb logcat
- exec '/system/bin/sh' failed: Permission denied (13) -

linuxbox# adb shell
- exec '/system/bin/sh' failed: Permission denied (13) -

อืม ... บางที adbd ไม่ทำงานเหมือนรูท?

linuxbox# adb root
restarting adbd as root

linuxbox# adb shell
- exec '/system/bin/sh' failed: Permission denied (13) -

ไม่เป็นไร ... ฉันต้องแก้ไข adbd และ patch / system / bin / sh ให้เป็น / sbin / sh (ฉันคัดลอก / system / bin / sh จากอิมเมจ OTA ไปยังรูทของการเริ่มต้น): รีบูต fastboot ...

linuxbox# adb shell
- exec '/sbin/sh' failed: Permission denied (13) -

ยี้ สิ่งนี้สามารถทำอะไรได้บ้าง?

linuxbox# adb pull /proc/partitions
15 KB/s (1272 bytes in 0.079s)

มันคือ ... มาดูกัน:

linuxbox# adb pull /proc/mounts
16 KB/s (1358 bytes in 0.079s)

linuxbox# grep system mounts
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0

ตกลงดังนั้น / ระบบถูกเมาท์ ฉันเห็นสิ่งที่อยู่ภายใน

linuxbox# adb pull /system
remote object '/system' does not exist

อะไร ... บางทีฉันสามารถตรวจสอบสิ่งที่ / proc / kmsg มี (สิ่งที่ "dmesg" จะออก)

linuxbox# adb pull /proc/kmsg
failed to copy '/proc/kmsg' to './kmsg': Operation not permitted

ไม่ฉันต้องรูทเพื่อทำสิ่งนั้น

linuxbox# adb push /sbin/sh /system/bin/sh
failed to copy '/sbin/sh' to '/system/bin/sh': Permission denied

และนั่นก็เช่นกัน

นี่มันช่างเป็นปริศนา ...


2
สิ่งเดียวที่ดีที่คุณไม่ได้ทำที่นี่ (และควรทำ) คือการแฟลชการกู้คืนที่กำหนดเองจากนั้นทำการสำรองข้อมูลnandroidของพาร์ติชันจากมัน นั่นเป็นหนึ่งในวิธีการกันกระสุนออกไปที่นั่นเพื่อกู้คืนอุปกรณ์จากสถานะก่ออิฐดังกล่าว Over-the-air.zip (OTA zip) เป็นซิปกู้คืนที่สามารถเรียกคืนได้ซึ่งจะกระพริบเมื่อบูตเข้าสู่การกู้คืนและพวกเขาปฏิบัติตามรูปแบบบรรจุภัณฑ์ที่แตกต่างกัน แต่บรรลุเป้าหมายเดียวกัน เรื่องย่อสั้น ๆ แฟลชการกู้คืนที่กำหนดเอง (หรือบูตเข้าสู่สต็อกหนึ่ง) แฟลชสต็อก ROM แล้วทดสอบมากเท่าที่คุณต้องการ
Firelord

1
@ Firelord: นั่นคือสิ่งที่ - แม้ว่าfastbootจะยังคงทำงาน (ตอบสนองต่อการร้องขอได้ดี) และฉันจึงสามารถเผาไหม้ภาพการกู้คืนใด ๆ (a) ฉันค้นหาและพบว่าไม่มีภาพการกู้คืน CWM หรือ TWRP สำหรับ ME103K - ฉันไม่คิดว่ามี "สามัญ" ที่คุณอ้างถึงมีหรือไม่ (b) การปิด, การกดปุ่มเพาเวอร์ + ลดระดับเสียงไม่ได้ทำให้อิมเมจการกู้คืน - ฉันยังคงได้รับสถานะ fastboot โมคิดทำไม ในความเป็นจริงฉันไม่เคยเห็นกระบวนการกู้คืน (อยากรู้อยากเห็นที่จะเห็นมัน) ...
ttsiodras

1
ลองใช้ปุ่มผสมอื่น ๆ เช่น Power + Vol Up + Vol Down เพื่อบูตเข้าสู่โหมดการกู้คืน หากคุณเข้าถึง ZIP การกู้คืนหุ้นอาจมีไฟล์ภาพของการกู้คืนหุ้นซึ่งคุณสามารถแฟลชจาก fastboot หรือบูตเข้าโดยตรง ( fastboot boot <FILE>.img) จากนั้นจึงแฟลชไฟล์ ZIP ทั้งหุ้น หรือดูว่ามี (บนเว็บ) ไฟล์ ROM หุ้นซึ่งสามารถแฟลชได้โดยใช้ fastboot
Firelord

1
@ Firelord: ไม่ Asus ไม่ได้มีการกู้คืน จากไฟล์ OTA ไม่มีอะไร. img-y ( unzip -l UL-K01E-WW-12.16.1.12-user.zip | grep recoveryแสดงเชลล์สคริปต์เพียงไม่กี่ - ฉันจะได้ดู แต่ไม่มีแน่นอนrecovery.img) Googling ไม่ได้ช่วยอะไร - ไม่มีภาพกู้คืนของแท็บเล็ตนี้ทุกที่ ... เดาสิฉันจะต้องรอจิตวิญญาณที่ใจดีให้ไปที่ddพาร์ติชั่นการกู้คืนและแชร์?
ttsiodras

คำตอบ:


7

ตอนที่ 3: การกลับมาของเชลล์

ถ้าฉันมีโอกาสที่จะแก้ปัญหานี้ฉันต้องคิดก่อนว่าทำไมเปลือกไม่ทำงาน adbdตัวมันเองกำลังตอบสนองดังนั้นมันจึงเริ่มต้นที่ด้านแท็บเล็ต - แต่มันไม่สามารถรันเชลล์ได้แม้ว่าฉันจะแฮ็กแพทช์เพื่อเรียกไฟล์ ( /sbin/sh) ที่ตัวฉันเองอยู่ในอิมเมจสำหรับบูต - มั่นใจ 100% ว่ามี สิทธิ์ที่เหมาะสมและสามารถเข้าถึงได้จากบัญชีshell(id = 2000) ที่adbdใช้

ซึ่งเหลือเพียงหนึ่งคำอธิบาย - SELinux "กรง"

ดังนั้นฉันจึงตรวจสอบวิธีการadbdเริ่มต้นจากภาพบูตของฉันinit.rc:

# adbd is controlled via property triggers in init.<platform>.usb.rc
service adbd /sbin/adbd --root_seclabel=u:r:su:s0
    class core
    socket adbd stream 660 system system
    disabled
    seclabel u:r:adbd:s0

... และลองการเปลี่ยนแปลงที่ชัดเจน:

service adbd /sbin/adbd
    class core
    socket adbd stream 660 system system

ฉันบรรจุใหม่และเพื่อความพึงพอใจของฉันเห็น ...

linuxbox# adb shell
$ 

ในที่สุดฉันก็สามารถเข้าถึงแท็บเล็ต - จาก "ข้างใน"

การตรวจสอบการติดตั้ง / ระบบก็เป็นที่ชัดเจนว่ากระบวนการกระพริบ - แม้ว่าfastboot flash system ...รายงานว่าทุกอย่างเป็นไปตกลง - ไม่เคยยี่หระ มันน่าแปลกใจที่พาร์ติชั่นนั้นถูกติดตั้งตั้งแต่แรก

นั่นอธิบายได้ว่าทำไมแท็บเล็ตไม่สามารถบู๊ตได้และทำให้ฉันมีความคิดสุดท้ายที่แก้ไขปัญหาได้

ฉันต้องบู๊ตแท็บเล็ตเพื่อใช้สำเนาพาร์ติชัน / ระบบที่เก่าที่สุดของฉัน แต่ ณ จุดนี้แม้ว่าฉันจะเข้าถึงเชลล์แล้ว แต่ฉันไม่ได้รูท - ( การเปลี่ยนแปลงที่ฉันทำในdefault.propนั้นถูกละเลยโดยเคอร์เนล Asus - ฉันจะต้องคอมไพล์อีกครั้งในเร็ว ๆ นี้ ... ) ดังนั้นฉันจึงไม่สามารถติดตั้ง sdcard ภายนอกและddถ่ายสำเนาที่ดีได้

แต่ฉันมีอิมเมจสำหรับบูตของตัวเองซึ่งหมายความว่าฉันสามารถแก้ไข/fstab.qcomภายในและทำสิ่งนี้:

บรรทัดดั้งเดิมที่บอกวิธีการติดตั้ง / ระบบแท็บเล็ต

/dev/block/platform/msm_sdcc.1/by-name/system  /system  ext4 ro,barrier=1 wait

การแก้ไขของฉัน

/dev/block/mmcblk1p2  /system ext4  rw,barrier=1 wait

... และกลับมาที่กล่อง linux ของฉันฉันddสำรองข้อมูลพาร์ติชันระบบของแท็บเล็ตไว้ในพาร์ติชั่นที่ 2 ของการ์ด SD ภายนอกของฉันซึ่งฉันสร้างขึ้นผ่านทางgparted2GB

ทำเช่นนั้น - แท็บเล็ตบูตจากการ์ด SD ภายนอกของฉัน

แก้ไข : การเดินทางดำเนินต่อไป - ในที่สุดฉันก็แก้ไขและรวบรวมเคอร์เนลของตัวเองและกลายเป็นรู


2
ฉันสาบานกับตอนที่ 4 ฉันจะได้รับรางวัลถ้าคำตอบนี้ไม่ได้โพสต์เพื่อความสนุกสนานจากตอนเหล่านี้ทั้งหมด เป็นการดีที่ได้เห็นคุณแก้ไขปัญหาด้วยตัวเอง : D
Firelord

2
@ Firelord: ขอบคุณเพื่อน ในขั้นตอนนี้ฉันคิดว่าฉันทำอะไรที่ค่อนข้างเท่ห์ - ฉันบูทแท็บเล็ตโดยไม่แตะต้องมัน ... ภาพบูตมาจากด้านนอก (ด้านบนfastboot boot ...) และ/systemพาร์ติชั่นอยู่ในการ์ด SD ซึ่งปรับได้ตามที่ฉันต้องการ เรียงจากชอบบูตเครื่องพีซีจากแท่ง USB :-)
ttsiodras

4

ดูเหมือนว่าคุณได้พบวิธีแก้ไขปัญหาของคุณแล้ว (มีข้อความจำนวนมากให้อ่านในหน้านี้) แต่ดูเหมือนว่าสิ่งนี้อาจแก้ไขได้ง่ายกว่านี้มาก

linuxbox# fastboot getvar all
(bootloader)  version-bootloader: 3.03
(bootloader)  version-hardware: rev_c
(bootloader)  variant: LEOPARDCAT 16G
(bootloader)  version-baseband: H00_0.16.F_0521
(bootloader)  serialno: 0a3dXXXX
...
(bootloader)  partition-type:system: ext4
(bootloader)  partition-size:system: 0x0000000080000000

ในบรรดาตัวแปรเหล่านี้แท็บเล็ตของคุณคืนmax-download-sizeค่าตัวแปรหรือไม่? ถ้าเป็นเช่นนั้นอาจมีการแจ้งเตือนทันทีว่ากระบวนการกระพริบอาจมีปัญหาบางอย่างกับภาพขนาดใหญ่ดังกล่าว รหัส fastboot ปัจจุบันทำขึ้นเพื่อแก้ไข a max-download-sizeที่เล็กเกินไป แต่ฉันพบข้อผิดพลาดเดียวกันของคุณแม้ว่าภาพจะเล็กกว่าที่อุปกรณ์บอกว่ามันสามารถรองรับได้จริง ๆ แล้วประเด็นก็คือ moot ฉันคิดว่า

linux_box# fastboot flash system system.img  
error: cannot load 'system.img'

ดังนั้นดูเหมือนว่าที่นี่ด้วยเหตุผลใดก็ตามคุณไม่สามารถแฟลชได้ ถ้าคุณและฉันถูกต้องและมันมีขนาดใกล้เคียงกัน (แท็บเล็ตของคุณมี RAM เพียง 1 GB และอุปกรณ์ส่วนใหญ่ควรลองอ่านภาพทั้งหมดเป็น RAM ก่อนที่จะกระพริบ ) นี่คือที่ฉันคิดว่าการปรับ-Sตัวเลือกการเพิ่มตัวเลือกเท่านั้น เพื่อ fastboot อาจแก้ไขแฟลชของคุณตามที่มีให้:

fastboot -S 512M flash system system.img  

อย่างไรก็ตามดูเหมือนว่าคุณพยายามบังคับให้รูปภาพขนาด 2 GB ของคุณมีขนาดที่ (1) อาจเป็นไปไม่ได้ที่จะยัดเข้าไปและ (2) ไม่ใช่ขนาดที่พาร์ติชันระบบของอุปกรณ์ของคุณควรจะเป็น

  • จากประสบการณ์ในจุดที่ 1 ของฉันฉันจะไม่นับเครื่องมือสร้าง Android ที่เปราะบางที่จะบ่นถ้าคุณขอให้พวกเขาทำสิ่งที่พวกเขาจะล้มเหลวและเป็นไปได้ว่าพวกเขาอาจจะอยู่ที่นี่

  • เกี่ยวกับประเด็นที่ 2 ฉันไม่เชื่อว่าคุณไม่สามารถทำอย่างนั้นได้ ขั้นตอนเพิ่มเติมจะต้องใช้ขนาดพาร์ติชันระบบที่แตกต่างกัน

สมมติว่าแท็บเล็ตคาดว่าไฟล์ภาพเบาบางผมเชื่อว่าคำสั่งที่คุณอยากจะลองแทนที่จะเป็นmake_ext4fs -l 1536M new_system.img /system make_ext4fs -l 2048M -s new_system.img /systemคำสั่งที่ปรับแล้วจะทำให้ภาพที่ขยายใหญ่ขึ้นถึงขนาดที่ถูกต้อง แต่ถูกเก็บไว้ชั่วคราวที่ถูกเอาออกของไขมันส่วนเกินเช่นช่องว่างขนาดใหญ่ของข้อมูลว่าง: " ไฟล์ภาพกระจัดกระจาย " (ดูหน้าที่ฉันเชื่อมโยงไปก่อนหน้านี้สำหรับข้อมูลเพิ่มเติม; ฉันมีชื่อเสียงไม่เพียงพอในเว็บไซต์นี้เพื่อทำซ้ำลิงก์)

readme แบบเก่าที่มีคนเขียนไว้สำหรับชุดเครื่องมือควรช่วยให้เข้าใจว่ากระบวนการทำงานอย่างไร

ไชโย


1
ขอบคุณสำหรับคำตอบ. ในฐานะที่เป็นคำถามของคุณ (1) ไม่มีไม่มีอะไรในการส่งออกจากmax-download- getvar(2) ฉันจะคำนึงถึง-Sตัวเลือกในการกะพริบในอนาคตของฉัน - ตามที่เป็นเมื่อฉันบูทฉันกลายเป็นรูต (ผ่านการคอมไพล์เคอร์เนลของฉัน) และdd-ed ผ่านพาร์ติชันระบบเก่าดังนั้นการกะพริบด้วย -S จะทำงานหรือไม่ ต้องรอการทดสอบครั้งต่อไปของฉัน (3) ฉันลองกับภาพที่กระจัดกระจายได้ผลลัพธ์เดียวกัน (เช่นfastbootรายงานว่าการกะพริบเป็นปกติ
ttsiodras

1
@ttsiodras ไม่มีปัญหา ฉันเรียนรู้บางสิ่งในกระบวนการ (1) อ่าโอเค ฉันสงสัยว่ามันเป็นอย่างน้อยบนอุปกรณ์ของฉันโดยใช้บิลด์ fastboot ที่ฉันติดตั้งไว้ตัวแปรนั้นจะถูกพิมพ์ครั้งแรกในรายการ (ขอบคุณ btw สำหรับการสาธิตที่allสามารถส่งผ่านไปยัง getvar ได้ - มีประโยชน์) (2) โอ๊ะโอเค ถ้ามันใช้งานได้แจ้งให้เราทราบ (3) อ๊ะ! ฉันไม่ได้สังเกตว่า มันเป็นข้อความจำนวนมากขอโทษ นั่นคือที่กล่าวถึงในโพสต์ของคุณ? (เป็นเหมือนคำสั่ง make_ext4fs ที่ฉันแนะนำด้วย-sและระบุความยาว 2 GiB เต็มหรือไม่) แท็บเล็ตอาจไม่จัดการกับไฟล์ที่กระจัดกระจาย
naki

1
(3) ใช่ฉันส่งต่อ-sไปยัง make_ext4fs - fastboot รายงานว่า 'ตกลง' สำหรับการเบิร์น แต่ / / ระบบเกิดความผิดพลาด ทฤษฎีของฉันก็คืออย่างที่คุณพูดอะไรก็ตามที่มีขนาดใหญ่กว่าหน่วยความจำของแท็บเล็ต (1GB) จะไม่ทำงานและจำเป็นต้องใช้-Sตัวเลือกใน fastboot ในการทำงานอย่างถูกต้อง (ซึ่งอธิบายสถานะครึ่งแตก - พาร์ติชั่น ของรูปภาพพอดีกับหน่วยความจำและถูกเบิร์นจริงทำให้สามารถติดตั้งได้ แต่ไฟล์ภายในนั้น ... เสียหายแบบสุ่มขึ้นอยู่กับว่าภาคของพวกเขาถูกเบิร์นหรือไม่)
ttsiodras

2

ด้วย Moto GI ของฉันสร้างการสำรองข้อมูลโดยใช้ dd เหมือนที่คุณทำ ฉันต้องการกู้คืนพาร์ทิชันระบบของฉันในวันก่อนดังนั้นฉันจึงเริ่มระบบ TWRP (ฉันไม่ได้แฟลชฉันเพิ่งบูตภาพไปที่ RAM) ฉันใช้ adb เพื่อเชื่อมต่อในขณะที่ TWRP กำลังทำงานอยู่และฉันเพิ่งผลัก img ที่ฉันสร้างด้วย dd ไปยังการ์ด SD ของฉันแล้วใช้ dd เพื่อเขียนภาพไปยังพาร์ติชันระบบ

ลองดูวิดีโอที่ฉันทำไว้ที่นี่: https://youtu.be/BHCamV-sHx0?list=PLcUid3OP_4OVI1Rtuwxk1RjABh1PxXXQq


น่าเสียดายที่ไม่ได้ช่วยฉัน - ฉันไม่สามารถกู้คืนแท็บเล็ตของฉันได้ไม่ว่าจะลองใช้ชุดใดก็ตาม (ในทางกลับกันฉันได้รับมันทันทีบน MotoG2 ของฉัน - ดังนั้นการกู้คืนแท็บเล็ตนี้ ฉันสามารถแฟลชพาร์ติชันการกู้คืน (เนื่องจาก flashboot ทำงานได้) แต่ฉันไม่มีrecovery.imgจาก Asus และไม่มี CWM หรือ TWRP อยู่ (สำหรับ ME103K)
ttsiodras
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.