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 égalementhttps://kernel.org/
trouver la dernière version directement sur -
aarch64 gcc
Chaî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/
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
-
Vérifiez la version actuelle de arm gcc
-
Entrez la commande shell
aarch64-linux-gnu-gcc -v
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.gz
oulinux-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-boot
il 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
- 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.