Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSカーネルに興味がある人におすすめの参考資料

 OSカーネルに興味がある人におすすめの参考資料

以下動画のテキストです
https://youtu.be/XXtZy6OhjUI

# 訂正

「12ステップで作る組込みOS自作入門」のCPUアーキテクチャをARMと言っていましたが正しくはH8です。

# 紹介した書籍一覧

コンピュータの構成と設計 MIPS Edition 第6版
https://amzn.to/3oXiUgA

はじめて読む486
https://amzn.to/42AT287

Linuxのしくみ
https://amzn.to/3qDtCcD

オペレーティングシステム 設計と実装 第3版
https://amzn.to/3N33kYz

Operating Systems Design and Implementation, 3rd edition
https://www.pearson.com/en-us/subject-catalog/p/operating-systems-design-and-implementation/P200000003167/9780133002058

30日でできる! OS自作入門
https://amzn.to/3qEGCyD

ゼロからのOS自作入門
https://amzn.to/43KIHYg

12ステップで作る組込みOS自作入門
https://amzn.to/3CkX3Ti

動かしながらゼロから学ぶ Linuxカーネルの教科書
https://amzn.to/45YoIHd

Linux Kernel Development 3rd edition
https://amzn.to/3S7GNMo

Linux Kernel Programming
https://amzn.to/3k4S3ww

Linux Kernel Programming part2
https://amzn.to/45ZD366

Linux Kernel Programming 2nd edition
https://amzn.to/43PMTWv

# 紹介したWebサイト一覧

osdev wiki
https://wiki.osdev.org/Expanded_Main_Page

osdev-jp
https://osdev.jp/

osdev-jp wiki
https://github.com/osdev-jp/osdev-jp.github.io/wiki

multibootの仕様
https://www.gnu.org/software/grub/manual/multiboot/multiboot.html

xv6
https://pdos.csail.mit.edu/6.828/2022/xv6.html

linux insides
https://0xax.gitbooks.io/linux-insides/content/

Linux Kernel Newbies
https://kernelnewbies.org/

Satoru Takeuchi

June 11, 2023
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. はじめに • OSカーネルに興味がある人におすすめの参考資料を紹介 ◦ 書籍 ◦ Webサイト • 前提 ◦

    PC(x86_64)上で動作させるものを想定 ▪ 一か所例外的にARMのものが出てくる ◦ Linux上で基本的なコマンド操作や Cライク言語を使ったプログラミングできる人向け ◦ 仮想化技術やコンテナ技術など高度な機能は対象外
  2. OSカーネルへの興味といっても色々ある • 考えられるもの ◦ 自作OSを作りたい! ◦ 既存のOSカーネルを改造してみたい ! ◦ 既存OSカーネルの開発に参加したい

    ! ◦ 上記のものには興味がないが知識として知っておきたい ! ◦ その他 • 本書が対象とするもの ◦ 自作OSの作成 ◦ Linuxの改造 ◦ Linux開発への参加(ちょっとだけ)
  3. コンピュータの構成と設計 MIPS Edition 第6版 • https://amzn.to/3X2P475 • 網羅的だが高度で分厚い • アーキテクチャが馴染みのないMIPS

    • 全部読み通すのはかなりつらい • 紹介しておいてなんだが、まずは流し読みでいい • 後続の本で不明点あれば辞書的に 画像はリンク先より引用
  4. Linuxのしくみ • https://amzn.to/3qDtCcD • Linuxを題材にOSカーネルが動作するしくみを説明 • 実験と図解で学ぶ • ソースコードは読まない •

    カーネル機能についてのフワっとした理解ができる • これ読んでカーネルが書けるわけではない 13 画像はリンク先より引用
  5. ブート処理について • 「コンピュータはどうやって動き出すのか」を突き詰めると出てくるテーマ • 多くの人が興味を持ちがち • 実装は茨の道 ◦ やたらと長ったらしいコードを書かなければいけない ◦

    みために訴えてこないので退屈 ◦ うまく動かなくてもデバッグがしにくい • よほど興味がなければスキップするのをおすすめ • ブートローダからブートする前提のものを作ってもいい
  6. PCの場合 • 電源を入れたらBIOSかUEFI BIOSが起動してその後にOSかブートローダ(典型的 にはGRUB)が起動するというイメージ BIOS(古いマシンで使われる ) UEFI BIOS(新しいマシンで使われる )

    GRUB GRUB OS OS OS OS 30日本を見れば わかる multibootの仕様(後述)を見る必要がある 30日本を見れば わかる 「ゼロから学ぶ…」を見れ ばわかる
  7. その他参考資料 • osdev wiki ◦ OS作成についての膨大な知見が集まっている • osdev-jp ◦ 仲間を探せる

    ◦ いろいろなイベントがあったり知見を持ち寄ったりしている ◦ https://github.com/osdev-jp/osdev-jp.github.io/wiki • opv86 ◦ x86_64命令セットの情報をIntelのマニュアルから抜き出して見やすく整形している • multibootの仕様 • xv6 ◦ 教育用のUnix
  8. Linux Kernel Development 3rd edition • https://amzn.to/3S7GNMo • ユーザプログラムとカーネルの作り方の違いを説明 •

    各サブシステムのコードをやさしく解説 • 📝 わたしはこれの1版でカーネル開発に入門した 25 画像はリンク先より引用
  9. スキルマップ コンピュータアーキテクチャの基礎知識 CPUアーキテクチャ カーネル基礎知識 ソフトウェアの知識 ハードウェアの知識 周辺機器 x86_64 ARM RISC-V

    デバイスドライバ メモリ管理、スケジューラ、ファイルシステム … キーボード ディスク NIC … … やりたいこと 独自OSを作る Linuxを改造する Linux開発に参加する