จะแกะและแก้ไข boot.img สำหรับการย้าย ROM ได้อย่างไร


14

ฉันเพิ่งดาวน์โหลดROM นี้สำหรับ Allview P5 ของฉัน (Allview P5 เทียบเท่ากับ Gionee GN700W / FLY IQ441 / QMobile Noir A8) มันเรียกว่า Primonex ROM และทำขึ้นสำหรับรุ่น Gionee ของโทรศัพท์

  • ก่อนอื่นฉันพยายามติดตั้งตามเดิม แต่มันติดค้างที่หน้าจอบูต
  • หลังจากการวิจัยบางอย่างฉันพบว่ามันอาจมีปัญหากับboot.imgไฟล์และฉันไม่รู้วิธีแยกหรือแก้ไขมัน ...

มีคนบอกฉันว่าต้องทำยังไง

คำตอบ:


12

การเลือกเครื่องมือ

วิธีที่ฉันนำเสนอที่นี่อาศัยรหัสที่มา Android ของ CyanogenMod

ในขณะที่ AOSP ของ Google เพียง แต่ให้เครื่องมือในการสร้างboot.imgไฟล์ CyanogenMod ยังเพิ่มunpackbootimgเครื่องมือที่ช่วยให้คุณสามารถแกะมัน เครื่องมือนี้ดูเหมือนจะไม่ได้รับการออกแบบมาเป็นพิเศษสำหรับ CyanogenMod ในทางใดทางหนึ่งดังนั้นโอกาสส่วนใหญ่ก็คือมันจะทำงานกับ ROM อื่น ๆ ได้เช่นกัน

อย่างไรก็ตามมีทางเลือกค่อนข้างมากในการคลายboot.imgไฟล์ซึ่งทั้งหมดทำงานได้มากหรือน้อยกว่าเดิม

โดยพื้นฐานแล้วเครื่องมือ unpack ดังกล่าวจะแยกเนื้อหาของboot.imgไฟล์และแสดงชุดของพารามิเตอร์ที่คุณจะต้องผ่านไปยังmkbootimgเครื่องมือของ Google เพื่อสร้างไฟล์ที่มีการกำหนดค่า (ส่วนใหญ่พารามิเตอร์เคอร์เนลและที่อยู่หน่วยความจำ) จะตรงกับต้นฉบับ

นี่คือตัวอย่างเล็ก ๆ น้อย ๆ ฉันไม่ได้ทดสอบพวกเขาเป็นการส่วนตัวดังนั้นจึงไม่สามารถแนะนำอะไรได้และฉันนำเสนอเพื่อการอ้างอิงเท่านั้น:

  • มีโอเพ่นซอร์สหรือสคริปต์อยู่สองสามรายการ:

    • เห็นได้ชัดว่าครัว Androidหมายถึงมีดกองทัพสวิสสำหรับนักพัฒนา Android ผู้เขียนต้นฉบับหยุดอย่างเป็นทางการการบำรุงรักษาโครงการที่ผู้ใช้อื่น ๆ ไม่กี่คดเคี้ยวมันเหมือนjavilonasหรือcmotc
    • szym ตั้งเป้าไปที่ความง่ายโดยการเพิ่มเชลล์สคริปต์แรปเปอร์ลงในชุดเครื่องมือของมันเพื่อทำให้กระบวนการแยกและบรรจุใหม่เสร็จสมบูรณ์อย่างตรงไปตรงมามากขึ้น
    • osm0sisเสนอทางแยกของเครื่องมือของ CyanogenMod "แยกและปรับปรุง"ตามคำอธิบายของโครงการ ดูเหมือนว่าโครงการนี้จะยังคงรักษาซึ่งไม่ธรรมดามากในพื้นที่นี้อย่างไรก็ตามความได้เปรียบที่แท้จริงของเครื่องมือดั้งเดิมของ CyanogenMod ยังไม่ชัดเจนสำหรับฉัน
  • บางรายการเป็นไบนารีที่เป็นกรรมสิทธิ์ของแหล่งที่ปิดฟรี:

    • Kuismaunmkbootimgปรากฏค่อนข้างบ่อยในฟอรัมความช่วยเหลือและดูเหมือนว่าจะทำงานได้ดีในการช่วยจัดการกับกรณีแปลก ๆ ส่งคำแนะนำภาษาอังกฤษ "มนุษย์อ่านได้" เมื่อต้องการการแก้ไขบางอย่างในmkbootimgซอร์สโค้ดและแสดงบรรทัดคำสั่งที่แน่นอนเพื่อใช้สร้างภาพใหม่
    • Xiaolu ของmkbootimg_toolsนอกจากนี้ยังกล่าวถึงดูเหมือนว่าค่อนข้างบ่อยและช่วยให้การแกะและหีบห่อและไฟล์ต้นไม้อุปกรณ์boot.img dt.imgอย่าหลงกลกับความจริงที่โฮสต์บน GitHub: มันเป็นไบนารีที่เป็นกรรมสิทธิ์ของแหล่งข้อมูลปิดและมีเพียงไบนารีที่รวบรวมได้เท่านั้นที่มีอยู่ในพื้นที่เก็บข้อมูลของพวกเขา (จริงๆแล้วฉันสงสัยเกี่ยวกับความสนใจที่แน่นอนในการใช้แหล่งเก็บรหัสต้นฉบับ Blobs แบบไบนารี แต่เป็นคนที่แตกต่างกัน
    • CNexusบนฟอรัม XDA จัดให้มีการเลือกเครื่องมือเก็บถาวร
    • คำตอบนี้ใน Unix.SE แนะนำเครื่องมือบางอย่างจากโครงการ Android Serial Port ที่หมดอายุแล้ว อย่างไรก็ตามชื่อไฟล์ทำให้ฉันคิดว่าสิ่งเหล่านี้ควรเป็นเครื่องมือรุ่น CyanogenMod ที่สร้างไว้ล่วงหน้ารุ่นเก่า (โครงการถูกปิดไม่มีเอกสารหรือการสนับสนุน)

เครื่องมือเหล่านี้ทั้งหมด (และอื่น ๆ ที่คุณอาจพบในเครื่องมือค้นหาใด ๆ ) ควรทำงานในลักษณะเดียวกัน แต่เครื่องมือบางอย่างอาจทำงานได้ดีกว่าเครื่องมืออื่น ๆ ในการจัดการกับขอบที่คุณอาจต้องเผชิญกับอุปกรณ์ของคุณ อย่างไรก็ตามพวกเขาส่วนใหญ่อย่างน้อยในเวทีโอเพนซอร์สดูเหมือนจะไม่ได้รับการบำรุงรักษาอย่างสม่ำเสมอดังนั้นสิ่งที่ดีที่สุดในความคิดของฉันที่จะมีการทำงานการบำรุงรักษาและเครื่องมือที่เป็นเอกสารคือการไปกับ CyanogenMod

ผู้ผลิตบางรายผลิต ROM ที่อยู่ไกลจากมาตรฐาน AOSP มากหรือน้อย (ที่อยู่ผิดปกติส่วนหัวรูปแบบไฟล์ ฯลฯ ) หากกระบวนการมาตรฐานด้านล่างใช้งานไม่ได้อาจเป็นหนึ่งในซอฟต์แวร์ทางเลือกเหล่านี้อาจทำการหลอกลวงได้ มิฉะนั้นคุณจะต้องตรวจสอบปัญหาที่เฉพาะเจาะจงกับอุปกรณ์ของคุณ: บางอย่างดูเหมือนจะต้องมีขั้นตอนที่เฉพาะเจาะจงหรือแม้แต่เครื่องมือเฉพาะ (มอบคำถามนี้เกี่ยวกับอุปกรณ์ MediaTek เป็นต้น)

การติดตั้งเครื่องมือ

การรวบรวมชุดเครื่องมือ CyanogenMod สำหรับboot.imgการบรรจุและการเปิดออกค่อนข้างตรงไปตรงมา

  • หากคุณได้ติดตั้งต้นไม้ที่สมบูรณ์รหัส Android แหล่งที่มา (คุณสามารถตรวจสอบคำตอบอื่น ๆ ของฉันที่จะได้รับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้) ไปในsystem/core/mkbootimg/ไดเรกทอรี (เป็นตัวเตือนซอร์สโค้ด AOSP ของ Google เพียง แต่ให้เครื่องมือในการสร้างboot.imgไฟล์ที่พวกเขาทำไม่ได้ให้เครื่องมือแกะกล่องใด ๆ )
  • หากคุณไม่ต้องการและไม่ต้องการสิ่งนี้เพื่อวัตถุประสงค์อื่นการแก้ปัญหาที่ง่ายกว่าและเร็วกว่าคือการโคลนพื้นที่เก็บข้อมูลandroid_system_coreของ CyanogenMod เท่านั้น:

    git clone https://github.com/CyanogenMod/android_system_core.git
    cd android_system_core/mkbootimg/
    

เมื่ออยู่ในไดเรกทอรีที่ถูกต้องรวบรวมและติดตั้ง:

gcc -o ./mkbootimg -I ../include ../libmincrypt/*.c ./mkbootimg.c
gcc -o ./unpackbootimg -I ../include ../libmincrypt/*.c ./unpackbootimg.c
sudo cp ./mkbootimg ./unpackbootimg /usr/bin/

โปรดทราบว่า Google กำลังแทนที่ C mkbootimgด้วยเวอร์ชัน Pythonดังนั้นในรุ่นอนาคตไม่จำเป็นต้องมีการรวบรวมอีกต่อไปสำหรับคำสั่งนี้

คุณจะต้องติดตั้งเครื่องมือ Android บนคอมพิวเตอร์ของคุณเพื่อให้สามารถสื่อสารกับโทรศัพท์ของคุณได้ คุณจะต้องadb(Android Debug Bridge, เชลล์ยูทิลิตี้ที่อนุญาตให้สื่อสารกับระบบย่อยการดีบักของ Android), adbd(ภูตที่เกี่ยวข้อง) และfastboot(ยูทิลิตี้เชลล์ที่อนุญาตให้สื่อสารกับระบบ bootloader ในโทรศัพท์ของคุณ)

การกระจาย Linux ที่คุณโปรดปรานอาจมีให้ในแพ็คเกจเดียวหรือแยกกัน แต่โดยปกติแล้วพวกเขามักจะถูกเรียกว่า "android-tools":

  • Debian / Ubuntu: sudo apt-get install android-tools-{adb,adbd,fastboot}
  • Fedora / CentOS: sudo yum install android-tools
  • openSUSE: sudo zypper install android-tools

ดึงboot.imgไฟล์

แตกไฟล์ boot.img จากไฟล์ ROM .zip หรือโดยตรงจากอุปกรณ์:

  • จากไฟล์ stock .zip ของ ROM: แอปพลิเคชั่นบางตัวเช่น SuperSU อาจแก้ไข boot.img บนอุปกรณ์โดยตรงการแทนที่ด้วยสต็อกจะทำให้แอปพลิเคชันดังกล่าวหยุดทำงาน
  • โดยตรงจากอุปกรณ์: boot.imgคนบางคนที่อ่านรายงานปัญหาที่นำไปสู่ความเสียหาย IMO ปัญหาเหล่านี้มักจะเชื่อมโยงกับการใช้สายเคเบิล USB ที่ไม่ดีหรือฮับ USB และสามารถหลีกเลี่ยงได้โดยการใช้สายเคเบิลคุณภาพดีที่เชื่อมต่อโทรศัพท์กับคอมพิวเตอร์โดยตรง คุณต้องมีความสามารถในการเรียกใช้ ADB ในโหมดรูท (ขึ้นอยู่กับ ROM ที่ใช้ซึ่งอาจไม่สำคัญหรือไม่)

วิธีแรกชัดเจนมาก: แตกไฟล์. zip ด้วยซอฟต์แวร์ ZIP ใด ๆboot.imgไฟล์ควรอยู่ตรงนั้นที่รูทของไฟล์เก็บถาวร

สำหรับวิธีที่สองคุณจะต้องกำหนดเส้นทาง (เฉพาะอุปกรณ์ที่น่าเศร้า) ไปยังอุปกรณ์เก็บข้อมูลที่boot.imgสามารถดึงเนื้อหาได้ ฉันรู้สองวิธีสำหรับสิ่งนี้:

  • ls /dev/block/platform/*/by-name/(ที่*ครอบคลุม ๆ ชื่อโฟลเดอร์เฉพาะอุปกรณ์อีกโอกาสที่มันเป็นไดเรกทอรีเพียงด้านล่างplatform/) ชื่อที่แน่นอนในการค้นหายังแพลตฟอร์มจะขึ้นอยู่ แต่ทำให้รู้สึกปกติ (ตัวอย่างบางส่วน: boot, LNX(ย่อสำหรับ "ลินุกซ์")) ไฟล์ในไดเรกทอรีนี้เป็นลิงก์สัญลักษณ์และบางคนไม่สนใจที่จะไปยังเป้าหมายด้วยตนเอง แต่ฉันขอแนะนำให้ใช้เส้นทางที่มีชื่อในระดับสูงกว่าซึ่งในขณะที่อีกต่อไปจะเกิดข้อผิดพลาดน้อยกว่า /dev/block/platform/sdhci-tegra.3/by-name/LNXดังนั้นคุณจะสิ้นสุดขึ้นกับเส้นทางเช่น
  • ในบาง (เก่า?) cat /proc/mtdอุปกรณ์อุปกรณ์ที่เหมาะสมที่อาจจะพบได้โดยการตรวจสอบการส่งออกของ ถ้าคุณเห็นอุปกรณ์mtd2ที่เกี่ยวข้องกับป้ายแล้วคุณจะใช้เส้นทาง"boot"/dev/mtd2

ขณะนี้:

  • จากเมนูผู้พัฒนาโทรศัพท์:
    • เปิดใช้งานการดีบักบนโทรศัพท์ของคุณ
    • อนุญาตการเข้าถึงรากไปยัง ADB (ขั้นตอนนี้ใช้กับโทรศัพท์ที่ใช้ CynogenMod อุปกรณ์อื่น ๆ อาจต้องใช้ขั้นตอนที่ซับซ้อนกว่านี้)
  • เชื่อมต่อกับคอมพิวเตอร์ของคุณ (และจากที่นั่นไปยังผู้เยี่ยมชม VM หากคุณใช้เครื่องมือ Android จากภายในเครื่องเสมือน)

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

adb start-server

จากนั้นสลับ ADB ในโหมดรูท:

adb root

สุดท้ายคุณควรจะสามารถแยกboot.imgไฟล์ออกจากอุปกรณ์โดยตรงโดยใช้คำสั่งดังกล่าว (ที่มาและเส้นทางปลายทางและชื่อจะได้รับเป็นตัวอย่างปรับให้เข้ากับความต้องการและการตั้งค่าของคุณ):

adb pull /dev/block/platform/sdhci-tegra.3/by-name/LNX ./boot.img

คำสั่งจะคัดลอกทั้งพาร์ติชันทั้งที่ใช้และพื้นที่ว่างดังนั้นอย่าแปลกใจที่boot.imgไฟล์ผลลัพธ์จะมีขนาดใหญ่กว่าboot.imgไฟล์ต้นฉบับที่มาพร้อมกับไฟล์ ROM. zip ของ stock ROM ซึ่งเนื้อหานั้นยังคงเหมือนเดิม

เมื่อการถ่ายโอนเสร็จสิ้นให้ยกเลิกการเชื่อมต่อโทรศัพท์และอย่าลืมปิดใช้งานการดีบักและการเข้าถึงรูทจากเมนูนักพัฒนาซอฟต์แวร์

แกะboot.imgไฟล์ต้นฉบับ

คลายboot.imgไฟล์เองโดยใช้คำสั่งที่คอมไพล์ไว้ก่อนหน้านี้:

unpackbootimg -i ./boot.img

นี้จะส่งออกที่สำคัญข้อมูลหลายประการที่จะช่วยให้คุณสามารถสร้างใหม่กับโครงสร้างที่ถูกต้องเกี่ยวกับการสต็อกboot.img boot.imgอย่างไรก็ตามอย่ารีบเร่งใน notepad ของคุณเนื่องจาก CyanogenMod upackbootimgยังบันทึกข้อมูลเดียวกันในไฟล์หลายไฟล์ที่เราจะใช้ในภายหลัง

คำสั่งนี้สร้างไฟล์หลายไฟล์ที่มีคำต่อท้ายเฉพาะที่เพิ่มให้กับชื่อของไฟล์อินพุต:

  • *-second: นี่เป็น bootloader ขั้นที่สองเป็นทางเลือกและไม่ค่อยได้ใช้กับโทรศัพท์ผู้ใช้ปลายทาง หากไฟล์นี้ว่างเปล่า (กรณีที่พบบ่อยที่สุด) จากนั้น bootloader ของโทรศัพท์จะเรียกเคอร์เนล Linux โดยตรง
  • *-zImage: นี่คือเคอร์เนล Linux
  • *-ramdisk.gzหรือ*-ramdisk.lz4: ดิสก์ RAM ที่ใช้เพื่อเติมไดเรกทอรีรากของอุปกรณ์ ส่วนขยายจะแตกต่างกันไปตามอัลกอริทึมการบีบอัดที่ใช้
  • *-dt: แผนผังอุปกรณ์เติม/devข้อมูล
  • ส่วนที่เหลือเป็นไฟล์เล็ก ๆ แต่ละอันจัดเก็บหนึ่งในค่าที่แสดงในunpackbootimgเอาต์พุต ค่าเหล่านี้กำหนดพารามิเตอร์บรรทัดคำสั่งเพื่อส่งผ่านไปยังเคอร์เนล Linux และที่อยู่ที่ bootloader จะต้องโหลดแต่ละวัตถุในเวลาบูต

บ่อยครั้งที่หนึ่งแกะออกboot.imgเพื่อให้สามารถแก้ไขเนื้อหาของไดเรกทอรีรากของโทรศัพท์ เท่าที่เห็นข้างต้นเนื้อหานี้ถูกเก็บไว้ใน*-ramdisk.gzหรือ*-ramdisk.lz4ไฟล์และสามารถแยกได้โดยใช้คำสั่งด้านล่าง:

mkdir ./ramdisk
cd ./ramdisk/
gzip -dc ../boot.img-ramdisk.gz | cpio -imd

สำหรับ LZ4 บีบอัด RAM lz4 -d ../boot.img-ramdisk.lz4 | cpio -imdดิสก์แทนขั้นตอนสุดท้ายด้วย

ตอนนี้คุณมีอิสระที่จะทำการแก้ไขที่คุณต้องการก่อนที่จะดำเนินการต่อ อย่างไรก็ตามมันอาจคุ้มค่าที่จะทำตามขั้นตอนการแกะหีบห่อหีบห่อเต็มรูปแบบครั้งเดียวโดยไม่ต้องเปลี่ยนอะไรเลยเพื่อให้แน่ใจว่าเครื่องมือของคุณทำงานได้ตามที่คาดไว้ มิฉะนั้นในกรณีที่มีปัญหาคุณจะไม่มั่นใจถ้าสาเหตุนั้นเกิดจากการดัดแปลงหรือความไม่ลงรอยกันของคุณ (ดูคำพูดของฉันที่จุดเริ่มต้นเกี่ยวกับผู้ผลิตบางรายที่ต้องการกระบวนการหรือเครื่องมือที่ไม่ได้มาตรฐาน)

สร้างใหม่เพื่อรับnew-boot.imgไฟล์ใหม่

กระบวนการสร้าง CyanogenMod ROM อาศัยเครื่องมือภายในmkbootfsเพื่อสร้างboot.imgไฟล์ (สิ่งนี้เกิดขึ้นในbuild / tools / releasetools / common.py ) อย่างไรก็ตามขั้นตอนในการสร้างเครื่องมือนี้ดูเหมือนจะซับซ้อนสำหรับฉันในขณะที่การใช้ระบบที่จัดเตรียมcpioดูเหมือนจะใช้ได้ดี ความแตกต่างที่สำคัญระหว่างทั้งสองตามความเข้าใจของฉันหลังจากการตรวจสอบอย่างรวดเร็ว (มาก) ในmkbootfsรหัส souce ดูเหมือนว่าหลังใช้มาตรการสติบางอย่างโดยไม่รวมไฟล์ประและ/rootไดเรกทอรีในการเก็บถาวรที่เกิดขึ้นในขณะที่cpio- ตามขั้นตอนด้านล่าง จะทำให้ทั้งไดเรกทอรีต้นไม้ที่เลือกไว้ในที่เก็บถาวร

สรุป: มีความซับซ้อนเกินความจำเป็นในการคอมไพล์ด้วยข้อดีที่น้อยมากดังนั้นลองติดตั้งระบบที่มีเครื่องมือมาด้วย!

เริ่มต้นด้วยการสร้างดิสก์ RAM ใหม่จากramdiskไดเรกทอรีที่สร้างขึ้นด้านบนพิมพ์:

find . ! -name . | LC_ALL=C sort | cpio -o -H newc -R root:root | gzip > ../new-boot.img-ramdisk.gz

หรือถ้าคุณต้องการสร้างไฟล์เก็บถาวร LZ4:

find . ! -name . | LC_ALL=C sort | cpio -o -H newc -R root:root | lz4 > ../new-boot.img-ramdisk.lz4

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

ไปที่ไดเรคทอรี่หลักเพื่อสร้างnew-boot.imgไฟล์เอง

cd ..

ดังที่เห็นด้านบนunpackbootimgคำสั่งของ CyanogenMod จะสร้างไฟล์ที่ตรงกับแต่ละพารามิเตอร์ที่mkbootimgต้องการ ดังนั้นสิ่งที่คุณต้องทำคือออก a mkbootimg -hเพื่อรับรายการพารามิเตอร์ทั้งหมดจากนั้นตั้งค่าแต่ละรายการให้เป็นค่าที่เหมาะสมโดยใช้ไฟล์ที่ตรงกัน โปรดทราบว่าพารามิเตอร์บางตัวคาดว่าเส้นทางไฟล์ในขณะที่คนอื่นคาดว่าจะได้รับเนื้อหาของไฟล์เป็นค่า ดูตัวอย่างของคำสั่งผลลัพธ์ด้านล่าง:

mkbootimg --kernel ./boot.img-zImage \
--ramdisk ./new-boot.img-ramdisk.gz \
--second ./boot.img-second \
--cmdline "$(cat ./boot.img-cmdline)" \
--base "$(cat ./boot.img-base)" \
--pagesize "$(cat ./boot.img-pagesize)" \
--dt ./boot.img-dt \
--ramdisk_offset "$(cat ./boot.img-ramdisk_offset)"
--second_offset "$(cat ./boot.img-second_offset)" \
--tags_offset "$(cat ./boot.img-tags_offset)" \
--output ./new-boot.img

ไม่มีการตั้งค่าพารามิเตอร์สองตัวเท่านั้นที่นี่:

  • --board: ตามความเข้าใจของฉันนี่เป็นเพียงข้อมูลที่อนุญาตให้แทรกชื่อรุ่นในภาพที่ได้
  • --id: อันนี้ไม่ได้คาดหวังค่าใด ๆ มันเพียงพิมพ์ตัวระบุที่ไม่ซ้ำกันหลังจากที่ภาพถูกสร้างขึ้น (รวมการประทับเวลาและการตรวจสอบ)

แฟลชnew-boot.imgไฟล์ไปยังอุปกรณ์

  • เริ่มอุปกรณ์ในโหมด fastboot (หรือโหมด bootloader ซึ่งโดยปกติแล้วจะมีปุ่มเปิดปิดและปุ่มเพิ่มระดับเสียง)
  • เชื่อมต่อสาย USB
  • ตรวจสอบว่าอุปกรณ์ตรวจพบอย่างถูกต้อง:

    sudo fastboot devices
    
  • ลองบูตโดยใช้ ROM ใหม่ (โดยไม่ต้องกระพริบดังนั้นในกรณีที่มีปัญหาคุณต้องรีสตาร์ทโทรศัพท์เพื่อให้มันกลับมาตามรอยเปลี่ยน./new-boot.imgชื่อไฟล์ด้วยตัวคุณเอง):

    sudo fastboot boot ./new-boot.img
    
  • หากโทรศัพท์ทำงานได้ดีกับอิมเมจสำหรับบูตใหม่ให้กลับไปที่โหมด fastboot และแฟลชอย่างถาวร:

    sudo fastboot flash boot ./new-boot.img
    sudo fastboot reboot
    

ข้อสรุป

ขั้นตอนนี้อาจดูน่ากลัวในตอนแรก แต่เมื่อคุณได้รับแล้วคุณจะเห็นว่าไม่จริง

ด้าน "ที่น่ากลัว" มาจากความจริงที่ว่าไม่มี "ระบบ Android" เดียว: ผู้ผลิตและผู้ให้บริการ ROM จำนวนมากทำการเปลี่ยนแปลงซึ่งอาจมีตั้งแต่เส้นทางที่แตกต่างไปเล็กน้อยสู่สภาพแวดล้อมที่ไม่ได้มาตรฐานอย่างสมบูรณ์

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

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


2

ใช้ครัว Android มีตัวเลือกคือการแกะ / หีบห่อ boot.img Advanced optionsมีภายใต้


น่าเศร้าที่ผู้เขียนดั้งเดิมได้หยุดอย่างเป็นทางการในการบำรุงรักษาครัว Android: " โครงการนี้สิ้นสุดลงตั้งแต่ปี 2556 เนื่องจากฉันมีจำนวนอุปกรณ์ที่รองรับความต้องการสุขภาพที่ไม่ดีและการร้องขอความช่วยเหลืออย่างต่อเนื่อง " (ฉันให้ลิงก์ในคำตอบของฉัน) แต่ฉันไม่ทราบว่าพวกเขาได้รับการสนับสนุนเท่าไร (ฉันไม่พบวิธีสาธารณะที่ชัดเจนในการหยิบยกประเด็นหรือขอวิวัฒนาการเช่น)
WhiteWinterWolf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.