Pib GNU/Linux ntawm ARM board los ntawm kos (siv Kali thiab iMX.6 ua piv txwv)

tl; dr: Kuv tab tom tsim Kali Linux duab rau lub khoos phis tawj ARM, hauv qhov program debootstrap, linux ΠΈ u-boot.

Pib GNU/Linux ntawm ARM board los ntawm kos (siv Kali thiab iMX.6 ua piv txwv)

Yog tias koj yuav qee tus neeg tsis nyiam ib leeg-them, koj yuav ntsib qhov tsis muaj cov duab ntawm koj nyiam cov khoom faib rau nws. Zoo li ntau yam tshwm sim rau npaj Flipper One. Nws tsuas yog tsis muaj Kali Linux rau IMX6 (Kuv tab tom ua noj), yog li kuv yuav tsum tau sib sau ua ke nws tus kheej.

Cov txheej txheem download tau yooj yim heev:

  1. Hardware yog pib.
  2. Los ntawm qee qhov chaw ntawm lub cuab yeej cia (SD daim npav / eMMC / thiab lwm yam) lub bootloader tau nyeem thiab tua.
  3. Lub loader saib cov ntsiav ntawm lub operating system thiab thauj nws mus rau hauv qee qhov chaw nco thiab ua tiav nws.
  4. Lub kernel loads tus so ntawm OS.

Rau kuv txoj haujlwm, theem ntawm kev nthuav dav no txaus, koj tuaj yeem nyeem cov ntsiab lus hauv lwm tsab xov xwm. Cov "qee" thaj chaw uas tau hais los saum toj no txawv ntawm lub rooj tsavxwm mus rau lub rooj tsavxwm, uas ua rau qee qhov teeb meem ntawm kev teeb tsa. Loading server ARM platforms sim ua tus qauv siv UEFI, tab sis ntev npaum li nws tsis muaj rau txhua tus, koj yuav tsum sau txhua yam sib cais.

Tsim lub hauv paus filesystem

Ua ntej koj yuav tsum npaj ntu. Das U-Boot txhawb nqa cov ntaub ntawv sib txawv, Kuv xaiv FAT32 rau /boot thiab ext3 rau hauv paus, qhov no yog tus qauv duab kos rau Kali hauv qab ARM. Kuv mam li siv GNU Parted, tab sis koj tuaj yeem ua kom zoo li qub fdisk. Koj kuj yuav xav tau dosfstools ΠΈ e2fsprogs los tsim ib tug filesystem: apt install parted dosfstools e2fsprogs.

Partitioning SD card:

  1. Kos daim npav SD raws li siv MBR muab faib: parted -s /dev/mmcblk0 mklabel msdos
  2. Tsim ib ntu rau /boot rau 128 megabytes: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Tus thawj tsis nco megabyte yuav tsum tau sab laug rau lub cim nws tus kheej thiab rau lub bootloader.
  3. Tsim ib lub hauv paus FS rau tus so ntawm lub peev xwm: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Yog tias mam li nco dheev koj tsis tau tsim lossis hloov cov ntaub ntawv muab faib, koj yuav tsum ua kom tiav 'partprobe', tom qab ntawd cov lus muab faib yuav rov nyeem dua.
  5. Tsim ib tug boot partition filesystem sau npe BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Tsim ib lub hauv paus filesystem nrog ib daim ntawv lo ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

Zoo heev, tam sim no koj tuaj yeem sau nws. Qhov no tseem yuav xav tau debootstrap, ib qho txiaj ntsig los tsim cov hauv paus FS ntawm Debian-zoo li kev khiav hauj lwm systems: apt install debootstrap.

Peb sau FS:

  1. Mount lub partition rau /mnt/ (siv ib qho yooj yim mount point rau koj tus kheej): mount /dev/mmcblk0p2 /mnt
  2. Qhov tseeb peb sau cov ntaub ntawv system: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Parameter --include qhia ntxiv rau nruab ib co pob, kuv teev ib statically tsim QEMU emulator. Nws tso cai rau koj ua chroot rau ARM ib puag ncig. Lub ntsiab lus ntawm lwm cov kev xaiv tuaj yeem pom hauv man debootstrap. Tsis txhob hnov ​​​​qab tias tsis yog txhua lub rooj tsav xwm ARM txhawb kev tsim qauv armhf.
  3. Vim qhov sib txawv ntawm architectures debootstrap yog ua nyob rau hauv ob theem, qhov thib ob yog ua raws li nram no: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Tam sim no koj yuav tsum spin: chroot /mnt /bin/bash
  5. Peb sau /etc/hosts ΠΈ /etc/hostname phiaj FS. Sau tib yam li cov ntsiab lus ntawm koj lub computer hauv zos, nco ntsoov hloov lub hostname nkaus xwb.
  6. Koj tuaj yeem kho txhua yam ntxiv. Hauv particular, kuv nruab locales (repository keys), reconfiguring locales and time zone (dpkg-reconfigure locales tzdata). Tsis txhob hnov ​​qab teeb tus password nrog cov lus txib passwd.
  7. Teem tus password rau root pab passwd.
  8. Kev npaj ntawm daim duab rau kuv yog ua tiav los ntawm kev sau /etc/fstab sab hauv /mnt/.

Kuv yuav upload raws li cov ntawv sau ua ntej, yog li cov ntsiab lus yuav zoo li no:

LABEL=ROOTFS / pib yuam kev=remount-ro 0 1
LABEL=BOOT /boot auto defaults 0 0

Thaum kawg, koj tuaj yeem mount lub khau raj muab faib, peb yuav xav tau nws rau lub ntsiav: "mount /dev/mmcblk0p1 /mnt/boot/"

Tsim Linux

Txhawm rau tsim cov ntsiav (thiab tom qab ntawd lub bootloader) ntawm Debian Kev Xeem, koj yuav tsum tau nruab cov txheej txheem ntawm GCC, GNU Ua thiab GNU C Library header cov ntaub ntawv rau lub hom phiaj architecture (Kuv muaj. armhf), nrog rau OpenSSL headers, console laij lej bc, bison ΠΈ flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Txij li thaum lub neej ntawd loader nrhiav ib cov ntaub ntawv zImage nyob rau hauv cov ntaub ntawv system ntawm lub khau raj muab faib, nws yog lub sij hawm los rhuav lub flash drive.

  1. Cloning lub kernel ntev dhau lawm, yog li kuv yuav cia li rub tawm: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Unpack thiab mus rau qhov chaw directory: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Configure ua ntej compiling: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. Lub config yog nyob rau hauv cov directory arch/arm/configs/. Yog tias tsis muaj, koj tuaj yeem sim nrhiav thiab rub tawm ib qho kev npaj ua tiav thiab dhau lub npe ntawm cov ntaub ntawv hauv phau ntawv qhia no mus rau qhov ntsuas. KBUILD_DEFCONFIG. Hauv qhov xwm txheej hnyav, tam sim ntawd mus rau kab lus tom ntej.
  3. Koj tuaj yeem xaiv tweak qhov chaw: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Thiab cross-compile daim duab: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Tam sim no koj tuaj yeem luam cov ntaub ntawv kernel: cp arch/arm/boot/zImage /mnt/boot/
  6. Thiab cov ntaub ntawv los ntawm DeviceTree (pib piav qhia txog kho vajtse muaj nyob rau ntawm lub rooj tsavxwm): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Thiab nruab cov modules sib sau ua ke cov ntaub ntawv cais: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Lub kernel npaj txhij. Koj tuaj yeem unmount txhua yam: umount /mnt/boot/ /mnt/

Das U Boot

Txij li thaum lub bootloader yog sib tham sib, lub rooj tsavxwm nws tus kheej, ib tug cia ntaus ntawv, thiab ib tug xaiv USB-rau-UART ntaus ntawv yog txaus los ntsuam xyuas nws cov hauj lwm. Ntawd yog, koj tuaj yeem ncua lub ntsiav thiab OS rau tom qab.

Feem coob ntawm cov tuam txhab lag luam xav kom siv Das U-Boot rau thawj khau raj. Kev txhawb nqa tag nrho feem ntau yog muab rau hauv nws tus kheej nkhaus, tab sis tsis txhob hnov ​​​​qab pab txhawb rau hauv cov dej ntws. Hauv kuv rooj plaub, lub rooj tsavxwm tau txhawb nqa hauv lub ntsiabtias yog vim li cas diav rawg Kuv tsis quav ntsej.

Peb sau lub bootloader nws tus kheej:

  1. Clone lub ruaj khov ceg ntawm lub repository: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Cia peb mus rau lub directory nws tus kheej: cd u-boot
  3. Preparing lub build configuration: make mx6ull_14x14_evk_defconfig. Qhov no tsuas yog ua haujlwm yog tias qhov teeb tsa nyob hauv Das U-Boot nws tus kheej, txwv tsis pub koj yuav tsum nrhiav cov chaw tsim khoom teeb tsa thiab muab tso rau hauv lub hauv paus ntawm qhov chaw khaws cia hauv cov ntaub ntawv .config, los yog sib sau ua ke hauv lwm txoj kev pom zoo los ntawm cov chaw tsim khoom.
  4. Peb sau cov duab bootloader nws tus kheej nrog tus ntoo khaub lig-compiler armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Yog li ntawd, peb tau txais cov ntaub ntawv u-boot.imx, qhov no yog ib daim duab npaj txhij uas tuaj yeem sau rau hauv USB flash drive. Peb sau rau SD daim npav, hla thawj 1024 bytes. Vim li cas kuv thiaj xaiv lub hom phiaj u-boot.imx? Vim li cas tsis nco 1024 bytes? Nov yog qhov lawv xav ua hauv cov ntaub ntawv. Rau lwm cov boards, cov duab tsim thiab cov txheej txheem hlawv yuav txawv me ntsis.

Ua tiav, koj tuaj yeem rub tawm. Lub bootloader yuav tsum tshaj tawm nws tus kheej version, qee cov ntaub ntawv hais txog lub rooj tsavxwm, thiab sim nrhiav cov duab ntsiav ntawm qhov muab faib. Yog tias nws ua tsis tau, nws yuav sim khau raj hauv lub network. Feem ntau, cov zis tau nthuav dav heev, koj tuaj yeem pom qhov yuam kev thaum muaj teeb meem.

Es tsis txhob ib tug xaus

Koj puas paub tias lub hauv pliaj ntawm tus ntses taub ntswg tsis muaj nqaij? Nws yog lub qhov muag thib peb, lub ntsej muag rog rau echolocation!

Pib GNU/Linux ntawm ARM board los ntawm kos (siv Kali thiab iMX.6 ua piv txwv)

Pib GNU/Linux ntawm ARM board los ntawm kos (siv Kali thiab iMX.6 ua piv txwv)

Tau qhov twg los: www.hab.com