অ্যান্ড্রয়েড 11 সফ্ট রিস্টার্ট সমর্থন করে, যা রিবুট প্রয়োজন এমন আপডেটগুলি প্রয়োগ করতে ব্যবহৃত ব্যবহারকারী স্পেসে প্রসেসের রানটাইম রিস্টার্ট হয় (উদাহরণস্বরূপ, APEX প্যাকেজগুলির আপডেট)। বর্তমানে, সফ্ট রিস্টার্ট এমন প্রসেসের মধ্যে সীমাবদ্ধ যা userdata
মাউন্ট করার পরে শুরু হয়।
একটি নরম পুনঃসূচনা নিম্নলিখিত উপায়ে অনুরোধ করা হয়:
PowerManager
থেকে,PowerManager.reboot(PowerManager.REBOOT_USERSPACE)
কল করেশেল থেকে,
adb shell svc power reboot userspace
বাadb reboot userspace
ব্যবহার করে
একটি নরম পুনঃসূচনা করার পরে, শংসাপত্র এনক্রিপ্ট করা সঞ্চয়স্থান আনলক থাকে।
যদি একটি ডিভাইস সফ্ট রিস্টার্ট সমর্থন করে, তাহলে PowerManager.isRebootingUserspace()
API পদ্ধতি true
রিটার্ন করে এবং init.userspace_reboot.is_supported
সিস্টেম প্রপার্টির মান 1
এর সমান।
যদি ডিভাইসটি সফ্ট রিস্টার্ট সমর্থন না করে, তাহলে PowerManager.reboot(PowerManager.REBOOT_USERSPACE)
, adb reboot userspace
, এবং adb shell svc power reboot userspace
ব্যর্থ হলে কল করুন৷
সফট রিস্টার্ট এক্সিকিউশন
একটি সফ্ট রিস্টার্ট করার অনুরোধ করার পরে ( PowerManager
বা শেল থেকে), init
নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করে:
sys.powerctl=reboot,userspace
পায়।সফট রিস্টার্ট নিরীক্ষণ করার জন্য একটি পৃথক
UserspaceRebootWatchdogThread()
প্রক্রিয়া ফোর্ক করে।একটি
userspace-reboot-requested
অ্যাকশন ট্রিগার করে, যা সফ্ট রিস্টার্টকে প্রভাবিত করতে পারে এমন সমস্ত সিস্টেমের বৈশিষ্ট্যগুলি পুনরায় সেট করে। প্রভাবিত বৈশিষ্ট্য:-
sys.usb.config
-
sys.usb.state
-
sys.boot_completed
-
dev.bootcomplete
-
sys.init.updatable_crashing
-
sys.init.updatable_crashing_process_name
-
apexd.status
-
sys.user.0.ce_available
-
sys.shutdown.requested
-
service.bootanim.exit
বুট সিকোয়েন্সের সময় উপরের বৈশিষ্ট্যগুলি আবার সেট করা উচিত। প্রয়োজন হলে, আপনি অতিরিক্ত বৈশিষ্ট্য পুনরায় সেট করতে পারেন। উদাহরণের জন্য,
rootdir/init.rc
এon userspace-reboot-requested
অ্যাকশন পড়ুন।-
DoUserspaceReboot
ফাংশন চালায়, যা নিম্নলিখিত ক্রিয়াগুলি সম্পাদন করে:-
userdata
মাউন্ট করার পরে শুরু হওয়া প্রক্রিয়াগুলিতেSIGTERM
পাঠায় এবং সেগুলি থামার জন্য অপেক্ষা করে৷ - টাইমআউট হয়ে যাওয়ার পরে, চলমান প্রক্রিয়াগুলিকে মেরে ফেলতে
SIGKILL
পাঠায়। - কল
/system/bin/vdc volume reset
। - zRAM ব্যাকিং ডিভাইস আনমাউন্ট করে।
- সক্রিয় APEX প্যাকেজ আনমাউন্ট করে।
- বুটস্ট্র্যাপ মাউন্ট নেমস্পেসে ফিরে যায়।
-
userspace-reboot-resume
অ্যাকশন ট্রিগার করে।
-
যদি সফ্ট রিস্টার্টের আগে ফাইল সিস্টেম চেকপয়েন্টিং অনুরোধ করা হয়, userspace-reboot-fs-remount
অ্যাকশন চলাকালীন userdata
চেকপয়েন্টিং মোডে পুনরায় মাউন্ট করা হয় (বিস্তারিত জানতে নিম্নলিখিত বিভাগটি দেখুন)। sys.boot_completed property
1
এ সেট করার পর একটি নরম রিস্টার্ট বিবেচনা করা হয়। সফ্ট রিস্টার্টের শেষে, ডিসপ্লে বন্ধ রাখা হয় এবং এটিকে জাগানোর জন্য স্পষ্ট ব্যবহারকারীর মিথস্ক্রিয়া প্রয়োজন।
ফাইল সিস্টেম চেকপয়েন্টিং
যদি সফ্ট রিস্টার্টের আগে একটি ফাইল সিস্টেম চেকপয়েন্ট অনুরোধ করা হয়, সফ্ট রিস্টার্টের সময় userdata
চেকপয়েন্টিং মোডে পুনরায় মাউন্ট করা হয়। রিমাউন্টিং লজিক fs_mgr_remount_userdata_into_checkpointing
ফাংশনে প্রয়োগ করা হয় এবং চেকপয়েন্টিং পদ্ধতির মধ্যে পার্থক্য হয়। বিশেষত, যখন userdata
সমর্থন করে:
ফাইলসিস্টেম স্তরের চেকপয়েন্টিং (উদাহরণস্বরূপ,
f2fs
),userdata
পুনরায় মাউন্ট করা হয়checkpoint=disable
বিকল্পের সাথে।ব্লক লেভেল চেকপয়েন্টিং (উদাহরণস্বরূপ,
ext4
), তারপর/data
আনমাউন্ট করা হয় এবং এটির উপরে মাউন্ট করা সমস্ত প্যারেন্ট ডিভাইস ম্যাপার ডিভাইস ধ্বংস হয়ে যায়। পরবর্তী, সাধারণ চেকপয়েন্টিং বুটে ব্যবহৃত একই কোড পাথ ব্যবহার করেuserdata
মাউন্ট করা হয়।
যদি একটি ফাইল সিস্টেম স্তরের কীরিং শংসাপত্র-এনক্রিপ্ট করা (CE) এবং ডিভাইস-এনক্রিপ্ট করা (DE) কীগুলি পরিচালনা করতে ব্যবহৃত হয়, তাহলে userdata
আনমাউন্ট করার পরে কীগুলি হারিয়ে যায়৷ কী পুনরুদ্ধারের অনুমতি দেওয়ার জন্য, ফাইল সিস্টেম কীরিং-এ একটি কী ইনস্টল করার সময়, vold
সেশন-লেভেল কীরিং-এ fscrypt-provisioning
এর একই কী ইনস্টল করে। যখন init_user0
বলা হয়, vold
ফাইল সিস্টেম কীরিং-এ কী পুনরায় ইনস্টল করে।
হার্ড রিবুটে ফলব্যাক
একটি সফ্ট রিস্টার্ট যাতে কোনও ডিভাইসকে অব্যবহারযোগ্য অবস্থায় ফেলে না দেয় তা নিশ্চিত করার জন্য, Android 11 হার্ড রিবুট করার জন্য একটি ফলব্যাক অন্তর্ভুক্ত করে যা নিম্নলিখিত শর্তগুলির মধ্যে একটি পূরণ হলে ট্রিগার হয়:
- একটি ডিভাইস একটি নির্দিষ্ট সময়সীমার মধ্যে সফ্ট রিস্টার্ট (অর্থাৎ
sys.init.userspace_reboot.in_progress=1
) শুরু করতে ব্যর্থ হয়। - একটি প্রক্রিয়া একটি নির্দিষ্ট সময়সীমার মধ্যে থামতে ব্যর্থ হয়।
-
/system/bin/vdc volume reset
অপারেশন ব্যর্থ হয়। - zRAM ডিভাইসের আনমাউন্টিং ব্যর্থ হয়।
- একটি সক্রিয় APEX প্যাকেজ ভুলভাবে আনমাউন্ট হয়েছে৷
- চেকপয়েন্টিং মোডে
userdata
পুনরায় মাউন্ট করার একটি প্রচেষ্টা ব্যর্থ হয়েছে৷ - একটি নির্দিষ্ট সময়সীমার মধ্যে একটি ডিভাইস সফলভাবে বুট করতে ব্যর্থ হয় (অর্থাৎ,
sys.boot_completed=1
)।
প্রতি-ডিভাইস কনফিগারেশন
নিম্নলিখিত বৈশিষ্ট্যগুলির মান পরিবর্তন করে কিছু নরম পুনঃসূচনা দিকগুলি টিউন করা যেতে পারে:
-
init.userspace_reboot.is_supported
নিয়ন্ত্রণ করে যখন কোনো ডিভাইস নরম রিস্টার্ট করতে পারে। যদি এই সম্পত্তির মানfalse
,0
, বা নির্দিষ্ট করা না থাকে, তাহলে পুনরায় চালু করার প্রচেষ্টা প্রত্যাখ্যান করা হয়। -
init.userspace_reboot.sigkill.timeoutmillis
প্রসেসগুলির জন্য মিলিসেকেন্ডে সময়সীমা নিয়ন্ত্রণ করে যেগুলি বন্ধ করার জন্য একটিSIGKILL
সংকেত পেয়েছে। প্রদত্ত টাইমআউটে প্রসেসগুলির মধ্যে একটি বন্ধ করতে ব্যর্থ হলে, হার্ড রিবুটে একটি ফলব্যাক ট্রিগার হয়। -
init.userspace_reboot.sigterm.timeoutmillis
মিলিসেকেন্ডে টাইমআউট নিয়ন্ত্রন করে যে প্রসেসগুলি বন্ধ করার জন্য একটিSIGTERM
সংকেত পেয়েছে। প্রদত্ত টাইমআউটে শেষ করতে ব্যর্থ হওয়া সমস্ত প্রক্রিয়া একটিSIGKILL
সংকেত পায়। -
init.userspace_reboot.started.timeoutmillis
সফ্ট রিস্টার্ট শুরু করার জন্য মিলিসেকেন্ডে টাইমআউট নিয়ন্ত্রণ করে (অর্থাৎ,sys.init.userspace_reboot.in_progress=1
)। প্রদত্ত টাইমআউটের মধ্যে যদি একটি ডিভাইস সফ্ট রিস্টার্ট শুরু করতে ব্যর্থ হয়, তাহলে হার্ড রিবুটে একটি ফলব্যাক ট্রিগার হয়। -
init.userspace_reboot.userdata_remount.timeoutmillis
userdata
আনমাউন্ট করার জন্য মিলিসেকেন্ডে টাইমআউট নিয়ন্ত্রণ করে। প্রদত্ত সময়সীমার মধ্যে একটি ডিভাইসuserdata
আনমাউন্ট করতে ব্যর্থ হলে, হার্ড রিবুটে একটি ফলব্যাক ট্রিগার হয়। -
init.userspace_reboot.watchdog.timeoutmillis
একটি ডিভাইস সফলভাবে বুট করার সময়সীমা নিয়ন্ত্রণ করে (অর্থাৎ,sys.boot_completed=1
)। প্রদত্ত সময়সীমার মধ্যে একটি ডিভাইস বুট করতে ব্যর্থ হলে, হার্ড রিবুট করার জন্য একটি ফলব্যাক ট্রিগার হয়।
সফট রিস্টার্টের সময় অ্যানিমেশন কাস্টমাইজ করুন
একটি সফ্ট রিস্টার্টের রেফারেন্স বাস্তবায়নে সফ্ট রিস্টার্টের সময় দেখানো অ্যানিমেশন কাস্টমাইজ করার ক্ষমতা অন্তর্ভুক্ত।
userspace-reboot-fs-remount
অ্যাকশনের শেষে, init
bootanim
পরিষেবা শুরু করে। এই পরিষেবাটি তালিকাভুক্ত ক্রম অনুসারে নিম্নলিখিত অ্যানিমেশন ফাইলগুলির অস্তিত্বের সন্ধান করে এবং এটি প্রথমটি খুঁজে পায়:
-
/product/media/userspace-reboot.zip
-
/oem/media/userspace-reboot.zip
-
/system/media/userspace-reboot.zip
যদি কোনও সফ্ট রিস্টার্ট নির্দিষ্ট অ্যানিমেশন ফাইল নির্দিষ্ট করা না থাকে তবে bootanim
একটি ডিফল্ট android
অ্যানিমেশন দেখায়।
টেস্টিং
অ্যান্ড্রয়েড 11 একটি সফ্ট রিস্টার্টের একটি রেফারেন্স বাস্তবায়ন অন্তর্ভুক্ত করে। উপরন্তু, আপনি UserspaceRebootHostTest
এ CTS পরীক্ষা ব্যবহার করে একটি সফট রিস্টার্ট যাচাই করতে পারেন।