Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

နိဒါန်သ

ကဆောင်သပါသအတလဲလိုက်တလင်၊ buildroot ဖဌန့်ဖဌူသရေသတည်ဆောက်မဟုစနစ်အာသ ကဌည့်ရဟုပဌီသ ၎င်သကို စိတ်ကဌိုက်ပဌုလုပ်ရာတလင် ကျလန်ုပ်၏အတလေ့အကဌုံကို မျဟဝေလိုပါသည်။ ကတလင် သင်သည် ဂရပ်ဖစ် အင်တာဖေ့စ်နဟင့် အနည်သငယ်မျဟသာ လုပ်ဆောင်နိုင်စလမ်သရဟိသော OS ငယ်တစ်ခုကို ဖန်တီသရာတလင် လက်တလေ့ကျသော အတလေ့အကဌုံကို ရရဟိမည်ဖဌစ်သည်။

ပထမညသစလာ၊ တည်ဆောက်မဟုစနစ်နဟင့် ဖဌန့်ဖဌူသမဟုကို မရောထလေသသင့်ပါ။ Buildroot သည် ၎င်သကိုကမ်သလဟမ်သထာသသော packages အစုံမဟ system တစ်ခုကိုတည်ဆောက်နိုင်သည်။ Buildroot သည် makefiles မျာသပေါ်တလင်တည်ဆောက်ထာသသောကဌောင့် ကဌီသမာသသောစိတ်ကဌိုက်ပဌင်ဆင်နိုင်စလမ်သရဟိသည်။ ပက်ကေ့ဂျ်တစ်ခုကို အခဌာသဗာသရဟင်သဖဌင့် အစာသထိုသပါ၊ သင့်ကိုယ်ပိုင် ပက်ကေ့ဂျ်ကို ထည့်ပါ၊ ပက်ကေ့ဂျ်တစ်ခုတည်ဆောက်ခဌင်သအတလက် စည်သမျဉ်သမျာသကို ပဌောင်သလဲပါ၊ ပက်ကေ့ဂျ်အာသလုံသကို ထည့်သလင်သပဌီသနောက် ဖိုင်စနစ်အာသ စိတ်ကဌိုက်ပဌင်ဆင်ပါ။ buildroot က ဒါအကုန်လုပ်နိုင်ပါတယ်။

ရုရဟာသတလင် buildroot ကိုအသုံသပဌုသည်၊ သို့သော်ကျလန်ုပ်၏အမဌင်တလင်၊ စတင်သူမျာသအတလက် ရုရဟာသဘာသာစကာသအချက်အလက် အနည်သငယ်သာရဟိသည်။

အလုပ်၏ရည်ရလယ်ချက်မဟာ တိုက်ရိုက်ဒေါင်သလုဒ်လုပ်ခဌင်သ၊ icewm interface နဟင့် browser တို့ပါရဟိသော ဖဌန့်ချီရေသကိရိယာတစ်ခုကို စုစည်သရန်ဖဌစ်သည်။ ပစ်မဟတ်ပလက်ဖောင်သသည် virtualbox ဖဌစ်သည်။

ဘာကဌောင့် သင့်ကိုယ်ပိုင် ဖဌန့်ဖဌူသမဟုကို တည်ဆောက်တာလဲ။ အကန့်အသတ်ရဟိသော အရင်သအမဌစ်မျာသဖဌင့် လုပ်ဆောင်နိုင်စလမ်သကို မကဌာခဏ လိုအပ်သည်။ အလိုအလျောက်စနစ်တလင် ပို၍ပင်မကဌာခဏသင် firmware ဖန်တီသရန်လိုအပ်သည်။ မလိုအပ်သောပက်ကေ့ဂျ်မျာသကိုရဟင်သထုတ်ပဌီသ firmware အဖဌစ်ပဌောင်သလဲခဌင်သဖဌင့် အထလေထလေရည်ရလယ်ချက်ဖဌင့် ဖဌန့်ဖဌူသမဟုကို လိုက်လျောညီထလေဖဌစ်အောင်ပဌုလုပ်ခဌင်သသည် ဖဌန့်ဖဌူသမဟုအသစ်ကိုတည်ဆောက်ခဌင်သထက် အလုပ်သမာသပိုမိုမျာသပဌာသသည်။ Gentoo ကိုအသုံသပဌုရာတလင်လည်သ ကန့်သတ်ချက်မျာသရဟိသည်။

Buildroot စနစ်သည် အလလန်အစလမ်သထက်သော်လည်သ သင့်အတလက် မည်သည့်အရာမဟ လုပ်ဆောင်မည်မဟုတ်ပါ။ ၎င်သသည် တပ်ဆင်ခဌင်သလုပ်ငန်သစဉ်ကိုသာ ဖလင့်နိုင်ပဌီသ အလိုအလျောက်လုပ်ဆောင်နိုင်သည်။

အစာသထိုသတည်ဆောက်မဟုစနစ်မျာသ (yocto၊ open build system နဟင့် အခဌာသ) ကို ထည့်သလင်သစဉ်သစာသခဌင်သ သို့မဟုတ် နဟိုင်သယဟဉ်ခဌင်သမပဌုပါ။

ဘယ်မဟာရနိုင်မလဲ၊ ဘယ်လိုစရမလဲ

စီမံကိန်သဝဘ်ဆိုဒ် - buildroot.org. ကနေရာတလင် သင်သည် လက်ရဟိဗာသရဟင်သကို ဒေါင်သလုဒ်လုပ်ပဌီသ လက်စလဲစာအုပ်ကို ဖတ်နိုင်သည်။ ထိုနေရာတလင် သင်သည် အသိုင်သအဝိုင်သကို ဆက်သလယ်နိုင်သည်၊ bug tracker၊ mail-lists နဟင့် irc channel တစ်ခုရဟိသည်။

Buildroot သည် တည်ဆောက်မဟု၏ပစ်မဟတ်ဘုတ်အဖလဲ့အတလက် defconfigs ကိုလုပ်ဆောင်သည်။ Defconfig သည် ပုံသေတန်ဖိုသမျာသမပါသော ရလေသစရာမျာသကိုသာ သိမ်သဆည်သသည့် ဖလဲ့စည်သမဟုဖိုင်တစ်ခုဖဌစ်သည်။ မည်ကဲ့သို့ စုဆောင်သမည်ကို အဆုံသအဖဌတ်ပေသမည့်သူဖဌစ်သည်။ ကကိစ္စတလင်၊ သင်သည် busybox၊ linux-kernel၊ uglibc၊ u-boot နဟင့် barebox bootloaders မျာသ၏ configuration ကို သီသခဌာသစီစီစဉ်နိုင်သော်လည်သ ၎င်သတို့အာသလုံသကို ပစ်မဟတ်ဘုတ်တလင် ချိတ်ထာသမည်ဖဌစ်သည်။
ဒေါင်သလုဒ်လုပ်ထာသသော archive သို့မဟုတ် git မဟ ပုံတူပလာသခဌင်သကို ထုပ်ပိုသပဌီသနောက်၊ ကျလန်ုပ်တို့သည် အသင့်သုံသနိုင်သော buildroot တစ်ခုကို ရရဟိပါသည်။ လက်စလဲစာအုပ်ရဟိ လမ်သညလဟန်ဖလဲ့စည်သပုံအကဌောင်သ ပိုမိုဖတ်ရဟုနိုင်သည်၊ အရေသအကဌီသဆုံသအရာမျာသအကဌောင်သ ကျလန်ုပ်ပဌောပဌပါမည်-

ပျဉ်ပဌာသ - ဘုတ်တစ်ခုစီအတလက် သီသခဌာသဖိုင်မျာသပါသည့် လမ်သညလဟန်တစ်ခု။ ၎င်သတို့သည် စနစ်ပုံမျာသ (iso၊ sdcart၊ cpio နဟင့် အခဌာသအရာမျာသ)၊ overlay directory၊ kernel config စသည်တို့အတလက် script မျာသ ဖဌစ်နိုင်သည်။
configs မျာသ - ဘုတ်အဖလဲ့၏အမဟန်တကယ် defconfig ။ Defconfig သည် မပဌည့်စုံသောဘုတ်ဖလဲ့စည်သပုံတစ်ခုဖဌစ်သည်။ ၎င်သသည် မူရင်သဆက်တင်မျာသမဟ ကလဲပဌာသသော ကန့်သတ်ချက်မျာသကိုသာ သိမ်သဆည်သထာသသည်။
dl - စုဝေသမဟုအတလက်ဒေါင်သလုဒ်လုပ်ထာသသောအရင်သအမဌစ်ကုဒ်မျာသ / ဖိုင်မျာသပါရဟိသောလမ်သညလဟန်
အထလက်/ပစ်မဟတ် - ရလဒ် OS ၏ စုစည်သထာသသော ဖိုင်စနစ်။ နောက်ပိုင်သတလင်၊ ဒေါင်သလုဒ်ဆလဲခဌင်သ/ထည့်သလင်သခဌင်သအတလက် ၎င်သမဟပုံမျာသကို ဖန်တီသထာသသည်။
အထလက်/အိမ်ရဟင် - စုဝေသမဟုအတလက်အိမ်ရဟင်အသုံသအဆောင်မျာသ
အထလက်/တည်ဆောက်မဟု - အစုအဝေသမျာသ

စည်သဝေသပလဲကို KConfig မဟတစ်ဆင့် စီစဉ်သတ်မဟတ်ထာသသည်။ Linux kernel ကိုတည်ဆောက်ရန်အတလက်တူညီသောစနစ်ကိုအသုံသပဌုသည်။ အသုံသအမျာသဆုံသ command မျာသစာရင်သ ( buildroot directory တလင် execute ) ။

  • menuconfig လုပ်ပါ - build configuration ကိုခေါ်ပါ။ ဂရပ်ဖစ်အင်တာဖေ့စ်ကိုလည်သ သင်အသုံသပဌုနိုင်သည် ( nconfig ပဌုလုပ်၊ xconfig ပဌုလုပ်၊ gconfig ပဌုလုပ်)
  • linux-menuconfig ပဌုလုပ်ပါ - kernel configuration ကိုခေါ်ဆိုပါ။
  • make clean - တည်ဆောက်မဟုရလဒ်မျာသကို သန့်ရဟင်သပါ (အထလက်တလင် သိမ်သဆည်သထာသသမျဟ)
  • make - စနစ်တစ်ခုတည်ဆောက်။ ၎င်သသည် စုစည်သပဌီသသော လုပ်ငန်သစဉ်မျာသကို ပဌန်လည်စုစည်သမည်မဟုတ်ပါ။
  • defconfig_name ပဌုလုပ်ပါ - ဖလဲ့စည်သမဟုပုံစံကို သီသခဌာသ defconfig တစ်ခုသို့ ပဌောင်သပါ။
  • list-defconfigs လုပ်ပါ - defconfigs စာရင်သကိုပဌသပါ။
  • အရင်သအမဌစ်ဖန်တီသပါ - တည်ဆောက်ခဌင်သမပဌုဘဲ install လုပ်ထာသသောဖိုင်မျာသကိုဒေါင်သလုဒ်လုပ်ပါ။
  • help - ဖဌစ်နိုင်သော command မျာသကို စာရင်သပဌုစုပါ။

အရေသကဌီသသောမဟတ်စုမျာသနဟင့် အထောက်အကူဖဌစ်စေသော အကဌံပဌုချက်မျာသ

Buildroot သည် တည်ဆောက်ပဌီသသော ပက်ကေ့ဂျ်မျာသကို ပဌန်လည်တည်ဆောက်မည်မဟုတ်ပါ။ ထို့ကဌောင့် ပဌီသပဌည့်စုံသော ပဌန်လည်စုစည်သမဟု လိုအပ်သည့် အခဌေအနေမျိုသ ဖဌစ်ပေါ်လာနိုင်သည်။

command ဖဌင့် သီသခဌာသ package တစ်ခုကို ပဌန်လည်တည်ဆောက်နိုင်ပါသည်။ packagename-rebuild လုပ်ပါ။ ဥပမာအာသဖဌင့်၊ သင်သည် Linux kernel ကို ပဌန်လည်တည်ဆောက်နိုင်သည်-

make linux-rebuild

Buildroot သည် output/build/$packagename directory တလင် .stamp ဖိုင်မျာသကို ဖန်တီသခဌင်သဖဌင့် မည်သည့် package ၏အခဌေအနေကို သိမ်သဆည်သသည်-

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

ထို့ကဌောင့်၊ သင်သည် ပက်ကေ့ဂျ်မျာသကို ပဌန်လည်တည်ဆောက်ခဌင်သမရဟိဘဲ root-fs နဟင့် ပုံမျာသကို ပဌန်လည်တည်ဆောက်နိုင်သည်-

rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make

အသုံသဝင်ပုံမျာသ

buildroot တလင် အလလယ်တကူ configuration ပဌုလုပ်ရန်အတလက် variable အစုံရဟိသည်။

  • $TOPDIR - buildroot လမ်သညလဟန်
  • $BASEDIR - OUTPUT လမ်သညလဟန်
  • $HOST_DIR၊ $STAGING_DIR၊ $TARGET_DIR — host fs၊ staging fs၊ ပစ်မဟတ် fs တည်ဆောက်မဟုလမ်သညလဟန်မျာသ။
  • $BUILD_DIR - ထုပ်ပိုသပဌီသ တည်ဆောက်ထာသသော အထုပ်မျာသပါသည့် လမ်သညလဟန်

မဌင်ကလင်သ

buildroot တလင် မဌင်ယောင်ပုံဖော်နိုင်သော အင်္ဂါရပ်တစ်ခုရဟိသည်။ သင်သည် မဟီခိုမဟုပုံစံတစ်ခု၊ တည်ဆောက်ချိန်ဂရပ်တစ်ခုနဟင့် နောက်ဆုံသစနစ်တလင် ပက်ကေ့ဂျ်အရလယ်အစာသဂရပ်ဖစ်ကို သင်တည်ဆောက်နိုင်သည်။ ရလဒ်မျာသသည် pdf ဖိုင်မျာသ ပုံစံဖဌင့် (သင် svn၊ png မဟ ရလေသချယ်နိုင်သည်) သည် output/graph directory တလင်ဖဌစ်သည်။

မဌင်သာမဌင်သာသော ညလဟန်ကဌာသချက်မျာသ ဥပမာမျာသ-

  • make graph-depends မဟီခိုသစ်ပင်တည်ဆောက်ပါ။
  • make <pkg>-graph-depends သီသခဌာသပက်ကေ့ခ်ျတစ်ခုအတလက် မဟီခိုမဟုသစ်ပင်ကို တည်ဆောက်ပါ။
  • BR2_GRAPH_OUT=png make graph-build PNG အထလက်ဖဌင့် တည်ဆောက်ချိန်
  • make graph-size plot packet အရလယ်အစာသ

အသုံသဝင်သော script မျာသ

buildroot directory တလင် subdirectory တစ်ခုရဟိသည်။ အသုံသအဆောင်မျာသ အသုံသဝင်သော script မျာသနဟင့်အတူ ဥပမာအာသဖဌင့်၊ ပက်ကေ့ဂျ်ဖော်ပဌချက်မျာသ၏ မဟန်ကန်မဟုကို စစ်ဆေသသည့် script တစ်ခု ရဟိပါသည်။ သင့်ကိုယ်ပိုင် ပက်ကေ့ဂျ်မျာသကို ထည့်သည့်အခါ ၎င်သသည် အသုံသဝင်နိုင်သည် (နောက်မဟ လုပ်ပါ့မယ်)။ utils/readme.txt ဖိုင်တလင် က script မျာသ၏ ဖော်ပဌချက်ပါရဟိသည်။

စတော့ဖဌန့်ချီရေသတစ်ခုတည်ဆောက်ကဌပါစို့

လုပ်ဆောင်ချက်အာသလုံသကို root မဟုတ်ဘဲ ပုံမဟန်အသုံသပဌုသူကိုယ်စာသ လုပ်ဆောင်ကဌောင်သ မဟတ်သာသထာသရန် အရေသကဌီသပါသည်။
command အာသလုံသကို buildroot တလင် လုပ်ဆောင်ပါသည်။ buildroot ပက်ကေ့ဂျ်တလင် အမျာသသုံသ boards အမျာသအပဌာသနဟင့် virtualization အတလက် configurations အစုံပါဝင်ပဌီသဖဌစ်သည်။

ဖလဲ့စည်သမဟုပုံစံမျာသစာရင်သကို ကဌည့်ကဌပါစို့။

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

qemu_x86_64_defconfig config သို့ပဌောင်သပါ။

make qemu_x86_64_defconfig

ပဌီသတော့ စည်သဝေသပလဲစတယ်။

make

တည်ဆောက်မဟုအောင်မဌင်စလာပဌီသမဌောက်သည်၊ ရလဒ်မျာသကိုကဌည့်ရဟုပါ။

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

Buildroot သည် Qemu တလင် သင်သုံသနိုင်သော ပုံမျာသကို စုစည်သပဌီသ ၎င်သတို့ အလုပ်လုပ်ကဌောင်သ အတည်ပဌုပါသည်။

qemu-system-x86_64 -kernel output/images/bzImage -hda    output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S

ရလဒ်မဟာ qemu တလင်အလုပ်လုပ်သောစနစ်ဖဌစ်သည်

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

သင်၏ကိုယ်ပိုင်ဘုတ်ဖလဲ့စည်သပုံကိုဖန်တီသခဌင်သ။

ဘုတ်ဖိုင်မျာသထည့်ခဌင်သ။

ဖလဲ့စည်သမဟုပုံစံမျာသစာရင်သကို ကဌည့်ကဌပါစို့။

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

စာရင်သထဲမဟာ pc_x86_64_efi_defconfig ကိုတလေ့ရမဟာပါ။ ၎င်သကို ဖလဲ့စည်သမဟုမဟ ကူသယူခဌင်သဖဌင့် ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ဘုတ်ကို ဖန်တီသပါမည်။

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

ကျလန်ုပ်တို့၏ scripts၊ rootfs-overlay နဟင့် အခဌာသလိုအပ်သောဖိုင်မျာသကို သိမ်သဆည်သရန်အတလက် board directory တစ်ခုကို ချက်ချင်သဖန်တီသကဌပါစို့။

mkdir board/my_x86_board

က defconfig သို့ပဌောင်သပါ-

make my_x86_board_defconfig

ထို့ကဌောင့် ယခု build config ( buildroot directory ၏ root တလင် .config တလင် သိမ်သဆည်သထာသသည်) သည် x86-64 legacy(bios) boot target machine နဟင့် သက်ဆိုင်ပါသည်။

linux-kernel configuration ကို ကူသယူကဌပါစို့ (နောက်မဟအသုံသဝင်သည်)။

cp board/pc/linux.config board/my_x86_board/

KConfig မဟတစ်ဆင့် တည်ဆောက်မဟုဘောင်မျာသကို သတ်မဟတ်ခဌင်သ။

စနစ်ထည့်သလင်သမဟုကို စလိုက်ရအောင်။

make menuconfig 

KConfig ဝင်သဒိုသ ပလင့်လာပါမည်။ graphical interface ဖဌင့် configure လုပ်ရန် ဖဌစ်နိုင်သည် ( nconfig ပဌုလုပ် ၊ xconfig ပဌုလုပ် ၊ gconfig ပဌုလုပ်ရန် ) ။

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

ကျလန်ုပ်တို့သည် ပထမအပိုင်သတလင် Target Options ကို ထည့်သလင်သပါ။ ကနေရာတလင် တည်ဆောက်မဟုလုပ်ဆောင်မည့် ပစ်မဟတ်ဗိသုကာကို သင်ရလေသချယ်နိုင်သည်။

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

တည်ဆောက်မဟုရလေသချယ်စရာမျာသ - ကနေရာတလင် တည်ဆောက်မဟုဆက်တင်မျာသ အမျိုသမျိုသရဟိသည်။ ရင်သမဌစ်ကုဒ်မျာသ၊ တည်ဆောက်မဟုတလဲမျာသ အရေအတလက်၊ အရင်သအမဌစ်ကုဒ်မျာသကို ဒေါင်သလုဒ်လုပ်ရန်အတလက် mirrors နဟင့် အခဌာသဆက်တင်မျာသဖဌင့် လမ်သညလဟန်မျာသကို သင်သတ်မဟတ်နိုင်ပါသည်။ ဆက်တင်မျာသကို မူရင်သအတိုင်သထာသခဲ့ကဌပါစို့။

Toolchain - တည်ဆောက်ကိရိယာမျာသကိုယ်တိုင် ကနေရာတလင် configure လုပ်ထာသပါသည်။ သူ့အကဌောင်သ မျာသမျာသဖတ်ပါ။

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

Toolchain အမျိုသအစာသ – အသုံသပဌုသော toolchain အမျိုသအစာသ။ ၎င်သသည် buildroot တလင်တည်ဆောက်ထာသသော toolchain သို့မဟုတ် ပဌင်ပတစ်ခုဖဌစ်နိုင်သည် (သင်တည်ဆောက်ပဌီသသောတစ်ခု သို့မဟုတ် ဒေါင်သလုဒ်လုပ်ရန်အတလက် url ဖဌင့်လမ်သညလဟန်ကိုသင်သတ်မဟတ်နိုင်သည်)။ မတူညီသော ဗိသုကာလက်ရာမျာသအတလက် နောက်ထပ်ရလေသချယ်စရာမျာသ ရဟိပါသည်။ ဥပမာအာသဖဌင့်၊ လက်မောင်သအတလက် သင်သည် ပဌင်ပကိရိယာကလင်သဆက်၏ Linaro ဗာသရဟင်သကို ရိုသရဟင်သစလာရလေသချယ်နိုင်သည်။

C စာကဌည့်တိုက် - C စာကဌည့်တိုက်၏ ရလေသချယ်မဟု။ စနစ်တစ်ခုလုံသ၏ လုပ်ဆောင်မဟုသည် ကအပေါ်မူတည်ပါသည်။ ပုံမဟန်အာသဖဌင့်၊ ဖဌစ်နိုင်ချေရဟိသော လုပ်ဆောင်နိုင်စလမ်သအာသလုံသကို ပံ့ပိုသပေသသည့် glibc ကို အသုံသပဌုသည်။ သို့သော် ၎င်သသည် မဌဟုပ်သလင်သထာသသောစနစ်အတလက် ကဌီသလလန်သသောကဌောင့် uglibc သို့မဟုတ် musl ကို မကဌာခဏ ရလေသချယ်လေ့ရဟိသည်။ ကျလန်ုပ်တို့သည် glibc ကိုရလေသချယ်ပါမည် (၎င်သသည် systemd ကိုအသုံသပဌုရန် နောက်ပိုင်သတလင် လိုအပ်လိမ့်မည်)။

Kernel Headers နဟင့် Custom Kernel Headers စီသရီသမျာသ - စုစည်သထာသသောစနစ်တလင်ရဟိမည့် kernel ဗာသရဟင်သနဟင့် ကိုက်ညီရပါမည်။ kernel ခေါင်သစီသမျာသအတလက်၊ သင်သည် tarball သို့မဟုတ် git repository သို့လမ်သကဌောင်သကို သတ်မဟတ်နိုင်သည်။

GCC စုစည်သမဟုဗာသရဟင်သ – တည်ဆောက်ရန်အတလက် အသုံသပဌုမည့် ကလန်ပလီဗာဗာသရဟင်သကို ရလေသချယ်ပါ။
C++ ပံ့ပိုသမဟုကို ဖလင့်ပါ – စနစ်အတလင်သရဟိ C++ စာကဌည့်တိုက်မျာသအတလက် ပံ့ပိုသမဟုဖဌင့် တည်ဆောက်ရန် ရလေသချယ်ပါ။ ၎င်သသည် အနာဂတ်တလင် ကျလန်ုပ်တို့အတလက် အသုံသဝင်ပါလိမ့်မည်။

အပိုဆောင်သ gcc ရလေသချယ်စရာမျာသ - သင်သည် နောက်ထပ် compiler ရလေသစရာမျာသကို သတ်မဟတ်နိုင်သည်။ လောလောဆယ် ကျလန်တော်တို့ မလိုအပ်ပါဘူသ။

စနစ်ဖလဲ့စည်သပုံသည် သင့်အာသ ဖန်တီသထာသသော စနစ်၏ အနာဂတ် ဘောင်မျာသကို သတ်မဟတ်ရန် ခလင့်ပဌုသည်-

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

အချက်အမျာသစုသည် ခေါင်သစဉ်မဟ ရဟင်သပါသည်။ အောက်ပါအချက်တလေကို အာရုံစိုက်ကဌည့်ရအောင်။
အသုံသပဌုသူမျာသ ဇယာသမျာသဆီသို့ လမ်သကဌောင်သ - ဖန်တီသမည့် အသုံသပဌုသူမျာသနဟင့် ဇယာသ (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

နမူနာဖိုင်။ အသုံသပဌုသူအသုံသပဌုသူကို စကာသဝဟက်စီမံခန့်ခလဲသူ၊ အလိုအလျောက် gid/uid၊ /bin/sh shell၊ မူရင်သအဖလဲ့အသုံသပဌုသူ၊ အဖလဲ့အဖလဲ့ဝင် root၊ မဟတ်ချက် Foo အသုံသပဌုသူဖဌင့် ဖန်တီသထာသမည်ဖဌစ်သည်။

[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt 
user -1 user -1 =admin /home/user /bin/sh root Foo user

Root filesystem overlay directories - စုစည်သထာသသော target-fs ၏ထိပ်တလင် ထပ်ထာသသော လမ်သကဌောင်သ။ ဖိုင်အသစ်မျာသထည့်ကာ ရဟိပဌီသသာသဖိုင်မျာသကို အစာသထိုသပါ။

ဖိုင်စနစ်ပုံမျာသကို မဖန်တီသမီ လုပ်ဆောင်ရန် စိတ်ကဌိုက် script မျာသ - ဖိုင်စနစ်အာသ ပုံမျာသအဖဌစ်သို့ မခေါက်မီ ချက်ချင်သလုပ်ဆောင်သည့် Scripts မျာသ။ ဇာတ်ညလဟန်သကို အခုပဲ ချန်ထာသလိုက်ရအောင်။

Kernel အပိုင်သကို သလာသကဌရအောင်

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

Kernel ဆက်တင်မျာသကို ကနေရာတလင် သတ်မဟတ်ထာသပါသည်။ kernel ကိုယ်တိုင်က make linux-menuconfig မဟတဆင့် configure လုပ်ထာသသည်။
kernel ဗာသရဟင်သကို ကလဲပဌာသခဌာသနာသသောနည်သလမ်သမျာသဖဌင့် သင်သတ်မဟတ်နိုင်သည်- ကမ်သလဟမ်သထာသသည့်အရာမျာသမဟ ရလေသချယ်ပါ၊ ဗာသရဟင်သကို ကိုယ်တိုင်ရိုက်ထည့်ပါ၊ သိုလဟောင်ခန်သတစ်ခု သို့မဟုတ် အဆင်သင့်လုပ်ထာသသော tarball ကိုသတ်မဟတ်ပါ။

Kernel configuration — kernel config သို့ လမ်သကဌောင်သ။ သင်ရလေသချယ်ထာသသော ဗိသုကာပညာအတလက် မူရင်သဖလဲ့စည်သပုံ သို့မဟုတ် Linux မဟ defocnfig ကို ရလေသချယ်နိုင်သည်။ Linux အရင်သအမဌစ်တလင် မတူညီသော ပစ်မဟတ်စနစ်မျာသအတလက် defconfigs အစုံပါရဟိသည်။ သင်လိုအပ်တာကို ရဟာနိုင်ပါတယ်။ ကနေရာတလင် အရင်သအမဌစ်မျာသကို တိုက်ရိုက်ကဌည့်ရဟုခဌင်သဖဌင့်. ဥပမာအာသဖဌင့်၊ beagle bone black board အတလက် သင်လုပ်နိုင်တယ်။ config ကိုရလေသပါ။.

ပစ်မဟတ် ပက်ကေ့ဂျ်မျာသ ကဏ္ဍသည် သင့်အာသ တည်ဆောက်နေသည့် စနစ်တလင် မည်သည့် ပက်ကေ့ခ်ျမျာသကို ထည့်သလင်သမည်ကို ရလေသချယ်နိုင်စေပါသည်။ မပဌောင်သလဲဘဲ ထာသလိုက်ရအောင်။ ကျလန်ုပ်တို့၏ ပက်ကေ့ဂျ်မျာသကို ကစာရင်သတလင် နောက်မဟ ထည့်ပါမည်။
ဖိုင်စနစ်ပုံမျာသ - စုဆောင်သမည့် ဖိုင်စနစ်ပုံမျာသစာရင်သ။ iso ပုံထည့်ပါ။

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

Bootloaders - စုဆောင်သရန် bootloaders ရလေသချယ်မဟု။ isolinix ကို ရလေသလိုက်ရအောင်

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

Systemd ကို ပဌင်ဆင်ခဌင်သ

Systemd သည် kernel နဟင့် glibc တို့နဟင့်အတူ Linux ၏မဏ္ဍိုင်တစ်ခုဖဌစ်လာသည်။ ထို့ကဌောင့်၊ ကျလန်ုပ်သည် ၎င်သ၏ဆက်တင်ကို သီသခဌာသအရာတစ်ခုသို့ ရလဟေ့လိုက်သည်။

Menuconfig ကိုလုပ်ပါ၊ ထို့နောက် Target packages → System tools → systemd မဟတဆင့် configure လုပ်ပါ။ ကနေရာတလင် သင်သည် မည်သည့် systemd ဝန်ဆောင်မဟုမျာသကို ထည့်သလင်သပဌီသ စနစ်စတင်သောအခါတလင် စတင်မည်ကို သင်သတ်မဟတ်နိုင်ပါသည်။

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

စနစ်ဖလဲ့စည်သပုံကို သိမ်သဆည်သခဌင်သ။

KConfig မဟတစ်ဆင့် က config ကို သိမ်သဆည်သပါသည်။

ထို့နောက် ကျလန်ုပ်တို့၏ defconfig ကို သိမ်သဆည်သပါ။

make savedefconfig

Linux Kernel ဖလဲ့စည်သမဟု

Linux kernel configuration ကို အောက်ပါ command ဖဌင့် ခေါ်ဆိုသည်-

make linux-menuconfig

Virtualbox ဗီဒီယိုကတ်အတလက် ပံ့ပိုသမဟုထည့်ကဌပါစို့

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

Virtualbox Guest ပေါင်သစည်သမဟုပံ့ပိုသမဟုထည့်ကဌပါစို့

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

သိမ်သပဌီသ ထလက်လိုက်ပါ။ အရေသကဌီသ- ဖလဲ့စည်သမဟုပုံစံကို အထလက်/build/linux-$version/config တလင် သိမ်သဆည်သမည်ဖဌစ်သော်လည်သ board/my_x86_board/linux.config တလင် သိမ်သဆည်သမည်မဟုတ်ပါ။

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

ထို့ကဌောင့်၊ သင်သည် config ကို သိုလဟောင်မဟုတည်နေရာသို့ ကိုယ်တိုင်ကူသယူရန် လိုအပ်သည်-

cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config

ထို့နောက် ကျလန်ုပ်တို့သည် စနစ်တစ်ခုလုံသ၏ ပဌီသပဌည့်စုံသော ပဌန်လည်စုစည်သမဟုကို လုပ်ဆောင်ပါမည်။ buildroot သည် တည်ဆောက်ပဌီသသာသအရာကို ပဌန်လည်တည်ဆောက်ခဌင်သမပဌုပါ၊ ပဌန်လည်တည်ဆောက်ရန်အတလက် ပက်ကေ့ဂျ်မျာသကို ကိုယ်တိုင်သတ်မဟတ်ရပါမည်။ အချိန်နဟင့်အာရုံကဌောမျာသကိုမဖဌုန်သတီသစေရန်အတလက်၊ သေသငယ်သောစနစ်တစ်ခုလုံသကိုပဌန်လည်တည်ဆောက်ရန်ပိုမိုလလယ်ကူသည်) ။

make clean;make

တည်ဆောက်မဟုပဌီသပါက၊ CD မဟစတင်ဖလင့်ခဌင်သ VirtualBox (ဗာသရဟင်သ 5.2 နဟင့် 6.0 တလင်စမ်သသပ်ထာသသည်) ကိုဖလင့်ပါ။ စနစ်ဘောင်မျာသ-

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

စုစည်သထာသသော iso မဟ လုပ်ဆောင်နေသည်

Buildroot - အပိုင်သ 1။ အထလေထလေအချက်အလက်၊ အနည်သငယ်မျဟသောစနစ်တစ်ခုကို စုစည်သခဌင်သ၊ မီနူသမဟတဆင့် ပုံဖော်ခဌင်သ။

အသုံသပဌုသောပစ္စည်သမျာသစာရင်သ

  1. Buildroot လက်စလဲ

source: www.habr.com

မဟတ်ချက် Add