Ubuntu 20.04 qemu arm64 linux6.3.8 開発環境セットアップ

開発環境

  • ubuntu 20.04

  • VMware ワークステーション プロ 16

  • qemu (エミュレータ)、ARM64: virt Cortex-a57 プラットフォームに基づく

  • Linux 6.3.8 (現在の最新バージョン) をビルドします。

準備

  • Linux カーネルのダウンロード、最新の安定バージョン (現在 linux-6.3.8) をダウンロードします。これは qemu エミュレーターであるため、最新の Linux バージョンの学習とエンジニアリング検証を試すことができます。

  • Linux カーネルのダウンロード アドレス。最新バージョンは次の場所から直接見つけるhttps://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/こともできます。https://kernel.org/

  • aarch64 gccクロスコンパイル ツールチェーン。ここで新しいものを使用してください: gcc-linaro-12.2.1-2023.04-x86_64_aarch64-linux-gnu.tar.xz、ダウンロード アドレスhttps://snapshots.linaro.org/gnu-toolchain/12.2-2023.04-1/aarch64-linux-gnu/

ここに画像の説明を挿入

qemuをインストールする

  • ここでは、仮想マシンの ubuntu 20.04 に qemu をインストールしています。もちろん、条件が許せば、ubuntu ホストに直接インストールすることもできます。
$ sudo apt-get install qemu
$ sudo apt-get install qemu-system
$ qemu-system-aarch64 -M help   /* 查看支持的板子的列表 */

arm64 または aarch64 プラットフォームである ARM64 virt プラットフォームを使用します。

  • クロスコンパイルツールチェーン

  • Unzip gcc-linaro-13.0.0-2022.10-x86_64_arm-linux-gnueabihf.tar.xz
    /* arm gcc クロス コンパイラーが保存されているディレクトリ。ユーザー ディレクトリ 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/
  • 環境変数に追加
/* 环境变量追加到 /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

ここに画像の説明を挿入

  • 現在の arm gcc バージョンを確認する

  • シェルコマンドを入力しますaarch64-linux-gnu-gcc -v

ここに画像の説明を挿入

Linux カーネルをコンパイルする

  • Linux カーネルを 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

設定とコンパイル

  • いくつかのパッケージの依存関係をインストールする
/* 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

Linuxの製品をコンパイルする

  • 製品は次のとおりです:linux-6.3.8/arch/arm64/boot/Image.gzまたはlinux-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 で Linux を起動する

  • qemu はエミュレータであるため、u-bootLinux カーネルをブートせずに直接起動できます。

  • Linux カーネルによって生成された製品、つまり Image.gz を次のようなディレクトリにコピーします。

注文の実行:

#!/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"
  • ここには rootfs ルート ファイル システムはなく、カーネルのみを起動でき、起動後にスタックすることに注意してください。

ここに画像の説明を挿入

ここに画像の説明を挿入

  • ubuntu 20.04 qemu arm64 linux6.3.8 開発環境構築 Linux カーネル部分構築完了

まとめ

  • 次に、busybox に基づいて、ルート ファイル システム rootfs を作成し、qemu arm64 プラットフォーム上で Linux シェルを実行し、ユーザーのプログラムを実行する必要があります。

おすすめ

転載: blog.csdn.net/tcjy1000/article/details/131276422