Cara DIY Port TWRP untuk Android

, anda boleh mencuba bekerja dengan pokok yang lebih kecil, seperti ini TWRP Manifest Minimum . Namun, mungkin ada situasi di mana anda memerlukan lebih banyak repos daripada yang diizinkan oleh manifes ini.



Catatan utama sebelum menyusun: Sekiranya anda menambah atau menukar bendera, anda perlu membersihkan (atau membuat clobber) sebelum mengkompilasi semula, jika tidak, perubahan bendera anda tidak akan disertakan!

Setelah anda mempunyai kod sumber TWRP, kami perlu mengubah beberapa bendera binaan untuk peranti khusus anda. Cari BoardConfig.mk untuk peranti anda - biasanya ini akan dijumpai di peranti / pengeluar / nama kod (contohnya, peranti / lge / hammerhead / BoardConfig.mk)



Konfigurasi papan perlu memasukkan tetapan seni bina dan platform - biasanya sudah disertakan sekiranya anda menggunakan konfigurasi peranti orang lain. Tetapi jika anda membuat sendiri, anda perlu menambahkannya. Ini kerana tanpa mereka, boot pemulihan mungkin akan berubah dan hanya akan memaparkan logo TeamWin di skrin anda berulang kali.



Bendera hendaklah diletakkan di bahagian bawah BoardConfig.mk, di bawah tajuk #twrp



Untuk semua peranti, anda perlu mengarahkan TWRP tema mana yang akan digunakan. Bendera TW_THEME digunakan dan bukannya bendera DEVICE_RESOLUTION yang lebih lama, yang bermaksud TWRP kini menggunakan penskalaan untuk meregangkan tema apa pun.

Pilihan anda adalah: portrait_hdpi, portrait_mdpi, landscape_hdpi, landscape_mdpi, dan watch_mdpi. Untuk mod potret, kemungkinan besar anda mahukan tema hdpi 720 × 1280 dan lebih tinggi, tetapi untuk peranti lanskap menggunakan 1280 × 720 ke atas.

Jadi bahagian bendera binaan + bendera tema anda akan kelihatan seperti ini:



#twrp

TW_THEME: = potret_hdpi

Beberapa bendera tambahan yang anda ingin sertakan dalam bahagian ini (kredit kepada forum XDA):

  • RECOVERY_SDCARD_ON_DATA: = true (ini membolehkan pengendalian / data / media yang betul pada peranti yang mempunyai folder ini untuk penyimpanan (kebanyakan Honeycomb dan peranti yang pada awalnya dihantar dengan ICS seperti Galaxy Nexus) Bendera ini tidak diperlukan untuk jenis peranti ini. Sekiranya anda jangan tentukan bendera ini dan jangan sertakan rujukan apa pun ke / sdcard, / internal_sd, / internal_sdcard, atau / emmc di fstab anda, maka secara automatik kami akan menganggap bahawa peranti tersebut menggunakan storan yang ditiru.)
  • BOARD_HAS_NO_REAL_SDCARD: = true - melumpuhkan perkara seperti partition card SD dan mungkin menjimatkan sedikit ruang sekiranya TWRP tidak sesuai dengan patition pemulihan anda
  • TW_NO_BATT_PERCENT: = true - melumpuhkan paparan peratusan bateri untuk peranti yang tidak menyokongnya dengan betul
  • TW_CUSTOM_POWER_BUTTON: = 107 - peta khas butang kuasa untuk skrin kunci
  • TW_NO_REBOOT_BOOTLOADER: = true - mengeluarkan butang but semula but semula dari menu but semula
  • TW_NO_REBOOT_RECOVERY: = true - mengeluarkan butang pemulihan but semula dari menu but semula
  • RECOVERY_TOUCHSCREEN_SWAP_XY: = true - menukar pemetaan sentuhan antara paksi X dan Y
  • RECOVERY_TOUCHSCREEN_FLIP_Y: = true - membalikkan nilai skrin sentuh paksi y
  • RECOVERY_TOUCHSCREEN_FLIP_X: = true - membalikkan nilai skrin sentuh paksi x
  • TWRP_EVENT_LOGGING: = true - membolehkan log peristiwa sentuhan untuk membantu menyelesaikan masalah skrin sentuh (jangan biarkan ini dilepaskan - ini akan mengisi fail log anda dengan cepat)
  • BOARD_HAS_FLIPPED_SCREEN: = true - membalikkan skrin terbalik untuk skrin yang dipasang terbalik

Bendera binaan tambahan dapat dijumpai dengan melihat fail Android.mk di sumber pemulihan, tetapi biasanya tidak digunakan sehingga tidak ada gunanya mendokumentasikannya.

Menggunakan Pemulihan.Fstab

TWRP 2.5 dan yang lebih tinggi mempunyai sokongan untuk pemulihan baru. Ciristab - terutamanya kemampuan untuk memperluas fungsi sandaran / pemulihan TWRP. Anda tidak perlu menambahkan bendera fstab, kerana sebahagian besar partisi akan dikendalikan secara automatik.

TWRP hanya menyokong fstab v2 dalam versi 3.2.0 dan lebih tinggi - dalam versi TWRP yang lebih lama, anda perlu menggunakan format fstab lama. Berikut adalah contoh TWRP fstab untuk Galaxy S4:

Untuk memaksimumkan keserasian dengan pokok binaan tertentu, anda boleh membuat twrp.fstab dan menggunakan PRODUCT_COPY_FILES untuk meletakkan di> etc> twrp.fstab.

Apabila TWRP melancarkan dan menemui twrp.fstab dalam ramdisk, ia akan menamakannya semula ke> etc> recovery.fstab.bak - pada dasarnya ia menggantikan fstab dari peranti anda dengan TWRP fstab, yang memperluas keserasian.

Contoh kod:

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

Fstab dalam TWRP dapat berisi beberapa 'flag' untuk setiap partisi yang tercantum dalam fstab.

Bendera ini ditambah hingga akhirnya dari penyenaraian partisi di fstab, dipisahkan dengan ruang / ruang / tab putih. Bendera hanya akan mempengaruhi partisi itu, tetapi tidak ada yang lain. Bendera dipisahkan dengan titik koma. Berikut adalah beberapa kod contoh:

Oleh itu mari kita kaji sedikit demi sedikit. Bendera di sini akan memberikan nama paparan 'Micro SDcard'. Bendera wipeingui akan menjadikan partisi ini tersedia untuk disapu dalam menu Lap Lanjutan. Bendera yang boleh ditanggalkan menunjukkan bahawa partisi ini tidak selalu ada, yang akan mengelakkan kesalahan pemasangan tidak ditunjukkan.

Senarai bendera yang lengkap (kredit kepada TeamWin) :

  • boleh ditanggalkan - menunjukkan bahawa partisi mungkin tidak ada yang menghalang kesalahan pemasangan daripada ditampilkan semasa boot
  • penyimpanan - menunjukkan bahawa partisi boleh digunakan sebagai penyimpanan yang menjadikan partisi itu tersedia sebagai penyimpanan untuk sandaran, pemulihan, pemasangan zip, dll.
  • storan tetapan - hanya satu partisi yang harus ditetapkan sebagai penyimpanan tetapan, partisi ini digunakan sebagai lokasi untuk menyimpan fail tetapan TWRP
  • boleh disapu - menunjukkan bahawa partisi dapat dihapuskan oleh sistem back-end, tetapi mungkin tidak disenaraikan di GUI untuk dihapuskan oleh pengguna
  • penggunarmrf - mengesampingkan jenis penghapusan format biasa dan hanya membenarkan partisi dilap menggunakan perintah rm -rf
  • sandaran = - mesti digantikan dengan tanda sama, jadi sandaran = 1 atau sandaran = 0, 1 menunjukkan bahawa partisi boleh disenaraikan dalam senarai sandaran / pulih sementara 0 memastikan bahawa partisi ini tidak akan muncul dalam senarai sandaran.
  • mengelap - menjadikan partisi muncul di GUI untuk membolehkan pengguna memilihnya untuk disapu di menu penghapusan lanjutan
  • wipeduringfactoryreset - partition akan dihapuskan semasa tetapan semula kilang
  • abaikanblkid - blkid digunakan untuk menentukan sistem fail apa yang digunakan oleh TWRP, bendera ini akan menyebabkan TWRP melangkau / mengabaikan hasil blkid dan menggunakan sistem fail yang ditentukan dalam fstab sahaja
  • retainlayoutversion - menyebabkan TWRP menyimpan fail .layoutversion dalam / data pada peranti seperti Sony Xperia S yang jenis penggunaan / data / media tetapi masih mempunyai partisi / sdcard yang terpisah
  • pautan simbol = - menyebabkan TWRP menjalankan perintah mount tambahan ketika memasang partisi, yang biasanya digunakan dengan / data / media untuk membuat / sdcard
  • paparan = - menetapkan nama paparan untuk partisi untuk disenaraikan di GUI
  • nama storagen = - menetapkan nama penyimpanan untuk partisi untuk disenaraikan dalam senarai penyimpanan GUI
  • nama sandaran = - menetapkan nama sandaran untuk partisi untuk disenaraikan dalam senarai sandaran / pemulihan GUI
    length = - biasanya digunakan untuk menempah ruang kosong di akhir partisi / data untuk menyimpan kunci penyahsulitan ketika penyulitan penuh peranti Android ada, tidak menetapkan ini boleh menyebabkan ketidakupayaan untuk mengenkripsi peranti
  • kanencryptbackup = - 1 atau 0 untuk mengaktifkan / mematikan, membuat TWRP menyulitkan sandaran partisi ini jika pengguna memilih penyulitan (hanya berlaku untuk sandaran tar, bukan gambar)
  • penggunadataencryptbackup = - 1 atau 0 untuk mengaktifkan / melumpuhkan, membuat TWRP menyulitkan hanya bahagian data pengguna dari partisi ini, subfuld tertentu seperti / data / aplikasi tidak akan dienkripsi untuk menjimatkan masa
  • bahagian kecil = - mesti digantikan dengan tanda sama dan jalan partisi itu adalah bahagian kecil dari. Subpartisi diperlakukan sebagai 'bahagian' dari partisi utama jadi misalnya, TWRP secara automatik menjadikan / datadata sebagai subpartisi / data. Ini bermaksud bahawa / datadata tidak akan muncul dalam senarai GUI, tetapi / datadata akan dihapus, disandarkan, dipulihkan, dipasang, dan dilepaskan bila operasi tersebut dilakukan pada / data.

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

Ini menggabungkan ketiga-tiga partisi menjadi satu entri 'EFS' dalam TWRP GUI yang membolehkan ketiga-tiganya disandarkan dan dipulihkan bersama dalam satu entri.

Dengan TWRP 3.2.0 ke atas yang menggunakan V2 Fstab, anda tidak perlu menambah bendera binaan . Sokongan V2 Fstab adalah automatik. V2 Fstab juga menyokong wildcard (simbol *) yang boleh berguna untuk kad USB OTG dan micro-SD dengan pelbagai partisi. Anda juga boleh terus menggunakan format V1 Fstab, dan sangat mungkin untuk menggunakan kedua-dua jenis V1 dan V2 dalam Fstab yang sama.

Contohnya, berikut adalah garis V1 Fstab dengan wildcard yang dimaksudkan untuk USB OTG:

Berikut adalah garis V2 Fstab untuk peranti yang sama yang mencapai hasil yang sama:

Selain itu anda boleh memasukkan twrp.flags dll yang menggunakan format V1 Fstab, dan ia boleh digunakan untuk melengkapkan V2 Fstab dengan bendera TWRP, partisi tambahan yang tidak termasuk dalam V2 Fstab, atau mengesampingkan tetapan di V2 Fstab.

Sebagai contoh, peranti Huawei mungkin mempunyai fstab V2 ini dalam pemulihan etc.fstab:

Bendera ini juga boleh disertakan:

Jadi di sini, dua baris pertama dalam TWRP.Flags akan menambah partisi Boot dan Pemulihan, yang mana tidak hadir di F2 F2. Kemudian, baris / cust di TWRP.flags akan mengarahkan TWRP untuk membenarkan pengguna akhir membuat sandaran partisi (cust), dan memberikannya nama paparan.

Partisi / misc terdapat dalam twrp.flags, dan partisi / oeminfo memerintahkan TWRP untuk juga membolehkan membuat sandaran dan memberikannya nama paparan.

Kami memerlukan garis / data kerana banyak peranti Huawei dienkripsi, tetapi menggunakan binari Huawei khas - oleh itu, kami menggunakan binari Huawei untuk mendekripsi peranti secara automatik dalam Mode Pemulihan. Jadi di sini / data line akan memerintahkan TWRP untuk menggunakan / dev / block / dm -0, dan not / dev / block / bootdevice / by-name / userdata, yang biasanya digunakan untuk 'pemasangan' yang tepat '.

Akhirnya ada / system_image, sehingga TWRP akan memasukkan pilihan untuk membuat imej sistem dalam menu Backup and Restore.

Github TeamWin rasmi juga harus mengandungi contoh pokok peranti terbaru untuk peranti yang mempunyai port TWRP rasmi. Github TeamWin boleh didapati SINI .

Setelah Omni atau CM diselaraskan, dan anda telah menyiapkan bendera TWRP, anda harus membina sumber ./build/envsetup.sh

Dan anda mahu 'makan tengah hari' peranti, jadi anda boleh melakukan sesuatu seperti 'makan tengah hari omni_hammerhead.eng'.

Selepas makan tengah hari yang berjaya, kebanyakan peranti akan menggunakan arahan ini:

Anda perlu mengganti # in –j # dengan kiraan inti +1. Oleh itu, jika anda mempunyai dual core -j3, quadcore akan menjadi –j5, dll. Gantikan # dengan bilangan inti +1, jadi jika anda mempunyai dual core itu -j3 dan quad core menjadi -j5, dll.

Juga, peranti Samsung khas memerlukan ini:

Ini kerana kebanyakan peranti Samsung termasuk pemulihan sebagai ramdisk tambahan dalam but, bukannya pada partisi pemulihan yang berasingan (yang digunakan kebanyakan peranti lain).

Sekarang, anda harus menyusun TWRP untuk peranti anda dan semoga ia berfungsi dalam persekitaran emulator. Anda harus selalu menguji port TWRP anda di persekitaran emulator terlebih dahulu, jadi anda tidak berisiko melakukan bork pada peranti anda.
Muat turun sekumpulan fail konfigurasi peranti ini.

Kumpulkan gambar pemulihan menggunakan fail peranti tersebut. Di Android SDK, klik pada Tools -> Manage AVDs. Klik Baru. Tetapkan seperti berikut:

Kemudian klik OK.

Sebaik sahaja anda mempunyai AVD dan gambar pemulihan, anda boleh boot TWRP di emulator dengan melayari folder android-sdk / tools anda dan jalankan arahan ini:

Perhatikan bahawa ADB tidak berfungsi dengan segera. Lebih kurang 10 hingga 15 saat setelah TWRP selesai boot, ADB akan masuk dalam talian. Kami memulakan ADB melalui init.rc jadi walaupun TWRP gagal boot kerana beberapa jenis kesalahan kod yang mungkin anda buat, ADB tetap berfungsi. Selamat mencuba!

Peranti TWRP dan A / B (kredit kepada TeamWin):

Dari sudut pandang TWRP, peranti A / B tidak jauh berbeza dengan peranti biasa, tetapi pembangun nampaknya malu untuk bekerja pada peranti ini. Saya akan cuba menjelaskan mengenai perkara ini dan mudah-mudahan ini akan menjadi panduan untuk membawa TWRP ke peranti A / B.

Pertama, mari kita fahami apa itu peranti A / B dan bagaimana ia berbeza. Peranti A / B mempunyai pendua banyak partisi pada peranti. Peranti A / B mempunyai partisi syx 2x, partition boot 2x, partition vendor 2x, partition modem / firmware 2x, dan lain-lain. Hanya satu slot yang digunakan pada satu masa. Semasa boot awal, tahap pertama bootloader membaca sejumlah kecil data yang disebut BCB atau Bootloader Control Block dan memutuskan sama ada boot partition A atau partition B. Apabila kemas kini OTA tersedia, data dari slot aktif disalin dari slot tidak aktif dan ditambal / dikemas kini. Sebagai contoh, jika anda sedang berada di slot A, peranti anda akan memuat turun kemas kini dan menyalin partisi sistem yang ada dari slot A dan menambal / mengemas kini dengan kemas kini baru ke dalam slot B. Setelah penyalinan dan kemas kini selesai, BCB dikemas kini dan peranti reboot menggunakan slot B. Pada masa berikutnya kemas kini tersedia, partisi sistem di slot B disalin ke slot A dan dikemas kini, BCB dikemas kini, dan kami but semula ke slot A. Semasa melihat partisi pada peranti, anda akan melihat sesuatu seperti ini:

Perhatikan partisi dual boot, sistem dan vendor dalam senarai di atas, tetapi hanya satu partisi data pengguna.

Walaupun secara teknikal tidak ada keperluan yang saya ketahui, semua peranti A / B yang dihantar setakat ini tidak mempunyai partisi pemulihan yang berasingan. Sebaliknya, imej but mengandungi pemulihan dalam ramdisknya. Yang penting adalah mengetahui bahawa imej boot sekarang juga mengandungi pemulihan. Untuk kelengkapan, partition sistem adalah sistem fail root penuh. Semasa boot, jika kernel disuruh boot ke pemulihan, ia akan mengekstrak ramdisk di partition boot. Sekiranya kernel tidak diberitahu oleh bootloader untuk boot ke pemulihan, maka kernel akan memasang partisi sistem yang sesuai (A atau B) kerana partisi sistem adalah sistem fail root penuh. Ini bermaksud bahawa partisi sistem pada perangkat ini dipasang ke / bukannya ke / sistem dan partisi sistem mengandungi semua fail yang biasanya terdapat dalam ramdisk gambar boot dan subfolder / sistem.

Dari sudut pandang TWRP, ada 3 perkara yang harus anda lakukan untuk peranti A / B. Pertama, anda perlu menetapkan

Kod:

Terakhir, setelah anda masuk ke TWRP, anda mungkin ingin memastikan bahawa hal-info bootctl bertindak balas dengan betul tanpa kesalahan. Biasanya binari bootctl memerlukan perpustakaan proprietari atau bahkan beberapa perkhidmatan untuk berfungsi dengan betul. Sekiranya bootctl tidak berfungsi dengan betul, anda juga tidak akan dapat menukar slot dalam TWRP dengan betul.

Selain menetapkan

Kod:

AB_OTA_UPDATER: = benar

anda mungkin juga mahu menetapkan:

Kod:

BOARD_USES_RECOVERY_AS_BOOT: = benar

BOARD_BUILD_SYSTEM_ROOT_IMAGE: = benar

Sekiranya anda menetapkan

Kod:

BOARD_USES_RECOVERY_AS_BOOT: = benar

maka buatlah recoveryimage tidak lagi berfungsi dan sebaliknya anda harus membuat bootimage. Saya tidak mengesyorkan menetapkan salah satu bendera ini untuk pokok binaan TWRP sahaja. Bendera ini mungkin diperlukan untuk pembangun yang membina ROM penuh untuk peranti A / B.

Memasang / Menghidupkan TWRP pada peranti A / B:

Oleh kerana semua peranti A / B yang diketahui tidak mempunyai partisi pemulihan yang berasingan, anda akhirnya harus memusingkan TWRP ke partition boot. Pada Pixel 1 dan 2, kami menggunakan boot fastboot untuk boot TWRP buat sementara waktu tanpa flash TWRP. Kami kemudian menyediakan zip untuk membolehkan pengguna mem-flash TWRP ke kedua slot. Anda boleh memuat turun salah satu ritsleting ini dari laman web kami dan mengemas kini zip mengikut keperluan untuk menyokong peranti anda. Akhirnya kami akan menambahkan alat ke TWRP untuk membolehkan pengguna mengembalikan pemulihan pada peranti ini tanpa perlu menggunakan zip.

Baru-baru ini, saya mengusahakan Razer Phone. Razer Phone malangnya tidak menyokong boot fastboot. Sebaliknya, pengguna harus menentukan slot boot aktif mereka sekarang

Kod:

untuk masuk ke TWRP. Setelah berada di TWRP mereka kemudian boleh pergi ke halaman but semula dan kembali ke slot semula aktif mereka, buat sandaran, kemudian pasang TWRP. Menggunakan slot yang tidak aktif membolehkan pengguna mendapatkan sandaran baik dan tidak diubah suai peranti mereka sebelum memasang TWRP.

Nota tambahan:

Sekiranya anda ingin mendapatkan TWRP disokong secara rasmi untuk peranti anda supaya dapat dipasang secara automatik dengan aplikasi TWRP, dan anda benar-benar mahu melakukannya supaya pemilik peranti lain yang sama dapat menikmati sokongan TWRP rasmi dan itu adalah perkara yang baik, anda perlu menghantar maklumat berikut ke TeamWin:

  1. Fail konfigurasi peranti untuk menyusun TWRP dari sumber untuk peranti anda - jangan mengemas semula pemulihan.img dengan tangan , mereka perlu menyusunnya dari sumber.
  2. Setelah TeamWin membuat salinan TWRP, mereka akan menghantarnya kepada anda untuk pengesahan - setelah anda mengesahkannya, TeamWin akan membina gambar yang berfungsi untuk peranti anda, dan menambahkannya ke aplikasi TWRP rasmi.
13 minit membaca