プログラミング
RISC-VエミュレータとLinuxシステムをゼロから構築
RISC-V Emulator and Linux System from Scratch (github.com)
要約
このリポジトリは、RISC-Vアーキテクチャ上でLinuxシステムをゼロから構築するプロセスを解説したブログ記事に付随するソースコードを提供します。rv32ima命令セットエミュレータ、最小限のエミュレートデバイス、Linuxビルドに必要な設定ファイル、カーネル設定、デバイスツリー、初期化プログラムなどが含まれています。
全文翻訳
RISC-VエミュレータとLinuxシステムをゼロから構築
このリポジトリには、https://werwolv.net/posts/linux_bringup/ のブログ記事をフォローするために必要なすべてのソースコードが含まれています。
ソースコード
/lib には、完全な rv32ima 命令セットエミュレータコードと、最小限のエミュレートされたデバイスセットが含まれています。
/main には、マシンの設定と WebAssembly 用に公開される関数が含まれています。
設定
Linuxをビルドするために必要なすべての設定ファイルは /boot にあります。メインの実行可能ファイルは、ビルドされたすべてのバイナリが boot フォルダ内にあることを期待します。
riscv32-unknown-linux-gnu.config は crosstool-ng ツールチェインの設定ファイルです。
riscv_emulator_defconfig は Linux カーネルの設定ファイルです。
device_tree.dts は最小限のデバイスツリーです。dtc -I dts -O dtb device_tree.dts -o device_tree.dtb を使用して dtb にコンパイルできます。
init.c は初期化プログラムです。riscv32-unknown-linux-gnu-gcc -static init.c -o init を使用してコンパイルできます。
initramfs.txt は initramfs を生成するための gen_init_cpio 設定ファイルです。usr/gen_init_cpio initramfs.txt -o initramfs.cpio を使用して cpio にコンパイルできます。