7 ポイント 投稿者 GN⁺ 2024-09-15 | 1件のコメント | WhatsAppで共有
  • Blog OS リポジトリには、os.phil-opp.com の Writing an OS in Rust シリーズで使われるソースコードが収められている
  • 各記事のコードは個別の git branch にあり、記事に沿って進めた後の途中状態を確認できる
  • 現在の第2版の記事は Bare Bones、Interrupts、Memory Management、Multitasking のカテゴリで構成され、最新記事のコードは post-12 ブランチにある
  • ブランチ名は post-XX 形式で、例えば post-03VGA Text Modepost-07Hardware Interrupts 記事のコード
  • 第1版は現在メンテナンスされていないが、今でも参考にでき、プロジェクトコードは blog/content フォルダを除き Apache-2.0 または MIT のいずれかを選べるライセンスを採用している

Blog OS リポジトリの目的

  • このリポジトリは Writing an OS in Rust シリーズの ソースコード を提供する
  • 質問は GitHub issue を開くか、Gitter チャットで行える

記事ごとのコード構成

  • 各記事のコードは個別の git branch にある
    • 記事に沿って進めた後の途中状態を確認できる
    • 最新記事のコードは post-12 にある
  • 各記事のブランチは、以下の記事一覧の (source code) リンクから確認できる
  • ブランチ名は post-XX 形式を使う
    • post-03: VGA Text Mode
    • post-07: Hardware Interrupts
  • ビルド方法は各ブランチの README を参照する必要がある
  • git worktree を使うと、特定のブランチをサブディレクトリにチェックアウトできる
git worktree add code post-10
  • 上のコマンドは、10本目の記事である Heap Allocation のコードを含む code サブディレクトリを作成する

現在のエディションの記事一覧

第1版

  • 現在のブログは 第2版
  • 第1版は古く、もうメンテナンスされていないが、今でも役立つ可能性がある
  • 第1版には Bare Bones、Memory Management、Exceptions、Additional Resources のカテゴリの記事が含まれる

ライセンスとコントリビューション

  • blog/content フォルダを除くプロジェクトは、ユーザーが選択して Apache License 2.0 または MIT license として利用できる
  • blog/content フォルダのライセンスは blog/content/README.md を参照する必要がある
  • 別途明記されていない限り、取り込みを意図して提出されたコントリビューションは、Apache-2.0 の定義に従い、追加条件なしで上記の デュアルライセンス が適用される

1件のコメント

 
GN⁺ 2024-09-15
Hacker Newsのコメント
  • 数年前に第2版を最後まで読んだが、本当に目が開かれる内容だった
    オペレーティングシステム開発の説明として優れているだけでなく、Rust本を読んだ後にRustをさらに学ぶための資料としても有用だった
    著者はRustのイディオムをよく理解していて、自分ならどう書くかと比べながらコードでどう表現するかを見るのも学ぶ点が多かった。特に、Rustでfutureがどのように実装されるかを説明した async-await in Rust は、このテーマで見た中で最高だった
    Philがもう一度やる気を取り戻して、EFIベースの第3版の作業を続けてくれるといいのだが。Gitブランチのコミットを見る限り止まっているように見えるし、GitHub Sponsorsも1年ほど支援していたが、「This Month In Rust OSDev」の記事で名前が出てこないのを見るたびに残念だった
    それでも第2版は週末の開発時間を過ごすのに素晴らしい教材で、注がれた努力がはっきり伝わってくる

  • 5年前にこのチュートリアルを終えたあとMOROSの開発を始めたが、Rustとオペレーティングシステム開発に興味がある人には強く勧めたい
    Philは本当に多くの労力を注いでいて、それがよく表れている。このプロジェクトは多くの内容を扱っており、その後は osdev wiki に進むこともできる
    MOROS: http://moros.cc, https://github.com/vinc/moros

    • かなり良さそう。これまではxv6が一番気に入っていたプロジェクトだった。コードベースがほどよく小さくて数週間で理解でき、パッケージマネージャーが提供する標準のGCCでビルドできるので、ソースからカスタムGCCをビルドする必要がなく、しかもユーザー空間もあるからだ
      MOROSもこの条件を満たしていそうなのでブックマークした
    • http://moros.cc にはTLSがないのか? :(
    • 以前からRSSフィードを購読しているが、MOROSは本当に素晴らしいプロジェクトに見える
      ただ、なぜかQEMUで起動しないのでまだ試せておらず、OS自体よりこちら側の問題である可能性が高いと思う
  • Rustとオペレーティングシステム開発を深く掘り下げたあとで今日この資料を見つけたが、コンテンツの質に感心した
    オペレーティングシステムの歴史や設計を多く学べる一方で、Rustの要素も自然に身につく。Philは本当に素晴らしい仕事をした

  • Rustconfから戻ったばかりだが、Rust界隈には主要なOSリリースがざっと5つほどあり、特にリアルタイムに焦点を当てたものが多いようだった
    ただし、すべてがオープンソースというわけではない

    • 主要な**リアルタイムオペレーティングシステム(RTOS)**としては Tock-OS、Oxid-OS(Tock-OSの安全性重視版で、freertos/safertos に近い位置づけ)、Oxide Computers の Hubris がある。Embassy と RTIC はベアメタルシステムでのスケジューリングやリソース管理によく使われるフレームワークだが、従来型のRTOSではない
      このほかにも、よりニッチなものや公開されていないものがある
      従来型のオペレーティングシステム、つまりリアルタイムではない分野では Redox が代表的で、このガイド/投稿の Blog OS を含め、研究・実験・教育向けのOSも多くある
  • この一連の記事の初版を特に勧めたい
    現行版は専用クレートでブートローディング全体を処理してしまうので、少し助けすぎな感じがした

    • ブートローディング部分を飛ばせるやり方があるのは気に入った
      このコメントを見て、実際に一度やってみたくなった。遊びで小さなOSを作ってみたいが、何かができるまともなマシン状態に到達するために呪文のような手順を踏まなければならない部分は好きではない
      もちろん、それが悪いということではなく、どの部分を楽しむかは人それぞれだ
  • この資料のおかげで2021年にRustを始めることになり、このような資料があることに本当に感謝している

  • Philのオペレーティングシステム開発記事はいつも読みやすい

  • 来月のGOSIMカンファレンスで発表するらしい
    https://china2024.gosim.org/speakers#philipp-oppermann
    直接会って話せたらいいのだが

  • https://harvey-os.org/ は引退しており、チームは現在こちらのプロジェクトに取り組んでいる: https://github.com/r9os/r9

  • プロの開発者ではないが、「Yの上にXを書く」という表現を見ると、Ryan Reynoldsの「But why?」ミームを思い出す: https://screenrant.com/ryan-reynolds-but-why-gif-harold-kuma...
    学習目的ならいくらでもやってよいと思う。コーディングは多くやるほど上達する
    付け加えると、MOROSはプロジェクトもページも素晴らしく見える