126 ポイント 投稿者 GN⁺ 2025-01-09 | 14件のコメント | WhatsAppで共有
  • この本は、小さなオペレーティングシステムをゼロから段階的に構築する方法を説明する
  • オペレーティングシステム(OS)やカーネル開発という言葉に気後れするかもしれないが、OSの基本機能(特にカーネル)は驚くほどシンプル
  • Linuxも当初は8,413行のコードから始まり、今日のLinuxカーネルは非常に大規模になったが、趣味プロジェクトのような小さなコードベースから出発した

はじめに

  • 基本的なコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書き処理をC言語で実装していく
  • これらすべてが1,000行のコードで可能
  • OSを自作するうえで最も難しい部分はデバッグ
  • printfデバッグを実装するまではそれすら使えず、アプリケーション開発では必要なかったさまざまなデバッグ技法やスキルを学ぶ必要がある
  • 特に「ゼロから」始めると、ブートプロセスやページングのような難所に出会う
  • でも心配はいらない! OSのデバッグ方法も学べる
  • デバッグが難しいほど、成功したときの満足感は大きい
  • OS開発の魅力的な世界に飛び込もう!
広告

その他の情報

  • 実装例はGitHubからダウンロード可能。
  • この本はCC BY 4.0ライセンスで提供され、実装例とソースコードはMITライセンスで公開されている
  • C言語とUNIX系環境に慣れていて、gcc hello.c && ./a.outを実行できるなら準備完了
  • この本は、もともと日本語で書かれた『マイクロカーネルの設計と実装』の付録として作成された
  • 楽しいOSハッキングを!

本の目次

  1. Intro
  2. Getting Started
  3. RISC-V 101
  4. Overview
  5. Boot
  6. Hello World!
  7. C Standard Library
  8. Kernel Panic
  9. Exception
  10. Memory Allocation
  11. Process
  12. Page Table
  13. Application
  14. User Mode
  15. System Call
  16. Disk I/O
  17. File System
  18. Outro

14件のコメント

 
princox 2025-01-15

OSというものはいつも本でしか触れてこなかったのですが、実際のコードで見られるのがいいですね。

良い資料を共有していただき、ありがとうございます。

 
yuhyun 2025-01-13

良い資料をありがとうございます!!!!!!!!

 
reagea0 2025-01-10
  • この本は、もともと日本語で書かれた『マイクロカーネルの設計および実装』という本の付録として書かれたものです。

この話は本当にうらやましいですね。日本は専門書がとても多く、しかもしっかり出版されている気がします。やはり人口の問題なのでしょうか?

 
gurugio 2025-01-11

翻訳される本を見ると、技術的にかなり深いところまで語る本はないようですが、たださまざまな分野の本が出ているようではあります。やはり市場がもっと大きいから、そうなのだと思います。

 
romakus 2025-01-10

良い資料をありがとうございます。

 
skrevolve 2025-01-09

一度作ってみるか、理解できるレベルまで達すると、 後でLinuxシステムがどのように動いているのかが見えて、Linuxを扱うときに役立ちます

 
gurugio 2025-01-09

2000年代初頭までは、このように個人が小さなカーネルを作ってみるのが流行っていて、私もやってみましたし、そのおかげで数年間 Linux カーネル開発に携わることができました。国内でもオペレーティングシステムを作る本がたくさん出ていたので、よく探せばもっと詳しく説明している本を見つけられるはずです。
関連分野へ転職するのでなければ、単なる趣味としてやるのも悪くはありませんが、私なら最近は AI や k8s 関連の勉強会を勧めます。今でもたまに KLDP のようなところにカーネル開発者になりたいという書き込みが上がりますが、コメントを見ると、どれも海外に行けという話ばかりです。

 
bbulbum 2025-01-10

国内にはカーネルレベルに投資する会社がないから、そういうことなんでしょうね……?(笑)

 
gurugio 2025-01-11

必要がないからやらないのか、できないのかはよくわかりませんが、ないことは確かです。

 
coma333 2025-01-09

良い資料をありがとうございます。

 
tsboard 2025-01-09

こういう本こそ、武侠小説でいうところの武功秘伝書みたいなものなんでしょうね?(笑)

 
bbulbum 2025-01-09

とても興味深いですね。いつか一度システムプログラミングを勉強してみたいと思っていたのですが、最初の入り口として OS の動作についてプログラミングの観点から理解できそうだという期待が持てますね!

 
GN⁺ 2025-01-09
Hacker News の意見
  • 著者は週末にオペレーティングシステムを自作できるように本を書いており、CではなくRustやZigのような好きなプログラミング言語を使える

    • UNIXにあまり似せず必須の部分だけを残しており、LinuxやWindowsとの違いを考えるのも面白い
    • オペレーティングシステムを設計することは、自分だけの世界を作ることに等しい
    • 一部の段落は機械翻訳されたように感じられるかもしれず、時間があればPRを送ってほしいと求めている
    • コンテンツはMarkdownで書かれている
  • "hobby" オペレーティングシステムプログラミングの経験から、GDBのデバッグ設定はできるだけ早く追加するのがよい

    • QEMUには組み込みのGDBサーバーがあり、対象アーキテクチャ(riscv)のGDBクライアントをネットワーク経由でQEMU GDBサーバーに接続する必要がある
  • RISC-V向けの小さなオペレーティングシステムを作るのは素晴らしいと思う

    • 個人的にはNimでx86-64向けカーネルを書いており、JetBrainsプラグインを開発中
  • Rust愛好家にとっては、phil-oppのガイドは楽しい練習になるかもしれない

    • 最初に試したときは5%ほどしか理解できなかったが、2〜3年後に再挑戦して、トピックを一つずつ見直した
  • RISC-Vの勉強を始めたところで、読んでいる本で提供されているエミュレーターはQEMUより簡単で、奇妙なライセンスを持っている

    • 学術プロジェクトのように見えるが、実際に使われているのか気になる
  • xv6-riscvと比較するのは興味深そう

    • xv6本のHTML版が提供されている
  • 低レベルの議論はいつも興味深い

    • "RISC-V 101ページ"で小さな誤字を見つけたが、"ISA"ではなく"CPU"と誤記されている
  • オペレーティングシステム作成で最も厄介なのはデバッグ

    • 年齢を重ねるほど、複雑な専門知識を必要としない問題は反復的な試行で解決できると思うようになった
  • 2つのプロジェクトが言及されている

    • nuta/microkernel-book
    • mit-pdos/xv6-riscv
  • 良い資料なので、週末に読むために保存しておいた

 
mhcoma 2025-01-14

Nimでカーネルを……
面白そうですね。