開発環境
-
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-boot
Linux カーネルをブートせずに直接起動できます。 -
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 シェルを実行し、ユーザーのプログラムを実行する必要があります。