Ho qala GNU/Linux ho boto ea ARM ho tloha qalong (ho sebelisa Kali le iMX.6 joalo ka mohlala)

tl; dr: Ke etsa setšoantšo sa Kali Linux bakeng sa komporo ea ARM, lenaneong debootstrap, linux и u-boot.

Ho qala GNU/Linux ho boto ea ARM ho tloha qalong (ho sebelisa Kali le iMX.6 joalo ka mohlala)

Haeba u rekile software e sa tsejoeng haholo ea boto e le 'ngoe, u kanna oa tobana le khaello ea setšoantšo sa phepelo eo u e ratang haholo bakeng sa eona. Hoo e ka bang ntho e tšoanang e etsahetse le e rerile Flipper One. Ha ho na Kali Linux bakeng sa IMX6 (kea itokisetsa), kahoo ke tlameha ho e bokella.

Mokhoa oa ho jarolla o bonolo haholo:

  1. Hardware e qala.
  2. Ho tsoa sebakeng se seng sesebelisoa sa polokelo (karete ea SD/eMMC/joalo-joalo) bootloader ea baloa le ho etsoa.
  3. Bootloader e batla kernel ea sistimi e sebetsang ebe e e kenya sebakeng se itseng sa memori ebe e ea e phetha.
  4. Kernel e kenya likarolo tse ling tsa OS.

Boemo bona ba lintlha bo lekane bakeng sa mosebetsi oa ka, o ka bala lintlha sengoloeng se seng. Libaka "tse ling" tse boletsoeng ka holimo li fapana ho ea ka boto ho ea ho boto, e leng se bakang mathata a ho kenya. E kenya li-platform tsa li-server tsa ARM ho leka ho etsa maemo U sebelisa UEFI, empa leha sena se sa fumanehe ho motho e mong le e mong, o tla tlameha ho bokella ntho e ngoe le e ngoe ka thoko.

Ho haha ​​​​motso oa tsamaiso ea lifaele

Pele u lokela ho lokisetsa likarolo. Das U-Boot e tšehetsa litsamaiso tse fapaneng tsa lifaele, ke khethile FAT32 bakeng sa /boot le ext3 bakeng sa motso, ona ke sebopeho se tloaelehileng sa setšoantšo sa Kali ho ARM. Ke tla sebelisa GNU Parted, empa le uena u ka etsa se tšoanang ka tsela e tloaelehileng fdisk. Le uena u tla hloka dosfstools и e2fsprogs ho theha sistimi ea faele: apt install parted dosfstools e2fsprogs.

Re tšoaea karete ea SD:

  1. Tšoaea karete ea SD joalo ka ho sebelisa likarolo tsa MBR: parted -s /dev/mmcblk0 mklabel msdos
  2. Etsa karolo tlas'a /boot bakeng sa 128 megabytes: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. Megabyte ea pele e lahlehileng e tlameha ho siuoa bakeng sa markup ka boeona le bakeng sa bootloader.
  3. Re theha sistimi ea faele ea metso bakeng sa bokhoni bohle bo setseng: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Haeba ka tšohanyetso lifaele tsa hau tsa karohano li so thehoe kapa li so fetohe, o hloka ho sebelisa `partprobe`, ebe tafole ea karohano e tla baloa hape.
  5. Theha sistimi ea faele bakeng sa karohano ea ho qala ka leibole BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Theha mokhoa oa ho kenya lifaele ka leibole ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

E kholo, joale u ka e tlatsa. Bakeng sa sena o tla e hloka hape debootstrap, sesebelisoa sa ho theha litsamaiso tsa lifaele tsa metso bakeng sa lits'ebetso tse ts'ebetso tse kang Debian: apt install debootstrap.

Re bokella FS:

  1. Kenya karohano /mnt/ (sebelisa sebaka se loketseng sa ho hloa): mount /dev/mmcblk0p2 /mnt
  2. Re tlatsa sistimi ea faele: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. Paramethara --include e bonts'a ho kenya liphutheloana tse ling, ke boletse emulator ea QEMU e hahiloeng ka mokhoa o tsitsitseng. E u lumella ho etsa chroot tikolohong ea ARM. Moelelo oa likhetho tse setseng li ka fumanoa ho man debootstrap. Se ke oa lebala hore ha se boto e 'ngoe le e' ngoe ea ARM e tšehetsang meralo armhf.
  3. Ka lebaka la phapang ea meaho debootstrap e etsoa ka mekhahlelo e 'meli, ea bobeli e etsoa ka tsela ena: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. Joale o hloka ho e lokisa: chroot /mnt /bin/bash
  5. Re tlatsa /etc/hosts и /etc/hostname sepheo sa FS. Tlatsa lintho tse tšoanang le tse ka har'a komporo ea hau ea lehae, hopola feela ho khutlisa lebitso la moamoheli.
  6. U ka khona ho etsa tse ling kaofela. Ka ho khetheha, ke kenya locales (linotlolo tsa polokelo), hlophisa bocha libaka le sebaka sa nako (dpkg-reconfigure locales tzdata). U se ke ua lebala ho beha phasewete ka taelo passwd.
  7. Beha phasewete bakeng sa root sehlopha passwd.
  8. Tokisetso ea setšoantšo bakeng sa ka e qetella ka ho tlatsa /etc/fstab ka hare /mnt/.

Ke tla kenya ho latela li-tag tse entsoeng pele, kahoo litaba li tla ba tjena:

LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /boot auto defaults 0 0

Qetellong, o ka kenya karohano ea boot, re tla e hloka bakeng sa kernel: `mount /dev/mmcblk0p1 /mnt/boot/`

Mohaho oa Linux

Ho aha kernel (ebe bootloader) ho Teko ea Debian, o hloka ho kenya sete e tloaelehileng ea lifaele tsa GCC, GNU Make le GNU C Library bakeng sa meralo e reretsoeng (bakeng sa ka. armhf), hammoho le lihlooho tsa OpenSSL, calculator ea console bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. Ho tloha ka kamehla loader batla faele zImage ho sistimi ea faele ea karohano ea boot, ke nako ea ho arola flash drive.

  1. Ho nka nako e telele haholo ho kopanya kernel, kahoo ke tla khoasolla: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. Ha re phutholle 'me re ee mohloling oa mohloli: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Lokisa pele ho kopanngoa: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. The config e fumaneha ka har'a directory arch/arm/configs/. Haeba ha ho na, u ka leka ho fumana le ho khoasolla e entsoeng hantle 'me u fetise lebitso la faele bukeng ena e le parameter. KBUILD_DEFCONFIG. E le khetho ea ho qetela, hang-hang fetela ntlheng e latelang.
  3. Ka boikhethelo, o ka fetola li-setting: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. Ebe u kopanya setšoantšo: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Joale o ka kopitsa faele ea kernel: cp arch/arm/boot/zImage /mnt/boot/
  6. Le lifaele tse tsoang ho DeviceTree (tlhaloso ea lisebelisoa tse botong): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. Ebe u kenya li-module tse bokelletsoeng ka mokhoa oa lifaele tse arohaneng: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Lehlaku le se le lokile. O ka tlosa tsohle: umount /mnt/boot/ /mnt/

Ke U-Boot

Kaha bootloader e sebelisana, sohle seo u se hlokang ho lekola ts'ebetso ea eona ke boto ka boeona, sesebelisoa sa polokelo, 'me ka boikhethelo sesebelisoa sa USB-to-UART. Ke hore, o ka chechisa kernel le OS bakeng sa hamorao.

Boholo ba bahlahisi ba fana ka ho sebelisa Das U-Boot bakeng sa boot ea pele. Tšehetso e feletseng hangata e fanoa ka fereko ea bona, empa ha ba lebale ho kenya letsoho ho ea holimo. Tabeng ea ka, boto e tšehetsoa ka mainlineka hona fereko Ke ile ka iphapanyetsa eona.

Ha re bokelle bootloader ka boeona:

  1. Re kopanya lekala le tsitsitseng la polokelo: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Ha re ee bukeng ka boeona: cd u-boot
  3. Ho lokisa sebopeho sa moaho: make mx6ull_14x14_evk_defconfig. Sena se sebetsa feela haeba tlhophiso e le ho Das U-Boot ka boeona, ho seng joalo o tla hloka ho fumana tlhophiso ea moetsi ebe o e beha motso oa polokelo faeleng. .config, kapa ho kopanya ka mokhoa ofe kapa ofe o khothaletsoang ke moetsi.
  4. Re bokella setšoantšo sa bootloader ka boeona re sebelisa cross-compiler armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

Ka lebaka leo re fumana file u-boot.imx, ena ke setšoantšo se lokiselitsoeng se ka ngolloang ho flash drive. Re ngolla karete ea SD, re tlola li-byte tse 1024 tsa pele. Hobaneng ke khethile Sepheo u-boot.imx? Hobaneng ke fetotse li-byte tse 1024 hantle? Sena ke seo ba rerileng ho se etsa litokomane. Bakeng sa mapolanka a mang, mohaho oa setšoantšo le mokhoa oa ho rekota o ka 'na oa fapana hanyenyane.

E felile, o ka qala. Bootloader e tlameha ho tlaleha mofuta oa eona, tlhahisoleseling e itseng ka boto, 'me e leke ho fumana setšoantšo sa kernel karohanong. Haeba e sa atlehe, e tla leka ho qala marang-rang. Ka kakaretso, tlhahiso e na le lintlha tse ngata, u ka fumana phoso haeba ho na le bothata.

Ho e-na phetheha

A na u ne u tseba hore phatla ea dolphin ha e na masapo? Ha e le hantle ke leihlo la boraro, lense e mafura bakeng sa echolocation!

Ho qala GNU/Linux ho boto ea ARM ho tloha qalong (ho sebelisa Kali le iMX.6 joalo ka mohlala)

Ho qala GNU/Linux ho boto ea ARM ho tloha qalong (ho sebelisa Kali le iMX.6 joalo ka mohlala)

Source: www.habr.com