GNU/Linux په ARM بورډ کې له سکریچ څخه پیل کول (د مثال په توګه د کالي او iMX.6 کارول)

tl؛ dr: زه په برنامه کې د ARM کمپیوټر لپاره د کالي لینکس عکس جوړوم debootstrap, linux и u-boot.

GNU/Linux په ARM بورډ کې له سکریچ څخه پیل کول (د مثال په توګه د کالي او iMX.6 کارول)

که تاسو یو څه خورا مشهور واحد تادیه کونکي وپیرئ ، تاسو ممکن د دې لپاره د خپلې خوښې توزیع کټ عکس نشتوالي سره مخ شئ. تقریبا ورته شی پیښ شوی پلان شوی فلیپر ون. د IMX6 لپاره په ساده ډول کالي لینکس شتون نلري (زه پخلی کوم) ، نو زه باید دا پخپله راټول کړم.

د ډاونلوډ پروسه خورا ساده ده:

  1. هارډویر پیل شوی.
  2. د ذخیره کولو وسیلې (SD کارت/eMMC/etc) له ځینې ساحې څخه بوټلوډر لوستل کیږي او اجرا کیږي.
  3. لوډر د عملیاتي سیسټم کرنل لټوي او د حافظې ځینې ساحې ته یې باروي او اجرا کوي.
  4. کرنل د OS پاتې برخه باروي.

زما د کار لپاره، د تفصیل دا کچه کافي ده، تاسو کولی شئ توضیحات ولولئ په بله مقاله کې. پورته ذکر شوي "ځینې" ساحې له بورډ څخه بورډ ته توپیر لري، کوم چې د نصب کولو ځینې ستونزې رامینځته کوي. د سرور ARM پلیټ فارمونه پورته کول د معیاري کولو هڅه کوي د UEFI کارول، مګر تر هغه چې دا د هرچا لپاره شتون نلري، تاسو باید هرڅه په جلا توګه راټول کړئ.

د روټ فایل سیسټم جوړول

لومړی تاسو اړتیا لرئ چې برخې چمتو کړئ. داس یو بوټ د مختلف فایل سیسټمونو ملاتړ کوي، ما د دې لپاره FAT32 غوره کړ /boot او ext3 د روټ لپاره، دا د ARM لاندې کالي لپاره معیاري عکس مارک اپ دی. زه به د GNU پارټډ وکاروم ، مګر تاسو کولی شئ ورته نور وپیژنئ 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. د پاتې ظرفیت لپاره روټ FS جوړ کړئ: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. که ناڅاپه تاسو د پارټشن فایلونه نه وي رامینځته کړي یا بدل کړي ، تاسو اړتیا لرئ د 'پارټ پروب' اجرا کړئ ، نو د برخې جدول به بیا لوستل شي.
  5. د بوټ پارشن فایل سیسټم لیبل جوړ کړئ BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. د لیبل سره د روټ فایل سیسټم جوړ کړئ ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

ښه، اوس تاسو کولی شئ دا ډک کړئ. دا به اضافي ته اړتیا ولري debootstrap، د Debian په څیر عملیاتي سیسټمونو کې د روټ FS رامینځته کولو لپاره یو ګټورتیا: 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/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. تشکیل په لارښود کې دی 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/

داس یو بوټ

څرنګه چې بوټلوډر متقابل دی، پخپله بورډ، د ذخیره کولو وسیله، او یو اختیاري USB-to-UART وسیله د دې عملیات ازموینې لپاره کافي دي. دا دی، تاسو کولی شئ کرنل او OS د وروسته لپاره وځنډوئ.

ډیری جوړونکي وړاندیز کوي چې د لومړني بوټ لپاره داس یو بوټ وکاروئ. بشپړ ملاتړ معمولا په خپل فورک کې چمتو کیږي ، مګر په پورته جریان کې مرسته کول مه هیروئ. زما په قضیه کې، بورډ په کې ملاتړ کیږي اصلي کرښهله همدې کبله فورک ما سترګې پټې کړې.

موږ بوټلوډر پخپله راټولوو:

  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. دا یوازې هغه وخت کار کوي چې تشکیل پخپله داس U-Bot کې وي ، که نه نو تاسو اړتیا لرئ د جوړونکي تشکیل ومومئ او په فایل کې د ذخیره کولو ریښې کې یې واچوئ. .config، یا د جوړونکي لخوا وړاندیز شوي په بل ډول راټول شوي.
  4. موږ د بوټلوډر عکس پخپله د کراس کمپیلر سره راټولوو armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

د پایلې په توګه، موږ فایل ترلاسه کوو u-boot.imx، دا یو چمتو شوی عکس دی چې په USB فلش ډرایو کې لیکل کیدی شي. موږ SD کارت ته لیکو ، لومړی 1024 بایټس پریږدو. ولې مې هدف وټاکه u-boot.imx؟ ولې دقیقا 1024 بایټس له لاسه ورکړ؟ دا هغه څه دي چې دوی یې وړاندیز کوي اسناد. د نورو بورډونو لپاره، د انځور جوړولو او سوځولو پروسه ممکن یو څه توپیر ولري.

بشپړ شوی، تاسو کولی شئ ډاونلوډ کړئ. بوټلوډر باید خپل نسخه راپور کړي، د بورډ په اړه ځینې معلومات، او هڅه وکړي چې په ویش کې د کرنل انځور ومومي. که دا ناکام شي، دا به هڅه وکړي چې په شبکه کې بوټ وکړي. په عموم کې، محصول خورا مفصل دی، تاسو کولی شئ د ستونزې په صورت کې یوه تېروتنه ومومئ.

پر ځای د يو پایلې

ایا پوهیدئ چې دالفین تندی هډوکی نه وي؟ دا په حقیقت کې دریمه سترګه ده، د ایکولوکیشن لپاره غوړ لینز!

GNU/Linux په ARM بورډ کې له سکریچ څخه پیل کول (د مثال په توګه د کالي او iMX.6 کارول)

GNU/Linux په ARM بورډ کې له سکریچ څخه پیل کول (د مثال په توګه د کالي او iMX.6 کارول)

سرچینه: www.habr.com