Maison >Tutoriel système >Linux >Objectif de l'expérience de développement de prototypes de produits de machines virtuelles polyvalentes : apprendre à compiler grâce à cette expérience

Objectif de l'expérience de développement de prototypes de produits de machines virtuelles polyvalentes : apprendre à compiler grâce à cette expérience

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBavant
2024-03-29 08:16:12938parcourir

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é.

linux 开发arm_开发linux软件_开发linux系统

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.

开发linux系统_linux 开发arm_开发linux软件

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

开发linux系统_linux 开发arm_开发linux软件

$ 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer