මුල සිටම ARM පුවරුවක GNU/Linux ආරම්භ කිරීම (උදාහරණයක් ලෙස Kali සහ iMX.6 භාවිතා කිරීම)

tl; dr: මම වැඩසටහනේ ARM පරිගණකයක් සඳහා Kali Linux රූපයක් ගොඩනඟමින් සිටිමි debootstrap, linux и u-boot.

මුල සිටම ARM පුවරුවක GNU/Linux ආරම්භ කිරීම (උදාහරණයක් ලෙස Kali සහ iMX.6 භාවිතා කිරීම)

ඔබ ඉතා ජනප්‍රිය නොවන තනි පුවරු මෘදුකාංග කිහිපයක් මිල දී ගත්තේ නම්, ඒ සඳහා ඔබේ ප්‍රියතම බෙදාහැරීමේ රූපයක් නොමැතිකමට ඔබට මුහුණ දීමට සිදු විය හැක. ආසන්න වශයෙන් එකම දේ සිදු විය සැලසුම් කළ Flipper One. IMX6 සඳහා සරලවම Kali Linux නොමැත (මම සූදානම් වෙමින් සිටිමි), එබැවින් මට එය මා විසින්ම එකලස් කළ යුතුය.

බාගත කිරීමේ ක්රියාවලිය තරමක් සරල ය:

  1. දෘඪාංගය ආරම්භ කර ඇත.
  2. ගබඩා උපාංගයේ යම් ප්‍රදේශයකින් (SD කාඩ්/eMMC/etc) ඇරඹුම් කාරකය කියවා ක්‍රියාත්මක වේ.
  3. ඇරඹුම් කාරකය මෙහෙයුම් පද්ධතියේ කර්නලය සොයන අතර එය යම් මතක ප්‍රදේශයකට පටවා එය ක්‍රියාත්මක කරයි.
  4. කර්නලය OS හි ඉතිරි කොටස් පූරණය කරයි.

මගේ කාර්යය සඳහා මෙම මට්ටමේ විස්තර ප්රමාණවත්ය, ඔබට විස්තර කියවිය හැකිය තවත් ලිපියක. ඉහත සඳහන් කළ "සමහර" ප්රදේශ පුවරුවෙන් පුවරුවට වෙනස් වන අතර, සමහර ස්ථාපන දුෂ්කරතා ඇති කරයි. ARM සේවාදායක වේදිකා පූරණය කරමින් සම්මත කිරීමට උත්සාහ කරයි UEFI භාවිතා කරයි, නමුත් මෙය සෑම කෙනෙකුටම ලබා ගත නොහැකි වුවද, ඔබට සියල්ල වෙන වෙනම එකලස් කිරීමට සිදුවේ.

මූල ගොනු පද්ධතිය ගොඩනැගීම

පළමුව ඔබ කොටස් සකස් කළ යුතුය. Das U-Boot විවිධ ගොනු පද්ධති සඳහා සහය දක්වයි, මම FAT32 තෝරා ගත්තෙමි /boot සහ root සඳහා ext3, මෙය ARM මත Kali සඳහා සම්මත රූප සැකැස්ම වේ. මම GNU Parted භාවිතා කරන්නම්, නමුත් ඔබට එය වඩාත් හුරුපුරුදු ආකාරයකින් කළ හැකිය fdisk. ඔබටත් අවශ්ය වනු ඇත dosfstools и e2fsprogs ගොනු පද්ධතියක් නිර්මාණය කිරීමට: apt install parted dosfstools e2fsprogs.

අපි SD කාඩ්පත සලකුණු කරමු:

  1. MBR කොටස් කිරීම භාවිතා කරන ලෙස SD කාඩ්පත සලකුණු කරන්න: parted -s /dev/mmcblk0 mklabel msdos
  2. යටතේ කොටසක් සාදන්න /boot මෙගාබයිට් 128 සඳහා: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. මග හැරුණු පළමු මෙගාබයිට් සලකුණු කිරීම සඳහා සහ ඇරඹුම් කාරකය සඳහා ඉතිරි කළ යුතුය.
  3. සම්පූර්ණ ඉතිරි ධාරිතාව සඳහා අපි root ගොනු පද්ධතියක් සාදන්නෙමු: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. හදිසියේම ඔබගේ කොටස් ගොනු නිර්මාණය කර නොමැති නම් හෝ වෙනස් වී නොමැති නම්, ඔබට `partprobe` ධාවනය කිරීමට අවශ්‍ය වේ, එවිට කොටස් වගුව නැවත කියවනු ඇත.
  5. ලේබලය සමඟ ඇරඹුම් කොටස සඳහා ගොනු පද්ධතියක් සාදන්න BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. ලේබලයක් සහිත මූල ගොනු පද්ධතියක් සාදන්න ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

නියමයි, දැන් ඔබට එය පිරවිය හැක. මේ සඳහා ඔබට අතිරේකව අවශ්ය වනු ඇත debootstrap, ඩේබියන් වැනි මෙහෙයුම් පද්ධති සඳහා root ගොනු පද්ධති නිර්මාණය කිරීම සඳහා උපයෝගීතාවයකි: apt install debootstrap.

අපි FS එකතු කරමු:

  1. කොටස සවි කරන්න /mnt/ (වඩා පහසු සවි කිරීමේ ස්ථානයක් භාවිතා කරන්න): mount /dev/mmcblk0p2 /mnt
  2. අපි ඇත්ත වශයෙන්ම ගොනු පද්ධතිය පුරවන්නෙමු: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. පරාමිතිය --include සමහර පැකේජ අතිරේකව ස්ථාපනය කිරීමට අඟවයි, මම ස්ථිතිකව ගොඩනඟන ලද QEMU ඉමුලේටරයක් ​​නියම කළෙමි. එය ඔබට ඉටු කිරීමට ඉඩ සලසයි chroot ARM පරිසරය තුළ. ඉතිරි විකල්පවල තේරුම සොයාගත හැකිය man debootstrap. සෑම ARM පුවරුවක්ම ගෘහ නිර්මාණ ශිල්පයට සහාය නොදක්වන බව අමතක නොකරන්න armhf.
  3. ගෘහ නිර්මාණ ශිල්පයේ වෙනස නිසා debootstrap අදියර දෙකකින් සිදු කරනු ලැබේ, දෙවැන්න මේ ආකාරයෙන් සිදු කරයි: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. දැන් ඔබට එය සවි කළ යුතුය: chroot /mnt /bin/bash
  5. අපි පුරවන්නෙමු /etc/hosts и /etc/hostname ඉලක්කය FS. ඔබගේ ප්‍රාදේශීය පරිගණකයේ ඇති අන්තර්ගතයම පුරවන්න, සත්කාරක නාමය ප්‍රතිස්ථාපනය කිරීමට මතක තබා ගන්න.
  6. ඔබට අනෙක් සියල්ල අභිරුචිකරණය කළ හැකිය. විශේෂයෙන්, මම ස්ථාපනය කරමි locales (නිධිය යතුරු), ස්ථාන සහ කාල කලාපය නැවත සකස් කරන්න (dpkg-reconfigure locales tzdata) විධානය සමඟ මුරපදය සැකසීමට අමතක නොකරන්න passwd.
  7. සඳහා මුරපදයක් සකසන්න root කණ්ඩායම passwd.
  8. මා සඳහා රූපය සකස් කිරීම පිරවීමෙන් අවසන් වේ /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 ඇරඹුම් කොටසේ ගොනු පද්ධතිය මත, ෆ්ලෑෂ් ධාවකය බෙදීමට කාලයයි.

  1. කර්නලය ක්ලෝන කිරීමට බොහෝ කාලයක් ගත වේ, එබැවින් මම බාගත කරමි: 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
  2. සම්පාදනය කිරීමට පෙර වින්‍යාස කරන්න: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. වින්යාසය ඩිරෙක්ටරියේ පිහිටා ඇත arch/arm/configs/. කිසිවක් නොමැති නම්, ඔබට සූදානම් කළ එකක් සොයාගෙන බාගත කර මෙම නාමාවලියෙහි ඇති ගොනුවේ නම පරාමිතියක් ලෙස ලබා දීමට උත්සාහ කළ හැකිය. KBUILD_DEFCONFIG. අවසාන විසඳුම ලෙස, වහාම ඊළඟ කරුණ වෙත යන්න.
  3. විකල්පයක් ලෙස ඔබට සැකසුම් වෙනස් කළ හැකිය: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. සහ රූපය හරස් සම්පාදනය කරන්න: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. දැන් ඔබට කර්නල් ගොනුව පිටපත් කළ හැකිය: cp arch/arm/boot/zImage /mnt/boot/
  6. DeviceTree වෙතින් ගොනු (පුවරුවේ ඇති දෘඩාංග විස්තරය): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. වෙනම ගොනු ආකාරයෙන් එකතු කරන ලද මොඩියුල ස්ථාපනය කරන්න: 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 එක එකලස් කරමු:

  1. අපි ගබඩාවේ ස්ථාවර ශාඛාව ක්ලෝන කරමු: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. අපි නාමාවලියටම යමු: cd u-boot
  3. ගොඩනැගීමේ වින්‍යාසය සකස් කිරීම: make mx6ull_14x14_evk_defconfig. මෙය ක්‍රියාත්මක වන්නේ වින්‍යාසය Das U-Boot තුළම තිබේ නම් පමණි, එසේ නොමැතිනම් ඔබට නිෂ්පාදකයාගේ වින්‍යාසය සොයා ගෙන එය ගොනුවක ගබඩාවේ මූලයේ තැබිය යුතුය. .config, හෝ නිෂ්පාදකයා විසින් නිර්දේශ කරන ලද වෙනත් ආකාරයකින් එකලස් කරන්න.
  4. අපි හරස් සම්පාදකයක් භාවිතයෙන් ඇරඹුම් කාරක රූපය එකලස් කරමු armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

ප්රතිඵලයක් වශයෙන් අපි ගොනුව ලබා ගනිමු u-boot.imx, මෙය ෆ්ලෑෂ් ධාවකයකට ලිවිය හැකි සූදානම් කළ රූපයකි. අපි පළමු බයිට් 1024 මඟ හරිමින් SD කාඩ්පතට ලියන්නෙමු. ඇයි මම Target තෝරගත්තේ u-boot.imx? මට හරියටම බයිට් 1024ක් මග හැරුනේ ඇයි? ඔවුන් කිරීමට යෝජනා කරන්නේ මෙයයි ලියකියවිලි. අනෙකුත් පුවරු සඳහා, රූපය ගොඩනැගීම සහ පටිගත කිරීමේ ක්රියාවලිය තරමක් වෙනස් විය හැකිය.

අවසන්, ඔබට ආරම්භ කළ හැක. ඇරඹුම් කාරකය තමන්ගේම අනුවාදයක්, පුවරුව පිළිබඳ යම් තොරතුරු වාර්තා කළ යුතු අතර, කොටසෙහි කර්නල් රූපය සොයා ගැනීමට උත්සාහ කරන්න. අසාර්ථක වුවහොත්, එය ජාලය හරහා ආරම්භ කිරීමට උත්සාහ කරනු ඇත. සාමාන්යයෙන්, ප්රතිදානය තරමක් සවිස්තරාත්මක ය, ගැටලුවක් තිබේ නම් ඔබට දෝෂය සොයාගත හැකිය.

ඒ වෙනුවට අවසාන කාල පරිච්ඡේදය

ඩොල්ෆින් මත්ස්‍යයෙකුගේ නළල අස්ථි නොවන බව ඔබ දන්නවාද? එය වචනාර්ථයෙන් තුන්වන ඇසකි, echolocation සඳහා මේද කාචයකි!

මුල සිටම ARM පුවරුවක GNU/Linux ආරම්භ කිරීම (උදාහරණයක් ලෙස Kali සහ iMX.6 භාවිතා කිරීම)

මුල සිටම ARM පුවරුවක GNU/Linux ආරම්භ කිරීම (උදාහරණයක් ලෙස Kali සහ iMX.6 භාවිතා කිරීම)

මූලාශ්රය: www.habr.com