Configuration de l'environnement de développement Ubuntu 20.04 qemu arm64 linux6.3.8

environnement de développement

  • Ubuntu 20.04

  • VMware Workstation Pro 16

  • Basé sur qemu (émulateur), ARM64 : plate-forme virt cortex-a57

  • Build Linux 6.3.8 (dernière version actuelle)

Préparer

  • Téléchargement du noyau Linux, téléchargez la dernière version stable, actuellement linux-6.3.8, car il s'agit d'un émulateur qemu, vous pouvez essayer l'apprentissage et la vérification technique de la dernière version Linux

  • Adresse de téléchargement du noyau Linux https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/, vous pouvez également https://kernel.org/trouver la dernière version directement sur

  • aarch64 gccChaîne d'outils de compilation croisée, utilisez la plus récente ici : gcc-linaro-12.2.1-2023.04-x86_64_aarch64-linux-gnu.tar.xz, adresse de téléchargementhttps://snapshots.linaro.org/gnu-toolchain/12.2-2023.04-1/aarch64-linux-gnu/

insérez la description de l'image ici

installer qemu

  • Voici qemu installé sur l'ubuntu 20.04 de la machine virtuelle. Bien entendu, si les conditions le permettent, il peut être installé directement sur l'hôte ubuntu
$ sudo apt-get install qemu
$ sudo apt-get install qemu-system
$ qemu-system-aarch64 -M help   /* 查看支持的板子的列表 */

Utilisez la plate-forme ARM64 virt, qui est la plate-forme arm64 ou aarch64

  • Chaîne d'outils de compilation croisée

  • Décompressez gcc-linaro-13.0.0-2022.10-x86_64_arm-linux-gnueabihf.tar.xz
    /* Le répertoire où le compilateur croisé arm gcc est stocké, vous pouvez le mettre dans votre répertoire utilisateur home*/

mkdir /home/zhangsz/tools
tar xvf gcc-linaro-12.2.1-2023.04-x86_64_aarch64-linux-gnu.tar.xz -C /home/zhangsz/tools/
  • Ajouter à la variable d'environnement
/* 环境变量追加到 /etc/profie 中 */
$ sudo vim /etc/profile

/* 最后面追加 aarch64 gcc 交叉编译工具链的路径 */
export PATH=$PATH:/home/zhangsz/linux/tools/gcc-linaro-12.2.1-2023.04-x86_64_aarch64-linux-gnu/bin

/* 环境变量生效 */
$ source /etc/profile

insérez la description de l'image ici

  • Vérifiez la version actuelle de arm gcc

  • Entrez la commande shellaarch64-linux-gnu-gcc -v

insérez la description de l'image ici

Compiler le noyau Linux

  • Noyau Linux décompressé en Ubuntu
$ mkdir /home/zhangsz/linux
$ mkdir /home/zhangsz/linux/kernel

/* 解压缩 tar.gz 格式的 linux kernel 文件 */
$ tar xf linux-6.3.8.tar.xz -C /home/zhangsz/linux/kernel

Paramétrage et compilation

  • Installer certaines dépendances de package
/* ubuntu 根据需求安装一些依赖 */
$ sudo apt-get install bison
$ sudo apt-get install flex
$ sudo apt-get install make

/* arm64 平台的 默认配置文件,注意当前Linux arm64 下只有一个 defconfig 文件 */
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig

/* 直接编译,如果编译报错,安装依赖继续编译,直到编译完成 */
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8

Compiler le produit de Linux

  • Le produit est : linux-6.3.8/arch/arm64/boot/Image.gzoulinux-6.3.8/arch/arm64/boot/Image
/* 默认编译会生成 zImage */
/home/zhangsz/linux/linux-6.3.8/arch/arm64/boot/Image.gz  或者(Image 非压缩) 

/* 同时编译生成了 arm64 下的 设备树文件,注意是 dtb 文件,当前暂未使用到 */
/home/zhangsz/linux/linux-6.0.1/arch/arm64/boot/dts/arm/ 

qemu démarrer Linux

  • Parce que qemu est un émulateur, u-bootil peut démarrer directement le noyau Linux sans démarrer

  • Copiez le produit généré par le noyau Linux, c'est-à-dire Image.gz, dans un répertoire, tel que

Exécuter une commande :

#!/bin/bash
echo "---------- boot qemu ----------"
echo $1

sudo qemu-system-aarch64 \
        -M virt \
        -cpu cortex-a57 \
        -smp 4 \
        -m 4G \
        -kernel Image.gz \
        -nographic \
        -append "console=ttyAMA0"
  • Notez qu'il n'y a pas de système de fichiers racine rootfs ici, seul le noyau peut être démarré, puis il sera bloqué après le démarrage

insérez la description de l'image ici

insérez la description de l'image ici

  • ubuntu 20.04 qemu arm64 linux6.3.8 construction de l'environnement de développement partie du noyau Linux construction terminée

résumé

  • Ensuite, sur la base de busybox, vous devez créer le système de fichiers racine rootfs, exécuter le shell Linux sur la plate-forme qemu arm64 et exécuter le programme de l'utilisateur.

Je suppose que tu aimes

Origine blog.csdn.net/tcjy1000/article/details/131276422
conseillé
Classement