tl: dr: ARM ordenagailu baterako Kali Linux irudi bat eraikitzen ari naiz, programan debootstrap
, linux
ΠΈ u-boot
.
Oso ezaguna ez den plaka bakarreko softwareren bat erosi baduzu, baliteke zure gogoko banaketaren irudirik ez izatearen aurrean. Gutxi gorabehera gauza bera gertatu zen
Deskargatzeko prozesua nahiko erraza da:
- Hardwarea hasieratzen da.
- Biltegiratze-gailuko eremu batzuetatik (SD txartela/eMMC/etab) abiarazlea irakurtzen eta exekutatzen da.
- Abio-kargatzaileak sistema eragilearen nukleoa bilatzen du eta memoria eremu batean kargatzen du eta exekutatzen du.
- Nukleoak gainerako sistema eragilea kargatzen du.
Xehetasun maila hau nahikoa da nire zereginerako, xehetasunak irakur ditzakezu
Erro fitxategi sistema eraikitzea
Lehenik eta behin atalak prestatu behar dituzu. Das U-Boot-ek fitxategi-sistema desberdinak onartzen ditu, FAT32 aukeratu dut /boot
eta ext3 errorako, hau da Kali-ren ARM-en irudiaren diseinu estandarra. GNU Parted erabiliko dut, baina gauza bera egin dezakezu modu ezagunago batean fdisk
. Zuk ere beharko duzu dosfstools
ΠΈ e2fsprogs
fitxategi sistema bat sortzeko: apt install parted dosfstools e2fsprogs
.
SD txartela markatzen dugu:
- Markatu SD txartela MBR partizioa erabiltzen duela:
parted -s /dev/mmcblk0 mklabel msdos
- Sortu atal bat azpian
/boot
128 megabyterako:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Galdutako lehen megabytea markaketa berarentzat eta abiarazterako utzi behar da. - Erroko fitxategi sistema bat sortzen dugu geratzen den edukiera osorako:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Bat-batean zure partizio-fitxategiak sortu ez badira edo aldatu ez badira, `partprobe` exekutatu behar duzu, orduan partizio-taula berriro irakurriko da.
- Sortu fitxategi-sistema etiketarekin abiarazteko partiziorako
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Sortu erroko fitxategi-sistema etiketa batekin
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Bikaina, orain bete dezakezu. Horretarako, gainera, beharko duzu debootstrap
, Debian bezalako sistema eragileetarako erro fitxategi-sistemak sortzeko utilitatea: apt install debootstrap
.
FS biltzen dugu:
- Muntatu partizioa
/mnt/
(erabili muntaketa-puntu erosoagoa):mount /dev/mmcblk0p2 /mnt
- Egia esan, fitxategi-sistema betetzen dugu:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. Parametroa--include
Pakete batzuk instalatu behar direla adierazten du, QEMU emuladore estatiko bat zehaztu dut. Burutzeko aukera ematen duchroot
ARM ingurunean. Gainerako aukeren esanahia hemen aurki daitekeman debootstrap
. Ez ahaztu ARM plaka guztiek ez dutela arkitektura onartzenarmhf
. - Arkitekturaren ezberdintasuna dela eta
debootstrap
bi fasetan egiten da, bigarrena honela egiten da:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Orain izorratu behar duzu:
chroot /mnt /bin/bash
- Betetzen dugu
/etc/hosts
ΠΈ/etc/hostname
xede FS. Bete zure tokiko ordenagailuko edukia, gogoratu ostalari-izena ordezkatzeaz. - Beste guztia pertsonaliza dezakezu. Batez ere, instalatzen dut
locales
(biltegiko gakoak), tokiak eta ordu-eremua birkonfiguratu (dpkg-reconfigure locales tzdata
). Ez ahaztu pasahitza ezartzea komandoarekinpasswd
. - Ezarri pasahitz bat
root
taldeakpasswd
. - Niretzako irudiaren prestaketa betetzearekin amaitzen da
/etc/fstab
barruan/mnt/
.
Aurretik sortutako etiketen arabera igoko dut, beraz, edukia honelakoa izango da:
LABEL=ROOTFS/auto errors=remount-ro 0 1
LABEL=BOOT /boot auto lehenetsiak 0 0
Azkenik, abioko partizioa munta dezakezu, nukleorako beharko dugu: `mount /dev/mmcblk0p1 /mnt/boot/`
Linux eraikitzea
Nukleoa (eta ondoren abiarazlea) Debian Testing-en eraikitzeko, helburu arkitekturarako GCC, GNU Make eta GNU C Library goiburuko fitxategien multzo estandar bat instalatu behar duzu (niretzat armhf
), baita OpenSSL goiburuak ere, kontsolaren kalkulagailua bc
, bison
ΠΈ flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Kargatzaile lehenetsiak fitxategia bilatzen duenez zImage
abioko partizioaren fitxategi-sisteman, flash unitatea zatitzeko garaia da.
- Nukleoa klonatzeko denbora gehiegi behar da, beraz, deskargatuko dut:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Despaketeatu eta joan gaitezen iturriak dituen direktoriora:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Konfiguratu konpilatu aurretik:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Konfigurazioa direktorioan dagoarch/arm/configs/
. Ez badago, saia zaitezke prest egindako bat bilatzen eta deskargatzen eta direktorio honetako fitxategiaren izena parametro gisa pasa dezakezuKBUILD_DEFCONFIG
. Azken aukera gisa, berehala joan hurrengo puntura. - Aukeran ezarpenak doi ditzakezu:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Eta gurutzatu irudia:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Orain nukleoaren fitxategia kopiatu dezakezu:
cp arch/arm/boot/zImage /mnt/boot/
- Eta DeviceTree-ko fitxategiak (arbeleko hardwarearen deskribapena):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Eta instalatu bildutako moduluak fitxategi bereizi moduan:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Nukleoa prest dago. Dena desmuntatu dezakezu: umount /mnt/boot/ /mnt/
Das U-Boot
Abio-kargatzailea interaktiboa denez, bere funtzionamendua probatzeko behar duzun guztia plaka bera, biltegiratze gailu bat eta, aukeran, USB-to-UART gailu bat da. Hau da, nukleoa eta OS geroago atzera ditzakezu.
Fabrikatzaile gehienek Das U-Boot erabiltzea eskaintzen dute hasierako abiarazterako. Laguntza osoa beren sardexkatan ematen da normalean, baina ez dute ahazten goranzko ekarpena egitea. Nire kasuan, taula onartzen da
Munta dezagun abiarazlea bera:
- Biltegiaren adar egonkorra klonatzen dugu:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Goazen direktoriora bera:
cd u-boot
- Eraikitzeko konfigurazioa prestatzen:
make mx6ull_14x14_evk_defconfig
. Honek bakarrik funtzionatzen du konfigurazioa Das U-Boot-en bertan badago, bestela fabrikatzailearen konfigurazioa bilatu eta fitxategi batean biltegiaren erroan jarri beharko duzu..config
, edo muntatu fabrikatzaileak gomendatutako beste edozein modutan. - Abio-kargagailuaren irudia bera muntatzen dugu konpiladore gurutzatua erabiliz
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Ondorioz, fitxategia lortuko dugu u-boot.imx
, flash drive batean idatz daitekeen prest egindako irudia da. SD txartelean idazten dugu, lehen 1024 byteak saltatuz. Zergatik aukeratu nuen Target u-boot.imx
? Zergatik galdu ditut zehazki 1024 byte? Hauxe da egitea proposatzen dutena
Eginda, abiarazi dezakezu. Abio-kargatzaileak bere bertsioaren berri eman behar du, arbelari buruzko informazio batzuk eta partizioan nukleoaren irudia bilatzen saiatu behar du. Arrakastarik ez badu, saretik abiarazten saiatuko da. Oro har, irteera nahiko zehatza da, akatsa aurkitu dezakezu arazoren bat izanez gero.
Horren ordez Ondorio baten
Ba al zenekien izurdearen kopeta hezurtsua ez dela? Hirugarren begi bat da literalki, ekolokalizaziorako lente gantz bat!
Iturria: www.habr.com