আমি কীভাবে বুটে স্ক্রিপ্ট চালাতে পারি?


51

আমি লিনাক্সে বুটে স্ক্রিপ্টগুলি চালাতে অভ্যস্ত, তবে অ্যান্ড্রয়েডে কীভাবে এটি করব তা নিশ্চিত নই। আমি শুরুতে আমার এসএসএইচ ডেমন শুরু করতে চাই, তাই আমি সর্বদা সংযোগ করতে সক্ষম হব। আমি কীভাবে অ্যান্ড্রয়েড বুটে একটি স্বেচ্ছাসেবী স্ক্রিপ্ট চালাতে পারি? ডালভিকের বাইরে এটি করা ভাল।

উত্তর:


42

আমার অ্যান্ড্রয়েড ফাইল সিস্টেমটি ঘুরে দেখার সময় আমি দেখতে পেলাম যে এটির একটি /etc/init.d/ডিরেক্টরি আছে। সেখানে ঘুরে দেখার পরে, আমি /etc/init.d/20userinitনিম্নলিখিত লাইনগুলির সাথে পেয়েছি :

if [ -e /data/local/userinit.sh ];
then 
    log -p -i -t userinit "Executing /data/local/userinit.sh";
    busybux chmod +x /data/local/userinit.sh;
    logwrapper /system/bin/sh /data/local/userinit.sh;
    setprop cm.userinit.active 1;
fi;

এই হচ্ছে, অবশ্যই, ঠিক কি আমি প্রয়োজন, আমি নিম্নলিখিত স্ক্রিপ্ট আমার কম্পিউটারে লেখেন তারপর আমার ডিভাইস থেকে এটি ধাক্কা:

#!/system/bin/sh 

dropbear -s -g 

(ডিভাইসে ধাক্কা দিয়ে scp userinit.sh phone:/data/local/userinit.shমনে রাখবেন:])

ডিভাইসটি পুনরায় বুট করেছেন, তারপরে দৌড়ে এসেছিলেন ps | grep "[d]ropbear"এবং নিশ্চিত হয়ে গেছে যে এটি চলছে। শীতলতা!


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
ফায়ারলর্ড

9

/data/init.shবুটে চলে, আপনার যদি রুট থাকে তবে আপনি নিজের পছন্দমতো এটি সম্পাদনা করতে পারেন। সাবধান হও ;)

সম্পাদনা: সম্ভবত আপনাকে সম্পাদিত স্ক্রিপ্টটি বুট ইমেজেও জুতা দিতে হবে। এটি এখানে কীভাবে করবেন সে সম্পর্কিত তথ্য: http://forum.xda-developers.com/showthread.php?t=443994


1
হ্যাঁ, আমি এই ফাইলটি আমার নেক্সাস ওয়ান চালিত সিএম 7-আরসি 1 তে খুঁজে পাচ্ছি না। আমি দেখতে পাব যদি কোনও find / -name "init.sh"পরিবর্তন ঘটে। বুট চলমান অন্য কোন স্ক্রিপ্ট আছে?
নাফটুলি কে

1
/etc/init.rcআপনার শেল শুরু হওয়া উচিত । এটি init.sh কল করতে হবে তবে এটি না করলে এটি কেবল নিজের স্ক্রিপ্টকে কল করতে পারে।
ম্যাথু 21

দুর্ভাগ্যক্রমে, আমার কাছে সেই স্ক্রিপ্টটিও নেই, তবে আমি একটি সমাধান পেয়েছি।
নাফতুলি কে

3
এটি Android এর কোন সংস্করণ? ৪.৩ এর আছে /dataতবে নেই /data/init/.shবা আছে /etc/init.rc। Grep স্ট্রিং এর কোন আকর্ষণীয় উদাহরণস্বরূপ খুঁজে পাওয়া নেই init/etc(এমনকি রিকার্সিভ)।
স্টাফেন গরিখন

এওএসপি তৈরির সময় কীভাবে স্টার্টআপ স্ক্রিপ্ট যুক্ত করবেন আপনার কোনও ধারণা আছে?
সালেহ

4

প্রতি তাকান /etc/ডিরেক্টরি। সাধারণত এটি /system/পার্টিশনে রাখা হয় যা আপনি আরডাব্লু হিসাবে মাউন্ট করতে পারেন:

$ ls -l /etc
lrwxrwxrwx 1 root root 11 Jan 1  2009 /etc -> /system/etc
$ su
$ mount -o remount,rw /system
$ chmod o+w /system/etc  # for "adb push"

উপরের কয়েকটি পদক্ষেপ এর সাথে প্রতিস্থাপন হতে পারে:

$ adb root
$ adb remount

এবং পরবর্তীতে পুনরায় মাউন্টআওআর:

$ chmod o-w /system/etc
$ mount -o remount,ro /system

*rcআপনার লক্ষ্য অর্জনের জন্য সম্পাদনযোগ্য বা ফাইল সন্ধান করার জন্য এখন আপনার কাজটি :

$ find /etc -type f -perm +110
$ find /etc -name "*rc"
$ find /etc -name "init*"
$ grep -R /data /etc
$ grep -R /system /etc

এই ফাইলটি কীভাবে ব্যবহৃত হয়েছিল তা জানতে প্রতিটি প্রার্থীর সম্পর্কে গুগল।

কাস্টম স্ক্রিপ্টগুলি অন্তর্ভুক্ত করার জন্য ভাল প্রার্থী হ'ল লাইনগুলি:

$ grep service /init*.rc

প্রতিটি ডিভাইস অনন্য হিসাবে আপনার অনুসন্ধানের মানদণ্ড সম্পর্কে নিজস্ব অনুমান করার প্রয়োজন হতে পারে ...

উদাহরণস্বরূপ আমি খুঁজে পেয়েছি /etc/mkshrcযা কর্ন শেল ব্যবহার করেছে। PATHEnv var প্রসারিত করার জন্য আমি এই ফাইলটি আপডেট করি এবং এখন প্রতিবার adb shellআমার PATH তে ব্যাসিবক্স সিমলিংক রয়েছে!

কঠোর উপায়ও দেখুন ( যাদুবিদ্যার ফাইল সন্ধানে যদি আপনার ভাগ্য না থাকে): https://stackoverflow.com


তবে কি প্রতিটি বুটে ওভাররাইড করা হচ্ছে না? আমি মনে করি / ইত্যাদি ফোল্ডারটি সিপিওর একটি অংশ যা র‌্যামডিস্ক।
রানশ

1
@ ট্রান্স কমপক্ষে এটি ক্ষেত্রে নয়: 8.1.0_r60 যেখানে /systemরয়েছে system.img, এবং /etcএটি একটি সিমিলিংক /system
সিরো সান্তিলি 事件 改造 中心 法轮功 六四 事件

1

আমি এই সমস্ত পদ্ধতি চেষ্টা করেছিলাম এবং তাদের মধ্যে কেউই আমার পক্ষে কাজ করেনি। লর্ড-রাল্ফ-অ্যাডলফের উত্তরের উপর ভিত্তি করে যা কাজ হয়েছিল তা এখানে সিএম 12.1 এ বুটে স্ক্রিপ্টটি কীভাবে চালানো যায়?

মূলত, ফাইলটি সন্ধান করুন /system/etc/install-recovery.shএবং শুরুতে নিম্নলিখিত লাইনটি যুক্ত করুন /data/init.sh &

তারপর

touch /data/init.sh
chmod 755 /data/init.sh

সম্পন্ন! আপনি এখন যা চান তা রাখতে পারেন /data/init.shএবং এটি স্টার্টআপে চলবে। যদি ফাইলটি /system/etc/install-recovery.shআপনার সিস্টেমে না থাকে তবে এই উত্তরটি আপনার পক্ষে কার্যকর হবে না। এটি তৈরি করতে বিরক্ত করবেন না।


1
প্রকৃতপক্ষে, আমার এমন একটি সিস্টেম রয়েছে যেখানে /system/etc/install-recovery.shউপস্থিত ছিল না, তবে এটি উপস্থিত থাকলে এখনও এটি বুটে কার্যকর করা হয়, তাই এটি চেক করার মতো।
jcaron

1

সেলইনাক্স যখন ছিল না তখন অ্যান্ড্রয়েড 5 এর আগে জিনিসগুলি সহজ ছিল enforcing। আপনি আপনার কোডটি কোনও স্ক্রিপ্টে রাখতে পারেন বা স্ক্রিনের সাহায্যে একটি বাইনারি প্রতিস্থাপন করতে পারেন যা বুট-এ রুট সুবিধার সাথে কার্যকর করা হয়েছিল। আরেকটি পদ্ধতি হ'ল initবিশেষত কোনও ডিরেক্টরি থেকে ক্রিয়াকলাপ চালানো কোনও কাস্টম পরিষেবা সংজ্ঞা দেওয়া ।

এই পন্থা উপর ভিত্তি করে কাস্টম রম ডেভেলপারদের বিভিন্ন চালু ছদ্ম-init.d মত প্রপঞ্চ /etc/init.d/, /etc/install-recovery.sh, /etc/init.qcom.post_boot.sh, /system/bin/debuggerd, /data/init.sh, /data/local/userinit.sh, /data/local/init.d/ইত্যাদি

তবে ইউআইডি দিয়ে চলছে তবে একটি 0সীমাবদ্ধ সেলইনক্স প্রসঙ্গে একটি প্রক্রিয়া যথেষ্ট অসহায়। একটি সেবা শুরু init.rcসাহায্যে ফাইল u:r:init:s0প্রেক্ষাপটে এমনকি একটি শেল স্ক্রিপ্ট সম্পন্ন করতে না পারা থেকে /system/bin/, তাই SELinux নীতি একটি উদ্বুদ্ধ করতে patched করা প্রয়োজন অবাধ প্রসঙ্গ যেমন Magisk সংজ্ঞায়িত u:r:magisk:s0 । এর পরে initপরিষেবা বা init.dপছন্দসই ডিরেক্টরি থেকে সরাসরি স্ক্রিপ্ট চালানো সম্ভব ।

বিশদের জন্য দেখুন কীভাবে বুটে এক্সিকিউটেবল চালানো যায় এবং এটি চালিয়ে যেতে হয়?


0

সহজ উপায় (কাজ):

  1. কোনও স্ক্রিপ্টে আপনার পোস্ট বুট কমান্ড প্রস্তুত করুন, বলুন / সিস্টেম / এক্সবিন / পোস্ট-বুট (নির্বাহী পেরেক সেট করুন)

  2. উপরের কাস্টম স্ক্রিপ্টের পাথটি / সিস্টেমে /etc/init.qcom.post_boot.sh এর শেষে যুক্ত করুন

উদাহরণ:

প্রতিধ্বনি / সিস্টেম / এক্সবিন / পোস্ট-বুট >> / সিস্টেমেট / সেটসি / ইনিট.ককম.পোস্ট_বুট.শ

সম্পন্ন!

(আপনি যদি কিউকম পোস্ট_ বুট (কোয়ালকম ডিভাইস) খুঁজে না পান তবে যে কোনও পোস্ট_ বুট স্ক্রিপ্ট সন্ধান করুন)


0

আপনি যদি ম্যাজিক ইনস্টল করে থাকেন তবে আপনি .sh স্থাপন করতে পারেন:

/sbin/.magisk/img/.core/service.d/

অথবা

/sbin/.magisk/img/.core/post-fs-data.d/

এটা এক্সিকিউটেবল করতে ভুলবেন না: chmod +x your-script.sh

আরও তথ্য: https://github.com/topjohnwu/Magisk/blob/master/docs/guides.md#boot-scriptts

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.