Cara DIY Port TWRP untuk Android

, Anda dapat mencoba mengerjakan pohon yang lebih kecil, seperti ini TWRP Manifes Minimal . Namun, mungkin ada situasi di mana Anda membutuhkan lebih banyak repo daripada yang diizinkan oleh manifes ini.



Catatan utama sebelum kompilasi: Jika Anda menambah atau mengubah flag apa pun, Anda perlu membersihkan (atau membuat clobber) sebelum mengkompilasi ulang, jika tidak, perubahan flag Anda tidak akan disertakan!

Setelah Anda memiliki kode sumber TWRP, kami perlu mengubah beberapa flag build untuk perangkat spesifik Anda. Temukan BoardConfig.mk untuk perangkat Anda - biasanya ini akan ditemukan di perangkat / pabrikan / nama kode (misalnya, perangkat / lge / hammerhead / BoardConfig.mk)



Konfigurasi papan perlu menyertakan arsitektur dan pengaturan platform - ini biasanya sudah disertakan jika Anda menggunakan konfigurasi perangkat orang lain. Tetapi jika Anda membuatnya sendiri, Anda harus menambahkannya. Ini karena tanpa mereka, boot pemulihan mungkin segfault dan itu hanya akan mem-flash logo TeamWin di layar Anda berulang kali.



Bendera harus diletakkan di bagian bawah BoardConfig.mk, di bawah judul #twrp



Untuk semua perangkat, Anda perlu menginstruksikan TWRP tema mana yang akan digunakan. Flag TW_THEME digunakan sebagai pengganti flag DEVICE_RESOLUTION yang lebih lama, yang berarti TWRP sekarang menggunakan penskalaan untuk memperluas tema apa pun.

Pilihan Anda adalah: portrait_hdpi, portrait_mdpi, landscape_hdpi, landscape_mdpi, dan watch_mdpi. Untuk mode potret, Anda kemungkinan besar menginginkan tema hdpi 720 × 1280 dan lebih tinggi, tetapi untuk perangkat lanskap menggunakan 1280 × 720 dan lebih tinggi.

Jadi bagian bendera build + bendera tema Anda akan terlihat seperti ini:



#twrp

TW_THEME: = portrait_hdpi

Beberapa build flag tambahan yang ingin Anda sertakan di bagian ini (kredit untuk forum XDA):

  • RECOVERY_SDCARD_ON_DATA: = true (ini memungkinkan penanganan / data / media yang tepat pada perangkat yang memiliki folder ini untuk penyimpanan (sebagian besar Honeycomb dan perangkat yang awalnya dikirimkan dengan ICS seperti Galaxy Nexus) Bendera ini tidak diperlukan untuk jenis perangkat ini. Jika Anda jangan tentukan flag ini dan juga jangan sertakan referensi apa pun ke / sdcard, / internal_sd, / internal_sdcard, atau / emmc di fstab Anda, maka kami akan secara otomatis menganggap bahwa perangkat menggunakan penyimpanan yang diemulasi.)
  • BOARD_HAS_NO_REAL_SDCARD: = true - menonaktifkan hal-hal seperti partisi kartu SD dan dapat menghemat beberapa ruang jika TWRP tidak sesuai dengan pemulihan Anda
  • TW_NO_BATT_PERCENT: = true - menonaktifkan tampilan persentase baterai untuk perangkat yang tidak mendukungnya dengan benar
  • TW_CUSTOM_POWER_BUTTON: = 107 - peta khusus tombol daya untuk layar kunci
  • TW_NO_REBOOT_BOOTLOADER: = true - menghapus tombol bootloader reboot dari menu reboot
  • TW_NO_REBOOT_RECOVERY: = true - menghapus tombol pemulihan boot ulang dari menu boot ulang
  • RECOVERY_TOUCHSCREEN_SWAP_XY: = true - menukar pemetaan sentuhan antara sumbu X dan Y
  • RECOVERY_TOUCHSCREEN_FLIP_Y: = true - membalik nilai layar sentuh sumbu y
  • RECOVERY_TOUCHSCREEN_FLIP_X: = true - membalik nilai layar sentuh sumbu x
  • TWRP_EVENT_LOGGING: = true - mengaktifkan pencatatan peristiwa sentuh untuk membantu men-debug masalah layar sentuh (jangan biarkan ini aktif untuk rilis - ini akan mengisi logfile Anda dengan sangat cepat)
  • BOARD_HAS_FLIPPED_SCREEN: = true - membalik layar ke bawah untuk layar yang dipasang terbalik

Bendera build tambahan dapat ditemukan dengan melihat-lihat file Android.mk di sumber pemulihan, tetapi biasanya tidak digunakan sehingga tidak ada gunanya mendokumentasikannya.

Menggunakan Recovery.Fstab

TWRP 2.5 dan yang lebih tinggi memiliki dukungan untuk fitur recovery.fstab baru - terutama kemampuan untuk memperluas fungsi backup / restore TWRP. Anda tidak perlu menambahkan flag fstab, karena sebagian besar partisi akan ditangani secara otomatis.

TWRP hanya mendukung fstab v2 di versi 3.2.0 dan yang lebih tinggi - di versi TWRP yang lebih lama, Anda harus menggunakan format lama fstab. Berikut contoh TWRP fstab untuk Galaxy S4:

Untuk memaksimalkan kompatibilitas dengan pohon build khusus Anda, Anda dapat membuat twrp.fstab dan menggunakan PRODUCT_COPY_FILES untuk ditempatkan di> etc> twrp.fstab.

Ketika TWRP diluncurkan dan menemukan twrp.fstab di ramdisk, itu akan mengganti namanya menjadi> etc> recovery.fstab.bak - pada dasarnya ini menggantikan fstab dari perangkat Anda dengan TWRP fstab, yang memperluas kompatibilitas.

Kode contoh:

PRODUCT_COPY_FILES + = device / lge / hammerhead / twrp.fstab: recovery> root> etc> twrp.fstab

Fstab di TWRP dapat berisi beberapa 'tanda' untuk setiap partisi yang terdaftar di fstab.

Bendera ini ditambahkan sampai akhir dari daftar partisi di fstab, dipisahkan oleh spasi / spasi / tab. Bendera hanya akan mempengaruhi partisi itu, tetapi tidak pada yang lain. Bendera dipisahkan dengan titik koma. Berikut beberapa contoh kode:

Jadi mari kita bahas ini sedikit demi sedikit. Bendera di sini akan memberi nama tampilan “Micro SDcard”. Bendera wipeingui akan membuat partisi ini tersedia untuk dihapus di menu Penghapusan Lanjutan. Bendera yang dapat dilepas menunjukkan bahwa partisi ini tidak selalu ada, yang akan mencegah kesalahan pemasangan ditampilkan.

Daftar lengkap bendera (kredit untuk TeamWin) :

  • dilepas - menunjukkan bahwa partisi mungkin tidak ada yang mencegah kesalahan pemasangan ditampilkan selama boot
  • penyimpanan - menunjukkan bahwa partisi dapat digunakan sebagai penyimpanan yang menjadikan partisi tersedia sebagai penyimpanan untuk pencadangan, pemulihan, penginstalan zip, dll.
  • penyimpanan pengaturan - hanya satu partisi yang harus ditetapkan sebagai penyimpanan pengaturan, partisi ini digunakan sebagai lokasi untuk menyimpan file pengaturan TWRP
  • canbewiped - menunjukkan bahwa partisi dapat dihapus oleh sistem back-end, tetapi mungkin tidak terdaftar di GUI untuk dihapus oleh pengguna
  • userrmrf - mengesampingkan tipe format normal dari penghapusan dan hanya mengizinkan partisi untuk dihapus menggunakan perintah rm -rf
  • backup = - harus diganti dengan tanda sama dengan, jadi backup = 1 atau backup = 0, 1 menunjukkan bahwa partisi dapat dicantumkan di daftar backup / restore sementara 0 memastikan bahwa partisi ini tidak akan muncul di daftar backup.
  • wipeingui - membuat partisi muncul di GUI untuk memungkinkan pengguna memilihnya untuk dihapus di menu penghapusan lanjutan
  • wipeduringfactoryreset - partisi akan dihapus selama reset pabrik
  • cuek - blkid digunakan untuk menentukan sistem file apa yang digunakan oleh TWRP, tanda ini akan menyebabkan TWRP melewati / mengabaikan hasil dari blkid dan menggunakan sistem file yang ditentukan di fstab saja
  • retensilayoutversion - menyebabkan TWRP menyimpan file .layoutversion di / data pada perangkat seperti Sony Xperia S yang jenis penggunaan / data / media tetapi masih memiliki partisi / sdcard terpisah
  • symlink = - menyebabkan TWRP menjalankan perintah mount tambahan saat memasang partisi, biasanya digunakan dengan / data / media untuk membuat / sdcard
  • layar = - menetapkan nama tampilan untuk partisi untuk dicantumkan di GUI
  • nama penyimpanan = - menetapkan nama penyimpanan untuk partisi untuk dicantumkan dalam daftar penyimpanan GUI
  • backupname = - menetapkan nama cadangan untuk partisi untuk dicantumkan dalam daftar pencadangan / pemulihan GUI
    length = - biasanya digunakan untuk mencadangkan ruang kosong di akhir partisi / data untuk menyimpan kunci dekripsi saat enkripsi perangkat lengkap Android ada, tidak menyetel ini dapat menyebabkan ketidakmampuan untuk mengenkripsi perangkat
  • canencryptbackup = - 1 atau 0 untuk mengaktifkan / menonaktifkan, membuat TWRP mengenkripsi cadangan partisi ini jika pengguna memilih enkripsi (hanya berlaku untuk cadangan tar, bukan gambar)
  • userdataencryptbackup = - 1 atau 0 untuk mengaktifkan / menonaktifkan, membuat TWRP hanya mengenkripsi bagian data pengguna dari partisi ini, subfuldes tertentu seperti / data / app tidak akan dienkripsi untuk menghemat waktu
  • subpartisi = - harus diganti dengan tanda sama dengan dan jalur partisi yang merupakan subpartainya. Subpartisi dianggap sebagai 'bagian' dari partisi utama, jadi misalnya, TWRP secara otomatis membuat / datadata menjadi sub-partisi dari / data. Ini berarti / datadata tidak akan muncul di daftar GUI, tetapi / datadata akan dihapus, dicadangkan, dipulihkan, dipasang, dan dilepas kapan pun operasi tersebut dilakukan pada / data.

Contoh yang baik dari penggunaan subpartisi adalah partisi 3x efs pada LG Optimus G:

Ini menggabungkan semua 3 partisi menjadi satu entri “EFS” di TWRP GUI yang memungkinkan ketiganya dicadangkan dan dipulihkan bersama di bawah satu entri.

Dengan TWRP 3.2.0 dan yang lebih baru yang menggunakan V2 Fstab, Anda tidak perlu menambahkan flag build apa pun . Dukungan V2 Fstab otomatis. V2 Fstab juga mendukung wildcard (simbol *) yang dapat berguna untuk USB OTG dan kartu micro-SD dengan banyak partisi. Anda juga dapat terus menggunakan format Fstab V1, dan sangat memungkinkan untuk menggunakan jenis V1 dan V2 dalam Fstab yang sama.

Misalnya, berikut adalah baris Fstab V1 dengan wildcard yang dimaksudkan untuk USB OTG:

Berikut adalah baris Fstab V2 untuk perangkat yang sama yang mencapai hasil yang sama:

Selain itu Anda dapat menyertakan dll twrp.flags yang menggunakan format V1 Fstab, dan mereka dapat digunakan untuk melengkapi V2 Fstab dengan flag TWRP, partisi tambahan yang tidak termasuk dalam V2 Fstab, atau pengaturan utama dalam V2 Fstab.

Misalnya, perangkat Huawei mungkin memiliki V2 fstab ini di recovery.fstab dll:

Mungkin juga memiliki bendera ini termasuk:

Jadi di sini, dua baris pertama di TWRP. Bendera akan menambahkan partisi Boot dan Pemulihan, yang tidak hadir di V2 Fstab. Kemudian, baris / cust di TWRP.flags akan menginstruksikan TWRP untuk mengizinkan pengguna akhir mencadangkan partisi (cust), dan memberinya nama tampilan.

Partisi / misc ada di twrp.flags, dan partisi / oeminfo menginstruksikan TWRP untuk juga memungkinkan pencadangan dan memberinya nama tampilan.

Kami memerlukan jalur / data karena banyak perangkat Huawei dienkripsi, tetapi menggunakan biner Huawei khusus - jadi, kami menggunakan binari Huawei untuk mendekripsi perangkat secara otomatis dalam Mode Pemulihan. Jadi di sini baris / data akan memerintahkan TWRP untuk menggunakan / dev / block / dm -0, dan bukan / dev / block / bootdevice / by-name / userdata, yang biasanya digunakan untuk 'pemasangan yang benar' '.

Terakhir ada / system_image, sehingga TWRP akan menyertakan opsi untuk membuat image sistem di menu Backup and Restore.

Github resmi TeamWin juga harus berisi pohon perangkat contoh terbaru untuk perangkat yang memiliki port TWRP resmi. Github TeamWin dapat ditemukan SINI .

Setelah Omni atau CM disinkronkan, dan Anda telah menyiapkan tanda TWRP, Anda harus membuat sumber ./build/envsetup.sh

Dan Anda pasti ingin 'makan siang' perangkat, jadi Anda bisa melakukan sesuatu seperti 'makan siang omni_hammerhead.eng'.

Setelah makan siang yang sukses, sebagian besar perangkat akan menggunakan perintah ini:

Anda perlu mengganti # in –j # dengan jumlah inti +1. Jadi jika Anda memiliki inti ganda itu –j3, sebuah quadcore akan menjadi –j5, dll. Ganti # dengan jumlah inti +1, jadi jika Anda memiliki inti ganda itu -j3 dan quad core menjadi -j5, dll.

Selain itu, perangkat Samsung biasa akan membutuhkan ini:

Ini karena sebagian besar perangkat Samsung menyertakan pemulihan sebagai ramdisk tambahan di boot, bukannya di partisi pemulihan terpisah (yang digunakan sebagian besar perangkat lain).

Sekarang, Anda harus memiliki TWRP yang dikompilasi untuk perangkat Anda dan semoga berfungsi di lingkungan emulator. Anda harus selalu menguji port TWRP Anda di lingkungan emulator terlebih dahulu, jadi Anda tidak mengambil risiko merusak perangkat Anda.
Unduh kumpulan file konfigurasi perangkat ini.

Kompilasi gambar pemulihan menggunakan file perangkat tersebut. Di Android SDK, klik Tools -> Manage AVDs. Klik Baru. Siapkan sebagai berikut:

Lalu klik OK.

Setelah Anda memiliki AVD dan gambar pemulihan Anda, Anda dapat mem-boot TWRP di emulator dengan menjelajahi folder android-sdk / tools Anda dan menjalankan perintah ini:

Perhatikan bahwa ADB tidak langsung berfungsi. Sekitar 10 hingga 15 detik setelah TWRP selesai booting, ADB akan online. Kami memulai ADB melalui init.rc jadi meskipun TWRP gagal melakukan boot karena beberapa jenis kesalahan kode yang mungkin Anda buat, ADB tetap berfungsi. Nikmati!

Perangkat TWRP dan A / B. (kredit untuk TeamWin):

Dari sudut pandang TWRP, perangkat A / B tidak jauh berbeda dari perangkat biasa, tetapi pengembang tampaknya malu-malu mengerjakan perangkat ini. Saya akan mencoba menjelaskan subjek ini dan mudah-mudahan ini akan berfungsi sebagai panduan untuk mem-porting perangkat TWRP ke A / B.

Pertama, mari kita pahami apa itu perangkat A / B dan apa bedanya. Perangkat A / B memiliki duplikat dari banyak partisi di perangkat. Perangkat A / B memiliki 2x sistem partisi, 2x partisi boot, 2x partisi vendor, 2x partisi modem / firmware, dll. Hanya satu slot yang digunakan pada satu waktu. Selama boot awal, tahap pertama bootloader membaca sejumlah kecil data yang disebut BCB atau Blok Kontrol Bootloader dan memutuskan apakah akan mem-boot partisi A atau partisi B. Ketika pembaruan OTA tersedia, data dari slot aktif disalin dari slot yang tidak aktif dan ditambal / diperbarui. Misalnya, jika Anda saat ini menggunakan slot A, perangkat Anda akan mengunduh pembaruan dan menyalin partisi sistem yang ada dari slot A dan menambal / memperbaruinya dengan pembaruan baru ke dalam slot B. Setelah penyalinan dan pembaruan selesai, BCB diperbarui dan perangkat melakukan boot ulang menggunakan slot B. Lain kali pembaruan tersedia, partisi sistem di slot B disalin ke slot A dan diperbarui, BCB diperbarui, dan kami melakukan boot ulang ke slot A. Saat melihat partisi di perangkat, Anda akan melihat sesuatu seperti ini:

Catat partisi boot ganda, sistem dan vendor dalam daftar di atas, tetapi hanya satu partisi data pengguna.

Meskipun secara teknis tidak ada persyaratan yang saya ketahui, semua perangkat A / B yang dikirim sejauh ini tidak memiliki partisi pemulihan terpisah. Sebaliknya, image boot berisi pemulihan di ramdisk-nya. Yang penting adalah mengetahui bahwa image booting sekarang juga berisi pemulihan. Untuk kelengkapannya, partisi sistem merupakan sistem file root lengkap. Selama boot, jika kernel diberitahu untuk boot ke pemulihan, itu akan mengekstrak ramdisk di partisi boot. Jika kernel tidak diberi tahu oleh bootloader untuk melakukan boot ke pemulihan, maka kernel akan memasang partisi sistem yang sesuai (A atau B) karena partisi sistem adalah sistem file root lengkap. Ini berarti bahwa partisi sistem pada perangkat ini dipasang ke / bukan ke / sistem dan partisi sistem berisi semua file yang biasanya ada di gambar boot ramdisk dan subfolder / system.

Dari sudut pandang TWRP, ada 3 hal yang harus Anda lakukan untuk perangkat A / B. Pertama, Anda perlu mengatur

Kode:

Terakhir, setelah Anda masuk ke TWRP, Anda mungkin ingin memastikan bahwa bootctl hal-info merespons dengan benar tanpa kesalahan. Biasanya biner bootctl membutuhkan perpustakaan berpemilik atau bahkan beberapa layanan untuk bekerja dengan benar. Jika bootctl tidak bekerja dengan benar, maka Anda tidak akan dapat mengganti slot dalam TWRP dengan benar.

Selain pengaturan

Kode:

AB_OTA_UPDATER: = true

Anda mungkin juga ingin mengatur:

Kode:

BOARD_USES_RECOVERY_AS_BOOT: = benar

BOARD_BUILD_SYSTEM_ROOT_IMAGE: = true

Jika Anda mengatur

Kode:

BOARD_USES_RECOVERY_AS_BOOT: = benar

kemudian buat gambar pemulihan tidak lagi berfungsi dan sebagai gantinya Anda harus membuat gambar boot. Saya tidak menyarankan menyetel salah satu dari tanda ini untuk pohon build khusus TWRP. Bendera ini mungkin diperlukan untuk pengembang yang membuat ROM lengkap untuk perangkat A / B.

Memasang / Mem-Flash TWRP pada perangkat A / B:

Karena semua perangkat A / B yang diketahui tidak memiliki partisi pemulihan terpisah, Anda akhirnya harus mem-flash TWRP ke partisi boot. Pada Pixel 1 dan 2, kami menggunakan boot fastboot untuk mem-boot TWRP sementara tanpa mem-flash TWRP. Kami kemudian menyediakan zip untuk memungkinkan pengguna mem-flash TWRP ke kedua slot. Anda dapat mengunduh salah satu ritsleting ini dari situs web kami dan memperbarui zip sesuai kebutuhan untuk mendukung perangkat Anda. Akhirnya kami akan menambahkan alat ke TWRP untuk memungkinkan pengguna mem-flash pemulihan pada perangkat ini tanpa perlu menggunakan ritsleting.

Baru-baru ini, saya mengerjakan Telepon Razer. Ponsel Razer sayangnya tidak mendukung boot fastboot. Sebagai gantinya, pengguna harus menentukan slot boot yang aktif saat ini menggunakan

Kode:

untuk masuk ke TWRP. Setelah berada di TWRP, mereka kemudian dapat pergi ke halaman reboot dan mengubah kembali ke slot aslinya yang aktif, membuat cadangan, lalu menginstal TWRP. Menggunakan slot tidak aktif memungkinkan pengguna untuk mendapatkan cadangan perangkat mereka yang bagus dan tidak dimodifikasi sebelum menginstal TWRP.

Catatan tambahan:

Jika Anda ingin mendapatkan TWRP didukung secara resmi untuk perangkat Anda agar dapat diinstal secara otomatis dengan aplikasi TWRP, dan Anda benar-benar ingin melakukannya agar pemilik lain dari perangkat yang sama dapat menikmati dukungan TWRP resmi dan itu hal yang menyenangkan untuk dilakukan, Anda harus mengirimkan informasi berikut ke TeamWin:

  1. File konfigurasi perangkat untuk mengkompilasi TWRP dari sumber untuk perangkat Anda - jangan mengemas ulang recovery.img dengan tangan , mereka perlu mengkompilasinya dari sumber.
  2. Setelah TeamWin membuat salinan TWRP, mereka akan mengirimkannya kepada Anda untuk validasi - setelah Anda memvalidasinya, TeamWin akan membuat gambar yang berfungsi untuk perangkat Anda, dan menambahkannya ke aplikasi resmi TWRP.
13 menit membaca