

これは、ARMの64ビットARMV8-Aアーキテクチャを初めて使用するホビーOS開発者向けのチュートリアルシリーズです。このチュートリアルでは、 embedded system用のモノリシックオペレーティングシステムkernelゼロから書く方法のガイド付き、ステップバイステップツアーを提供します。シリアルコンソールへの書き込み、仮想メモリのセットアップ、HWの例外の処理など、一般的なオペレーティングシステムタスクの実装をカバーしています。安全性と速度を提供するために、 Rustのユニークな機能を活用しながら。
楽しむ!
よろしくお願いします、
アンドレ(@andre-richter)
PS:他の言語については、代替READMEファイルをご覧ください。たとえば、 README.CN.mdまたはREADME.ES.md 。翻訳者に感謝しますか?
kernelバイナリが含まれています。READMEは、追加の簡単な概要を示す短いtl;drセクションがあり、以前のチュートリアルにソースコードのdiff表示して、変更/追加を便利に検査できるようにします。tl;drセクションに加えて、本格的で詳細なテキストがあります。長期的な計画は、すべてのチュートリアルが全文を取得することですが、今のところ、これはtl;drとdiffアイデアを得るのに十分ではないと思うチュートリアルに限定されています。QEMUで実行するのが理にかなっている基礎コードです。UARTを超える出力を観察できます。make docコマンドもご覧ください。これにより、広範囲に文書化されたコードを便利な方法で閲覧できます。make docの出力
チュートリアルは、主にLinuxベースの分布を対象としています。ほとんどのものはMacOSでも機能しますが、これは実験的です。
Dockerエンジンをインストールします。
( Linuxのみ)ユーザーアカウントがDockerグループにあることを確認してください。
Rust Toolchainを準備します。そのほとんどは、Rust-Toolchain.TOMLファイルを介して最初の使用時に処理されます。私たちがするために残されているのは、次のとおりです。
rustのバージョンが既にインストールされている場合:
cargo install cargo-binutils rustfiltゼロからRustをインストールする必要がある場合:
curl --proto ' =https ' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME /.cargo/env
cargo install cargo-binutils rustfilt Visual Studio Codeを使用する場合は、Rust Analyzer拡張機能を強くインストールすることを強くお勧めします。
( MacOSのみ)いくつかのRuby Gemsをインストールします。
これは、 macOS MontereyでRubyバージョン3.0.2で著者によって最後にテストされました。 rbenvを使用している場合、それぞれの.ruby-versionファイルがすでに導入されています。 rbenvのことを聞いたことがない場合は、この小さなガイドを使用してみてください。
これをリポジトリルートフォルダーで実行します。
bundle config set --local path ' .vendor/bundle '
bundle config set --local without ' development '
bundle installこのシリーズは、ユーザーの親しみやすさに重点を置いています。したがって、埋め込まれた開発の最大の痛みを可能な限り排除する努力がなされました: Toolchain hassle 。
Rust自体は、相互コンパイルのサポートが組み込まれているため、その点ですでに大いに役立ちます。 x86ホストからRaspberry PIのAArch64アーキテクチャへのクロスコンパイルに必要なものはすべて、 rustupによって自動的にインストールされます。ただし、Rust Compilerに加えて、さらにツールを使用します。とりわけ:
QEMU 。Minipushと呼ばれるセルフメイドのツールで、 UARTの上でラズベリーPIオンデマンドにカーネルをロードします。OpenOCDおよびGDB 。ホストマシンに各ツールの正しいバージョンをインストールおよび/またはコンパイルする際に、問題が発生する可能性がたくさんあります。たとえば、分布は必要な最新バージョンを提供しない場合があります。または、これらのツールのいずれかを編集するために、依存が困難な依存関係が不足しています。
これが、可能な限りDockerを利用する理由です。必要なすべてのツールまたは依存関係が事前にインストールされた添付コンテナを提供しており、必要になると自動的に引っ張られます。 Dockerについて詳しく知り、提供されたコンテナを覗いてみたい場合は、リポジトリのDockerフォルダーを参照してください。
チュートリアルで開発されたカーネルは実際のハードウェアで実行されているため、完全なエクスペリエンスを得るためにUSBシリアルケーブルを取得することを強くお勧めします。
CP2102チップに基づいています。GNDおよびGPIOピン14/15に接続します。chainloaderが開発されています。これは、しばらくの間、SDカードに手動でコピーする必要がある最後のファイルになります。これにより、 UARTを介してデマンドでブート中にチュートリアルカーネルをロードできます。 
チュートリアルのオリジナルバージョンは、 CのRPI3に関する裸のメタルプログラミングに関するZoltan Baldasztiの素晴らしいチュートリアルのフォークとして始まりました。私に有利なスタートを与えてくれてありがとう!
いずれかの下でライセンスされています
あなたのオプションで。
明示的に特に述べない限り、Apache-2.0ライセンスで定義されているように、お客様による仕事に含めるために意図的に提出された貢献は、追加の条件なしで、上記のように二重ライセンスを取得するものとします。