tl; drԵս ծրագրում կառուցում եմ Kali Linux պատկեր ARM համակարգչի համար debootstrap
, linux
и u-boot
.
Եթե դուք գնել եք ոչ այնքան հայտնի մի վճարող, ապա կարող եք հանդիպել դրա համար ձեր սիրած բաշխման հավաքածուի պատկերի բացակայությանը: Մոտավորապես նույն բանը պատահեց
Ներբեռնման գործընթացը բավականին պարզ է.
- Սարքավորումը սկզբնավորվել է:
- Պահպանման սարքի որոշ տարածքից (SD քարտ/eMMC/և այլն) բեռնիչը կարդացվում և գործարկվում է:
- Բեռնիչը փնտրում է օպերացիոն համակարգի միջուկը և այն բեռնում է հիշողության որոշ տարածք և կատարում այն:
- Միջուկը բեռնում է ՕՀ-ի մնացած մասը:
Իմ առաջադրանքի համար մանրամասնության այս մակարդակը բավական է, կարող եք կարդալ մանրամասները
Արմատային ֆայլային համակարգի կառուցում
Նախ անհրաժեշտ է պատրաստել բաժիններ. Das U-Boot-ն աջակցում է տարբեր ֆայլային համակարգերի, ես ընտրեցի FAT32-ը /boot
և ext3 արմատի համար, սա ստանդարտ պատկերի նշագրումն է Kali-ի համար ARM-ի տակ: Ես կօգտագործեմ GNU Parted-ը, բայց դուք կարող եք նույնը ավելի ծանոթ դարձնել fdisk
. Ձեզ նույնպես անհրաժեշտ կլինի dosfstools
и e2fsprogs
ֆայլային համակարգ ստեղծելու համար. apt install parted dosfstools e2fsprogs
.
SD քարտի բաժանում.
- Նշեք SD քարտը որպես MBR բաժանման օգտագործմամբ.
parted -s /dev/mmcblk0 mklabel msdos
- Ստեղծեք բաժին
/boot
128 մեգաբայթի համար.parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Առաջին բաց թողնված մեգաբայթը պետք է մնա հենց նշագրման և բեռնիչի համար: - Ստեղծեք արմատային FS մնացած հզորության համար.
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Եթե հանկարծ դուք չեք ստեղծել կամ փոխել բաժանման ֆայլերը, դուք պետք է գործարկեք «partprobe», ապա բաժանման աղյուսակը կվերընթերցվի:
- Ստեղծեք պիտակավորված boot partition ֆայլային համակարգ
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Ստեղծեք արմատային ֆայլային համակարգ պիտակով
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Հիանալի է, հիմա կարող եք լրացնել այն: Սա լրացուցիչ կպահանջի debootstrap
Debian-ի նման օպերացիոն համակարգերում root FS ստեղծելու օգտակար ծրագիր. apt install debootstrap
.
Մենք հավաքում ենք FS:
- Տեղադրեք միջնորմը
/mnt/
(օգտագործեք ձեզ համար ավելի հարմար մոնտաժային կետ).mount /dev/mmcblk0p2 /mnt
- Իրականում մենք լրացնում ենք ֆայլային համակարգը.
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. Պարամետր--include
սահմանում է լրացուցիչ տեղադրել որոշ փաթեթներ, ես նշել եմ ստատիկորեն կառուցված QEMU էմուլյատոր: Այն թույլ է տալիս կատարելchroot
ARM միջավայրին. Մյուս տարբերակների իմաստը կարելի է գտնելman debootstrap
. Մի մոռացեք, որ ARM-ի բոլոր տախտակները չեն աջակցում ճարտարապետությանըarmhf
. - Ճարտարապետությունների տարբերության պատճառով
debootstrap
իրականացվում է երկու փուլով, երկրորդը կատարվում է հետևյալ կերպ.chroot /mnt/ /debootstrap/debootstrap --second-stage
- Այժմ դուք պետք է պտտեք.
chroot /mnt /bin/bash
- Լցնում ենք
/etc/hosts
и/etc/hostname
թիրախ FS. Լրացրեք նույնը, ինչ ձեր տեղական համակարգչի բովանդակությունը, հիշեք, որ փոխարինեք միայն հոսթի անունը: - Դուք կարող եք հարմարեցնել մնացած ամեն ինչ: Մասնավորապես տեղադրում եմ
locales
(պահեստի ստեղներ), տեղանքների և ժամային գոտու վերակազմավորում (dpkg-reconfigure locales tzdata
). Մի մոռացեք գաղտնաբառ սահմանել հրամանովpasswd
. - Սահմանեք գաղտնաբառ
root
թիմըpasswd
. - Պատկերի պատրաստումն ինձ համար ավարտվում է լրացնելով
/etc/fstab
ներսում/mnt/
.
Ես կբեռնեմ ավելի վաղ ստեղծված պիտակների համաձայն, այնպես որ բովանդակությունը կլինի այսպիսին.
LABEL = ROOTFS / ավտոմատ սխալներ = remount-ro 0 1
LABEL=BOOT /boot auto defaults 0 0
Վերջապես, դուք կարող եք տեղադրել boot partition-ը, այն մեզ անհրաժեշտ կլինի միջուկի համար՝ «mount /dev/mmcblk0p1 /mnt/boot/»:
Linux-ի կառուցում
Debian Testing-ի վրա միջուկը (և այնուհետև բեռնիչը) կառուցելու համար դուք պետք է տեղադրեք GCC, GNU Make և GNU C գրադարանի վերնագրի ֆայլերի ստանդարտ փաթեթը թիրախային ճարտարապետության համար (ես ունեմ armhf
), ինչպես նաև OpenSSL վերնագրեր, կոնսոլային հաշվիչ bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Քանի որ լռելյայն բեռնիչը փնտրում է ֆայլ zImage
boot partition-ի ֆայլային համակարգում ժամանակն է կոտրել ֆլեշ կրիչը:
- Միջուկի կլոնավորումը չափազանց երկար է, ուստի ես պարզապես կներբեռնեմ.
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Բացեք փաթեթավորումը և անցեք աղբյուրի գրացուցակ.tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Կազմավորելուց առաջ կազմաձևեք՝
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Կազմաձևը գրացուցակում էarch/arm/configs/
. Եթե չկա, կարող եք փորձել գտնել և ներբեռնել պատրաստը և փոխանցել այս գրացուցակի ֆայլի անունը պարամետրին:KBUILD_DEFCONFIG
. Ծայրահեղ դեպքերում անմիջապես անցեք հաջորդ պարբերությանը: - Դուք կարող եք կամայականորեն ուղղել կարգավորումները.
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Եվ խաչաձև կազմեք պատկերը.
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Այժմ դուք կարող եք պատճենել միջուկի ֆայլը.
cp arch/arm/boot/zImage /mnt/boot/
- Եվ DeviceTree-ից ստացված ֆայլերը (տախտակի վրա առկա սարքավորումների նկարագրությունը).
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Եվ տեղադրեք առանձին ֆայլերով հավաքված մոդուլները.
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Միջուկը պատրաստ է։ Դուք կարող եք ապամոնտաժել ամեն ինչ. umount /mnt/boot/ /mnt/
Das U Boot
Քանի որ bootloader-ը ինտերակտիվ է, ինքնին տախտակը, պահեստավորման սարքը և կամընտիր USB-to-UART սարքը բավարար են դրա աշխատանքը ստուգելու համար: Այսինքն՝ միջուկը և ՕՀ-ն կարող եք հետաձգել ավելի ուշ։
Արտադրողների ճնշող մեծամասնությունը առաջարկում է օգտագործել Das U-Boot հիմնական բեռնախցիկի համար: Ամբողջական աջակցությունը սովորաբար տրամադրվում է իր պատառաքաղով, բայց մի մոռացեք նպաստել հոսանքին հակառակ: Իմ դեպքում, խորհուրդը աջակցվում է
Մենք ինքնին հավաքում ենք bootloader-ը.
- Կլոնավորեք պահեստի կայուն մասնաճյուղը.
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Եկեք գնանք ինքնին գրացուցակ.
cd u-boot
- Կառուցման կոնֆիգուրացիայի պատրաստում.
make mx6ull_14x14_evk_defconfig
. Սա աշխատում է միայն այն դեպքում, եթե կոնֆիգուրացիան ինքնին Das U-Boot-ում է, հակառակ դեպքում դուք պետք է գտնեք արտադրողի կոնֆիգուրը և տեղադրեք այն ֆայլի պահեստի արմատում:.config
, կամ հավաքվել է արտադրողի կողմից առաջարկվող այլ եղանակով: - Մենք ինքնին հավաքում ենք bootloader պատկերը խաչաձեւ կոմպիլյատորով
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Արդյունքում մենք ստանում ենք ֆայլը u-boot.imx
, սա պատրաստի պատկեր է, որը կարելի է գրել USB ֆլեշ կրիչում։ Մենք գրում ենք SD քարտին՝ բաց թողնելով առաջին 1024 բայթը: Ինչու՞ ընտրեցի թիրախը u-boot.imx
? Ինչու՞ բաց թողել ուղիղ 1024 բայթ: Սա այն է, ինչ նրանք առաջարկում են անել
Կատարված է, կարող եք ներբեռնել: Bootloader-ը պետք է զեկուցի իր սեփական տարբերակը, որոշ տեղեկություններ տախտակի մասին և փորձի գտնել միջուկի պատկերը միջնորմում: Եթե այն ձախողվի, այն կփորձի բեռնել ցանցի միջոցով: Ընդհանուր առմամբ, ելքը բավականին մանրամասն է, խնդրի դեպքում կարող եք սխալ գտնել։
Փոխարենը մի եզրակացության
Իսկ դուք գիտեի՞ք, որ դելֆինի ճակատը ոսկրոտ չէ։ Դա բառացիորեն երրորդ աչք է, էխոլոկացիայի համար ճարպային ոսպնյակ:
Source: www.habr.com