tl; dr: Ndikupanga chithunzi cha Kali Linux pakompyuta ya ARM, mu pulogalamuyi debootstrap
, linux
ΠΈ u-boot
.
Ngati mudagula pulogalamu ya bolodi yomwe si yotchuka kwambiri, mutha kukumana ndi kusowa kwa chithunzi cha zomwe mumakonda kuzigawa. Pafupifupi chinthu chomwecho chinachitika ndi
Njira yotsitsa ndiyosavuta:
- Hardware imayambitsidwa.
- Kuchokera kumalo ena pa chipangizo chosungira (SD card/eMMC/etc) bootloader imawerengedwa ndi kuchitidwa.
- Bootloader imayang'ana kernel yogwiritsira ntchito ndikuyiyika kumalo ena okumbukira ndikuichita.
- Kernel imanyamula OS yonse.
Izi mlingo mwatsatanetsatane ndi zokwanira ntchito yanga, mukhoza kuwerenga mwatsatanetsatane
Kupanga mizu file system
Choyamba muyenera kukonzekera magawo. Das U-Boot imathandizira mafayilo osiyanasiyana, ndinasankha FAT32 /boot
ndi ext3 ya mizu, iyi ndiye mawonekedwe azithunzi a Kali pa ARM. Ndigwiritsa ntchito GNU Parted, koma mutha kuchita zomwezo mwanjira yodziwika bwino fdisk
. Mudzafunikanso dosfstools
ΠΈ e2fsprogs
kupanga fayilo ya fayilo: apt install parted dosfstools e2fsprogs
.
Timalemba khadi la SD:
- Lembani khadi la SD ngati kugwiritsa ntchito magawo a MBR:
parted -s /dev/mmcblk0 mklabel msdos
- Pangani gawo pansi
/boot
pa 128 megabytes:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. Megabyte yoyamba yomwe idaphonya iyenera kusiyidwa kuti ipangike yokha komanso ya bootloader. - Timapanga mizu yamafayilo amtundu wonse wotsalira:
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Ngati mwadzidzidzi mafayilo anu ogawa sanapangidwe kapena sanasinthidwe, muyenera kuthamanga `partprobe`, ndiye kuti tebulo la magawo lidzawerengedwanso.
- Pangani dongosolo la fayilo la magawo a boot ndi chizindikiro
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Pangani mizu ya fayilo yokhala ndi chizindikiro
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Zabwino, tsopano mutha kuzidzaza. Kwa izi mudzafunikanso debootstrap
, chida chopangira ma fayilo a mizu yamakina ogwiritsira ntchito ngati Debian: apt install debootstrap
.
Timasonkhanitsa FS:
- Ikani partition mkati
/mnt/
(gwiritsani ntchito malo okwera osavuta):mount /dev/mmcblk0p2 /mnt
- Timadzaza fayilo yamafayilo:
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. Parameter--include
ikuwonetsa kuwonjezeranso ma phukusi ena, ndidatchula emulator ya QEMU yomangidwa mokhazikika. Zimakuthandizani kuti muzichitachroot
m'malo a ARM. Tanthauzo la zosankha zotsalira zitha kupezeka muman debootstrap
. Musaiwale kuti si gulu lililonse la ARM lomwe limathandizira kamangidwe kakearmhf
. - Chifukwa cha kusiyana kwa zomangamanga
debootstrap
ikuchitika mu magawo awiri, yachiwiri ikuchitika motere:chroot /mnt/ /debootstrap/debootstrap --second-stage
- Tsopano muyenera kuwononga:
chroot /mnt /bin/bash
- Timadzaza
/etc/hosts
ΠΈ/etc/hostname
cholinga FS. Lembani zofanana ndi zomwe zili pa kompyuta yanu, ingokumbukirani kusintha dzina la alendo. - Mutha kusintha zina zonse. Makamaka, ndimayika
locales
(makiyi osungira), sinthaninso madera ndi nthawi yanthawi (dpkg-reconfigure locales tzdata
). Musaiwale kukhazikitsa mawu achinsinsi ndi lamulopasswd
. - Khazikitsani mawu achinsinsi
root
gulupasswd
. - Kukonzekera kwa fano kwa ine kumathera ndi kudzazidwa
/etc/fstab
mkati/mnt/
.
Ndiyika molingana ndi ma tag omwe adapangidwa kale, kuti zomwe zilimo zikhale motere:
LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /zosintha zokha zokha 0 0
Pomaliza, mutha kuyika gawo la boot, tidzalifuna pa kernel: `mount /dev/mmcblk0p1 /mnt/boot/`
Kupanga kwa Linux
Kuti mupange kernel (ndiyeno bootloader) pa Kuyesa kwa Debian, muyenera kukhazikitsa ma GCC, GNU Make ndi mafayilo amutu a GNU C Library pazomanga zomwe mukufuna (kwa ine. armhf
), komanso mitu ya OpenSSL, chowerengera chotonthoza bc
, bison
ΠΈ flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. Popeza chosasintha Loader amayang'ana wapamwamba zImage
pa fayilo ya gawo la boot, ndi nthawi yogawanitsa flash drive.
- Zimatenga nthawi yayitali kuti mupange kernel, kotero ndingotsitsa:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. Tiyeni titulutse ndikupita ku source directory:tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- Konzani musanaphatikize:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. Ma config ali mu chikwatuarch/arm/configs/
. Ngati palibe, mutha kuyesa kupeza ndikutsitsa yomwe idapangidwa kale ndikudutsa dzina la fayilo mu bukhuli ngati parameter.KBUILD_DEFCONFIG
. Monga chomaliza, nthawi yomweyo pitani ku mfundo yotsatira. - Mwachidziwitso, mutha kusintha makonda:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- Ndipo phatikizani chithunzicho:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Tsopano mutha kukopera fayilo ya kernel:
cp arch/arm/boot/zImage /mnt/boot/
- Ndipo mafayilo ochokera ku DeviceTree (mafotokozedwe a hardware pa bolodi):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- Ndipo ikani ma module omwe amasonkhanitsidwa ngati mafayilo osiyana:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
Njere yakonzeka. Mutha kutsitsa chilichonse: umount /mnt/boot/ /mnt/
Ndi U-Boot
Popeza bootloader imagwira ntchito, zonse zomwe mukufunikira kuti muyese ntchito yake ndi bolodi lokha, chipangizo chosungirako, komanso chipangizo cha USB-to-UART. Ndiye kuti, mutha kuyimitsa kernel ndi OS pambuyo pake.
Ambiri opanga amapereka kugwiritsa ntchito Das U-Boot pa boot yoyamba. Thandizo lathunthu nthawi zambiri limaperekedwa mphanda yawo, koma samayiwala kuthandizira kumtunda. Kwa ine, bolodi imathandizidwa mu
Tiyeni tisonkhanitse bootloader yokha:
- Timagwirizanitsa nthambi yokhazikika ya repository:
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Tiyeni tipite ku chikwatu chomwechi:
cd u-boot
- Kukonzekera dongosolo la kumanga:
make mx6ull_14x14_evk_defconfig
. Izi zimangogwira ntchito ngati kasinthidwe kali mu Das U-Boot palokha, apo ayi muyenera kupeza masinthidwe a wopanga ndikuyika muzu wa chosungira mufayilo..config
, kapena kusonkhanitsa m'njira ina iliyonse yovomerezedwa ndi wopanga. - Timasonkhanitsa chithunzi cha bootloader palokha pogwiritsa ntchito cross-compiler
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
Chifukwa chake timapeza fayilo u-boot.imx
, ichi ndi chithunzi chokonzekera chomwe chingalembedwe ku flash drive. Timalembera ku khadi la SD, kudumpha ma byte 1024 oyamba. Chifukwa chiyani ndasankha Target u-boot.imx
? Chifukwa chiyani ndaphonya ndendende ma byte 1024? Izi ndi zomwe akufuna kuchita
Mwamaliza, mukhoza kuyamba. Bootloader iyenera kufotokoza mtundu wake, zambiri za bolodi, ndikuyesera kupeza chithunzi cha kernel pagawo. Ngati sichikuyenda bwino, iyesa kuyambitsa pa netiweki. Ambiri, linanena bungwe mwatsatanetsatane, mukhoza kupeza cholakwika ngati pali vuto.
M'malo mapeto
Kodi mumadziwa kuti chipumi cha dolphin sichimafupa? Ndilo diso lachitatu, lens yamafuta ya echolocation!
Source: www.habr.com