Bagaimana menjalankan skrip saat boot di CM12.1?

9

Sebagian besar pertanyaan yang dapat saya temukan terkait dengan ini bertanggal 2011 dan sekitar itu, jadi mungkin tidak terlalu mengejutkan bahwa banyak hal telah berubah sejak saat itu. Saya sudah mencoba banyak hal, tanpa hasil apa pun.

Ada beberapa skrip di /system/etc/init.d(yang juga muncul di bawah /etc/init.ddi perangkat saya). Secara khusus, ada 00bannerskrip yang seharusnya mencatat pesan selamat datang. Pesan sambutan tidak pernah muncul di logcat.

Saya telah menempatkan skrip saya sendiri di sini, yang akhirnya dikurangi menjadi hanya ini:

#!/system/bin/sh
log -t mytest Testing

Tidak ada. Tidak pernah muncul di logcat kecuali dijalankan secara manual melalui terminal. Lalu berhasil.

Ada juga 90userinitfile di sini, yang memanggil /data/local/userinit.shjika ada. Saya sudah membuatnya dengan konten yang sama seperti di atas. Sekali lagi, tidak ada yang muncul di logcat. Yang tidak mengejutkan, sungguh, karena jika 00bannertidak berjalan maka ini juga tidak.

Saya mencari sesuatu yang bernama "init.rc" tetapi tidak ada yang seperti itu ada di mana saja di perangkat saya.

Semua skrip saya memiliki 755 izin.

Apa lagi yang bisa saya coba? (selain aplikasi yang menjalankan skrip untuk saya)

RomanSt
sumber
Skrip mana yang ingin Anda jalankan, dan mengapa?
tak terlupakanMendukungMonika
Sayangnya, sedikit penggalian yang saya lakukan menghasilkan "Tidak akan berfungsi pada ROM kustom." Tampaknya CM memiliki cara mereka sendiri dalam melakukan sesuatu. Tidak yakin Anda ingin mengacaukannya. Namun ternyata Anda dapat membangun file boot.img Anda sendiri dan menambahkan skrip khusus ke situ. Mungkin itu akan berhasil untukmu.
jer3my
@ jer3my Saya sangat senang menerimanya sebagai jawaban aktual dan memberikan hadiah jika Anda memiliki tautan yang menurut saya meyakinkan / berwibawa.
RomanSt
Saya akan memposting jawabannya dalam beberapa detik, juga menemukan sesuatu yang lain yang dapat membantu Anda.
jer3my
init.rc adalah bagian dari initramfs itu tidak termasuk dalam boot.img Anda dapat menggunakan alat seperti unmkbootimg untuk mengekstraknya, mengeditnya kemudian membangunnya kembali menggunakan mkbootimg, dua alat yang tersedia dalam proyek cm katakan padaku apa yang Anda katakan menggunakan saya akan mengkompilasi mereka untuk Anda: D
lord-ralf-adolf

Jawaban:

5

ada metode sederhana untuk menambahkan dukungan init.d ke sembarang android yang di-root untuk versi 4.0 dan di atasnya, google membuat skrip yang berjalan saat boot sebagai superuser skrip install-recovery.shyang digunakan untuk merefleksikan pemulihan stok pada setiap boot yang mereka pikir itu bagus keamanan untuk mencegah pemulihan kustom tetapi membuka lubang baru yang dapat dimanfaatkan oleh pengguna untuk fitur init.d palsu. Ketergantungan : agar metode ini berfungsi, Anda memerlukan yang berikut ini

  1. Kotak sibuk diinstal dengan run-partssymlink ke jalur Anda suka/system/xbin
  2. Jelas Anda akan membutuhkan ponsel yang sudah di-rooting dengan /systemkemampuan mount sebagairw
  3. versi kernel tidak masalah.

Metode I: (Cara termudah!)

  1. Unduh APK ini (gratis untuk digunakan, jangan mirror, terima kasih @Ryuinferno dari XDA).
  2. Instal apk seperti aplikasi normal lainnya.
  3. Luncurkan aplikasi.
  4. klik Aktifkan! itu saja Anda semua setinit.d sekarang didukung Anda dapat mengklik tombol tes atau reboot ponsel Anda untuk melihat apakah skrip init.d Anda keluar
  5. Anda dapat menghapus instalan aplikasi itu jika tidak mempengaruhi dukungan init.d

Metode II: (kesulitan: sedang)

  1. Unduh zip ini unzip dan letakkan init.sh di sdcard Anda (dalam contoh ini akan /sdcardberubah dari perangkat ke perangkat lainnya.

  2. sekarang buka terminal, atau gunakan adb shelldari komputer dan jalankan skrip.
    su
    cp /sdcard/init.sh /data/tmp/init.sh
    chmod 777 /data/tmp/init.sh
    /data/tmp/init.sh

skrip akan berjalan dan meminta Anda untuk reboot dua kali, itu saja Anda telah secara resmi mendukung init.d: ​​D

Referensi: [MOD] [APK + SCRIPT + ZIP] Aktifkan Init.d untuk Semua Ponsel tanpa Kebutuhan Kernel Kustom !!!

tuan-ralf-adolf
sumber
Karena file zip di-host di XDA, harus ada tutorial yang Anda ikuti atau mengetahui entah bagaimana. Bisakah Anda menyebutkan tautannya? Saya perlu mencari sesuatu yang lain di dalamnya. :)
Firelord
1
@Fordord ya skripnya bukan milik saya, itu digunakan untuk tujuan lain, saya mengambilnya dari sini tampilan posting tunggal> forum.xda-developers.com/... , tutorial lengkapnya tentang xposed dan nexus 6 >> forum.xda -developers.com/nexus-6/general/…
lord-ralf-adolf
@Firelord menemukan tautan referensi baru yang termasuk dalam jawaban :)
lord-ralf-adolf
Terima kasih, saya mungkin akan memberi Anda hadiah kecuali ada sesuatu yang lebih sederhana datang. Tapi jujur ​​saya pikir menambahkan skrip shell untuk dijalankan saat boot akan menjadi hal paling sederhana yang bisa dilakukan pada sesuatu seperti CM. Jelas bukan; ini lebih rumit daripada pengkodean aplikasi boot_complet yang melakukan apa yang saya inginkan, jadi saya hanya akan melakukannya.
RomanSt
@romkyns old cm mendukung init.d secara default, tetapi karena menjadi perusahaan cara mereka telah berubah, meskipun masalah init.d ada pada versi lollipop baru dengan kebijakan selinux yang ketat / boot_completed adalah cara untuk melakukannya juga dan saat Anda mengatakan akan lebih sederhana
lord-ralf-adolf
2

Sunting: Saya melihat posting selesai, Dengan cara ini, saya akan mencoba menambahkan tanpa aplikasi SECEPATNYA (bukan rumah, penerbitan menggunakan seluler), tetapi Anda dapat menggunakan ini, jika hal lain tidak berfungsi.

Anda dapat mencoba menggunakan aplikasi bernama Tasker .

Biayanya $ 3,29 dan memerlukan akses root tetapi dapat menjalankan skrip Shell. Juga, ini memiliki versi percobaan sehingga Anda dapat mencoba sebelum membeli.

Pertama buat Task. Buka tab Tugas, ketuk + tanda, masukkan nama tugas. Sekarang buka lagi tanda +, dan ketikkan shellfilter. Anda akan menemukan opsi Run Shell, memilihnya, dan mengkonfigurasinya sesuai kebutuhan Anda.

Setelah itu kembali ke tab pertama - Profil, ketuk + tanda untuk membuat yang baru. Pilih Peristiwa sebagai jenis, buka Sistem dan pilih Booting Perangkat. Kembali dan Anda akan diminta untuk memilih tugas. Sekarang pilih tugas yang telah dibuat sebelumnya dan Anda siap untuk pergi!

AndroidNotSoPowerUser
sumber
1

Ini mengharuskan Anda menginstal zip tetapi kemudian Anda dapat meletakkan skrip di / system / etc / startup dan kemudian skrip tersebut akan secara otomatis memulai dengan telepon.

http://forum.xda-developers.com/showthread.php?t=2664645

Juga dari komentar saya di bawah pertanyaan. Saya mencoba mencari dalam sejarah saya tetapi saya tidak dapat menemukan tautan di mana orang-orang mengklaim bahwa CM memiliki cara mereka sendiri menjalankan skrip saat boot.

Edit. Setelah beberapa penggalian bukan CM, per katakan, itu melakukan hal sendiri untuk skrip. Ini kernelnya. Tidak semua kernel mendukung init.d untuk android. Jika Anda memposting perangkat apa yang Anda gunakan. Saya bisa mencari-cari kernel yang mendukung skrip khusus saat boot ya.

jer3my
sumber
0

Saya juga memiliki masalah yang sama dalam mengeksekusi file skrip di terminal di CM12.1. Solusinya adalah dengan menyalin skrip ke /datafolder dan menjalankannya. Jadi saya pikir, CM 12 hanya memungkinkan skrip dapat dieksekusi dari lokasi tertentu.

Entaah Laah
sumber
0

Cara sederhana (bekerja):

  1. Persiapkan perintah boot postingan Anda dalam sebuah skrip, misalnya / system / xbin / post-boot (atur perm exec)

  2. Tambahkan path skrip kustom di atas di akhir /system/etc/init.qcom.post_boot.sh

Misalnya:

echo / system / xbin / post-boot >> /system/etc/init.qcom.post_boot.sh

Selesai!

(Jika Anda tidak dapat menemukan qcom post_boot (perangkat Qualcomm), cari skrip post_boot)

Seff
sumber
-1

Langkah-langkah berikut untuk menjalankan skrip saat boot. (Diperlukan adb)

  1. adb root
  2. adb remount
  3. adb pull /init.rc
  4. sunting init.rc tambahkan baris untuk menjalankan skrip seperti sh test.sh
  5. adb push init.rc /
  6. adb shell
  7. chmod 755 init.rc
  8. adb reboot

ini bekerja untuk saya. Saya harap ini membantu Anda.

DreamCoder
sumber
1
metode ini seharusnya tidak berfungsi sama sekali. Isi dari rootfs awal seperti init.rc adalah bagian dari ramdisk yang dipulihkan dari perangkat Anda flash setiap boot. Anda perlu memodifikasi ramdisk langsung di partisi yang tepat dari memori flash perangkat Anda
dibagi demi nol
Daripada Anda dapat menambahkan ke /system/etc/init.qcom.wifi.sh
DreamCoder
1
metode ini tidak akan berfungsi, init.d tidak dapat didorong! itu bagian dari initramfs, mereka perlu diedit di boot.img daripada di-flash lagi, dan untuk init.qcom.wifi.sh itu spesifik perangkat Anda tidak bisa membuat aturan umum darinya
lord-ralf-adolf