tl; dr: මම වැඩසටහනේ ARM පරිගණකයක් සඳහා Kali Linux රූපයක් ගොඩනඟමින් සිටිමි debootstrap
, linux
и u-boot
.
ඔබ ඉතා ජනප්රිය නොවන තනි පුවරු මෘදුකාංග කිහිපයක් මිල දී ගත්තේ නම්, ඒ සඳහා ඔබේ ප්රියතම බෙදාහැරීමේ රූපයක් නොමැතිකමට ඔබට මුහුණ දීමට සිදු විය හැක. ආසන්න වශයෙන් එකම දේ සිදු විය
බාගත කිරීමේ ක්රියාවලිය තරමක් සරල ය:
- දෘඪාංගය ආරම්භ කර ඇත.
- ගබඩා උපාංගයේ යම් ප්රදේශයකින් (SD කාඩ්/eMMC/etc) ඇරඹුම් කාරකය කියවා ක්රියාත්මක වේ.
- ඇරඹුම් කාරකය මෙහෙයුම් පද්ධතියේ කර්නලය සොයන අතර එය යම් මතක ප්රදේශයකට පටවා එය ක්රියාත්මක කරයි.
- කර්නලය OS හි ඉතිරි කොටස් පූරණය කරයි.
මගේ කාර්යය සඳහා මෙම මට්ටමේ විස්තර ප්රමාණවත්ය, ඔබට විස්තර කියවිය හැකිය
මූල ගොනු පද්ධතිය ගොඩනැගීම
පළමුව ඔබ කොටස් සකස් කළ යුතුය. Das U-Boot විවිධ ගොනු පද්ධති සඳහා සහය දක්වයි, මම FAT32 තෝරා ගත්තෙමි /boot
සහ root සඳහා ext3, මෙය ARM මත Kali සඳහා සම්මත රූප සැකැස්ම වේ. මම GNU Parted භාවිතා කරන්නම්, නමුත් ඔබට එය වඩාත් හුරුපුරුදු ආකාරයකින් කළ හැකිය fdisk
. ඔබටත් අවශ්ය වනු ඇත dosfstools
и e2fsprogs
ගොනු පද්ධතියක් නිර්මාණය කිරීමට: apt install parted dosfstools e2fsprogs
.
අපි SD කාඩ්පත සලකුණු කරමු:
- MBR කොටස් කිරීම භාවිතා කරන ලෙස SD කාඩ්පත සලකුණු කරන්න:
parted -s /dev/mmcblk0 mklabel msdos
- යටතේ කොටසක් සාදන්න
/boot
මෙගාබයිට් 128 සඳහා:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. මග හැරුණු පළමු මෙගාබයිට් සලකුණු කිරීම සඳහා සහ ඇරඹුම් කාරකය සඳහා ඉතිරි කළ යුතුය. - සම්පූර්ණ ඉතිරි ධාරිතාව සඳහා අපි root ගොනු පද්ධතියක් සාදන්නෙමු:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- හදිසියේම ඔබගේ කොටස් ගොනු නිර්මාණය කර නොමැති නම් හෝ වෙනස් වී නොමැති නම්, ඔබට `partprobe` ධාවනය කිරීමට අවශ්ය වේ, එවිට කොටස් වගුව නැවත කියවනු ඇත.
- ලේබලය සමඟ ඇරඹුම් කොටස සඳහා ගොනු පද්ධතියක් සාදන්න
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- ලේබලයක් සහිත මූල ගොනු පද්ධතියක් සාදන්න
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
නියමයි, දැන් ඔබට එය පිරවිය හැක. මේ සඳහා ඔබට අතිරේකව අවශ්ය වනු ඇත debootstrap
, ඩේබියන් වැනි මෙහෙයුම් පද්ධති සඳහා root ගොනු පද්ධති නිර්මාණය කිරීම සඳහා උපයෝගීතාවයකි: apt install debootstrap
.
අපි FS එකතු කරමු:
- කොටස සවි කරන්න
/mnt/
(වඩා පහසු සවි කිරීමේ ස්ථානයක් භාවිතා කරන්න):mount /dev/mmcblk0p2 /mnt
- අපි ඇත්ත වශයෙන්ම ගොනු පද්ධතිය පුරවන්නෙමු:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. පරාමිතිය--include
සමහර පැකේජ අතිරේකව ස්ථාපනය කිරීමට අඟවයි, මම ස්ථිතිකව ගොඩනඟන ලද QEMU ඉමුලේටරයක් නියම කළෙමි. එය ඔබට ඉටු කිරීමට ඉඩ සලසයිchroot
ARM පරිසරය තුළ. ඉතිරි විකල්පවල තේරුම සොයාගත හැකියman debootstrap
. සෑම ARM පුවරුවක්ම ගෘහ නිර්මාණ ශිල්පයට සහාය නොදක්වන බව අමතක නොකරන්නarmhf
. - ගෘහ නිර්මාණ ශිල්පයේ වෙනස නිසා
debootstrap
අදියර දෙකකින් සිදු කරනු ලැබේ, දෙවැන්න මේ ආකාරයෙන් සිදු කරයි:chroot /mnt/ /debootstrap/debootstrap --second-stage
- දැන් ඔබට එය සවි කළ යුතුය:
chroot /mnt /bin/bash
- අපි පුරවන්නෙමු
/etc/hosts
и/etc/hostname
ඉලක්කය FS. ඔබගේ ප්රාදේශීය පරිගණකයේ ඇති අන්තර්ගතයම පුරවන්න, සත්කාරක නාමය ප්රතිස්ථාපනය කිරීමට මතක තබා ගන්න. - ඔබට අනෙක් සියල්ල අභිරුචිකරණය කළ හැකිය. විශේෂයෙන්, මම ස්ථාපනය කරමි
locales
(නිධිය යතුරු), ස්ථාන සහ කාල කලාපය නැවත සකස් කරන්න (dpkg-reconfigure locales tzdata
) විධානය සමඟ මුරපදය සැකසීමට අමතක නොකරන්නpasswd
. - සඳහා මුරපදයක් සකසන්න
root
කණ්ඩායමpasswd
. - මා සඳහා රූපය සකස් කිරීම පිරවීමෙන් අවසන් වේ
/etc/fstab
ඇතුළත/mnt/
.
මම කලින් සාදන ලද ටැග් වලට අනුකූලව උඩුගත කරන්නෙමි, එබැවින් අන්තර්ගතය මේ වගේ වනු ඇත:
LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /boot ස්වයංක්රීය පෙරනිමි 0 0
අවසාන වශයෙන්, ඔබට ඇරඹුම් කොටස සවි කළ හැක, අපට එය කර්නලය සඳහා අවශ්ය වනු ඇත: `mount /dev/mmcblk0p1 /mnt/boot/`
ලිනක්ස් ගොඩනැගීම
Debian Testing මත කර්නලය (සහ පසුව ඇරඹුම් කාරකය) තැනීමට, ඔබ ඉලක්ක ගෘහ නිර්මාණ ශිල්පය සඳහා සම්මත GCC, GNU Make සහ GNU C පුස්තකාල ශීර්ෂ ගොනු ස්ථාපනය කළ යුතුය (මට armhf
), මෙන්ම OpenSSL ශීර්ෂයන්, කොන්සෝල කැල්ක්යුලේටරය bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. පෙරනිමි පූරකය ගොනුව සොයන බැවින් zImage
ඇරඹුම් කොටසේ ගොනු පද්ධතිය මත, ෆ්ලෑෂ් ධාවකය බෙදීමට කාලයයි.
- කර්නලය ක්ලෝන කිරීමට බොහෝ කාලයක් ගත වේ, එබැවින් මම බාගත කරමි:
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
. වින්යාසය ඩිරෙක්ටරියේ පිහිටා ඇතarch/arm/configs/
. කිසිවක් නොමැති නම්, ඔබට සූදානම් කළ එකක් සොයාගෙන බාගත කර මෙම නාමාවලියෙහි ඇති ගොනුවේ නම පරාමිතියක් ලෙස ලබා දීමට උත්සාහ කළ හැකිය.KBUILD_DEFCONFIG
. අවසාන විසඳුම ලෙස, වහාම ඊළඟ කරුණ වෙත යන්න. - විකල්පයක් ලෙස ඔබට සැකසුම් වෙනස් කළ හැකිය:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- සහ රූපය හරස් සම්පාදනය කරන්න:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- දැන් ඔබට කර්නල් ගොනුව පිටපත් කළ හැකිය:
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
කර්නලය සූදානම්. ඔබට සියල්ල ඉවත් කළ හැකිය: umount /mnt/boot/ /mnt/
Das U-Boot
ඇරඹුම් කාරකය අන්තර්ක්රියාකාරී බැවින්, එහි ක්රියාකාරිත්වය පරීක්ෂා කිරීමට ඔබට අවශ්ය වන්නේ පුවරුවම, ගබඩා උපාංගයක් සහ විකල්ප වශයෙන් USB-to-UART උපාංගයකි. එනම්, ඔබට කර්නලය සහ මෙහෙයුම් පද්ධතිය පසුවට කල් දැමිය හැකිය.
නිෂ්පාදකයින්ගෙන් අතිමහත් බහුතරයක් ආරම්භක ඇරඹුම සඳහා 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
, හෝ නිෂ්පාදකයා විසින් නිර්දේශ කරන ලද වෙනත් ආකාරයකින් එකලස් කරන්න. - අපි හරස් සම්පාදකයක් භාවිතයෙන් ඇරඹුම් කාරක රූපය එකලස් කරමු
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
ප්රතිඵලයක් වශයෙන් අපි ගොනුව ලබා ගනිමු u-boot.imx
, මෙය ෆ්ලෑෂ් ධාවකයකට ලිවිය හැකි සූදානම් කළ රූපයකි. අපි පළමු බයිට් 1024 මඟ හරිමින් SD කාඩ්පතට ලියන්නෙමු. ඇයි මම Target තෝරගත්තේ u-boot.imx
? මට හරියටම බයිට් 1024ක් මග හැරුනේ ඇයි? ඔවුන් කිරීමට යෝජනා කරන්නේ මෙයයි
අවසන්, ඔබට ආරම්භ කළ හැක. ඇරඹුම් කාරකය තමන්ගේම අනුවාදයක්, පුවරුව පිළිබඳ යම් තොරතුරු වාර්තා කළ යුතු අතර, කොටසෙහි කර්නල් රූපය සොයා ගැනීමට උත්සාහ කරන්න. අසාර්ථක වුවහොත්, එය ජාලය හරහා ආරම්භ කිරීමට උත්සාහ කරනු ඇත. සාමාන්යයෙන්, ප්රතිදානය තරමක් සවිස්තරාත්මක ය, ගැටලුවක් තිබේ නම් ඔබට දෝෂය සොයාගත හැකිය.
ඒ වෙනුවට අවසාන කාල පරිච්ඡේදය
ඩොල්ෆින් මත්ස්යයෙකුගේ නළල අස්ථි නොවන බව ඔබ දන්නවාද? එය වචනාර්ථයෙන් තුන්වන ඇසකි, echolocation සඳහා මේද කාචයකි!
මූලාශ්රය: www.habr.com