{"componentChunkName":"component---src-templates-post-template-js","path":"/posts/linux-learning-roadmap","result":{"data":{"markdownRemark":{"id":"dce15ae1-11c3-5222-8ba1-6fba722e8760","html":"<p>個人的に Linux に興味があって色々勉強してきました。</p>\n<p>どんな流れで学ぶといいのかよく聞かれるので、Linux について学ぶおすすめの流れを書籍を中心にまとめます。</p>\n<p>以下の 5 ステップで紹介していきます。</p>\n<ul>\n<li>Linux を使えるようになろう</li>\n<li>Linux のしくみに入門しよう</li>\n<li>さらに学ぶのに必要な周辺知識をつけよう</li>\n<li>OS 自作について学ぼう</li>\n<li>もっと知識をつけるには…</li>\n</ul>\n<h2 id=\"step-1-linux-を使えるようになろう\" style=\"position:relative;\"><a href=\"#step-1-linux-%E3%82%92%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8D%E3%81%86\" aria-label=\"step 1 linux を使えるようになろう permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 1. Linux を使えるようになろう</h2>\n<p>まずは Linux をある程度使えるようになるのを目指すのがおすすめです。</p>\n<p>Linux の入門書はたくさんありますが、個人的に『<a href=\"https://amzn.to/3s3TjDZ\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">新しいLinuxの教科書</a>』がかなりおすすめです。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/B072K1NH76?&linkCode=li1&tag=oshimayuki0d-22&linkId=e7137d28a8eba2299439f6a4f8074b7e&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B072K1NH76&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B072K1NH76\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>Linux サーバの環境構築の入門としては、『<a href=\"https://amzn.to/3OSC6X3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Amazon Web Services 基礎からのネットワーク＆サーバー構築　改訂3版</a>』もおすすめします。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/B084QQ7TCF?&linkCode=li1&tag=oshimayuki0d-22&linkId=7eb0d857d23ba3d1ace3ec420a177a66&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B084QQ7TCF&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B084QQ7TCF\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>他には LPIC (LinuC) のレベル 1 ぐらいをとってみるのもおすすめです。\n参考書で有名なのは『<a href=\"https://amzn.to/3qyAB6K\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Linux教科書 LPICレベル1 Version5.0対応</a>』ですね。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/B07P5S98SK?&linkCode=li1&tag=oshimayuki0d-22&linkId=50b564d094d9fdf35cf82cfdf475ad4b&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B07P5S98SK&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B07P5S98SK\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>このぐらい学んでおけば、Linux の使い方の基本は身につくと思います。</p>\n<h3 id=\"コンピュータやプログラミングの基礎知識をつけよう\" style=\"position:relative;\"><a href=\"#%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%82%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%E3%82%92%E3%81%A4%E3%81%91%E3%82%88%E3%81%86\" aria-label=\"コンピュータやプログラミングの基礎知識をつけよう permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>コンピュータやプログラミングの基礎知識をつけよう</h3>\n<p>このぐらいの段階で、コンピュータやプログラミングの基礎知識もつけておくと、ステップアップの内容も頭に入りやすいです。</p>\n<p>例えば、</p>\n<ul>\n<li>基本情報や応用情報の勉強</li>\n<li>なんらかプログラミング言語の習得</li>\n<li>PC 自作</li>\n</ul>\n<p>といったあたりがおすすめです。</p>\n<p>書籍だと以下の 2 冊はとてもおすすめです。</p>\n<ul>\n<li>『<a href=\"https://amzn.to/3OSCGUJ\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">コンピュータはなぜ動くのか 第２版 知っておきたいハードウエア＆ソフトウエアの基礎知識</a>』</li>\n<li>『<a href=\"https://amzn.to/3DQPzrP\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">プログラムはなぜ動くのか 第３版　知っておきたいプログラミングの基礎知識</a>』</li>\n</ul>\n<p><a href=\"https://www.amazon.co.jp/dp/B0BHMS1BYP?&linkCode=li1&tag=oshimayuki0d-22&linkId=0bab0d682495134e562cde513b806ce8&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B0BHMS1BYP&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B0BHMS1BYP\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p><a href=\"https://www.amazon.co.jp/dp/B094J3CK1C?&linkCode=li1&tag=oshimayuki0d-22&linkId=5d491fe7bdeccb00935de7e12896b009&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B094J3CK1C&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B094J3CK1C\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<h2 id=\"step-2-linux-のしくみに入門しよう\" style=\"position:relative;\"><a href=\"#step-2-linux-%E3%81%AE%E3%81%97%E3%81%8F%E3%81%BF%E3%81%AB%E5%85%A5%E9%96%80%E3%81%97%E3%82%88%E3%81%86\" aria-label=\"step 2 linux のしくみに入門しよう permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 2. Linux のしくみに入門しよう</h2>\n<p>Linux の使い方の基本が身についた後、ステップアップとして Linux のしくみに入門するための書籍を紹介します。</p>\n<p>まず、『<a href=\"https://amzn.to/3KzD9bz\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ふつうのLinuxプログラミング 第2版　Linuxの仕組みから学べるgccプログラミングの王道</a>』をおすすめします。\nプロセス・ファイル・ストリームといった概念から Linux について整理していて、難易度的にもとても読みやすい本です。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/B075ST51Y5?&linkCode=li1&tag=oshimayuki0d-22&linkId=2dd4d1509017377fb5a677798da89d00&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B075ST51Y5&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B075ST51Y5\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>ただし、この本は C 言語のサンプルとなっているので、どうしても抵抗がある方もいると思います。\nC 言語に抵抗がある場合は『<a href=\"https://amzn.to/3Kvwa3l\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Goならわかるシステムプログラミング 第2版</a>』をおすすめします。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/4908686122?&linkCode=li1&tag=oshimayuki0d-22&linkId=fb48e9bd9c9d21020a076d528812c53f&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4908686122&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=4908686122\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>そして、必読と言えるぐらいおすすめなのが『<a href=\"https://amzn.to/453Pflu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">［試して理解］Linuxのしくみ　―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】</a>』です。\nLinux のしくみを学ぶのに定番中の定番だと思います。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/B0BG8J5QJ1?&linkCode=li1&tag=oshimayuki0d-22&linkId=c9460c393a2330951afc7447566c3b79&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B0BG8J5QJ1&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B0BG8J5QJ1\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>もう何冊か追加で読みたい場合は、</p>\n<ul>\n<li>『<a href=\"https://amzn.to/47sfe7R\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">スーパーユーザーなら知っておくべきLinuxシステムの仕組み</a>』</li>\n<li>『<a href=\"https://amzn.to/44XzT1Y\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Linuxシステムプログラミング</a>』</li>\n</ul>\n<p>などがおすすめです。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/B09TDYLWM8?&linkCode=li1&tag=oshimayuki0d-22&linkId=57cb79dfd0c704901091e9206326cba7&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B09TDYLWM8&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B09TDYLWM8\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p><a href=\"https://www.amazon.co.jp/dp/4873113628?&linkCode=li1&tag=oshimayuki0d-22&linkId=4a555220d6d2c0f149e146ac2da4ab3d&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4873113628&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=4873113628\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<h2 id=\"step-3-さらに学ぶのに必要な周辺知識をつけよう\" style=\"position:relative;\"><a href=\"#step-3-%E3%81%95%E3%82%89%E3%81%AB%E5%AD%A6%E3%81%B6%E3%81%AE%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E5%91%A8%E8%BE%BA%E7%9F%A5%E8%AD%98%E3%82%92%E3%81%A4%E3%81%91%E3%82%88%E3%81%86\" aria-label=\"step 3 さらに学ぶのに必要な周辺知識をつけよう permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 3. さらに学ぶのに必要な周辺知識をつけよう</h2>\n<p>さらに知識をつけようとすると、少し周辺分野の知識が必要になってきます。</p>\n<h3 id=\"cpu\" style=\"position:relative;\"><a href=\"#cpu\" aria-label=\"cpu permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>CPU</h3>\n<p>OS について学んでいくには、どうしても CPU の知識が必要になっていきます。</p>\n<p>CPU について学ぶ定番と言えば、『<a href=\"https://amzn.to/3qolQU4\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CPUの創りかた</a>』だと思います。\nこの書籍の通りの CPU を自作するには部品の入手が難しくなっていますが、読み物として読むだけでもおすすめです。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/B08639XM13?&linkCode=li1&tag=oshimayuki0d-22&linkId=94b92ea514e2d95b985cc024bc95e661&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B08639XM13&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B08639XM13\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>CPU の自作に挑戦できる書籍は色々ありますが、エミュレータで簡単に環境を用意できるという観点で『<a href=\"https://amzn.to/3qjgGsG\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方</a>』(通称: Nand2Tetris) はとてもおすすめです。\nCPU とコンパイラの自作に挑戦して、そのしくみを学ぶことができます。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/4873117127?&linkCode=li1&tag=oshimayuki0d-22&linkId=e91e97dc4d96d09e731dc596f7907be1&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4873117127&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=4873117127\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>OS の前提知識として CPU を学ぶ上では、『<a href=\"https://amzn.to/3Qzo79I\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">32ビットコンピュータをやさしく語る　はじめて読む486</a>』も絶対におすすめしたいです。\n(CPU の基本を学んだ上でステップアップとして読むような書籍です)</p>\n<p><a href=\"https://www.amazon.co.jp/dp/B00OCF5YUA?&linkCode=li1&tag=oshimayuki0d-22&linkId=d9b54679f5c1ae58def2a76786181e40&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00OCF5YUA&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B00OCF5YUA\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>この本のプロローグ (p20) には、以下のように書かれています。</p>\n<blockquote>\n<p>CPUの持つ能力を引き出す役割を持つのが、オペレーティングシステムと呼ばれるソフトウェアです。</p>\n</blockquote>\n<p>この記述の通り、OS についてさらに学ぶには CPU の知識が前提となってきます。\nこの一冊を読むと、CPU の特権保護機能といった OS に必須の機能をざっと学ぶことができます。</p>\n<h3 id=\"c-言語\" style=\"position:relative;\"><a href=\"#c-%E8%A8%80%E8%AA%9E\" aria-label=\"c 言語 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>C 言語</h3>\n<p>これ以上学んでいこうとすると、どうしても C 言語の知識が必要な場面が増えてきます。\n(サンプルコードが C 言語か C++ の書籍が増えていきます)</p>\n<p>最低限、C 言語を読んで意味が分かるくらい学んでおくのがおすすめです。\nポインタとできれば関数ポインタぐらい分かれば大丈夫です。</p>\n<h2 id=\"step-4-os-自作について学ぼう\" style=\"position:relative;\"><a href=\"#step-4-os-%E8%87%AA%E4%BD%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E5%AD%A6%E3%81%BC%E3%81%86\" aria-label=\"step 4 os 自作について学ぼう permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 4. OS 自作について学ぼう</h2>\n<p>CPU や C 言語の知識もついてくると、OS 自作の書籍が読めるようになります。</p>\n<p>OS 自作について、現在一番有名なのは『<a href=\"https://amzn.to/442sRb8\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ゼロからのOS自作入門</a>』でしょう。\n実際に自作までしなくても、一通り読んでみると OS についてとても理解が深まります。\n（もちろん自作するとさらに勉強になります）</p>\n<p><a href=\"https://www.amazon.co.jp/dp/B08Z3MNR9J?&linkCode=li1&tag=oshimayuki0d-22&linkId=f17c5975b5a07d88f8a7e757827cd3cf&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B08Z3MNR9J&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=B08Z3MNR9J\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>ただし、この書籍は GUI で動作する OS を実装することもあり、かなりボリュームがあります。</p>\n<p>もし比較的ボリュームが少ないものがよければ、『<a href=\"https://amzn.to/449nYwF\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">12ステップで作る組込みOS自作入門</a>』がおすすめです。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/4877832394?&linkCode=li1&tag=oshimayuki0d-22&linkId=6c1aa0baa1cc430fc8bd5a48ba7ff091&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4877832394&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=4877832394\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>タイトルに「組込みOS」と書かれていますが、そのエッセンスは組込みではない OS にも通じています。\nただし、こちらはマイコンで実装することになるので、自作に挑戦しようとすると、最初のセットアップのハードルは高めです。</p>\n<p>ここまでに詳解した OS 自作とは少し違いますが、Linux ディストリビューションの自作である「<a href=\"https://www.linuxfromscratch.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Linux From Scratch</a>」も定番です。\n(コードを書くわけではなく、既存の OSS を使ってひたすらインストール・設定していきます)</p>\n<h3 id=\"余談-コンパイラ・インタプリタの自作\" style=\"position:relative;\"><a href=\"#%E4%BD%99%E8%AB%87-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E3%81%AE%E8%87%AA%E4%BD%9C\" aria-label=\"余談 コンパイラ・インタプリタの自作 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>(余談) コンパイラ・インタプリタの自作</h3>\n<p>CPU や OS について勉強していると、コンパイラ・インタプリタの仕組みを知りたくなったり、自作してみたくなったりします。</p>\n<p>コンパイラについて簡単に自作するなら、CPU について学ぶおすすめでも紹介した『<a href=\"https://amzn.to/3qjgGsG\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方</a>』がいいと思います。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/4873117127?&linkCode=li1&tag=oshimayuki0d-22&linkId=e91e97dc4d96d09e731dc596f7907be1&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4873117127&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=4873117127\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>この本ではエミュレータで動くコンパイラを作ることになりますが、その際 JVM (Java Virtual Machine) のような仮想マシンをはさむ方式となっています。\nそのため、仮想マシンについて学ぶこともできます。\n(注意: JVM のような仮想マシンは、OS の仮想マシンとは別物です)</p>\n<p>コンパイラの自作としてはオンラインブックの『<a href=\"https://www.sigbus.info/compilerbook\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">低レイヤを知りたい人のためのCコンパイラ作成入門</a>』も有名・おすすめです。\nこちらはエミュレータではなく実機で動きます。</p>\n<p>インタプリタについては、『<a href=\"https://amzn.to/47rXhpT\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Go言語でつくるインタプリタ</a>』を読みながら作ってみるのがおすすめです。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/4873118220?&linkCode=li1&tag=oshimayuki0d-22&linkId=9ee0fc1789a612ee514c8b1bbbc22308&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4873118220&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=4873118220\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>例えば「シェルを自作してみたい」といった方は、上のほうで紹介したシステムプログラミング関連の書籍を読んで、さらにインタプリタの作り方を学べば、シェルの自作に挑戦できるはずです。</p>\n<h2 id=\"step-5-もっと知識をつけるには\" style=\"position:relative;\"><a href=\"#step-5-%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E8%AD%98%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E3%81%AB%E3%81%AF\" aria-label=\"step 5 もっと知識をつけるには permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 5. もっと知識をつけるには…</h2>\n<p>OS 自作ぐらい知識がついてくると、</p>\n<ul>\n<li>『<a href=\"https://amzn.to/45dVIds\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">詳解 Linuxカーネル 第3版</a>』</li>\n<li>『<a href=\"https://amzn.to/3QGfNF0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Linuxプログラミングインタフェース</a>』</li>\n</ul>\n<p>といった、Linux について日本語で（おそらく）最高峰の書籍も少し読めるようになってきます。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/487311313X?&linkCode=li1&tag=oshimayuki0d-22&linkId=42e0daf45ad342076177a9e024538063&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=487311313X&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=487311313X\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p><a href=\"https://www.amazon.co.jp/dp/487311585X?&linkCode=li1&tag=oshimayuki0d-22&linkId=0c9811ce265cf54d61ebf1260a581ad2&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=487311585X&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=487311585X\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>他には、OS について学んでいると、リンカ・ローダが気になってきます。\nその際は『<a href=\"https://amzn.to/3qoRMHY\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">リンカ・ローダ実践開発テクニック―実行ファイルを作成するために必須の技術</a>』がおすすめです。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/4789838072?&linkCode=li1&tag=oshimayuki0d-22&linkId=15f60ba5d1ec2853e23dc25e4006764e&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4789838072&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=4789838072\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<h2 id=\"おわりに\" style=\"position:relative;\"><a href=\"#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB\" aria-label=\"おわりに permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>おわりに</h2>\n<p>Linux について学ぶおすすめの流れを書籍を中心にまとめまてきました。</p>\n<p>こういった話になると、とくにアプリケーションエンジニアの方から「これを学んでなんの役立つの？」と聞かれることが多いです。\n私自身、どちらかというとアプリケーションよりの仕事をすることが多いのですが、それでもとても役に立っていると感じています。</p>\n<p>例えば、エラーの解決力はかなり向上しました。\nエラーに遭遇したときに、エラーメッセージを理解して即座に解決できることが増えたり、根本原因を追いかけられる範囲が広がりました。</p>\n<p>また、プログラムのパフォーマンスを高めたいようなケースでは、OS の知識が役立つ場面は多いです。\n(個人的には、OS の知識がないとパフォーマンスについて理解できないことが多いと感じます)</p>\n<p>あとは何より面白いですね。\n興味があって面白いと感じることが一番だと思います。</p>","fields":{"slug":"/posts/linux-learning-roadmap","tagSlugs":["/tag/linux/","/tag/cpu/","/tag/computer-science/"],"autoRecommendPosts":["cpu-books","4839975868","487311313X","c-next-step-books"]},"frontmatter":{"date":"2023-08-10T09:30:21.957Z","description":"個人的に Linux に興味があって色々勉強してきました。\nどんな流れで学ぶといいのかよく聞かれるので、Linux について学ぶおすすめの流れを書籍を中心にまとめます。\n以下の 5 ステップで紹介していきます。\n「Linux を使えるようになろう」\n「Linux のしくみに入門しよう」\n「さらに学ぶのに必要な周辺知識をつけよう」\n「OS 自作について学ぼう」\n「もっと知識をつけるには...」","tags":["linux","cpu","computer-science"],"title":"Linux について学ぶおすすめの流れ【書籍を中心に紹介】","socialImage":null,"recommendPosts":null}}},"pageContext":{"slug":"/posts/linux-learning-roadmap"}},"staticQueryHashes":["251939775","3942705351","401334301"]}