tl; dr: Mo n kọ aworan Kali Linux kan fun kọnputa ARM, ninu eto naa debootstrap
, linux
и u-boot
.
Ti o ba ra diẹ ninu sọfitiwia igbimọ-ẹyọkan ti o gbajumọ pupọ, o le dojuko aini aworan ti pinpin ayanfẹ rẹ fun rẹ. Ni isunmọ ohun kanna ṣẹlẹ pẹlu
Ilana igbasilẹ jẹ ohun rọrun:
- Awọn hardware ti wa ni initialized.
- Lati agbegbe kan lori ẹrọ ibi ipamọ (kaadi SD/eMMC/ati bẹbẹ lọ) bootloader ti wa ni kika ati ṣiṣẹ.
- Bootloader n wa ekuro ẹrọ iṣẹ ati gbe e sinu agbegbe iranti diẹ ati ṣiṣe rẹ.
- Ekuro n gbe iyoku OS naa.
Ipele alaye yii ti to fun iṣẹ-ṣiṣe mi, o le ka awọn alaye naa
Ṣiṣe eto faili root
Ni akọkọ o nilo lati ṣeto awọn apakan. Das U-Boot ṣe atilẹyin awọn ọna ṣiṣe faili oriṣiriṣi, Mo yan FAT32 fun /boot
ati ext3 fun gbongbo, eyi ni ipilẹ aworan boṣewa fun Kali lori ARM. Emi yoo lo GNU Parted, ṣugbọn o le ṣe kanna ni ọna ti o faramọ diẹ sii fdisk
. Iwọ yoo tun nilo dosfstools
и e2fsprogs
lati ṣẹda eto faili kan: apt install parted dosfstools e2fsprogs
.
A samisi kaadi SD:
- Samisi kaadi SD bi lilo ipin MBR:
parted -s /dev/mmcblk0 mklabel msdos
- Ṣẹda a apakan labẹ
/boot
fun 128 megabyte:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Megabyte akọkọ ti o padanu gbọdọ jẹ osi fun isamisi funrararẹ ati fun bootloader. - A ṣẹda eto faili gbongbo fun gbogbo agbara ti o ku:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Ti awọn faili ipin rẹ ko ba ti ṣẹda lojiji tabi ko yipada, o nilo lati ṣiṣẹ `partprobe`, lẹhinna tabili ipin yoo tun ka.
- Ṣẹda eto faili kan fun ipin bata pẹlu aami naa
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Ṣẹda eto faili gbongbo pẹlu aami kan
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Nla, bayi o le fọwọsi. Fun eyi iwọ yoo nilo afikun debootstrap
, IwUlO kan fun ṣiṣẹda awọn ọna ṣiṣe faili root fun awọn ọna ṣiṣe ti o dabi Debian: apt install debootstrap
.
A gba FS:
- Gbe awọn ipin sinu
/mnt/
(lo aaye oke ti o rọrun diẹ sii):mount /dev/mmcblk0p2 /mnt
- A kun eto faili gangan:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
... Paramita--include
tọkasi afikun ohun ti a fi sori ẹrọ diẹ ninu awọn jo, Mo pato kan statically itumọ ti QEMU emulator. O faye gba o lati ṣechroot
ni agbegbe ARM. Itumọ awọn aṣayan ti o ku ni a le rii niman debootstrap
. Maṣe gbagbe pe kii ṣe gbogbo igbimọ ARM ṣe atilẹyin faajiarmhf
. - Nitori iyatọ ninu faaji
debootstrap
A ṣe ni awọn ipele meji, keji ni a ṣe bi eleyi:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Bayi o nilo lati yi o soke:
chroot /mnt /bin/bash
- Pon si
/etc/hosts
и/etc/hostname
afojusun FS. Fọwọsi kanna gẹgẹbi akoonu lori kọnputa agbegbe rẹ, kan ranti lati rọpo orukọ olupin naa. - O le ṣe akanṣe ohun gbogbo miiran. Ni pato, Mo fi sori ẹrọ
locales
(awọn bọtini ibi ipamọ), tunto awọn agbegbe ati agbegbe aago (dpkg-reconfigure locales tzdata
). Maṣe gbagbe lati ṣeto ọrọ igbaniwọle pẹlu aṣẹ naapasswd
. - Ṣeto ọrọ igbaniwọle kan fun
root
egbepasswd
. - Igbaradi ti aworan fun mi pari pẹlu kikun
/etc/fstab
inu/mnt/
.
Emi yoo gbejade ni ibamu pẹlu awọn afi ti a ṣẹda tẹlẹ, nitorinaa akoonu yoo dabi eyi:
LABEL=ROOTFS/aṣiṣe adaṣe=remount-ro 0 1
LABEL=BOOT/bata awọn aiyipada aifọwọyi 0 0
Ni ipari, o le gbe ipin bata, a yoo nilo rẹ fun ekuro: `mount /dev/mmcblk0p1 /mnt/boot/`
Linux kọ
Lati kọ ekuro (ati lẹhinna bootloader) lori Idanwo Debian, o nilo lati fi sori ẹrọ ipilẹ boṣewa ti GCC, GNU Make ati awọn faili akọsori GNU C Library fun faaji ibi-afẹde (fun mi armhf
), bakanna bi awọn akọle OpenSSL, ẹrọ iṣiro console bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Niwọn igba ti agberu aiyipada n wa faili naa zImage
lori eto faili ti ipin bata, o to akoko lati pin kọnputa filasi naa.
- Yoo pẹ ju lati ṣe ẹda ekuro, nitorinaa Emi yoo kan ṣe igbasilẹ:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Jẹ ki a tu silẹ ki a lọ si itọsọna orisun:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Ṣe atunto ṣaaju akopọ:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Awọn atunto ti wa ni be ninu awọn lianaarch/arm/configs/
. Ti ko ba si, o le gbiyanju lati wa ati ṣe igbasilẹ eyi ti a ti ṣetan ki o kọja orukọ faili ninu itọsọna yii bi paramita kanKBUILD_DEFCONFIG
. Bi ohun asegbeyin ti, lẹsẹkẹsẹ gbe lori si awọn tókàn ojuami. - Ni yiyan o le tweak awọn eto:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Ati ki o ṣe akopọ aworan naa:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Bayi o le daakọ faili kernel naa:
cp arch/arm/boot/zImage /mnt/boot/
- Ati awọn faili lati DeviceTree (apejuwe ti ohun elo lori igbimọ):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Ati fi sori ẹrọ awọn modulu ti a gba ni irisi awọn faili lọtọ:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Ekuro ti šetan. O le yọ ohun gbogbo kuro: umount /mnt/boot/ /mnt/
Das U-Boot
Niwọn igba ti bootloader jẹ ibaraenisepo, gbogbo ohun ti o nilo lati ṣe idanwo iṣẹ rẹ ni igbimọ funrararẹ, ẹrọ ipamọ, ati yiyan ẹrọ USB-si-UART. Iyẹn ni, o le sun siwaju kernel ati OS fun nigbamii.
Pupọ julọ ti awọn aṣelọpọ nfunni lati lo Das U-Boot fun bata ibẹrẹ. Atilẹyin kikun ni a pese nigbagbogbo ni orita tiwọn, ṣugbọn wọn ko gbagbe lati ṣe alabapin si oke. Ninu ọran mi, igbimọ naa ni atilẹyin ni
Jẹ ki a ṣajọpọ bootloader funrararẹ:
- A ṣe ẹda ẹka iduroṣinṣin ti ibi ipamọ:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Jẹ ki a lọ si itọsọna funrararẹ:
cd u-boot
- Ngbaradi iṣeto ni kikọ:
make mx6ull_14x14_evk_defconfig
. Eyi ṣiṣẹ nikan ti iṣeto ba wa ni Das U-Boot funrararẹ, bibẹẹkọ iwọ yoo nilo lati wa atunto olupese ati fi sii ni gbongbo ibi ipamọ ninu faili kan..config
, tabi pejọ ni ọna miiran ti a ṣeduro nipasẹ olupese. - A ṣe apejọ aworan bootloader funrararẹ nipa lilo alakopọ-agbelebu
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Bi abajade, a gba faili naa u-boot.imx
, Eyi jẹ aworan ti a ti ṣetan ti o le kọ si kọnputa filasi. A kọ si kaadi SD, fo akọkọ 1024 awọn baiti. Kí nìdí ni mo yan Àkọlé u-boot.imx
? Kini idi ti Mo padanu 1024 baiti gangan? Eyi ni ohun ti wọn daba lati ṣe ninu
Ti pari, o le bata. Awọn bootloader gbọdọ jabo awọn oniwe-ara version, diẹ ninu awọn alaye nipa awọn ọkọ, ati ki o gbiyanju lati wa awọn ekuro aworan lori ipin. Ti ko ba ṣaṣeyọri, yoo gbiyanju lati bata lori nẹtiwọọki naa. Ni gbogbogbo, abajade jẹ alaye pupọ, o le rii aṣiṣe ti iṣoro kan ba wa.
Dipo ti pinnu
Njẹ o mọ pe iwaju ori ẹja ko ni eegun? O jẹ gangan oju kẹta, lẹnsi ọra fun iwoyi!
orisun: www.habr.com