Android Booting Process များအကြောင်းသိကောင်းစရာများ

date_range 11 May 2017

Android Booting Process များအကြောင်းသိကောင်းစရာများ

visibility 2750 Views

Android Booting Process များအကြောင်းသိကောင်းစရာများ
မိတ်ဆက်

                ဒီတစ်ခါတော့ ကျွန်တော် Android Filesystem နဲ့ Recovery တွေအကြောင်းကို ရှင်းပြအပြီးမှာ Android System ကြီးတစ်ခုလုံး ဘယ်လို Boot တက်လာတယ်ဆိုတာကို အနည်းအကျဉ်း ရှင်းပြပေးပါမယ်။ Android Boot Process မှာအဓိကလိုအပ်တဲ့ အစိတ်အပိုင်းတွေကတော့ Bootloader ၊ Kernel နဲ့ Ramdisk တို့ပဲဖြစ်ပါတယ်။ ကျွန်တော် ဒီအစိတ်အပိုင်းလေးတွေကို Section ခွဲပြီး ရှင်းပြပေးပါမယ်။


Bootloader

                Bootloader ဆိုတာကတော့ Android Boot စမတက်ခင် ဘယ်လို boot မလဲ၊ ဘာတွေကို boot မတက်ခင်လုပ်ဆောင်မလဲ စတာတွေကို ညွှန်ကြားတဲ့ Program  တစ်ခုသက်သက်ပါပဲ။ ဖုန်းအမျိုးအစားတွေနဲ့ တည်ဆောက်ပုံတွေမတူတာကြောင့် Bootloader တစ်ခုကိုတည်ဆောက်ဖို့ဆိုတာ အချိန်အများကြီးလိုအပ်ပါတယ်။ (ဖုန်းထုတ်လုပ်တဲ့သူတွေဘက်ကကြည့်ရင်ပြောတာပါ။) Bootloader program အပိုင်းအစလေးသာမရှိဘူးဆိုရင် Android ဖုန်းတစ်လုံးကို ဘယ်လို Boot တက်မလဲဆိုတာခိုင်းစေမယ့်သူရှိတော့မှာမဟုတ်ပါဘူး။ 

                Bootloader တက်တာ၊ မတက်တာ မမြင်မိဘူးလို့ ထင်ကောင်းထင်ပါလိမ့်မယ်။ တက်ပါတယ်။ ဖုန်းတစ်လုံးကို စ စ ချင်း Power ခလုပ်ဖိနှိပ်လိုက်တာနဲ့ Samsung ဆို Samsung Galaxy XXXX ၊ Sony ဆို Sony Xperia XXXX ၊ Mi ဆိုလည်း Mi Logo လေးစပွင့်လာတာနဲ့ အနောက်မှာ Bootloader program လေး သူ့အလုပ်သူ စ လုပ်နေပြီပဲ ဖြစ်ပါတယ်။

                တခြား Master Boot Record (MBR) partition table သုံးတဲ့ OS တွေနဲ့မတူတာကတော့ Android Bootloader ကို block0 မှာ မရှာဖွေပဲ သတ်မှတ်ထားတဲ့ ROM ပေါ်မှာပဲ first stage အနေနဲ့ သက်ဆိုင်ရာ block ကနေ Bootloader ကိုရှာဖွေပြီးဆွဲတင်ပေးတာပါ။ (Block တွေအကြောင်းကို ကျွန်တော် Android File System article ထဲမှာရှင်းပြခဲ့ပါတယ်)

                Bootloader တစ်ခုဟာ Android partition တွေကိုစစ်တာတို့၊ Security အနေနဲ့ Modifications တွေလုပ်ထားတာလား မလုပ်ထားတာလားဆိုတာတွေကိုစစ်တဲ့အထဲမှာ အရေးပါပါတယ်။ ပြီးတော့ ဒုတိယအဆင့်ဖြစ်တဲ့ Kernel ကို RAM ထဲကိုဆွဲတင်ဖို့အပိုင်းက အဓိကပိုကျပါတယ်။ Android Operating System တစ်ခုမတက်လာခင်မှာ သူက အစီအစဉ်ကြေညာသူ တစ်ယောက်ပုံစံမျိုးပါပဲ။ Security ကို bypass လုပ်တဲ့နည်းကတော့ Bootloader unlock လုပ်တာပါပဲ (ကြားဖူးကြမှာပါ)။ Bootloader Unlock လုပ်ခြင်းအားဖြင့် Bootloader Security Checkpoint ဖြစ်တဲ့ Partitions စစ်တာတွေ၊ Main OS partition တွေ မဟုတ်တဲ့ Customized partitions တွေကို fastboot ကနေ flash လုပ်တာကိုတားမြစ်တာတွေ၊  အခြား Program Components တွေပုံပျက်နေလား မပျက်နေလားဆိုတာကို လုံး၀စစ်တော့မှာ မဟုတ်တာကြောင့် Users တွေဟာ ကြိုက်သလို ဖုန်းကိုပိုပြီးပြုပြင်ပြောင်းလဲလို့ရလာမှာပါ။ 

                Bootloader ကိုဘာလို့ Lock လုပ်ကြတာလဲဆိုတော့ Manufacturers (eg. Samsung, Sony, Huawei, LG & Mi) တွေက သူတို့ Pre-install လုပ်ပေးထားတဲ့ OS ကလွဲလို့တခြားဟာတွေ Modify မလုပ်စေချင်တာရယ်၊ Users တွေ Unlock လုပ်မိပြီး ကလိမိရင် မဖြစ်သင့်တဲ့ပြဿနာတွေ (Soft-brick, Hard-brick) စတဲ့ ပြဿနာတွေဖြစ်လာမှာစိုးလို့ အစကတည်းက Bootloader တွေကို Lock လုပ်ထားပြီး Bootloader Unlock Permission တွေကို သက်ဆိုင်ရာ Manufacturers တွေရဲ့ Site ကနေတောင်းယူစေပါတယ်။ ဒီနေရာမှာသတိထားရမှာက တောင်းယူလိုက်ပြီဆိုတာနဲ့ ကိုယ့်ဖုန်းရဲ့ IMEI နံပါတ်အတွက် Warranty ဟာ လုံး၀ (လုံး၀) ရှိတော့မှာမဟုတ်ပါဘူး။

                Bootloader ကနေမှတစ်ဆင့် Android Recovery Mode ကိုခေါ်တာပဲဖြစ်ဖြစ်၊ Fastboot Mode ကိုခေါ်တာပဲဖြစ်ဖြစ် သတ်မှတ်ထားတဲ့ Key ကိုဖိထားတာနဲ့ Kernel ကို RAM ထဲထည့် မ Boot တော့ပဲ သက်ဆိုင်ရာ Recovery/Fastboot Mode ပေါ်ကို Boot တက်ပေးမှာပဲဖြစ်ပါတယ်။ 

Kernel  & Ramdisk

                Kernel ဆိုတာကတော့ Operating System တစ်ခုရဲ့နှလုံးတစ်ခုလိုပါပဲ။ ဘယ် OS မျိုးမှာမဆို Kernel တစ်ခုရှိကိုရှိပါတယ်။ Preload process တစ်ခုထက်လည်းအများကြီးပိုပါတယ်။ Software က Hardware Operation တစ်ခုခုလုပ်ဖို့ဆို  Kernel ဆီကပဲယူသုံးရသလို Kernel ဟာလည်း Hardware Drivers တွေကို Loading လုပ်တဲ့နေရာမှာအရေးပါ ပါတယ်။ Operating System တစ်ခုလုံးကိုဆွဲတင်သွားတဲ့နေရာမှာ Kernel ဟာအရေးပါပါတယ်။

                Bootloader ဟာ Boot Sequences တွေနဲ့အတူ Kernel ကို RAM ထဲသွင်း Boot ပေးလိုက်ပြီဆိုတာနဲ့ Kernel အပြင် သူနဲ့အတူရှိတဲ့ Ramdisk ရဲ့အလုပ် စ ပါပြီ။ Kernel ကတော့ အဓိက Operation တွေဖြစ်တဲ့ Memory နဲ့ I/O Area ကိုသတ်မှတ်ပေးတာတွေ  ၊ Android System တစ်ခုလုံးကိုဘယ်လိုဆွဲတင်မလဲဆိုတဲ့ Process Table တွေ၊ Drivers တွေ၊ Kernel modules တွေ (များသောအားဖြင့် .so ဖိုင်တွေ) နဲ့အတူ Root File System တစ်ခုလုံးကို Ramdisk အကူအညီနဲ့ စ mount ပါတယ်။ ဒီနေရာမှာသတိထားရမှာက File System Mount ပိုင်းမှာ Ramdisk ရဲ့အကူအညီကပိုများပါတယ်။ ပြီးရင် Ramdisk ထဲက “Init” Process ကို ကျွန်တော် Android File System အကြောင်းမှာရှင်းပြခဲ့တဲ့ init.rc နဲ့အတူ init.xxxx.rc ဖိုင်တွေက commands တွေအတိုင်း Processing ပြုလုပ်သွားမှာပါ။ init.rc ဟာ Android OS ရဲ့ Basic အချက်အလက်တွေနဲ့ လိုအပ်တာတွေကို execute လုပ်သွားမှာဖြစ်ပြီး init.xxxx.rc ဖိုင်တွေကသာ Device ရဲ့အဓိကလိုအပ်တဲ့ Program components တွေကို execute လုပ်သွားမှာဖြစ်ပါတယ်။ Init process  ပြီးသွားရင်တော့ Zygote တွေ Dalvik runtime တွေ (Android Lollipop မှာ စ ပြီးတော့ ART runtime လည်းအတူပါ၀င်ပါတယ်။) ဆက်တိုက် အဆင့်အဆင့် Process လုပ်သွားပြီး Android Root File System ကနေမှ တဆင့် Operating System ထိတဖြည်းဖြည်းချင်း Boot တက်သွားမှာပါ။ 

                Kernel ဟာလည်းဘယ်လောက်အရေးပါသလဲဆို ကျွန်တော်တို့ရဲ့ Basic Operation တွေဖြစ်တဲ့ Touch ကိုထိတွေ့လိုက်တာက အစ Digitizer မှာ ဘယ် Axis ကနေထိတွေ့လိုက်တယ်ဆိုတာကို Kernel ကမှတစ်ဆင့် Digitizer နဲ့ Touch sensor တွေကိုစူးစမ်းခိုင်းပြီး Software ကိုဘာ respond ပြန်လုပ်ရမယ်ဆိုတာကို သတင်းအချက်အလက် ပြန်ပို့ပေးပါတယ်။ Software ကလည်းဘယ်အချိန်မှာဘယ်လိုတုံ့ပြန်ရမယ်ဆိုတာကို Kernel ရဲ့ Touch Sensor နဲ့ Digitizer အချက်အလက်အရ User Interface မှာပြန်လည်တုံ့ပြန်ပေးပါတယ်။ 

                Kernel တွေမှာလည်း Custom Kernel ဆိုတာရှိပါသေးတယ်။ များသောအားဖြင့် Boot.img (Boot Image) ဖိုင်တွေပဲဖြစ်ပါတယ်။ Boot Image ထဲမှာပဲ Kernel ကိုထည့်ထားတာမို့လို့ Kernel ပြောင်းချင်ရင် Boot Image ထဲကို Kernel inject လုပ်ပြီး Custom Kernel flash ရပါတယ်။ များသောအားဖြင့် Custom Kernel ကို CPU Overclocking နဲ့ CPU Governors modules အသစ်တွေ၊ zRAM Compression တွေ၊ init.d Support (Boot တက်ပြီးတာနဲ့ လိုသလိုချိန်ညှိပေးနိုင်တဲ့ Initial scripting အပိုင်းပါ။ System Tuning အတွက်တော့ အရေးပါပါတယ်။) တွေ၊ custom kernel modules တွေအပြင် တခြား Modifications တွေအတော်များများကိုလိုချင်လို့ flash ကြတာများပါတယ်။ 

                ကျွန်တော့် Experience ကတော့ Custom Kernel တွေက Performance ကို Boost ပေးနိုင်သလို Developer တစ်ယောက်က သူ့စိတ်ကူးနဲ့သူ လိုသလို ကလိထားတာမို့ မကောင်းတဲ့ Kernel တွေဆိုရင် Performance ပြဿနာအတော်များများ (Batter drain, Slow startup, Booting, Soft-brick) တွေဖြစ်ဖို့ အခွင့်အရေး လည်းပိုများပါတယ်။ ဒီအပိုင်းတွေကိုထိမယ်ဆိုရင် သေချာသတိထားပြီး ကလိသင့်ပါတယ်။ 

နိဂုံးချုပ်

                ဒီလောက်ဆိုရင်တော့ Android Booting Process အကြောင်းကို နားလည်သွားကြလောက်ပြီဖြစ်သလို Bootloader ၊ Kernel နဲ့ Ramdisk တွေဘယ်လိုအလုပ်လုပ်ပြီး အသုံး၀င်လဲဆိုတဲ့အကြောင်းကိုပါ သိသွားကြလောက်ပြီထင်ပါတယ်။ သိလိုသည်များ၊ အကြံပြုလိုသည်များကိုလည်း ကျွန်တော်တို့ရဲ့ TechX Myanmar Facebook Page ကနေတဆင့် တိုက်ရိုက်မေးမြန်းအကြံပြုနိုင်ပါတယ်ခင်ဗျာ။ 

References
Javigon Elinux.org
About Author
Assinged Tags
Android Kernel Android Booting Process Boot related Ramdisk Related Bootloader related
Categorized Under
Features

Join Us On

Facebook
YouTube
Twitter
GooglePlus
TechX RSS Feed