тл; др: Правим Кали Линук слику за АРМ рачунар, у програму debootstrap
, linux
и u-boot
.
Ако сте купили неки не баш популаран софтвер за једну плочу, можда ћете се суочити са недостатком слике ваше омиљене дистрибуције за њега. Отприлике иста ствар се десила и са
Процес преузимања је прилично једноставан:
- Хардвер је иницијализован.
- Са неке области на уређају за складиштење (СД картица/еММЦ/итд) покретач се чита и извршава.
- Боотлоадер тражи кернел оперативног система и учитава га у неко меморијско подручје и извршава га.
- Кернел учитава остатак ОС-а.
Овај ниво детаља је довољан за мој задатак, можете прочитати детаље
Изградња коренског система датотека
Прво морате припремити секције. Дас У-Боот подржава различите системе датотека, ја сам изабрао ФАТ32 за /boot
и ект3 за роот, ово је стандардни изглед слике за Кали на АРМ-у. Користићу ГНУ Партед, али то можете учинити и на познатији начин fdisk
. Такође ће вам требати dosfstools
и e2fsprogs
да креирате систем датотека: apt install parted dosfstools e2fsprogs
.
Означавамо СД картицу:
- Означите СД картицу да користи МБР партиционирање:
parted -s /dev/mmcblk0 mklabel msdos
- Направите одељак испод
/boot
за 128 мегабајта:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Први пропуштени мегабајт мора бити остављен за саму ознаку и за боотлоадер. - Креирамо основни систем датотека за цео преостали капацитет:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Ако одједном фајлови ваше партиције нису креирани или се нису променили, потребно је да покренете `партпробе`, тада ће табела партиција бити поново прочитана.
- Креирајте систем датотека за партицију за покретање са ознаком
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Направите основни систем датотека са ознаком
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Одлично, сада можете да га попуните. За ово ће вам додатно требати debootstrap
, услужни програм за креирање роот система датотека за оперативне системе сличне Дебиану: apt install debootstrap
.
Прикупљамо ФС:
- Монтирајте партицију
/mnt/
(користите погоднију тачку за монтирање):mount /dev/mmcblk0p2 /mnt
- Ми заправо попуњавамо систем датотека:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. Параметар--include
указује на додатно инсталирање неких пакета, навео сам статички изграђен КЕМУ емулатор. Омогућава вам да изведетеchroot
у АРМ окружењу. Значење преосталих опција може се наћи уman debootstrap
. Не заборавите да свака АРМ плоча не подржава архитектуруarmhf
. - Због разлике у архитектури
debootstrap
се изводи у две фазе, друга се изводи овако:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Сада треба да зезнете:
chroot /mnt /bin/bash
- Ми пунимо
/etc/hosts
и/etc/hostname
таргет ФС. Попуните исто као и садржај на вашем локалном рачунару, само не заборавите да замените име хоста. - Све остало можете прилагодити. Конкретно, инсталирам
locales
(кључеви складишта), реконфигуришите локале и временску зону (dpkg-reconfigure locales tzdata
). Не заборавите да поставите лозинку помоћу командеpasswd
. - Поставите лозинку за
root
тимpasswd
. - Припрема слике за мене се завршава пуњењем
/etc/fstab
унутар/mnt/
.
Учитаваћу у складу са претходно креираним ознакама, тако да ће садржај бити овакав:
ЛАБЕЛ=РООТФС / аутоматске грешке=ремоунт-ро 0 1
ЛАБЕЛ=БООТ /аутоматско покретање подразумевано 0 0
Коначно, можете монтирати партицију за покретање, биће нам потребна за кернел: `моунт /дев/ммцблк0п1 /мнт/боот/`
Линук буилд
Да бисте направили језгро (а затим и покретач) на Дебиан тестирању, потребно је да инсталирате стандардни скуп датотека заглавља ГЦЦ, ГНУ Маке и ГНУ Ц библиотеке за циљну архитектуру (за мене armhf
), као и ОпенССЛ заглавља, конзолни калкулатор bc
, bison
и flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Пошто подразумевани учитавач тражи датотеку zImage
на систему датотека партиције за покретање, време је да поделите флеш диск.
- Предуго је потребно за клонирање кернела, па ћу само преузети:
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/
- И датотеке са ДевицеТрее (опис хардвера на плочи):
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/
Дас У-Боот
Пошто је боотлоадер интерактиван, све што требате да тестирате његов рад је сама плоча, уређај за складиштење и опционо УСБ-то-УАРТ уређај. То јест, кернел и ОС можете одложити за касније.
Огромна већина произвођача нуди употребу Дас У-Боот-а за почетно покретање. Пуна подршка се обично пружа у њиховој сопственој виљушки, али они не заборављају да допринесу узводном. У мом случају, плоча је подржана у
Хајде да саставимо сам боотлоадер:
- Клонирамо стабилну грану спремишта:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Идемо у сам директоријум:
cd u-boot
- Припрема конфигурације изградње:
make mx6ull_14x14_evk_defconfig
. Ово функционише само ако је конфигурација у самом Дас У-Боот-у, иначе ћете морати да пронађете конфигурацију произвођача и ставите је у корен спремишта у датотеци.config
, или саставите на било који други начин који препоручује произвођач. - Саму слику покретача састављамо помоћу унакрсног компајлера
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Као резултат добијамо датотеку u-boot.imx
, ово је готова слика која се може уписати на флеш диск. Пишемо на СД картицу, прескачући првих 1024 бајта. Зашто сам изабрао Таргет u-boot.imx
? Зашто сам пропустио тачно 1024 бајта? То је оно што они предлажу да ураде у
Готово, можете покренути. Боотлоадер мора да пријави своју верзију, неке информације о плочи и покуша да пронађе слику кернела на партицији. Ако не успе, покушаће да се покрене преко мреже. Генерално, излаз је прилично детаљан, можете пронаћи грешку ако постоји проблем.
Уместо закључка
Да ли сте знали да чело делфина није кошчато? То је буквално треће око, масно сочиво за ехолокацију!
Извор: ввв.хабр.цом