Page cover

Kickstart ကိုအသုံးပြုပြီး Custom ISO တွေဖန်တီးပုံ

ကောလိပ်ကျောင်းသားဘဝတုန်းက သင်ရိုးညွှန်းတန်းထဲမှာပါတဲ့ bootable USB လုပ်နည်းတို့၊ Windows ကို unattended installation လုပ်နည်းတို့အပြင် boot menu ကိုပြန်လည်ပြင်ဆင်ပြီး ကိုယ်လိုချင်တဲ့ disk rescue utility ထပ်ပေါင်းထည့်နည်း အကြောင်းတွေကို စာတွေ့ရောလက်တွေ့ပါလေ့လာခဲ့ဘူးပါတယ်။ စာရေးသူလည်း အတော်လေးကို စိတ်ဝင်စားခဲ့တဲ့ အကြောင်းအရာတွေဖြစ်ပါတယ်။ နောင်တချိန်မှာလည်း အဲ့ဒီဘာသာရပ်တွေကိုပဲ အချိန်ပိုင်းကျောင်းဆရာလုပ်တဲ့အချိန်မှာ ကျောင်းသားကျောင်းသူတွေကိုပြန်လည် သင်ကြားပေးခဲ့ပြန်ပါတယ်။ Automation ဆိုတဲ့ ဝေါဟာရကို သေချာထဲထဲဝင်ဝင် နားမလည်ခင်ကတည်း ငပျင်းမို့ တခါလုပ်ပြီးနောက်တခေါက်မလုပ်ရဖို့ ဘယ်လိုနည်းတွေရှိသလဲဆိုတာ အမြဲရှာဖွေနေတတ်ပါတယ်။ အဲ့ဒီအတွက် scripting နဲ့ပတ်သတ်လာရင် အရင်ကတည်း စိတ်ဝင်စားခဲ့တာတော့ အမှန်ပါ။ ကောလိပ်မှာသင်ရတုန်း Perl တို့၊ Bash တို့အပြင် Windows မှာသုံးတဲ့ Batch script တွေနဲ့ လက်တွေ့တွေအများကြီးလုပ်ခဲ့ရပါတယ်။ ဒါဟာ automation မှာအသုံးပြုနိုင်တဲ့ workflow တခုဆိုတာကတော့ အခုနောက်ပိုင်းမှာ ပိုပြီးနားလည်လာခဲ့ပါတယ်။

DevOps တို့၊ CI/CD တို့၊ containerisation တို့အခုနောက်ပိုင်းမှာ တွင်တွင်ကျယ်ကျယ်လေးကို ပြောဆိုအသုံးပြုလာကြပါတယ်။ စာရေးသူကိုယ်တိုင်က ဘယ်အရာမဆို သတိလေးကပ်ပြီး သံသယနဲ့ မြင်တတ်ထင်တတ်လို့လားတော့မသိဘူး၊ နည်းပညာမှာ အခုလိုမျိုး idea အသစ်တွေ၊ tool အသစ်တွေထွက်လာရင် ချက်ချင်းအသုံးပြုလေ့မရှိပဲ ခဏတော့စောင့်ကြည့်တဲ့အကျင့်ရှိပါတယ်။ အထူးသဖြင့် DevOps ဆိုပြီးပြောတဲ့အကြောင်းအရာတွေမှာ အခြေခံအရေးပါတဲ့အချက်တခုဟာ အဲ့ဒါတွေအကုန်လုံးဖြစ်နိုင်ဖို့အတွက်က hardware infrastructure လိုပါတယ်၊ ဒါ့အပြင် အဲ့ဒီ infrastructure တွေမှာ network တွေကိုဘယ်လိုမျိုး တည်ဆောက်ကြသလဲဆိုတဲ့အချက်ပါ။ များသောအားဖြင့်က cluster တွေဖန်တီးလိုက်၊ Kubernetes ဟချလောက်ဆိုလိုက်တာနဲ့ အားလုံးအတွက်အဆင်ပြေစေမယ့် hyperscaler ကြီးတွေဖြစ်လာလေသတည်း။ သို့သော်... ထို cluster ကြီးတွေအတွက် အနောက်မှာဘယ်လိုမျိုး infrastructure ကြီးတွေကို run ထားသလဲဆိုတာကို အကုန်မေ့ပစ်ထားလို့မရပါ။ Bare metal server တွေကို datacentre ကြီးတွေထဲမှာ rack and stack မလုပ်ပဲနဲ့၊ router တွေ switch တွေ firewall လိုမျိုး security device တွေ၊ F5 လိုမျိုး load-balancer တွေ၊ Storage Area Network (SAN) လို့ခေါ်တဲ့ storage array တွေမရှိပဲနဲ့ day 0 deployment ဆိုတာမျိုး မဖြစ်နိုင်ပါ။ အဲ့လိုမှမဟုတ်ပဲနဲ့ public cloud vendor တခုခုကိုအသုံးပြုမယ်ဆိုရင်တော့လည်း premium price တခုကိုပေးပြီး ကျော်လွှာလို့ရနိုင်ပါတယ်။ သို့သော် ရေရှည်အတွက်ဖြစ်နိုင်ပါ့မလား။

နည်းပညာနဲ့ ပတ်သတ်လာရင် အကုန်လုံးကို မသိနိုင်ပေမယ့်လည်း basic rudimentary အကြောင်းအရာတွေအများကြီး ပိုင်နိုင်ထားမှ အကြောင်းအရာ အသစ်အသစ်တွေကို ဆက်လက်လေ့လာရတာလွယ်ပါတယ်။ လက်တွေ့မှာလည်း ကိုယ့်အတွက်ရော လုပ်ငန်းခွင်မှာအသုံးတည့်ပါမှ လိုက်ပါလေ့လာတာမျိုးပါ။ ပိုပြီးဆိုးတာ နည်းပညာလောကမှာက လေ့လာသင်ကြားမှုက ရပ်သွားလို့မရပါဘူး။ သို့သော်တဘက်မှာလည်း ရှိသမျှအကုန်လေ့လာပြီး အကုန်တတ်မြောက်အောင်ကလည်း တော်ရုံမဖြစ်နိုင်ပါ။ တချိန်တုန်းက ရှိသမျှ နည်းပညာ certificate တွေကိုရသလောက် အကုန်လိုက်ဖြေပါတယ်။ ဒီလိုနဲ့များစွာသော certificate တွေကို expired ဖြစ်တဲ့အခါမှာလည်း နောက်တခါ ပြန်လုပ်ရပါတယ်။ အခြားသူတွေအတွက်ဘယ်လိုနေမှန်းမသိပေမယ့် စာရေးသူအတွက်တော့ burnout ဖြစ်တဲ့အခြေအနေမျိုးနဲ့ ကြုံခဲ့ရပါတယ်။ ဒါ့အပြင် သင်ကြားရေးအတွက်လည်း ထင်သလောက် ကိုယ့်အတွက် အလုပ်မဖြစ်လို့ အခြားသောလေ့လာပုံတခုနဲ့ ခရီးဆက်ခဲ့ပါတယ်။ Home lab ကြောင့်စာရေးသူအတွက် အကျိုးများခဲ့ပုံကို ဒီ article https://my.itmatic101.com/others/home-lab-yahikhyin-anupnya မှာလည်း အကျယ်တဝင့်ရှင်းပြခဲ့ဘူးပါတယ်။

နောက်ပိုင်းမှာလည်း cloud solution တွေနဲ့အလုပ်လုပ်တဲ့အခါ စာရေးသူ bootstrap လုပ်တဲ့အပိုင်းတော်တော်များကို လုပ်ငန်းခွင်မှာ တာဝန်ယူပြီးလုပ်ခဲ့ပါတယ်။ Cloud-init ကိုအသုံးပြုပြီး bootstrap automation အတွက် workflow တွေမှာထည့်သွင်းခဲ့ဘူးပါတယ်။ Microsoft Windows မှာတော့ unattended installation ဆိုပြီး လူသိများပါတယ်။ အဓိကလိုရင်းက OS installation တခါလုပ်တိုင်း မေးသမျှမေးခွန်းတွေကို တခုချင်းစီလိုက်ဖြေပြီး click မလုပ်ချင်လို့ပဲဖြစ်ပါတယ်။ Mass deployment လုပ်တဲ့အခါမှ အသုံးပြုတဲ့ bootstrap automation ပုံစံတခုဆိုလည်း မမှားပါဘူး။ အခုနောက်ပိုင်းမှာ cloud-init ဟာနေရာတကာမှာတော်တော်လေးကို အသုံးများပါတယ်။ YAML syntax နဲ့ဖြစ်တဲ့အတွက် လွယ်ကူတာကြောင့် industrial standard တခုအနေနဲ့ cloud မှာရော၊ on-premise မှာပါအသုံးပြုပါတယ်။ သို့သော်... Enterprise Linux လို့ဆိုလိုက်တာနဲ့ Red Hat Enterprise Linux ကိုချက်ချင်းပြေးမြင်ကြမှာပါ။ Kickstart ဟာ RHEL ရဲ့ bootstrap process မှာအသုံးပြုနိုင်ဖို့အတွက် Red Hat ရဲ့ product တခုပါ။ ဒီ article မှာ RHEL ကိုမသုံးပဲနဲ့ AlmaLinux 8 ကိုအသုံးပြုပြီး demo လုပ်ပါ့မယ်။ အကြမ်းဖျင်းအားဖြင့် Rocky Linux နဲ့ AlmaLinux နှစ်ခုဟာ binary-to-binary compatible ဖြစ်တာမို့ RHEL ကိုသုံးမယ်ဆိုရင်လည်း လုပ်ငန်းစဉ်တွေအားလုံးဟာ အတူတူပါပဲ။ Kickstart ကိုသုံးပြီး bare metal hardware တွေကိုပဲ bootstrap လုပ်နိုင်တာမဟုတ်ပဲနဲ့ virtual machine (VM) တွေအတွက် အသုံးပြုချင်တယ်ဆိုလည်းဖြစ်ပါတယ်။

Custom ISO တည်ဆောက်ပုံအဆင့်များ

Build environment တခုပြင်ဆင်ခြင်း

ဒီ custom ISO တွေကိုတည်ဆောက်ဖို့အတွက် ဘယ် Linux distribution ကိုအသုံးပြုပြီး build environment တခုကိုပြင်ဆင်လို့ရပါတယ်။ စာရေးသူက Ubuntu 24.04 LTS သုံးတဲ့အတွက် APT package manager နဲ့လိုအပ်တဲ့ deb package တွေကိုအောက်မှာပြထားသလို အရင် install လုပ်ပါ့မယ်။

# update the package repos
sudo apt update

# for mkisofs utility, install genisoimage package
sudo apt install genisoimage

# for isohybrid utility, install syslinux-utils package
sudo apt install syslinux-utils

# for implantisomd5 utility, install isomd5sum package
sudo apt install isomd5sum

Ubuntu မသုံးပဲနဲ့ RHEL ရဲ့ derivative တခုခုကိုသုံးမယ်ဆိုရင် အောက်မှပြထားတဲ့ package တွေကို install လုပ်ရပါ့မယ်။ စာရေးသူက Fedora 40 ကို VM မှာတင်ပြီး စမ်းသပ်ထားတာဖြစ်ပါတယ်။ ကျန်တဲ့ အပိုင်းတွေ အကုန်လုံးက အတူတူပါပဲ။

နောက်အဆင့်အနေနဲ့ ကိုယ်အသုံးပြုမယ့် AlmaLinux 8 ISO ကိုအောက်မှပြထားသလိုမျိုး လက်ရှိအလုပ်လုပ်မယ့် directory ထဲကို download ဆွဲလိုက်ပါ။ AlmaLinux 8 DVD ISO က 13 GB လောက်ရှိတဲ့အတွက် ကိုယ့် internet speed ပေါ်မူတည်ပြီး အနည်းငယ်တော့ကြာနိုင်ပါတယ်။ ဒါ့အပြင်ကိုယ့်စက်ပေါ်မှာလည်း နည်းဆုံး 50 to 60 GB လောက် storage အပိုရှိဖို့လိုပါလိမ့်မယ်။

Download ဆွဲလို့ပြီးတာနဲ့ လိုအပ်တဲ့ directory တွေကိုအောက်မှာပြထားတဲ့အတိုင်းအရင်ပြင်ဆင်ရပါ့မယ်။ ပြီးတာနဲ့ ISO ကို loop device အနေနဲ့ mount လုပ်လိုက်ပြီး DVD ISO ထဲက file တွေ folder တွေအကုန်လုံးကို အောက်မှပြထားသလို extract လုပ်ရယူလိုက်ပါ။ shopt -s dotglob ဆိုတဲ့ shell command ကိုအရင် run ပြီးတော့မှ copy လုပ်ပါ။ အဲ့ဒီ command က . နဲ့စတဲ့ hidden file တွေကိုပါထည့်သွင်းကူးယူချင်လို့ဖြစ်ပါတယ်။ အကယ်လို့ ဒီအဆင့်ကိုကျော်သွားတယ် ဆိုရင်တော့ custom ISO ဟာ boot လုပ်တဲ့အခါ လိုအပ်တဲ့ source file တွေကိုမတွေ့တာကြောင့် installation ဆက်လုပ်လို့မရတာဖြစ်ပါလိမ့်မယ်။

Kickstart configuration

Custom ISO ဖြစ်ဖို့အတွက် အရေးကြီးတဲ့ Kickstart configuration ကိုအောက်ဖော်ပြပါ အတိုင်းလက်ရှိ ကိုယ်အလုပ်လုပ်မယ့် directory ထဲမှာဖန်တီးလိုက်ရအောင်။

အထက်မှာမြင်ရသလိုမျိုး Kickstart file မှာ ကိုယ်လိုချင်တဲ့ parameter တွေကိုသတ်မှတ်ပေးလိုက်ပါ။ ရိုးရှင်းတဲ့ configuration တွေကိုအသုံးပြုထားတာဖြစ်တာမို့ အသေးစိတ်မရှင်းလိုတော့ပါ။ အကျဉ်းချုပ်အားဖြင့် QEMU/KVM ကိုသုံးပြီး hypervisor နဲ့ အခြားသောလိုအပ်တဲ့ package တွေကို Kickstart နဲ့ install ကြိုလုပ်ထားတာပါ။ Installation ပြီးတာနဲ့ဘာမှလုပ်စရာမလိုပဲ hypervisor အနေနဲ့ စတင်သုံးလို့ရအောင် ပြင်ဆင်ပုံပဲဖြစ်ပါတယ်။

GRUB menu နဲ့ isolinux configuration

ဒီအဆင့်မှာ GRUB bootloader မှာ boot menu ကိုဘယ်လိုမျိုးပေါ်စေချင်သလဲဆိုတာကိုပြင်ဆင်ပေးရမှာဖြစ်ပါတယ်။ ဒီ configuration file တွေကို အစကနေပြီး ဖန်တီးစရာမလိုပဲနဲ့ ./custom-iso/EFI/BOOT/grub.cfg နဲ့ ./custom-iso/isolinux/isolinux.cfg ကနေကူးယူပြီး ကိုယ့်ရဲ့ custom entry ကိုထပ်ပေါင်းထည့်ပေးလိုက်ရုံပါပဲ။ အဲ့ဒီ configuration file နှစ်ခုကို အောက်မှဖော်ပြထားတဲ့အတိုင်းပြင်ဆင်လိုက်ပါ။

ဒီ grub.cfg မှာထပ်ထည့်ပေါင်းတာဆိုလို အောက်မှာပြထားတဲ့အပိုင်းတခုပဲရှိပါတယ်။ ကျန်တာတွေအားလုံးဟာ သူ့မူရှင်း file ထဲမှာပါတဲ့ content အတိုင်းပဲဖြစ်ပါတယ်။

isolinux.cfg ကိုဒီတခါကြည့်လိုက်ရအောင်။

ဒီတခါလည်း အကုန်လုံးနီးပါး နဂိုအတိုင်းဖြစ်ပြီး အောက်မှာပြထားတဲ့အပိုင်းတခုပဲပိုလာတာ တခုရယ်၊ label check အပိုင်းအောက်မှာ menu default ဆိုတဲ့ line ကိုဖျက်ပေးလိုက်ပါ။ အဲ့ဒါကို label custom အောက်မှာထည့်ပေးခြင်းဖြင့် boot menu မှာ ကိုယ့်ရဲ့ custom option ကို default အနေနဲ့ ရွေးထားပြီးသားဖြစ်နေပါလိမ့်မယ်။ ဒါ့ကြောင့် boot တက်တဲ့အခါမှာ menu option တခုကနေ နောက်တခုကိုထပ်ပြောင်းပေးစရာမလိုတော့ပါဘူး။

Custom ISO တခုဖန်တီးခြင်း

အားလုံးပြီးရင် နောက်ဆုံးအဆင့်မှာတော့ custom ISO ဖန်တီးဖို့သာကျန်ပါတယ်။ ဘယ်လိုမျိုး ပေါင်းစပ်ပြီး ဖန်တီးသလဲဆိုတာအောက်မှာ ကြည့်လိုက်ရအောင်။

ရရှိလာတဲ့ custom.iso ကို VM တခုနဲ့ အရင်ဆုံး boot တက်ကြည့်လိုက်ပါ။ အားလုံးအဆင်ပြေရင် USB drive နဲ့ bootable disk လုပ်ပြီး ကိုယ်သုံးချင်တဲ့ စက်ပေါ်မှာတင်အသုံးပြုနိုင်ပါပြီ။

Last updated

Was this helpful?