TL; ဒေါက်တာ- ပရိုဂရမ်တွင် ARM ကွန်ပျူတာအတွက် Kali Linux ပုံတစ်ပုံကို တည်ဆောက်နေပါသည်။ debootstrap
, linux
и u-boot
.
လူကြိုက်များသော single-board software အချို့ကို သင်ဝယ်ယူပါက ၎င်းအတွက် သင်နှစ်သက်သော ဖြန့်ဝေမှု၏ ပုံတစ်ပုံမရှိခြင်းနှင့် ကြုံတွေ့ရနိုင်သည်။ ခန့်မှန်းခြေအားဖြင့် အတူတူပါပဲ။
ဒေါင်းလုဒ်လုပ်ငန်းစဉ်သည်အတော်လေးရိုးရှင်းပါသည်။
- ဟာ့ဒ်ဝဲကို စတင်လုပ်ဆောင်နေပါပြီ။
- သိုလှောင်ကိရိယာ (SD ကတ်/eMMC/etc) ရှိ ဧရိယာအချို့မှ bootloader ကို ဖတ်ပြီး လုပ်ဆောင်သည်။
- bootloader သည် operating system kernel ကိုရှာဖွေပြီး အချို့သော memory area တွင် load လုပ်ပြီး execute လုပ်သည်။
- kernel သည် ကျန်သော OS ကို load လုပ်သည်။
ဤအသေးစိတ်အဆင့်သည် ကျွန်ုပ်၏လုပ်ငန်းအတွက် လုံလောက်သည်၊ အသေးစိတ်ကို သင်ဖတ်ရှုနိုင်ပါသည်။
root ဖိုင်စနစ်တည်ဆောက်ခြင်း။
ပထမဆုံးအနေနဲ့ အပိုင်းတွေကို ပြင်ဆင်ရပါမယ်။ Das U-Boot သည် မတူညီသော ဖိုင်စနစ်များကို ပံ့ပိုးပေးသည်၊ ကျွန်ုပ်သည် FAT32 ကို ရွေးချယ်ခဲ့သည်။ /boot
root အတွက် ext3၊ ဒါက ARM ရှိ Kali အတွက် စံပုံ layout ဖြစ်ပါတယ်။ GNU Parted ကိုသုံးမယ်၊ ဒါပေမယ့် ပိုရင်းနှီးတဲ့နည်းနဲ့ အတူတူလုပ်နိုင်ပါတယ်။ fdisk
. မင်းလည်း လိုအပ်လိမ့်မယ်။ dosfstools
и e2fsprogs
ဖိုင်စနစ်တစ်ခုဖန်တီးရန်- apt install parted dosfstools e2fsprogs
.
SD ကတ်ကို ကျွန်ုပ်တို့ အမှတ်အသားပြုပါသည်-
- SD ကတ်ကို MBR အပိုင်းပိုင်းခွဲခြင်းကို အသုံးပြုသည်ဟု အမှတ်အသားပြုပါ-
parted -s /dev/mmcblk0 mklabel msdos
- အောက်တွင် ကဏ္ဍတစ်ခုကို ဖန်တီးပါ။
/boot
128 megabytes အတွက်parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. လွတ်သွားသော ပထမဆုံး megabyte ကို markup ကိုယ်တိုင်နှင့် bootloader အတွက် ချန်ထားရပါမည်။ - ကျန်ရှိသောစွမ်းရည်တစ်ခုလုံးအတွက် အမြစ်ဖိုင်စနစ်တစ်ခုကို ကျွန်ုပ်တို့ဖန်တီးသည်-
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- အကယ်၍ သင့် partition ဖိုင်များကို ရုတ်တရက် မဖန်တီးရသေးပါက သို့မဟုတ် မပြောင်းလဲပါက၊ သင်သည် `partprobe` ကို run ရန် လိုအပ်သည်၊ ထို့နောက် partition table ကို ပြန်လည်ဖတ်ရှုပါမည်။
- အညွှန်းဖြင့် boot partition အတွက် ဖိုင်စနစ်တစ်ခု ဖန်တီးပါ။
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- အညွှန်းတစ်ခုဖြင့် အမြစ်ဖိုင်စနစ်ကို ဖန်တီးပါ။
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
ကောင်းတယ်၊ အခု ဖြည့်နိုင်ပါပြီ။ ဒီအတွက် သင် ထပ်လောင်းလိုအပ်ပါလိမ့်မယ်။ debootstrap
Debian ကဲ့သို့သောလည်ပတ်မှုစနစ်များအတွက် root ဖိုင်စနစ်များဖန်တီးရန်အသုံးဝင်မှုတစ်ခု၊ apt install debootstrap
.
ကျွန်ုပ်တို့သည် FS ကိုစုဆောင်းသည်-
- အခန်းကန့်ကို တပ်ဆင်ပါ။
/mnt/
(ပိုမိုအဆင်ပြေသည့် mount point ကိုသုံးပါ)mount /dev/mmcblk0p2 /mnt
- ကျွန်ုပ်တို့သည် အမှန်တကယ် ဖိုင်စနစ်အား ဖြည့်သွင်းသည်-
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. ကန့်သတ်ချက်--include
ပက်ကေ့ဂျ်အချို့ကို ထပ်လောင်းထည့်သွင်းရန် ညွှန်ပြသည်၊ ကျွန်ုပ်သည် တည်ငြိမ်စွာတည်ဆောက်ထားသော QEMU emulator ကိုသတ်မှတ်ထားသည်။ လုပ်ဆောင်နိုင်ရမယ်။chroot
ARM ပတ်ဝန်းကျင်တွင်။ ကျန်ရွေးချယ်မှုများ၏ အဓိပ္ပါယ်ကို တွင်တွေ့နိုင်သည်။man debootstrap
. ARM ဘုတ်တိုင်းသည် ဗိသုကာလက်ရာကို ပံ့ပိုးသည်မဟုတ်ကြောင်း မမေ့ပါနှင့်armhf
. - ဗိသုကာပညာ ကွာခြားမှုကြောင့်
debootstrap
အဆင့်နှစ်ဆင့်ဖြင့် ဖျော်ဖြေကြပြီး ဒုတိယကို ဤကဲ့သို့ ဖျော်ဖြေကြသည်။chroot /mnt/ /debootstrap/debootstrap --second-stage
- ယခု သင် ၎င်းကို ခြစ်ထုတ်ရန် လိုအပ်သည်-
chroot /mnt /bin/bash
- ကျွန်တော်တို့ ဖြည့်စွက်ပါတယ်။
/etc/hosts
и/etc/hostname
ပစ်မှတ် FS သင့်စက်တွင်းကွန်ပြူတာရှိ အကြောင်းအရာကဲ့သို့ တူညီစွာဖြည့်စွက်ပါ၊ လက်ခံသူအမည်ကို အစားထိုးရန် မမေ့ပါနှင့်။ - အခြားအရာအားလုံးကို သင်စိတ်ကြိုက်ပြင်နိုင်သည်။ အထူးသဖြင့် ငါ install လုပ်ပါ။
locales
(repository keys)၊ ဒေသန္တရနှင့် အချိန်ဇုန်ကို ပြန်လည်ပြင်ဆင်ပါ (dpkg-reconfigure locales tzdata
) အမိန့်ဖြင့် စကားဝှက်ကို သတ်မှတ်ရန် မမေ့ပါနှင့်passwd
. - စကားဝှက်တစ်ခုကို သတ်မှတ်ပါ။
root
အသင်းအဖွဲ့passwd
. - ကျွန်ုပ်အတွက် ရုပ်ပုံပြင်ဆင်မှုသည် ဖြည့်စွက်ခြင်းနှင့် အဆုံးသတ်သည်။
/etc/fstab
အတွင်း/mnt/
.
ယခင်ဖန်တီးထားသော tags များနှင့်အညီ အပ်လုဒ်လုပ်ပါမည်၊ ထို့ကြောင့် အကြောင်းအရာသည် ဤကဲ့သို့ဖြစ်လိမ့်မည်-
LABEL=ROOTFS / အလိုအလျောက် အမှားအယွင်းများ=remount-ro 0 ၁
LABEL=BOOT /boot auto defaults 0 0
နောက်ဆုံးတွင်၊ သင်သည် boot partition ကို mount လုပ်နိုင်သည်၊ kernel အတွက် ၎င်းကို လိုအပ်လိမ့်မည်- `mount /dev/mmcblk0p1 /mnt/boot/`
Linux တည်ဆောက်ခြင်း။
Debian Testing တွင် kernel (ထို့နောက် bootloader) ကိုတည်ဆောက်ရန်၊ ပစ်မှတ်ဗိသုကာအတွက် GCC၊ GNU Make နှင့် GNU C Library header files စံသတ်မှတ်ထားရန် လိုအပ်သည် (ကျွန်ုပ်အတွက် armhf
) အပြင် OpenSSL ခေါင်းစီးများ၊ ကွန်ဆိုးလ်ဂဏန်းတွက်စက် bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. မူရင်း loader သည် ဖိုင်ကို ရှာဖွေနေသောကြောင့်ဖြစ်သည်။ zImage
boot partition ၏ဖိုင်စနစ်တွင်၊ flash drive ကိုခွဲထုတ်ရန်အချိန်ရောက်ပြီ။
- kernel ကိုပုံတူကူးရန် အချိန်ကြာလွန်းသောကြောင့် ကျွန်ုပ်သာ ဒေါင်းလုဒ်လုပ်ပါမည်။
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. ထုပ်ပိုးပြီး အရင်းအမြစ်လမ်းညွှန်သို့ သွားကြပါစို့။tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- စုစည်းမှုမပြုမီ ပြင်ဆင်သတ်မှတ်ပါ-
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. config သည် directory တွင်တည်ရှိသည်။arch/arm/configs/
. မရှိပါက၊ အသင့်လုပ်ထားသောဖိုင်ကို ရှာပြီး ဒေါင်းလုဒ်လုပ်ကာ ကန့်သတ်ချက်တစ်ခုအနေဖြင့် ဤလမ်းညွှန်တွင် ဖိုင်အမည်ကို ပေးပို့နိုင်ပါသည်။KBUILD_DEFCONFIG
. နောက်ဆုံးအားကိုးရာအဖြစ်၊ နောက်တစ်ခုသို့ ချက်ချင်းသွားပါ။ - ဆက်တင်များကို ရွေးချယ်နိုင်သည်-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- ပြီးလျှင် ပုံတစ်ပုံကို ကူးယူစုစည်းပါ။
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- ယခု သင်သည် kernel ဖိုင်ကို ကူးယူနိုင်သည်-
cp arch/arm/boot/zImage /mnt/boot/
- နှင့် DeviceTree မှဖိုင်များ (ဘုတ်အဖွဲ့ပေါ်ရှိ ဟာ့ဒ်ဝဲဖော်ပြချက်-
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- သီးခြားဖိုင်များပုံစံဖြင့် စုဆောင်းထားသော မော်ဂျူးများကို ထည့်သွင်းပါ-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
kernel အဆင်သင့်ဖြစ်ပါပြီ။ အရာအားလုံးကို ပြန်ဖြုတ်နိုင်သည်- umount /mnt/boot/ /mnt/
Das U-Boot
bootloader သည် အပြန်အလှန်အကျိုးသက်ရောက်မှုရှိသောကြောင့် ၎င်း၏လုပ်ဆောင်ချက်ကို သင်စမ်းသပ်ရန် လိုအပ်သည်မှာ ဘုတ်ကိုယ်တိုင်၊ သိုလှောင်မှုကိရိယာနှင့် USB-to-UART စက်ပစ္စည်းကို ရွေးချယ်နိုင်သည်။ ဆိုလိုသည်မှာ၊ သင်သည် kernel နှင့် OS ကို နောက်ပိုင်းတွင်ရွှေ့ဆိုင်းနိုင်သည်။
ထုတ်လုပ်သူအများစုက Das U-Boot ကို ကနဦးစတင်ဖို့ ကမ်းလှမ်းကြပါတယ်။ ပံ့ပိုးမှု အပြည့်အ၀သည် အများအားဖြင့် ၎င်းတို့၏ လမ်းဆုံလမ်းခွတွင် ပံ့ပိုးပေးသော်လည်း ၎င်းတို့သည် အထက်ပိုင်းတွင် ပါဝင်ကူညီရန် မမေ့ပါနှင့်။ ငါ့ကိစ္စမှာ ဘုတ်အဖွဲ့ကို ထောက်ခံတယ်။
bootloader ကိုယ်တိုင် စုစည်းလိုက်ရအောင်။
- ကျွန်ုပ်တို့သည် သိုလှောင်ရာ၏ တည်ငြိမ်သောဌာနခွဲကို မွေးထုတ်သည်-
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- လမ်းညွှန်ကို ကိုယ်တိုင်သွားကြည့်ရအောင်။
cd u-boot
- တည်ဆောက်မှုပုံစံကို ပြင်ဆင်နေသည်-
make mx6ull_14x14_evk_defconfig
. ဖွဲ့စည်းမှုပုံစံသည် Das U-Boot ကိုယ်တိုင်တွင်သာ အလုပ်လုပ်ပါက၊ မဟုတ်ပါက ထုတ်လုပ်သူ၏ config ကိုရှာပြီး ဖိုင်တစ်ခုရှိ repository ၏ root တွင် ထည့်ထားရန် လိုအပ်မည်ဖြစ်သည်။.config
သို့မဟုတ် ထုတ်လုပ်သူမှ အကြံပြုထားသော အခြားနည်းလမ်းဖြင့် စုစည်းပါ။ - ကျွန်ုပ်တို့သည် cross-compiler ကို အသုံးပြု၍ bootloader ပုံကို ကိုယ်တိုင် စုစည်းပါသည်။
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
ထို့ကြောင့်ကျွန်ုပ်တို့သည်ဖိုင်ကိုရရှိသည်။ u-boot.imx
၎င်းသည် flash drive တွင်ရေးနိုင်သောအဆင်သင့်လုပ်ထားသောပုံဖြစ်သည်။ ကျွန်ုပ်တို့သည် ပထမ 1024 bytes ကို ကျော်သွား၍ SD ကတ်သို့ စာရေးပါ။ ဘာကြောင့် Target ကို ရွေးတာလဲ။ u-boot.imx
? 1024 bytes အတိအကျကို ဘာကြောင့်လွတ်သွားတာလဲ။ ဒါက သူတို့လုပ်ဖို့ အဆိုပြုတယ်။
ပြီးပါပြီ၊ သင် boot လုပ်နိုင်ပါတယ်။ bootloader သည် ၎င်း၏ကိုယ်ပိုင်ဗားရှင်း၊ board နှင့်ပတ်သက်သော အချက်အလက်အချို့ကို အစီရင်ခံပြီး partition ပေါ်ရှိ kernel ပုံအား ရှာဖွေရန် ကြိုးစားရမည်ဖြစ်သည်။ မအောင်မြင်ပါက၊ ၎င်းသည် ကွန်ရက်ပေါ်တွင် စတင်ရန် ကြိုးစားလိမ့်မည်။ ယေဘူယျအားဖြင့်၊ output သည် အလွန်အသေးစိတ်ဖြစ်ပြီး ပြဿနာရှိပါက error ကိုသင်ရှာဖွေနိုင်သည်။
အဲဒီအစားတစ်ဦးနိဂုံးပိုင်း၏
လင်းပိုင်ရဲ့နဖူးက အသားမဟုတ်ဘူးဆိုတာ သင်သိပါသလား။ ၎င်းသည် စာသားအရ တတိယမျက်လုံး၊ echolocation အတွက် အဆီများသော မှန်ဘီလူးဖြစ်သည်။
source: www.habr.com