GNU/Linux شروع ڪرڻ کان وٺي ARM بورڊ تي (مثال طور ڪالي ۽ iMX.6 استعمال ڪندي)

ڪٽ: مان پروگرام ۾ ARM ڪمپيوٽر لاءِ ڪالي لينڪس تصوير ٺاهي رهيو آهيان debootstrap, linux и u-boot.

GNU/Linux شروع ڪرڻ کان وٺي ARM بورڊ تي (مثال طور ڪالي ۽ iMX.6 استعمال ڪندي)

جيڪڏهن توهان خريد ڪيو ڪجهه تمام گهڻو مشهور سنگل بورڊ سافٽ ويئر، توهان کي شايد ان جي لاء توهان جي پسنديده تقسيم جي تصوير جي کوٽ سان منهن ڏيڻو پوندو. لڳ ڀڳ ساڳي شيء سان ٿيو رٿيل فلپر ون. هتي صرف IMX6 لاءِ ڪالي لينڪس ناهي (مان تيار ڪري رهيو آهيان) ، تنهن ڪري مون کي پاڻ کي گڏ ڪرڻو پوندو.

ڊائون لوڊ عمل بلڪل سادو آهي:

  1. هارڊويئر جي شروعات ڪئي وئي آهي.
  2. اسٽوريج ڊيوائس تي ڪجهه علائقي مان (SD ڪارڊ/eMMC/etc) بوٽ لوڊر پڙهي ۽ عمل ڪيو ويندو آهي.
  3. بوٽ لوڊر آپريٽنگ سسٽم جي ڪنيل کي ڳولي ٿو ۽ ان کي ڪجهه ميموري واري علائقي ۾ لوڊ ڪري ٿو ۽ ان تي عمل ڪري ٿو.
  4. ڪرنل باقي او ايس کي لوڊ ڪري ٿو.

تفصيل جو هي سطح منهنجي ڪم لاءِ ڪافي آهي، توهان تفصيل پڙهي سگهو ٿا ٻئي مضمون ۾. مٿي ذڪر ڪيل "ڪجهه" علائقا بورڊ کان بورڊ تائين مختلف آهن، جيڪي ڪجهه تنصيب مشڪلاتون پيدا ڪري ٿي. ARM سرور پليٽ فارمن کي لوڊ ڪندي معياري ڪرڻ جي ڪوشش UEFI استعمال ڪندي، پر جڏهن اهو هر ڪنهن لاء دستياب ناهي، توهان کي هر شيء کي الڳ الڳ گڏ ڪرڻو پوندو.

روٽ فائل سسٽم جي تعمير

پهرين توهان کي سيڪشن تيار ڪرڻ جي ضرورت آهي. داس يو-بوٽ مختلف فائل سسٽم کي سپورٽ ڪري ٿو، مون لاء FAT32 چونڊيو /boot ۽ روٽ لاءِ ext3، هي ARM تي ڪالي لاءِ معياري تصويري ترتيب آهي. مان استعمال ڪندس GNU Parted، پر توهان اهو ئي ڪري سگهو ٿا وڌيڪ واقف طريقي سان fdisk. توهان کي به ضرورت پوندي dosfstools и e2fsprogs هڪ فائيل سسٽم ٺاهڻ لاء: apt install parted dosfstools e2fsprogs.

اسان SD ڪارڊ کي نشان لڳايو:

  1. ايم بي آر ورهاڱي کي استعمال ڪندي ايس ڊي ڪارڊ کي نشان لڳايو: parted -s /dev/mmcblk0 mklabel msdos
  2. هيٺ هڪ سيڪشن ٺاهيو /boot 128 ميگا بائيٽ لاءِ: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. پهرين ميگا بائيٽ کي ڇڏي وڃڻ گهرجي مارڪ اپ لاءِ ۽ بوٽ لوڊر لاءِ.
  3. اسان پوري باقي گنجائش لاءِ روٽ فائيل سسٽم ٺاھيون ٿا: 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, Debian-like آپريٽنگ سسٽم لاء روٽ فائل سسٽم ٺاهڻ لاء هڪ افاديت: 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 / خودڪار غلطيون = remount-ro 0 1
LABEL=BOOT /بوٽ آٽو ڊفالٽ 0 0

آخرڪار، توهان بوٽ ورهاڱي تي سوار ڪري سگهو ٿا، اسان کي ان جي ڪنييل جي ضرورت پوندي: `mount /dev/mmcblk0p1 /mnt/boot/`

لينڪس تعمير

ڊيبين ٽيسٽنگ تي ڪرنل (۽ پوءِ بوٽ لوڊر) ٺاهڻ لاءِ، توهان کي نصب ڪرڻو پوندو معياري سيٽ 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. config ڊاريڪٽري ۾ واقع آهي 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. ھاڻي توھان kernel فائل کي نقل ڪري سگھو ٿا: 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/

داس يو-بوٽ

جيئن ته بوٽ لوڊر انٽرايڪٽو آهي، توهان کي صرف ان جي آپريشن کي جانچڻ جي ضرورت آهي بورڊ پاڻ، هڪ اسٽوريج ڊوائيس، ۽ اختياري طور تي هڪ USB-to-UART ڊوائيس. اھو آھي، توھان ڪري سگھوٿا ڪننل ۽ او ايس کي بعد ۾.

ٺاهيندڙن جي وڏي اڪثريت ابتدائي بوٽ لاء داس يو-بوٽ استعمال ڪرڻ جي آڇ ڪئي. مڪمل سپورٽ عام طور تي انهن جي پنهنجي ڪانٽو ۾ مهيا ڪئي ويندي آهي، پر اهي اپ اسٽريم ۾ حصو وٺڻ نه وساريندا آهن. منهنجي حالت ۾، بورڊ جي حمايت ڪئي وئي آهي مين لائنتنهن ڪري ڪانٽو مون ان کي نظرانداز ڪيو.

اچو ته بوٽ لوڊر پاڻ کي گڏ ڪريون:

  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. اهو صرف ان صورت ۾ ڪم ڪري ٿو جڏهن ترتيب داس يو-بوٽ ۾ آهي، ٻي صورت ۾ توهان کي ٺاهيندڙ جي ترتيب ڳولڻ جي ضرورت پوندي ۽ ان کي فائل ۾ مخزن جي روٽ ۾ رکڻو پوندو. .config، يا ٺاهيندڙ طرفان سفارش ڪيل ڪنهن ٻئي طريقي سان گڏ ڪريو.
  4. اسان بوٽ لوڊر تصوير پاڻ کي گڏ ڪريون ٿا هڪ ڪراس ڪمپلر استعمال ڪندي armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

نتيجي طور اسان کي فائل ملي ٿي u-boot.imx، هي هڪ تيار ٿيل تصوير آهي جيڪا فليش ڊرائيو تي لکي سگهجي ٿي. اسان SD ڪارڊ تي لکون ٿا، پهرين 1024 بائيٽ کي ڇڏي ڏيو. مون ٽارگيٽ ڇو چونڊيو u-boot.imx؟ مون کي بلڪل 1024 بائيٽ ڇو وڃايو؟ اھو اھو آھي جيڪو انھن ۾ ڪرڻ جي تجويز آھي دستاويز. ٻين بورڊن لاءِ، تصوير جي عمارت ۽ رڪارڊنگ جو عمل ٿورو مختلف ٿي سگھي ٿو.

ٿي ويو، توهان بوٽ ڪري سگهو ٿا. بوٽ لوڊ ڪندڙ کي پنهنجي ورزن جي رپورٽ ڪرڻ گهرجي، بورڊ بابت ڪجهه معلومات، ۽ ورهاڱي تي ڪرنل تصوير ڳولڻ جي ڪوشش ڪريو. جيڪڏهن ناڪام ٿيو، اهو نيٽ ورڪ تي بوٽ ڪرڻ جي ڪوشش ڪندو. عام طور تي، پيداوار ڪافي تفصيلي آهي، توهان غلطي ڳولي سگهو ٿا جيڪڏهن ڪو مسئلو آهي.

سوچيم ته هڪ ٿڪل جي

ڇا توهان کي خبر آهي ته ڊولفن جي پيشاني هڏا نه آهي؟ اهو لفظي طور تي هڪ ٽين اک آهي، ايڪولوڪيشن لاء هڪ ٿلهي لينس!

GNU/Linux شروع ڪرڻ کان وٺي ARM بورڊ تي (مثال طور ڪالي ۽ iMX.6 استعمال ڪندي)

GNU/Linux شروع ڪرڻ کان وٺي ARM بورڊ تي (مثال طور ڪالي ۽ iMX.6 استعمال ڪندي)

جو ذريعو: www.habr.com