Flash boot.img โดยไม่ต้องใช้ fastboot USB


10

ดังนั้นเมื่อเร็ว ๆ นี้ฉันได้รูทเครื่องและลอง ROM หนึ่งหรือสองตัว ฉันคิดว่ามันมีประโยชน์จริง ๆ ที่คุณสามารถใช้การกู้คืน TWRP เพื่อติดตั้ง ROM อื่นจากการ์ด SD คุณไม่จำเป็นต้องเชื่อมต่อกับพีซี

อย่างไรก็ตามบนอุปกรณ์ของฉัน (HTC One S) ฉันจำเป็นต้องแฟลชไฟล์ boot.img ที่แตกต่างกันสำหรับทุก ROM เช่นกันดังนั้นฉันยังคงต้องขอโทรศัพท์ของฉันกับพีซีเพื่อสลับ ROM ถ้าฉันไม่ทำเช่นนี้มันก็จะติดอยู่บนหน้าจอการโหลด จากนั้นฉันจะต้องใช้คำสั่ง

fastboot flash boot boot.img

จากโฟลเดอร์ที่ boot.img ตั้งอยู่

เป็นไปได้ไหมที่จะฉายอิมเมจสำหรับบูตนี้ด้วย TWRP หรือวิธีอื่นใดโดยไม่ใช้ fastboot ผ่าน USB?

คำตอบ:


10

สิ่งที่ต้องทำคือการรวม boot.img และสร้างไฟล์ zip ใหม่ที่เหมาะสมสำหรับการกระพริบผ่าน ClockworkMod หรือ TWRP

ข้อกำหนดเบื้องต้น :

  • สภาวะแวดล้อม Linux ที่มีแพ็กเกจการพัฒนาตามปกติเช่น Java ติดตั้ง ( นอกจากนี้ยังสามารถนำไปใช้กับแพลตฟอร์มอื่น ๆ ได้โปรดระวังว่าคำแนะนำที่นี่ระบุเส้นทางที่ใช้ด้านล่างใช้สแลชไปข้างหน้า/ดังนั้นพลิกไปรอบ ๆ เพื่อเป็นแบ็กสแลช\สำหรับสภาพแวดล้อม Windows โดยเฉพาะ! )
  • ติดตั้งเครื่องมือบรรทัดคำสั่ง adb แล้ว
  • เครื่องมือ `testign.jar ' สำหรับการเซ็นชื่อไฟล์ zip เพื่อให้การกู้คืนสามารถรับรองความถูกต้องและตรวจสอบว่าเป็นไฟล์เก็บถาวรที่ถูกต้องมิฉะนั้นการกู้คืนจะรายงานว่าไฟล์เก็บถาวรเสียหายหรือคล้ายกัน
  • update-binaryแอปพลิเคชันบรรทัดคำสั่งซึ่งเป็นภายในสำหรับการใช้งานด้วยสคริปต์ที่สามารถแฟลชได้ (ซึ่งสามารถพบได้กับใด ๆซิป flashable สิ่งที่สำคัญคือการสกัดและไบนารีที่ฝากไว้ในโครงสร้างของไดเรกทอรีที่แสดง)
  • เครื่องมือบรรทัดคำสั่ง zip

สมมติว่าไดเรกทอรีของคุณเรียกว่าworkdirสำหรับการสนทนาให้เรียกไดเรกทอรีนี้ทำงานคัดลอกboot.imgลงในไดเรกทอรีนั้นและสร้างโครงสร้างไดเรกทอรีต่อไปนี้ - META-INF/com/google/androidนี่เป็นสิ่งสำคัญ! และภายในMETA-INF/com/google/androidคัดลอกแอปพลิเคชันไบนารีที่เรียกว่าupdate-binaryลงในไดเรกทอรีนั้น ดังนั้นโครงสร้างไดเรกทอรีควรเป็นดังนี้:

+ workdir/
     +
     |
     +--+ boot.img
     |
     |
     +--+ META-INF/
              +
              |
              +--+ com/
                    +
                    |
                    +--+ google/
                           +
                           |
                           +--+ android/
                                   +
                                   |
                                   +--> update-binary
                                   |
                                   +--> updater-script

สำหรับupdater-scriptคัดลอกเนื้อหาดังต่อไปนี้:

ui_print("Please wait, boot.img being flashed...");
show_progress(0.1, 0);
assert(package_extract_file("boot.img", "/tmp/boot.img"),
       write_raw_image("/tmp/boot.img", "boot"),
       delete("/tmp/boot.img"));
show_progress(0.1, 10);
ui_print("It is now safe to reboot! :)");

เตือนความจำ:อย่าสับสนที่นี่สคริปต์ตัวอัปเดตตามที่แสดงควรถูกทิ้งไว้ตามลำพังและตามที่เป็นอยู่ดังนั้นอย่าพยายามพลิกฟอร์เวิร์ดสแลชเป็นสแลชแบ็คแบ็กถ้าทำสิ่งนี้ภายใต้สภาพแวดล้อมของ Windows

กลับไปที่พาเรนต์ของโครงสร้างไดเร็กทอรีเช่นนอกworkdirและทำสิ่งต่อไปนี้เราจะสร้างไฟล์ zip จากสิ่งนี้:

zip -r my_custom_flashable_boot_unsigned.zip workdir/ซึ่งเป็นฟังก์ชั่น recursive นี้จะ zip ทุกอย่างลงในไฟล์ที่เรียกว่าmy_custom_flashable_boot_unsigned.zip

ในที่สุดเมื่อต้องการเซ็นชื่อไฟล์ zip ให้ออก:

java -classpath testsign.jar testsign my_custom_flashable_boot_unsigned.zip my_custom_flashable_boot_signed.zip

จากนั้นเป็นเรื่องของการผลักดันให้ทั่วทั้ง SDCard ในadb push my_custom_flashable_boot_signed.zip /sdcard/และด้วยตนเองไปสู่การกู้คืนและระบุไฟล์ zip ที่เก็บถาวร (เช่นmy_custom_flashable_boot_signed.zip ) ซึ่งจะทำการกระพริบสำหรับคุณ


ดีฉันชอบที่จะสร้างสิ่งที่ตัวเองคำแนะนำที่ยอดเยี่ยมมาก มันไม่ได้เป็นจุดที่ฉันต้องการคอมพิวเตอร์ของฉันสำหรับเรื่องนี้เพราะฉันเพิ่งจะได้รับซิปสำหรับบูตได้แฟลชสำหรับรอมทั้งหมดของฉันในโฟลเดอร์ของการ์ด SD ของฉันซึ่งจะนำไปสู่สถานการณ์ที่ฉันต้องการ
MarioDS

2

หากคุณมีflash_imageไบนารี่คุณสามารถทำได้บนอุปกรณ์ผ่านเทอร์มินัลอีมูเลเตอร์ (แฟลชบูตจากนั้นส่วนที่เหลือจะใช้การกู้คืน)

ไวยากรณ์: flash_image boot /sdcard/boot.img

เวลาส่งเสริมตนเอง

ฉันมีแอพที่ให้ GUI สำหรับไบนารี พบว่ามันนี่

หากคุณไม่มีไบนารีนั้นก็สามารถติดตั้งได้ (Google มัน - คุณต้องดาวน์โหลดแล้วคัดลอกไปยัง/system/binโฟลเดอร์

วิธีนี้ใช้ไม่ได้กับทุกอุปกรณ์ แต่เป็นวิธีเดียวที่จะทำให้คุณนึกถึง


ถ้าฉันเข้าใจดีเทอร์มินัลอีมูเลเตอร์เป็นเพียงแอพปกติที่คุณรันในขณะที่โทรศัพท์ของคุณถูกบูทในโหมดปกติหรือไม่? มันจะไม่ทำให้เกิดปัญหาในการบู๊ตขณะที่ระบบปฏิบัติการกำลังทำงานอยู่หรือไม่?
MarioDS

1
@MarioDeSchaepmeester โทรศัพท์ใช้บูตในขณะที่บู๊ตเท่านั้น)
Liam W

ได้มีการ downvote มันเป็นflash_imageมีความต้องการที่จะคัดลอกและเรียกจากโทรศัพท์มือถือโดยใช้adb shell, เอกสาร ( ผมอาจจะเพิ่มคุณล้มเหลวที่จะให้สาย!) จะขอให้ remount sdcard กับชุดบิต exec (* ความคิดที่ดี ) และ ต้องใช้รากเช่นsuยิ่งไปกว่านั้น "การโปรโมตตนเอง" ที่เกี่ยวข้องกับแอปของคุณในยูโรที่ฉันมาจากนั้นคือ 6,09 ยูโรซึ่งราคาแพง ... fastbootเป็นบรรทัดฐาน CM มีวิธีแปลก ๆ - อะไรคือความแตกต่างกับfastbootและflash_image?
t0mm13b

นอกจากนี้ไบนารีสามารถใช้งานได้โดยไม่ต้องใช้คอมพิวเตอร์
เลียม

0

เป็นไปได้ไหมที่จะฉายอิมเมจสำหรับบูตนี้ด้วย TWRP [... ]?

เปลี่ยนชื่อไฟล์boot.emmc.winและวางไว้ในTWRP/BACKUPS/(สร้างโฟลเดอร์ใหม่) คืนค่าการสำรองข้อมูลจากเมนู TWRP ปกติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.