tl; dr: Tha mi a’ togail ìomhaigh Kali Linux airson coimpiutair ARM, sa phrògram debootstrap
, linux
и u-boot
.
Ma cheannaich thu bathar-bog aon-bhòrd nach robh mòr-chòrdte, is dòcha gu bheil dìth ìomhaigh den sgaoileadh as fheàrr leat air a shon. Thachair timcheall air an aon rud le
Tha am pròiseas luchdachadh sìos gu math sìmplidh:
- Tha am bathar-cruaidh air a thòiseachadh.
- Bho àite air choreigin air an inneal stòraidh (cairt SD / eMMC / msaa) tha an bootloader air a leughadh agus air a chuir gu bàs.
- Bidh an bootloader a’ coimhead airson kernel an t-siostaim obrachaidh agus ga luchdachadh a-steach do chuid de raon cuimhne agus ga chuir an gnìomh.
- Bidh an kernel a’ luchdachadh a’ chòrr den OS.
Tha an ìre mion-fhiosrachaidh seo gu leòr airson mo ghnìomh, faodaidh tu am mion-fhiosrachadh a leughadh
A 'togail siostam nam faidhlichean root
An toiseach feumaidh tu na h-earrannan ullachadh. Tha Das U-Boot a’ toirt taic do dhiofar shiostaman faidhle, thagh mi FAT32 airson /boot
agus ext3 airson root, is e seo an cruth ìomhaigh àbhaisteach airson Kali air ARM. Cleachdaidh mi GNU Parted, ach faodaidh tu an aon rud a dhèanamh ann an dòigh nas eòlaiche fdisk
. Bidh feum agad air cuideachd dosfstools
и e2fsprogs
gus siostam faidhle a chruthachadh: apt install parted dosfstools e2fsprogs
.
Bidh sinn a’ comharrachadh a’ chairt SD:
- Comharraich a’ chairt SD mar a bhith a’ cleachdadh sgaradh MBR:
parted -s /dev/mmcblk0 mklabel msdos
- Cruthaich earrann fo
/boot
airson 128 megabytes:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Feumaidh a’ chiad megabyte a chaidh a chall fhàgail airson a’ chomharradh fhèin agus airson an luchd-luaidh. - Bidh sinn a’ cruthachadh siostam faidhle freumha airson a’ chomais gu lèir a tha air fhàgail:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Mura h-eil na faidhlichean sgaradh agad gu h-obann air an cruthachadh no air an atharrachadh, feumaidh tu `partprobe` a ruith, thèid an clàr sgaradh a leughadh a-rithist.
- Cruthaich siostam faidhle airson an sgaradh boot leis an leubail
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Cruthaich siostam faidhle freumh le leubail
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Sgoinneil, a-nis faodaidh tu a lìonadh. Airson seo bidh feum agad air a bharrachd debootstrap
, goireas airson siostaman faidhle freumh a chruthachadh airson siostaman obrachaidh coltach ri Debian: apt install debootstrap
.
Bidh sinn a’ cruinneachadh FS:
- Stàlaich an sgaradh a-steach
/mnt/
(cleachd puing sreap nas freagarraiche):mount /dev/mmcblk0p2 /mnt
- Bidh sinn gu dearbh a’ lìonadh an t-siostam faidhle:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. Paramadair--include
a’ comharrachadh cuid de phasganan a chuir a-steach a bharrachd, shònraich mi emuladair QEMU a chaidh a thogail gu statach. Leigidh e leat coileanadhchroot
ann an àrainneachd ARM. Gheibhear brìgh nan roghainnean a tha air fhàgail ann anman debootstrap
. Na dì-chuimhnich nach eil a h-uile bòrd ARM a 'toirt taic don ailtireachdarmhf
. - Air sgàth an eadar-dhealachadh ann an ailtireachd
debootstrap
air a dhèanamh ann an dà ìre, tha an dàrna fear air a dhèanamh mar seo:chroot /mnt/ /debootstrap/debootstrap --second-stage
- A-nis feumaidh tu a sgioblachadh:
chroot /mnt /bin/bash
- Bidh sinn a ’lìonadh a-steach
/etc/hosts
и/etc/hostname
targaid FS. Lìon a-steach an aon rud ris an t-susbaint air a’ choimpiutair ionadail agad, dìreach cuimhnich gun cuir thu an t-ainm aoigheachd an àite. - Faodaidh tu a h-uile càil eile a ghnàthachadh. Gu sònraichte, tha mi a 'stàladh
locales
(iuchraichean tasgaidh), ath-dhealbhaich àiteachan agus sòn ùine (dpkg-reconfigure locales tzdata
). Na dìochuimhnich am facal-faire a shuidheachadh leis an àithnepasswd
. - Suidhich facal-faire airson
root
sgiobapasswd
. - Bidh ullachadh na h-ìomhaigh dhomhsa a 'crìochnachadh le lìonadh
/etc/fstab
taobh a-staigh/mnt/
.
Luchdaichidh mi suas a rèir nan tagaichean a chaidh a chruthachadh roimhe, agus mar sin bidh an susbaint mar seo:
LABEL=ROOTFS / mearachdan fèin-ghluasadach = remount-ro 0 1
LABEL=Tha fèin-obrachail BOOT/boot a' suidheachadh 0 0
Mu dheireadh, faodaidh tu an sgaradh bròg a chuir suas, bidh feum againn air airson an kernel: `mount / dev/mmcblk0p1 / mnt/boot/`
Linux a thogail
Gus an kernel (agus an uairsin an bootloader) a thogail air Debian Testing, feumaidh tu seata àbhaisteach de fhaidhlichean cinn Leabharlann GCC, GNU Make agus GNU C a chuir a-steach airson an ailtireachd targaid (dhòmhsa armhf
), a bharrachd air cinn-cinn OpenSSL, àireamhair tòcan bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Leis gu bheil an luchdaidh bunaiteach a’ coimhead airson an fhaidhle zImage
air siostam faidhle an sgaradh boot, tha an t-àm ann an draibhear flash a sgoltadh.
- Bheir e ro fhada an kernel a chlònadh, mar sin luchdaichidh mi sìos:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Dèanamaid dì-phapadh agus rach chun eòlaire leis na stòran:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Dèan rèiteachadh mus cuir thu ri chèile:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Tha an config suidhichte anns an eòlairearch/arm/configs/
. Mura h-eil gin ann, faodaidh tu feuchainn ri fear deiseil a lorg agus a luchdachadh sìos agus ainm an fhaidhle san eòlaire seo a thoirt seachad mar pharamadairKBUILD_DEFCONFIG
. Mar roghainn mu dheireadh, gluais air adhart chun ath phuing sa bhad. - Roghainneil faodaidh tu na roghainnean a tweak:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Agus tar-chruinnich an ìomhaigh:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- A-nis faodaidh tu am faidhle kernel a chopaigeadh:
cp arch/arm/boot/zImage /mnt/boot/
- Agus faidhlichean bho DeviceTree (tuairisgeul air a’ bhathar-cruaidh air a’ bhòrd):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Agus stàlaich na modalan a chaidh a chruinneachadh ann an cruth faidhlichean fa leth:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Tha an kernel deiseil. Faodaidh tu a h-uile càil a dhì-mhunntachadh: umount /mnt/boot/ /mnt/
Das U-Boot
Leis gu bheil an bootloader eadar-ghnìomhach, chan eil agad ach deuchainn a dhèanamh air a ghnìomhachd, am bòrd fhèin, inneal stòraidh, agus gu roghnach inneal USB-gu-UART. Is e sin, faodaidh tu an kernel agus an OS a chuir dheth airson nas fhaide air adhart.
Bidh a’ mhòr-chuid de luchd-saothrachaidh a’ tabhann Das U-Boot a chleachdadh airson a’ chiad bhot. Mar as trice bidh làn thaic air a thoirt seachad nam forc fhèin, ach na dìochuimhnich cur ris an abhainn suas. Anns a 'chùis agam, tha am bòrd a' faighinn taic a-steach
Nach cruinnich sinn an bootloader fhèin:
- Bidh sinn a’ clonadh meur seasmhach an stòrais:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Rachamaid chun an eòlaire fhèin:
cd u-boot
- Ag ullachadh an rèiteachaidh togail:
make mx6ull_14x14_evk_defconfig
. Chan obraich seo ach ma tha an rèiteachadh ann an Das U-Boot fhèin, air neo feumaidh tu rèiteachadh an neach-dèanamh a lorg agus a chuir ann am freumh an stòr ann am faidhle.config
, no cruinnich ann an dòigh sam bith eile a mhol an neach-dèanamh. - Bidh sinn a 'cruinneachadh an ìomhaigh bootloader fhèin le bhith a' cleachdadh crois-chruinneachaidh
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Mar thoradh air an sin gheibh sinn am faidhle u-boot.imx
, is e dealbh deiseil a tha seo a ghabhas sgrìobhadh gu draibhear flash. Bidh sinn a’ sgrìobhadh chun chairt SD, a’ leum air a’ chiad 1024 bytes. Carson a thagh mi Targaid u-boot.imx
? Carson a chaill mi dìreach 1024 bytes? Seo na tha iad a’ moladh a dhèanamh ann
Air a dhèanamh, faodaidh tu bròg. Feumaidh an bootloader cunntas a thoirt air an dreach aige fhèin, beagan fiosrachaidh mun bhòrd, agus feuchainn ris an ìomhaigh kernel a lorg air a ’phàirt. Mura soirbhich leis, feuchaidh e ri bròg thairis air an lìonra. San fharsaingeachd, tha an toradh gu math mionaideach, gheibh thu am mearachd ma tha duilgheadas ann.
An àite a bhith co-dhùnadh
An robh fios agad nach eil maoil leumadair sgìth? Is e gu litireil an treas sùil, lionsa geir airson mac-samhail!
Source: www.habr.com