自作OSを始める時に役立つ資料


<br><br><br>

#### [30日でできる! OS自作入門](https://www.amazon.co.jp/30%E6%97%A5%E3%81%A7%E3%81%A7%E3%81%8D%E3%82%8B-OS%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80-%E5%B7%9D%E5%90%88-%E7%A7%80%E5%AE%9F/dp/4839919844)  

<br><br>

#### [ゼロからのOS自作入門](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E3%81%AEOS%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80-%E5%86%85%E7%94%B0-%E5%85%AC%E5%A4%AA/dp/4839975868/)、  [動画](https://www.youtube.com/playlist?list=PLbBGNsln3DxTLHB9GFM6_drAJ1JQXIOud)はこちら
※UEFIだし、丁寧に説明されてるしで自作OSを勉強したいって人は決定版のような気がする。
　作者さんは、下記の動画も見れるようにしてくれてるし**もう買うしかねえ** って感じ。

[現代的な開発ツールや手法を学ぶ](https://www.youtube.com/playlist?list=PLbBGNsln3DxR3yFgCPvj40_nV-k5buTvz)
[自作OS 東京工業大学 システム開発プロジェクト](https://www.youtube.com/playlist?list=PLbBGNsln3DxTLHB9GFM6_drAJ1JQXIOud)  
[uchan C++ 講習会](https://www.youtube.com/watch?v=pLuZOUusBYI&list=PLtcyGlunxEg-_EwuLEnDBP_TH_qv_vqQr)  

#### 環境構築

全日程ソース同梱、各日付にcdしてmake run
Codespacesはweb上で完結

[Codespaces](https://github.com/kxkx5150/MikanOS-Codespaces) 
[devcontainer](https://github.com/kxkx5150/MikanOS-devcontainer)

<br><br>

上記の本を買うのが一番ですが、補助的に有益なリンクを集める予定です。

<br><br><br><br>


## 知識が無さ過ぎてわからんわ..

みんな最初はそうで、いつ知るかだけの違い　ドンマイ

<br>

[キタミ式イラストIT塾 基本情報技術者　中古](https://www.google.com/search?q=キタミ式イラストIT塾+基本情報技術者+中古&tbm=shop&&tbs=p_ord:p)  
ゆるーい感じでおすすめ。試験を受けないなら数年前の版でもOK

ある程度わかってきたら
**実用的じゃないけど入門にはピッタリ**のCASLでアセンブラ体験

[プログラミングテキスト COMETⅡ ＆ CASLⅡ](https://masudahp.web.fc2.com/casl2/index.html)

本の方が丁寧に教えてくれるので上記で無理なら
[プログラミング入門 CASL2](https://www.amazon.co.jp/プログラミング入門-CASL2―情報処理技術者テキスト-浅井-宗海/dp/4407305398/ref=sr_1_1?__mk_ja_JP=カタカナ)　もちろん中古

問題を解きまくる
[最強のCASL2/COMET2環境](https://qiita.com/maxfie1d/items/9f75cc16f938f2cd1844)  
[基本情報技術者試験 CASL過去問](https://jpeducom.co.jp/FE/FE-sec-pm.html#FE-pm-L4)  


アセンブラをおすすめする理由はバイナリを読み込んで、各レジスタがどう動いているか？
を意識出来るようにです。

ある程度CASLが出来るようになると
[ファミコンのエミュレータ](http://hp.vector.co.jp/authors/VA042397/nes/6502.html)を作成できる下地は出来ています。
エミュレータ？？じゃねえよ！自作OSだよ！おっさん頼むぜ！と思うかもしれないですが..

[自作エミュレータで学ぶx86](https://www.amazon.co.jp/%E8%87%AA%E4%BD%9C%E3%82%A8%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%A7%E5%AD%A6%E3%81%B6x86%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3-%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%8C%E5%8B%95%E3%81%8F%E4%BB%95%E7%B5%84%E3%81%BF%E3%82%92%E5%BE%B9%E5%BA%95%E7%90%86%E8%A7%A3-%E5%86%85%E7%94%B0%E5%85%AC%E5%A4%AA/dp/4839954747)  の作者さんが[ゼロからのOS自作入門](https://www.amazon.co.jp/gp/product/B08Z3MNR9J/ref=dbs_a_def_rwt_bibl_vppi_i0)  
を出されてる事からも、CPUの知識を要するエミュレータ作成は、OS自作につながる下地を作ってくれると思います。

<br>

***ファミコンが難しい**と感じたら[CHIP8](https://github.com/kxkx5150/CPU-CHIP8-cpp)がおすすめです。
[CHIP-8 & Golang でエミュレータ作成入門してみた](https://qiita.com/whisper0077/items/b87f9a346fdf522a40fa#%E3%83%A1%E3%83%A2%E3%83%AA)
[CHIP-8エミュレータ](http://www.piece-me.org/chip8-20040328.txt)

<br><br>

C/C++の知識は[こちら](https://www.youtube.com/watch?v=pLuZOUusBYI&list=PLtcyGlunxEg-_EwuLEnDBP_TH_qv_vqQr)の動画で

それと
[現代的な開発ツールや手法を学ぶ](https://www.youtube.com/playlist?list=PLbBGNsln3DxR3yFgCPvj40_nV-k5buTvz)

<br><br>

後は.. 楽しいと感じるかだと思います。


<br><br><br><br>


## gcc, make, cmake, その他..

[gcc コンパイルオプション備忘録](https://qiita.com/seriru13/items/c2f5192615162c4c3f47)

[Makefileの解説](http://omilab.naist.jp/~mukaigawa/misc/Makefile.html)

[いまさら人に聞けないmake入門](https://system.blog.uuum.jp/entry/make)

[CMakeを使ってビルドする](https://izadori.net/cmake_1/)
cmakeはmakeでいいなら必須ではないです

[clangd](https://qiita.com/Quramy/items/bccf7b19919679541484)
超便利であって必須ではないです。

[clang-format](https://zenn.dev/masaki_wk/articles/20220911-clang-format)
超便利であって必須ではないです。

<br><br>

##### いやもうそんなんええねん

「ググって設定を見に来たのに、歴史から始まってインストールを長々説明してる、殆ど情報ないページ多すぎ。
はよC++始めたい。おっさん頼むわ」

<br><br>

OK
C++で構文チェック、フォーマッタ、ビルド環境、拡張と一通り整ったdevcontainer

[vscodeでコンテナを開けばC++開発](https://github.com/kxkx5150/devcontainer-CPP-template)
最初にdevcontainerで開いたらbuildフォルダないしF7押して。cmakeの設定してくれるし
ステータスバーのbuildでもええで

<br><br><br>

「そのうちGUIアプリも作りたいねん。おっさん頼むわ」

<br>

OK
[devcontainerでC++ Qt5, GTK4, SDL2 でGUIアプリ開発](https://qiita.com/kxkx5150/items/78e3e413decb366aa3b1)

<br><br><br>

「そのうちRust.. おっさん頼むわ」

<br>

OK　色々あんで
[devcontainerで簡単に言語入門](https://qiita.com/kxkx5150/items/4cf7daf4ef2c34c45942)


<br><br><br>


「clang, gcc？どっちがええの？」


う〜ん　何となくのイメージは

**clang** 　大都市の高いビルに住んでるパリピ。飲んでる水はエビアン

**GCC** 叩き上げの歴戦のおっさんで、人との交流はちょっと勘弁。飲んでる水は大阪淀川の浄水された水道水

って感じ。それとクランって聞くと、　あーハイジの友達の車椅子の.. 
っていつもクララ思い出すわ。まあ3文字中2文字一緒やったら、もう殆ど一緒や。そんなんでええねん。




<br><br><br><br>




## Web上での開発

xv6
xv6-riscv
linux-0.01
linux-0.11
はりぼてOS

GUIはブラウザで確認

[Github Codespaces](https://github.com/kxkx5150/Developing-OS-with-Codespaces)  

<br><br><br><br>


## 30日でできる! OS自作入門

##### 開発環境

[Web上での開発環境](https://github.com/kxkx5150/HariboteOS-Codespaces)  

[ローカルなUbuntu 22.04](https://github.com/kxkx5150/Haribote-OS-Linux)  

<br>

##### ブログ

[30 日 OS 自作入門 (Win)](https://no000.hateblo.jp/archive/category/30%E6%97%A5OS%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80%EF%BC%88Win%EF%BC%89)

[自作 OS に挑戦する日記](https://yn0014.hatenablog.com/archive/category/%E8%87%AA%E4%BD%9COS)

[『30 日でできる！OS 自作入門』のメモ](https://vanya.jp.net/os/haribote.html#hrb)

[サラリーマンがハッカーを真剣に目指す](https://web.archive.org/web/20200502210301/http://bttb.s1.valueserver.jp/wordpress/blog/2018/04/17/makeos/)

[【はてな】ガットポンポコ](https://kobapan.hatenadiary.org/archive/category/OS%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80)

[「30日でできる！OS自作入門」をRustで](https://yoshitsugu.net/tags/OS%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80.html)

[メモ：「３０日でできる！OS自作入門 」](https://qiita.com/search?q=%EF%BC%93%EF%BC%90%E6%97%A5%E3%81%A7%E3%81%A7%E3%81%8D%E3%82%8B%EF%BC%81OS%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80%20%20user%3AS-YOU&sort=created&stocked=&page=3)

<br><br><br><br><br>





## 全般

[０から作るソフトウェア開発](http://softwaretechnique.web.fc2.com/OS_Development/bootloader1.html)  

[1から創る自作OS 0x00+](http://blog.livedoor.jp/hiroumauma/archives/1393483.html#more)

[Advent Calendar 2018：OS 自作](https://ja.tech.jar.jp/ac/2018/day00.html)

[フルスクラッチで作る!x86_64 自作 OS](http://yuma.ohgami.jp/x86_64-Jisaku-OS/index.html)

[OS を書く：初歩から一歩ずつ](https://postd.cc/writing-an-os-baby-steps/)

[OS を自作してみる](https://zeus.shadow-net.jp/?cat=7)

[技術 / 歴史](https://www.glamenv-septzen.net/view/641)

[osdev.info](http://web.archive.org/web/20130928060609/http://community.osdev.info/index.php?hardwares)

[Operating System Development Series (DeepL訳)](https://kxkx5150.github.io/ZisakuOS-memo/) 気が向いたら校正するかも...  

[Writing an OS in Rust](https://os.phil-opp.com/ja/double-fault-exceptions/)

<br><br><br><br><br>




## Linux

[Linux JF (Japanese FAQ) Project.](https://linuxjf.osdn.jp)  

[The Linux Kernel](https://linuxjf.osdn.jp/JFdocs/The-Linux-Kernel.html#toc15)  

[Linux Insides : カーネル起動プロセス part1](https://postd.cc/linux-bootstrap-1/)

[LFS (linux フロム スクラッチ)](http://lfsbookja.osdn.jp)  

[＠IT Linux ＆ OSS](https://atmarkit.itmedia.co.jp/ait/subtop/linux/)
  
[Linux 学習ロードマップ](https://hogetech.info/linux)

[Linuxカーネルメモ](https://wiki.bit-hive.com/linuxkernelmemo/)

[linux-0.01](https://github.com/kxkx5150/linux-0.01)

[linux-0.11](https://github.com/kxkx5150/linux-0.11)

<br><br><br><br><br>




## xv6

[xv6-x86](https://github.com/kxkx5150/xv6-x86)

[xv6のブートプロセスめも 32bit-modeになるまで](https://qiita.com/lastcat_/items/72d792c50f051c6dbbf8)

[xv6 のブートローダーを読む](https://vmm.dev/ja/lowlevel/xv6/xv6-1.md)

[Xv6 を読む～ OS コードリーディング～ ① はじめに](https://jupiteroak.hatenablog.com/entry/2021/12/10/055000)

[xv6ソースコードリーディング](https://peta.okechan.net/blog/xv6%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0)  

[xv6OSを真面目に読みこんでカーネルを完全に理解する](https://kashiwaba-yuki.com/tag/xv-6/)  

##### risc-v

[xv6-riscv](https://github.com/mit-pdos/xv6-riscv)  

[和訳された教科書](https://www.sugawara-lab.jp/fig/xv6-riscv-jpn.pdf)  

<br><br><br><br><br>




## BSD

[OpenBSD kernel hack memo](https://www.hazymoon.jp/OpenBSD/)

<br><br><br><br><br>

## CPU

[Intel 8086 CPU 基礎](https://qiita.com/timwata/items/e7b7a18cc80b31fd940a)

[はじめて読む486の要約](https://qiita.com/TakuyakK/items/cfca1c921824fb49e243)

[リアルモードからプロテクトモードへの変更](https://qiita.com/kusunokifgo/items/b597b07b1552bfb7d7da)

[エンジニアなら知っておきたい仮想マシンのしくみ](https://gihyo.jp/list/group/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AA%E3%82%89%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%AE%E3%81%97%E3%81%8F%E3%81%BF#rt:/dev/serial/01/vm_work/0004)


[インテル デベロッパーズ・マニュアル、上巻](https://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol1_Online_i.pdf)

[インテル デベロッパーズ・マニュアル、中巻 A](https://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol2A_i.pdf)

[インテル デベロッパーズ・マニュアル、中巻 B](https://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol2B_i.pdf)

[デベロッパーズ・マニュアル、下巻](https://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol3_i.pdf)

<br><br><br><br><br>






## ブート


[Rust で vmlinux を起動できる x86 ブートローダーを作ってみた話](https://qiita.com/o8vm/items/cda42e0a55744b9ff253)


<br>

##### BIOS

[簡易的なOS自作](https://qiita.com/suwa3/items/80574687644d70729be1)

<br><br>

##### UEFI

[ブートローダーは4行で実装される](https://orumin.blogspot.com/2014/12/4.html)

[フルスクラッチで作る!UEFIベアメタルプログラミング](http://yuma.ohgami.jp/UEFI-Bare-Metal-Programming/)

[フルスクラッチで作る!UEFIベアメタルプログラミング パート2](http://yuma.ohgami.jp/UEFI-Bare-Metal-Programming-2/)

[フルスクラッチで作る!UEFIベアメタルプログラミング サンプルプログラム](https://github.com/cupnes/c92_uefi_bare_metal_programming_samples)

[EDK II で UEFI アプリケーションを作る](https://osdev-jp.readthedocs.io/ja/latest/2017/create-uefi-app-with-edk2.html)

[gnu-efiでUEFI遊びをはじめよう](https://qiita.com/tnishinaga/items/40755f414557faf45dcb)

[Raspberry Piを使ったUEFIのお勉強：導入編](https://qiita.com/kameyama-eiji/items/e80494f3464ad615bcfe)



<br><br><br><br><br>



## メモリ管理

[自作OSのから見たメモリ管理概論](https://qiita.com/mopp/items/23f55bf8bf97e455000f)


<br><br><br><br><br>





## Youtube

[現代的な開発ツールや手法を学ぶ](https://www.youtube.com/playlist?list=PLbBGNsln3DxR3yFgCPvj40_nV-k5buTvz)

[自作OS 東京工業大学 システム開発プロジェクト](https://www.youtube.com/playlist?list=PLbBGNsln3DxTLHB9GFM6_drAJ1JQXIOud)  

[uchan C++ 講習会](https://www.youtube.com/watch?v=pLuZOUusBYI&list=PLtcyGlunxEg-_EwuLEnDBP_TH_qv_vqQr)  

[osdev-jp](https://www.youtube.com/@osdev-jp5438/videos)  

[低レイヤーガール](https://www.youtube.com/@low_layer_girls/streams)  

<br>

##### 英語

[Write your own Operating System](https://www.youtube.com/watch?v=1rnA6wpF0o4&list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M)

[nanobyte](https://www.youtube.com/watch?v=wKnTOqcrE74&list=PLFjM7v6KGMpiH2G-kT781ByCNC_0pKpPN&index=25)  

[How to Make an OS](https://www.youtube.com/watch?v=mpPbKEeWIHU&list=PLxN4E629pPnJxCQCLy7E0SQY_zuumOVyZ)  

<br><br><br><br><br>
<br><br><br><br><br>
<br><br><br><br><br>