tl dr: Proqramda ARM kompüteri üçün Kali Linux şəklini qururam debootstrap
, linux
и u-boot
.
Çox populyar olmayan tək ödəyici almısınızsa, onun üçün sevimli paylama dəstinizin təsvirinin olmaması ilə qarşılaşa bilərsiniz. Demək olar ki, eyni şey baş verdi
Yükləmə prosesi olduqca sadədir:
- Avadanlıq işə salınıb.
- Yaddaş qurğusunun bəzi sahəsindən (SD kart/eMMC/s.) yükləyici oxunur və icra olunur.
- Yükləyici əməliyyat sisteminin nüvəsini axtarır və onu hansısa yaddaş sahəsinə yükləyir və icra edir.
- Kernel OS-nin qalan hissəsini yükləyir.
Tapşırığım üçün bu səviyyəli detal kifayətdir, detalları oxuya bilərsiniz
Kök fayl sisteminin qurulması
Əvvəlcə bölmələri hazırlamalısınız. Das U-Boot müxtəlif fayl sistemlərini dəstəkləyir, mən FAT32-ni seçdim /boot
və kök üçün ext3, bu ARM altında Kali üçün standart şəkil işarəsidir. Mən GNU Parted-dən istifadə edəcəyəm, amma siz eyni şeyi daha tanış edə bilərsiniz fdisk
. Sizə də lazım olacaq dosfstools
и e2fsprogs
fayl sistemi yaratmaq üçün: apt install parted dosfstools e2fsprogs
.
SD kartın bölünməsi:
- SD kartı MBR bölməsindən istifadə kimi qeyd edin:
parted -s /dev/mmcblk0 mklabel msdos
- üçün bölmə yaradın
/boot
128 meqabayt üçün:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. İlk buraxılmış meqabayt işarələmənin özü və yükləyici üçün qalmalıdır. - Tutumun qalan hissəsi üçün kök FS yaradın:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Birdən bölmə fayllarını yaratmamısınızsa və ya dəyişdirməmisinizsə, `partprobe` icra etməlisiniz, onda bölmə cədvəli yenidən oxunacaq.
- Etiketli bir yükləmə bölməsi fayl sistemi yaradın
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Etiket ilə kök fayl sistemi yaradın
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Əla, indi onu doldura bilərsiniz. Bu əlavə tələb edəcək debootstrap
, Debian kimi əməliyyat sistemlərində kök FS yaratmaq üçün bir yardım proqramı: apt install debootstrap
.
FS toplayırıq:
- Bölməni quraşdırın
/mnt/
(özünüz üçün daha əlverişli montaj nöqtəsindən istifadə edin):mount /dev/mmcblk0p2 /mnt
- Əslində fayl sistemini doldururuq:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. Parametr--include
bəzi paketləri əlavə olaraq quraşdırmağı təyin edir, mən statik olaraq qurulmuş QEMU emulyatorunu təyin etdim. İcra etməyə imkan verirchroot
ARM mühitinə. Digər variantların mənasını burada tapa bilərsinizman debootstrap
. Unutmayın ki, hər ARM lövhəsi arxitekturanı dəstəkləmirarmhf
. - Memarlıq fərqliliyinə görə
debootstrap
iki mərhələdə həyata keçirilir, ikincisi aşağıdakı kimi həyata keçirilir:chroot /mnt/ /debootstrap/debootstrap --second-stage
- İndi fırlatmaq lazımdır:
chroot /mnt /bin/bash
- doldururuq
/etc/hosts
и/etc/hostname
hədəf FS. Yerli kompüterinizdəki məzmunla eyni şəkildə doldurun, yalnız host adını dəyişdirməyi unutmayın. - Qalan hər şeyi fərdiləşdirə bilərsiniz. Xüsusilə quraşdırıram
locales
(repozitor açarları), yerlilərin və saat qurşağının yenidən konfiqurasiyası (dpkg-reconfigure locales tzdata
). Komanda ilə parol təyin etməyi unutmayınpasswd
. - üçün parol təyin edin
root
komandapasswd
. - Mənim üçün şəklin hazırlanması doldurmaqla tamamlanır
/etc/fstab
daxilində/mnt/
.
Mən əvvəllər yaradılmış etiketlərə uyğun olaraq yükləyəcəyəm, ona görə də məzmun belə olacaq:
LABEL=ROOTFS / avtomatik xətalar=remount-ro 0 1
LABEL=BOOT /boot auto defaults 0 0
Nəhayət, siz yükləmə bölməsini quraşdıra bilərsiniz, bizə kernel üçün lazımdır: `mount /dev/mmcblk0p1 /mnt/boot/`
Linux qurmaq
Debian Testində nüvəni (və sonra yükləyicini) qurmaq üçün siz hədəf arxitektura üçün standart GCC, GNU Make və GNU C Library başlıq fayllarını quraşdırmalısınız (məndə armhf
), həmçinin OpenSSL başlıqları, konsol kalkulyatoru bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Defolt yükləyici fayl axtarır zImage
yükləmə bölməsinin fayl sistemində, flash sürücünü qırmağın vaxtı gəldi.
- Kernelin klonlanması çox uzundur, ona görə də sadəcə yükləyəcəm:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Paketdən çıxarın və mənbə qovluğuna keçin:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Tərtib etməzdən əvvəl konfiqurasiya edin:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Konfiqurasiya kataloqdadırarch/arm/configs/
. Heç biri yoxdursa, hazır olanı tapıb yükləməyə cəhd edə və bu kataloqdakı faylın adını parametrə keçirə bilərsiniz.KBUILD_DEFCONFIG
. Həddindən artıq hallarda dərhal növbəti abzasa keçin. - Siz isteğe bağlı olaraq parametrləri düzəldə bilərsiniz:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Və şəkli çarpaz tərtib edin:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- İndi kernel faylını kopyalaya bilərsiniz:
cp arch/arm/boot/zImage /mnt/boot/
- Və DeviceTree-dən fayllar (boardda mövcud olan avadanlıqların təsviri):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Və ayrıca fayllar kimi yığılmış modulları quraşdırın:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Kernel hazırdır. Hər şeyi ayıra bilərsiniz: umount /mnt/boot/ /mnt/
Das U Boot
Yükləyici interaktiv olduğundan onun işini yoxlamaq üçün lövhənin özü, yaddaş qurğusu və isteğe bağlı USB-to-UART cihazı kifayətdir. Yəni kernel və OS-ni sonraya təxirə sala bilərsiniz.
İstehsalçıların böyük əksəriyyəti əsas yükləmə üçün Das U-Boot istifadə etməyi təklif edir. Tam dəstək adətən öz çəngəlində verilir, lakin yuxarı axınında töhfə verməyi unutmayın. Mənim vəziyyətimdə board dəstəklənir
Yükləyicinin özünü toplayırıq:
- Anbarın sabit filialını klonlayın:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Gəlin kataloqun özünə keçək:
cd u-boot
- Quraşdırma konfiqurasiyasının hazırlanması:
make mx6ull_14x14_evk_defconfig
. Bu, yalnız konfiqurasiya Das U-Boot-da olarsa işləyir, əks halda siz istehsalçının konfiqurasiyasını tapmalı və onu fayldakı deponun kökünə qoymalısınız..config
, və ya istehsalçı tərəfindən tövsiyə edilən başqa bir şəkildə yığılmışdır. - Bootloader şəklinin özünü çarpaz tərtibçi ilə toplayırıq
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Nəticədə faylı alırıq u-boot.imx
, bu, USB flash sürücüsünə yazıla bilən hazır bir şəkildir. İlk 1024 baytı atlayaraq SD karta yazırıq. Niyə hədəf seçdim u-boot.imx
? Niyə tam olaraq 1024 baytı qaçırdınız? Bunu etməyi təklif edirlər
Hazırdır, yükləyə bilərsiniz. Yükləyici öz versiyasını, lövhə haqqında bəzi məlumatları bildirməli və bölmədə nüvə şəklini tapmağa çalışmalıdır. Əgər uğursuz olarsa, o, şəbəkə üzərindən yükləməyə çalışacaq. Ümumiyyətlə, çıxış olduqca ətraflıdır, problem olduqda bir səhv tapa bilərsiniz.
Bunun əvəzinə bir nəticəyə
Delfinin alnının sümüklü olmadığını bilirdinizmi? Bu, sözün əsl mənasında üçüncü gözdür, ekolokasiya üçün yağlı lensdir!
Mənbə: www.habr.com