Comment compiler et exécuter un noyau ARMLinux
1. Objectif de l'expérience
Grâce à cette expérience, apprenez à compiler une version ARM de l'image du noyau et à l'exécuter sur la machine virtuelle QEMU.
2. Étapes expérimentales
Afin d'accélérer le processus de développement, ARM fournit la plateforme de développement VersatileExpress. Les clients peuvent développer des prototypes de produits basés sur la plateforme VersatileExpress. En tant qu'apprenant individuel, il n'est pas nécessaire d'acheter la plateforme de développement VersatileExpress ou d'autres cartes de développement ARM. Vous pouvez utiliser QEMU pour simuler la plateforme de développementlinux et développer arm, ce qui peut également atteindre l'objectif d'apprentissage.
(1) Outils de planification
Téléchargez le package de codes ci-dessous.
(2) Compiler un système de fichiers minimal
Tout d’abord, compilez manuellement un système de fichiers minimal avec busybox.
$ cd busybox $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make menuconfig
Après avoir entré menuconfig, configurez-le en compilation statique.
Busybox Settings ---> Build Options ---> [*] Build BusyBox as a static binary (no shared libs)
Une fois make&&makeinstall compilé, il y aura un répertoire "_install" dans le répertoire racine de busybox, qui stocke certains jeux de commandes requis par le système de fichiers compilé.
Copiez le répertoire _install dans le répertoire linux-4.0. Entrez dans le répertoire _install et créez d’abord etc, dev et d’autres répertoires.
#mkdir etc #mkdir dev #mkdir mnt #mkdir –p etc/init.d/
Créez un nouveau fichier rcS dans le répertoire _install/etc/init.d/ et écrivez le contenu suivant.
mkdir –p /proc mkdir –p /tmp mkdir -p /sys mkdir –p /mnt /bin/mount -a mkdir -p /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev –s
La modification du fichier _install/etc/init.d/rcS nécessite des autorisations exécutables, qui peuvent être obtenues en utilisant la commande chmod, telle que "chmod+x_install/etc/init.d/rcS".
Créez un nouveau fichier fstab dans le répertoire _install/etc et écrivez le contenu suivant.
proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0 debugfs /sys/kernel/debug debugfs defaults 0 0
Créez un nouveau fichier inittab dans le répertoire _install/etc et écrivez le contenu suivant.
::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh ::askfirst:-/bin/sh ::ctrlaltdel:/bin/umount -a –r
Créez le nœud de périphérique suivant dans le répertoire _install/dev Linux development arm, les autorisations root sont alors requises.
$ cd _install/dev/ $ sudo mknod console c 5 1 $ sudo mknod null c 1 3
(3) Compiler le noyau
$ cd linux-4.0 $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make vexpress_defconfig $ make menuconfig
配置initramfs,在initramfssourcefile中填入_install,并把Defaultkernelcommandstring清空。
General setup ---> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support (_install) Initramfs source file(s) Boot options --> ()Default kernel command string
配置memorysplit为“3G/1Guser/kernelsplit”,并打开高档显存。
Kernel Features ---> Memory split (3G/1G user/kernel split) ---> [ *] High Memory Support
开始编译内核。
$ make bzImage –j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- $ make dtbs
(4)运行QEMU虚拟机
运行QEMU虚拟机来模拟4核Cortex-A9的VersatileExpress开发平台。
$ qemu-system-arm -M vexpress-a9 -smp 4 -m 200M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic
运行结果与实验3相同。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!