tl; dr: Rwy'n adeiladu delwedd Kali Linux ar gyfer cyfrifiadur ARM, yn y rhaglen debootstrap
, linux
и u-boot
.
Os prynoch chi rai meddalwedd un bwrdd nad yw'n boblogaidd iawn, efallai y byddwch chi'n wynebu diffyg delwedd o'ch hoff ddosbarthiad ar ei gyfer. Digwyddodd tua'r un peth gyda
Mae'r broses lawrlwytho yn eithaf syml:
- Mae'r caledwedd yn cael ei gychwyn.
- O ryw ardal ar y ddyfais storio (cerdyn SD / eMMC / ac ati) mae'r cychwynnwr yn cael ei ddarllen a'i weithredu.
- Mae'r cychwynnwr yn edrych am gnewyllyn y system weithredu ac yn ei lwytho i ryw ardal cof a'i weithredu.
- Mae'r cnewyllyn yn llwytho gweddill yr OS.
Mae'r lefel hon o fanylder yn ddigon ar gyfer fy nhasg, gallwch ddarllen y manylion
Adeiladu'r system ffeiliau gwraidd
Yn gyntaf mae angen i chi baratoi'r adrannau. Mae Das U-Boot yn cefnogi systemau ffeil gwahanol, dewisais FAT32 ar gyfer /boot
ac ext3 ar gyfer gwraidd, dyma'r cynllun delwedd safonol ar gyfer Kali ar ARM. Byddaf yn defnyddio GNU Parted, ond gallwch chi wneud yr un peth mewn ffordd fwy cyfarwydd fdisk
. Bydd angen i chi hefyd dosfstools
и e2fsprogs
i greu system ffeiliau: apt install parted dosfstools e2fsprogs
.
Rydym yn marcio'r cerdyn SD:
- Marciwch y cerdyn SD fel un sy'n defnyddio rhaniad MBR:
parted -s /dev/mmcblk0 mklabel msdos
- Creu adran o dan
/boot
am 128 megabeit:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Rhaid gadael y megabeit cyntaf a gollwyd ar gyfer y marcio ei hun ac ar gyfer y cychwynnydd. - Rydym yn creu system ffeiliau gwraidd ar gyfer yr holl gapasiti sy'n weddill:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Os yn sydyn nad yw'ch ffeiliau rhaniad wedi'u creu neu heb eu newid, mae angen i chi redeg `partprobe`, yna bydd y tabl rhaniad yn cael ei ail-ddarllen.
- Creu system ffeiliau ar gyfer y rhaniad cychwyn gyda'r label
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Creu system ffeiliau gwraidd gyda label
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Gwych, nawr gallwch chi ei lenwi. Ar gyfer hyn bydd angen i chi hefyd debootstrap
, cyfleustodau ar gyfer creu systemau ffeiliau gwraidd ar gyfer systemau gweithredu tebyg i Debian: apt install debootstrap
.
Rydym yn casglu FS:
- Gosodwch y rhaniad i mewn
/mnt/
(defnyddiwch bwynt gosod mwy cyfleus):mount /dev/mmcblk0p2 /mnt
- Rydyn ni'n llenwi'r system ffeiliau mewn gwirionedd:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. Paramedr--include
yn nodi gosod rhai pecynnau hefyd, nodais efelychydd QEMU a adeiladwyd yn statig. Mae'n caniatáu ichi berfformiochroot
yn yr amgylchedd ARM. Gellir dod o hyd i ystyr yr opsiynau sy'n weddill ynman debootstrap
. Peidiwch ag anghofio nad yw pob bwrdd ARM yn cefnogi'r bensaernïaetharmhf
. - Oherwydd y gwahaniaeth mewn pensaernïaeth
debootstrap
yn cael ei berfformio mewn dau gam, mae'r ail yn cael ei berfformio fel hyn:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Nawr mae angen i chi ei sgriwio i fyny:
chroot /mnt /bin/bash
- Rydyn ni'n llenwi
/etc/hosts
и/etc/hostname
targed FS. Llenwch yr un peth â'r cynnwys ar eich cyfrifiadur lleol, cofiwch ddisodli'r enw gwesteiwr. - Gallwch chi addasu popeth arall. Yn benodol, rwy'n gosod
locales
(allweddi cadwrfa), ail-ffurfweddu locales a pharth amser (dpkg-reconfigure locales tzdata
). Peidiwch ag anghofio gosod y cyfrinair gyda'r gorchymynpasswd
. - Gosod cyfrinair ar gyfer
root
tîmpasswd
. - Mae paratoi'r ddelwedd i mi yn gorffen gyda llenwi
/etc/fstab
y tu mewn/mnt/
.
Byddaf yn uwchlwytho yn unol â'r tagiau a grëwyd yn flaenorol, felly bydd y cynnwys fel hyn:
LABEL=ROOTFS / gwallau auto=remount-ro 0 1
Mae LABEL=BOOT /boot auto yn rhagosodedig 0 0
Yn olaf, gallwch chi osod y rhaniad cychwyn, bydd ei angen arnom ar gyfer y cnewyllyn: `mount /dev/mmcblk0p1 /mnt/boot/`
Adeiladu Linux
I adeiladu'r cnewyllyn (ac yna'r cychwynnydd) ar Debian Testing, mae angen i chi osod set safonol o ffeiliau pennawd Llyfrgell GCC, GNU Make a GNU C ar gyfer y bensaernïaeth darged (i mi armhf
), yn ogystal â phenawdau OpenSSL, cyfrifiannell consol bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Gan fod y llwythwr rhagosodedig yn chwilio am y ffeil zImage
ar system ffeiliau'r rhaniad cychwyn, mae'n bryd rhannu'r gyriant fflach.
- Mae'n cymryd gormod o amser i glonio'r cnewyllyn, felly byddaf yn lawrlwytho:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Gadewch i ni ddadbacio a mynd i'r cyfeiriadur ffynhonnell:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Ffurfweddu cyn llunio:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Mae'r ffurfwedd wedi'i lleoli yn y cyfeiriadurarch/arm/configs/
. Os nad oes un, gallwch geisio dod o hyd i un parod a'i lawrlwytho a phasio enw'r ffeil yn y cyfeiriadur hwn fel paramedrKBUILD_DEFCONFIG
. Fel dewis olaf, symudwch ymlaen ar unwaith i'r pwynt nesaf. - Yn ddewisol gallwch chi newid y gosodiadau:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- A chroes-grynhoi'r ddelwedd:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Nawr gallwch chi gopïo'r ffeil cnewyllyn:
cp arch/arm/boot/zImage /mnt/boot/
- A ffeiliau o DeviceTree (disgrifiad o'r caledwedd ar y bwrdd):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- A gosodwch y modiwlau a gasglwyd ar ffurf ffeiliau ar wahân:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Mae'r cnewyllyn yn barod. Gallwch ddadosod popeth: umount /mnt/boot/ /mnt/
Das U-Boot
Gan fod y cychwynnwr yn rhyngweithiol, y cyfan sydd ei angen arnoch i brofi ei weithrediad yw'r bwrdd ei hun, dyfais storio, ac yn ddewisol dyfais USB-i-UART. Hynny yw, gallwch chi ohirio'r cnewyllyn a'r OS yn ddiweddarach.
Mae mwyafrif helaeth y gwneuthurwyr yn cynnig defnyddio Das U-Boot ar gyfer y cychwyn cyntaf. Darperir cefnogaeth lawn fel arfer yn eu fforc eu hunain, ond nid ydynt yn anghofio cyfrannu at yr afon i fyny'r afon. Yn fy achos i, cefnogir y bwrdd yn
Gadewch i ni ymgynnull y cychwynnwr ei hun:
- Rydym yn clonio cangen sefydlog yr ystorfa:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Awn i'r cyfeiriadur ei hun:
cd u-boot
- Paratoi'r cyfluniad adeiladu:
make mx6ull_14x14_evk_defconfig
. Mae hyn ond yn gweithio os yw'r ffurfweddiad yn Das U-Boot ei hun, fel arall bydd angen i chi ddod o hyd i ffurfwedd y gwneuthurwr a'i roi yng ngwraidd yr ystorfa mewn ffeil.config
, neu ymgynnull mewn unrhyw fodd arall a argymhellir gan y gwneuthurwr. - Rydyn ni'n cydosod delwedd y cychwynnwr ei hun gan ddefnyddio traws-grynhoydd
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
O ganlyniad rydym yn cael y ffeil u-boot.imx
, mae hwn yn ddelwedd parod y gellir ei ysgrifennu i yriant fflach. Rydyn ni'n ysgrifennu at y cerdyn SD, gan hepgor y 1024 bytes cyntaf. Pam dewisais i Target u-boot.imx
? Pam wnes i fethu union 1024 beit? Dyma beth maen nhw'n bwriadu ei wneud yn
Wedi'i wneud, gallwch chi gychwyn. Rhaid i'r cychwynnwr adrodd ar ei fersiwn ei hun, rhywfaint o wybodaeth am y bwrdd, a cheisio dod o hyd i'r ddelwedd cnewyllyn ar y rhaniad. Os yw'n aflwyddiannus, bydd yn ceisio cychwyn dros y rhwydwaith. Yn gyffredinol, mae'r allbwn yn eithaf manwl, gallwch ddod o hyd i'r gwall os oes problem.
Yn hytrach na i gasgliad
Oeddech chi'n gwybod nad yw talcen dolffin yn esgyrnog? Mae'n llythrennol trydydd llygad, lens brasterog ar gyfer ecoleoli!
Ffynhonnell: hab.com