RISC-V クラウド テスト プラットフォーム: Fedora Linux カーネルを RISC-V 上でネイティブにコンパイルする

写真

写真

 注: Fedora のコンパイルでは、HS-2 64 コア RISC-V サーバーは Ryzen5700x の 2 倍高速です。

---以下、ブログ本文です--- 

# Fedora Linux カーネルを RISC-V 上でネイティブにコンパイルする

## Fedora RISC-V のサポート

Fedora では、RISC-V ハードウェアをサポートするための作業が進行中です。現時点では、Fedora のドキュメントには、SiFive HiFive Unleashed にディストリビューションをインストールする方法のみが公式に示されています。 

ボード。Fedora によって非公式にサポートされている別のボードがありますが。このボードは、Project Andre と Fedora の開発のために購入する予定の Sispeed LicheePi 4A です。

## PerfXLab システムでの Fedora Chroot 環境のセットアップ

PerfXLab RISC-V サーバーは Ubuntu 22.10 を実行しているため、カーネルをコンパイルするための Fedora 環境を取得するには少し工夫が必要でした。コンテナまたは chroot 環境が必要であることはわかっていました。

ビルドで問題が発生したり、ホスト システムを汚染したりしないように、適切なビルド環境に入ることができます。

私はまず、chroot 環境として使用する、コンパイル済みの RISC-V Fedora rootfs を探しました。検索中に、事前に構築された RISC-V RAW イメージを見つけました。この生のイメージは完璧でした!そうだった

本質的には、偶然にも Licheepi 4A および T-Head バリアント用にもともと設計された既製の rootfs です。 

イメージを PerXLab システムにダウンロードしたら、生のイメージをループバック デバイスとしてマウントし始めました。RAW 画像を分析する最も簡単な方法の 1 つは、次の簡単なハックを実行することです。そして私は・・・それから私は

ルート パーティション (通常は最大のパーティション) を見つけてマウントしたので、そこへの chroot 作業を行うことができます。 

パーティションをマウントしたら、完全に機能する chroot 環境の前提条件のセットアップを開始しました。私はよくやるように、Trust Linux From Scratch の本を参照しました。

この種の作業を開始し、仮想カーネル ファイルシステムのマウントを開始しました。 

「」

# コマンドの実行を簡単にするためです:)

LFS="/home/maxinehayes90/fedora_rv_mnt"

# /dev を設定します

sudo mount -v --bind /dev $LFS/dev

# 仮想カーネルファイルシステムをマウントする

mount -v --bind /dev/pts $LFS/dev/pts

mount -vt proc proc $LFS/proc

マウント -vt sysfs sysfs $LFS/sys

マウント -vt tmpfs tmpfs $LFS/実行

「」

/dev と VKFS がマウントされたので、単に ``sudo chroot $LFS /bin/bash`` を実行するだけで、Fedora rootfs に chroot できるようになります。chroot でネットワークがあるかどうかを必ずテストしました

パッケージの dnf 検索を実行して接続します。dnf がメタデータをダウンロードできないというエラーが発生したため、ホスト上の /etc/resolv.conf を chroot 環境にコピーするようにしました。

その後、シンボリックリンクであるためにコピーできないという問題に遭遇しました。シンボリックリンクをたどってみると、それが /run/systemd/resolve/stub-resolv.conf を指していることがわかりました。コピーしました

このファイルを /etc/resolv.conf として chroot にコピーします。成功!Dnf はメタデータをダウンロードできました。 

## Chroot 環境での Fedora カーネルの構築

Fedora の場合は、RISC-V パッケージ ビルドを提供する Koji があります。http://fedora.riscv.rocks/koji/ でホストされている Koji にアクセスし、wget を使用してカーネル ソース RPM を chroot にダウンロードしました。

カーネル ソースを構築するために、最初にモックをインストールし、RISC-V 構成を探しました。残念ながら、/etc/mock には見つかりませんでした。それがわかった後、rpmbuild を使用してプラン b を選択しました。 

rpmbuild でソースコードをビルドするには、まず ``dnf builddep SPECS/kernel.spec`` を使用して、specfile に必要な依存関係をインストールする必要がありました。それが完了したら、カーネルを構築する準備が整いました。```time rpmbuild -bb SPECS/kernel.spec``` を使用してビルドを開始し、エラーが発生するかどうかを確認するために数分間待機しましたが、約 7 分後にエラーが発生しました。それで私は別のものを試してみました

同じ問題が発生したカーネルのバージョン。しばらく離れてから、エラーが何であるかを理解しました。chroot のディスク容量が不足してしまいました。 

私がマウントして chroot したルート パーティションのサイズはわずか数ギガバイトで、カーネルを構築するときにこの詳細を忘れていました。問題を解決するために私がしたことは、すべてをアンマウントすることでした

仮想カーネル ファイルシステムと /dev の。次に、マウントされた rootfs をホスト上のディレクトリにコピーしました。その後、VKFS を再マウントし、ビルドを再開した場所に chroot で戻りました。

ビルドを再開したら、別のエラーが発生するかどうかを確認するために、再び約 20 分間座って待ちました。間違いの可能性はないと確信したとき、私は立ち去った

翌日戻ってくると、問題なくビルドされていることがわかりました。驚いたことに、ビルドが完了するまでに 1 時間 37 分かかりました。

## リソース

使用画像: https://openkoji.iscas.ac.cn/pub/dl/riscv/T-Head/th1520_light/images/fedora-disk-minimal_thead_th1520-f38-20230511-210358.n.0-sda.raw.xz

Fedora T-Head ドキュメント: https://fedoraproject.org/wiki/Architectures/RISC-V/T-Head

Linux フロムスクラッチ VKFS ページ: https://www.linuxfromscratch.org/lfs/view/stable/chapter07/kernfs.html

PerfXLab (RISC-V サーバーへのアクセスを許可してくれた Paul Wang に感謝します!): http://www.perfxlab.com/

  • HS-2について

HS-2 RISC-V ユニバーサル マザーボードは、Pengfeng Technology とそのパートナーが共同開発した開発者向けに設計された標準 mATX マザーボードで、Pengfeng Technology が RISC-V 高性能サーバー用にカスタマイズおよび開発したソフトウェア パッケージがプリインストールされています。さまざまな標準ベンチマークを含み、V 拡張機能をサポート

GCC コンパイラー、コンピューティング ライブラリ、ミドルウェア、およびさまざまな典型的なサーバー アプリケーション。

HS-2 RISC-Vユニバーサルマザーボードは、国産RISC-V 64コアプロセッサ(SG2042)を搭載しています。SG2042 は、現在量産されている最高性能の RISC-V プロセッサであり、主に高性能コンピューティングのニーズに合わせて設計されており、科学コンピューティング、エンジニアリング コンピューティング、AI コンピューティング、フュージョン コンピューティングなどの大規模なコンピューティング能力アプリケーション シナリオに適しています。 。

写真

RISC-V パブリック テスト クラウド プラットフォームに関する一連の記事

1.  RISC-Vパブリックベータプラットフォームリリース・ストリーム帯域幅完全テスト

2.  RISC-Vパブリックベータプラットフォームがリリース・Minecraft MohistMC

3.  RISC-Vパブリックベータプラットフォームリリース・初のWEBサーバー「Hello RISC-V world!」

4.  RISC-Vパブリックベータプラットフォームがリリース・SG2042でk3sをプレイする方法

5.「RISC-V成長日記」ブログ公開、RISC-Vサーバー上で稼働する初のブログ?

6.  RISC-V パブリック ベータ プラットフォームがリリースされました: SG2042 で OpenMPI をプレイする方法

7. RISC-V パブリック ベータ プラットフォームがリリースされました: Fedora Linux カーネルを RISC-V でネイティブにコンパイルする (この記事)

 

おすすめ

転載: blog.csdn.net/weixin_45571628/article/details/132172502