Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Android

วิธีปลดล็อกและรูท Samsung Galaxy A51

ตามการวิเคราะห์ตลาด Samsung Galaxy A51 เป็นหนึ่งในโทรศัพท์ Android ระดับกลางขายดีที่สุด Q1 2020 มาพร้อมหน้าจอ 6.5" AMOLED ชิปเซ็ต Exynos 9611 (10nm) GPU Mali-G72 MP3 และรุ่น RAM 4GB/6GB/8GB

A51 ไม่ได้รับความสนใจมากจากชุมชนม็อด เนื่องจาก Galaxy A71 แพงเพียงเล็กน้อยแต่มีสเปคดีกว่ามาก จึงไม่มี TWRP สำหรับ A51 ไม่ว่าจะเป็นทางการหรือไม่ทางการ ยังมีวิธีปลดล็อกและรูท Galaxy A51 แต่ยุ่งยากมากและต้องมีความอดทน

คุณต้องการทั้ง Windows และ Linux แต่ใช้ bootable Linux USB เช่น Kali Live ได้ นั่นเพราะคุณต้องสร้าง firmware.img ใหม่ผ่านเทอร์มินัล Linux ในคู่มือนี้ หรือใช้ Linux Bash System for Windows

เราแนะนำให้ดำเนินการต่อเฉพาะคนที่คุ้นเคย Linux หรือมีเวลาและความอดทนมากและอยากรูท Samsung Galaxy A51 อย่างแท้จริง

ข้อกำหนด:

  • Windows PC และ bootable Linux OS หรือ Windows พร้อม Linux Bash System
  • Frija หรือ SamFirm สำหรับดาวน์โหลดเฟิร์มแวร์ Galaxy A51 อย่างเป็นทางการ
  • GSI Android 10 A/B Gapps arm64v8
  • LZ4 Extractor
  • Simg2img
  • LPunpack Tool
  • Odin
  • 7zip
  • Permissive kernel

ปลดล็อกบูทโหลเดอร์ Galaxy A51

  1. ไปที่ Settings > About Phone > แตะ Build Number 7 ครั้งเพื่อปลดล็อก Developer Mode
    วิธีปลดล็อกและรูท Samsung Galaxy A51
  2. ไปที่ Developer Options > เปิดใช้งาน OEM Unlocking
  3. ปิด Galaxy A51 แล้วกดค้างปุ่ม Volume ทั้งสองขณะเชื่อมโทรศัพท์กับ PC ผ่าน USB
  4. โทรศัพท์จะบูทเข้า Download Mode กดค้าง Volume Up เพื่อปลดล็อกบูทโหลเดอร์

Galaxy A51 จะทำ factory reset และรีบูทเข้า Android setup wizard

เตรียมไฟล์ .img ใน Windows

  1. ดาวน์โหลดเฟิร์มแวร์ Samsung อย่างเป็นทางการสำหรับรุ่น Galaxy A51 และเวอร์ชันภูมิภาคที่ตรงกัน
  2. แยกไฟล์ชื่อ AP_file.tar.md5 จาก firmware.zip
  3. ใช้ 7zip แยกไฟล์ชื่อ super.img.lz4 จาก AP_file.tar.md5
  4. วาง super.img.lz4 ในโฟลเดอร์ LZ4 และเปิด CMD พิมพ์:
    lz4.exe -d super.img.lz4 superLZ4.img
  5. วาง superLZ4.img ในโฟลเดอร์ Simg2img พิมพ์ใน CMD:
    simg2img.exe -i superLZ4.img -o superSIMG.img

สร้างไฟล์ .img ที่ฟลัชได้ใน Linux

เราเตือนไว้ว่าคู่มือนี้ต้องการเทอร์มินัล Linux (หรือ Linux Bash System for Windows) ตั้งกาแฟไว้ต้ม

นำ superSIMG.img จาก partition Windows ไปวางในโฟลเดอร์ otatools/bin

แยกไฟล์ .img ด้วยเทอร์มินัล Linux ด้วยคำสั่ง:

./lpunpack --slot=0 superSIMG.img <destination dir>

วางไฟล์ GSI Android 10 A/B Gapps arm64v8 ในโฟลเดอร์ Linux เดียวกับที่แยก superSIMG.img แล้วเปลี่ยนชื่อ GSI file เป็น system.img โฟลเดอร์ควรมี odm.img, system.img, vendor.img, และ product.img

ตอนนี้เราต้องทำขั้นตอนสำคัญและละเอียดมาก ซึ่งเราจะรวมไฟล์ทั้งหมดเป็นไฟล์ super.img เดียว โปรดอ่านส่วนนี้อย่างละเอียดก่อนดำเนินต่อ

ในคำสั่ง Linux ต่อไป มีตัวเลขสำคัญบางตัวที่ต้องเปลี่ยน พวกมันอ้างถึงขนาด (ในไบต์) ของไฟล์ .img 3 ไฟล์ที่แยกมา (odm, vendor, product) รวมถึง system.img ที่ดาวน์โหลด/เปลี่ยนชื่อ คุณต้องอัปเดตโค้ดด้วยขนาดจริงในไบต์ของไฟล์ของคุณ

    • system:readonly:1577095168:main (ขนาด system.img unsparsed ในไบต์)
    • vendor:readonly:342155264:main (ขนาด vendor.img ในไบต์)
    • odm:readonly:643456:main (ขนาด odm.img ในไบต์)
    • group main:4293513600 (ขนาด partition main 1577095168+342155264+643456=2776752512)
  • ขนาดของ group main คือผลรวมของไฟล์ .img 4 ไฟล์ คำนวณให้ถูกต้อง!

คำสั่ง Linux ที่ต้องใช้ หลังปรับเปลี่ยนแล้ว:

./lpmake --metadata-size 65536 --super-name super --metadata-slots 2 --device super:4294967296 --group main:4293513600 --partition system:readonly:1577095168:main --image system=./system.img --partition vendor:readonly:342155264:main --image vendor=./vendor.img --partition odm:readonly:643456:main --image odm=./odm.img --sparse --output ./super.img

ควรสร้างไฟล์ใหม่ชื่อ super.img นำไปวางใน partition Windows

ฟลัช super.img ใน Windows

  1. ใช้ 7zip สร้างไฟล์ .tar และวาง super.img ที่สร้างใน Linux ไว้ภายใน
  2. เปิด Odin ยกเลิก Auto Reboot ใส่ไฟล์ .tar ในแท็บ AP
  3. บูท Galaxy A51 เข้า Download Mode คลิก Start ใน Odin
  4. หลังฟลัชไฟล์ .tar เสร็จ อย่ารีบูท Galaxy A51 ใส่ไฟล์ (NoForcedEnforce).tar ในแท็บ AP และฟลัชอีกครั้ง
  5. รีบูท Galaxy A51 เข้า recovery ต้นฉบับ และทำ factory reset

เมื่อกลับเข้าระบบ Android ติดตั้งแอป terminal emulator รันคำสั่ง:

su
setenforce 0
getenforce (ควรแสดง Permissive)