All Articles

Linux について学ぶおすすめの流れ【書籍を中心に紹介】

個人的に Linux に興味があって色々勉強してきました。

どんな流れで学ぶといいのかよく聞かれるので、Linux について学ぶおすすめの流れを書籍を中心にまとめます。

以下の 5 ステップで紹介していきます。

  • Linux を使えるようになろう
  • Linux のしくみに入門しよう
  • さらに学ぶのに必要な周辺知識をつけよう
  • OS 自作について学ぼう
  • もっと知識をつけるには…

Step 1. Linux を使えるようになろう

まずは Linux をある程度使えるようになるのを目指すのがおすすめです。

Linux の入門書はたくさんありますが、個人的に『新しいLinuxの教科書』がかなりおすすめです。

Linux サーバの環境構築の入門としては、『Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂3版』もおすすめします。

他には LPIC (LinuC) のレベル 1 ぐらいをとってみるのもおすすめです。 参考書で有名なのは『Linux教科書 LPICレベル1 Version5.0対応』ですね。

このぐらい学んでおけば、Linux の使い方の基本は身につくと思います。

コンピュータやプログラミングの基礎知識をつけよう

このぐらいの段階で、コンピュータやプログラミングの基礎知識もつけておくと、ステップアップの内容も頭に入りやすいです。

例えば、

  • 基本情報や応用情報の勉強
  • なんらかプログラミング言語の習得
  • PC 自作

といったあたりがおすすめです。

書籍だと以下の 2 冊はとてもおすすめです。

Step 2. Linux のしくみに入門しよう

Linux の使い方の基本が身についた後、ステップアップとして Linux のしくみに入門するための書籍を紹介します。

まず、『ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道』をおすすめします。 プロセス・ファイル・ストリームといった概念から Linux について整理していて、難易度的にもとても読みやすい本です。

ただし、この本は C 言語のサンプルとなっているので、どうしても抵抗がある方もいると思います。 C 言語に抵抗がある場合は『Goならわかるシステムプログラミング 第2版』をおすすめします。

そして、必読と言えるぐらいおすすめなのが『[試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】』です。 Linux のしくみを学ぶのに定番中の定番だと思います。

もう何冊か追加で読みたい場合は、

などがおすすめです。

Step 3. さらに学ぶのに必要な周辺知識をつけよう

さらに知識をつけようとすると、少し周辺分野の知識が必要になってきます。

CPU

OS について学んでいくには、どうしても CPU の知識が必要になっていきます。

CPU について学ぶ定番と言えば、『CPUの創りかた』だと思います。 この書籍の通りの CPU を自作するには部品の入手が難しくなっていますが、読み物として読むだけでもおすすめです。

CPU の自作に挑戦できる書籍は色々ありますが、エミュレータで簡単に環境を用意できるという観点で『コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方』(通称: Nand2Tetris) はとてもおすすめです。 CPU とコンパイラの自作に挑戦して、そのしくみを学ぶことができます。

OS の前提知識として CPU を学ぶ上では、『32ビットコンピュータをやさしく語る はじめて読む486』も絶対におすすめしたいです。 (CPU の基本を学んだ上でステップアップとして読むような書籍です)

この本のプロローグ (p20) には、以下のように書かれています。

CPUの持つ能力を引き出す役割を持つのが、オペレーティングシステムと呼ばれるソフトウェアです。

この記述の通り、OS についてさらに学ぶには CPU の知識が前提となってきます。 この一冊を読むと、CPU の特権保護機能といった OS に必須の機能をざっと学ぶことができます。

C 言語

これ以上学んでいこうとすると、どうしても C 言語の知識が必要な場面が増えてきます。 (サンプルコードが C 言語か C++ の書籍が増えていきます)

最低限、C 言語を読んで意味が分かるくらい学んでおくのがおすすめです。 ポインタとできれば関数ポインタぐらい分かれば大丈夫です。

Step 4. OS 自作について学ぼう

CPU や C 言語の知識もついてくると、OS 自作の書籍が読めるようになります。

OS 自作について、現在一番有名なのは『ゼロからのOS自作入門』でしょう。 実際に自作までしなくても、一通り読んでみると OS についてとても理解が深まります。 (もちろん自作するとさらに勉強になります)

ただし、この書籍は GUI で動作する OS を実装することもあり、かなりボリュームがあります。

もし比較的ボリュームが少ないものがよければ、『12ステップで作る組込みOS自作入門』がおすすめです。

タイトルに「組込みOS」と書かれていますが、そのエッセンスは組込みではない OS にも通じています。 ただし、こちらはマイコンで実装することになるので、自作に挑戦しようとすると、最初のセットアップのハードルは高めです。

ここまでに詳解した OS 自作とは少し違いますが、Linux ディストリビューションの自作である「Linux From Scratch」も定番です。 (コードを書くわけではなく、既存の OSS を使ってひたすらインストール・設定していきます)

(余談) コンパイラ・インタプリタの自作

CPU や OS について勉強していると、コンパイラ・インタプリタの仕組みを知りたくなったり、自作してみたくなったりします。

コンパイラについて簡単に自作するなら、CPU について学ぶおすすめでも紹介した『コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方』がいいと思います。

この本ではエミュレータで動くコンパイラを作ることになりますが、その際 JVM (Java Virtual Machine) のような仮想マシンをはさむ方式となっています。 そのため、仮想マシンについて学ぶこともできます。 (注意: JVM のような仮想マシンは、OS の仮想マシンとは別物です)

コンパイラの自作としてはオンラインブックの『低レイヤを知りたい人のためのCコンパイラ作成入門』も有名・おすすめです。 こちらはエミュレータではなく実機で動きます。

インタプリタについては、『Go言語でつくるインタプリタ』を読みながら作ってみるのがおすすめです。

例えば「シェルを自作してみたい」といった方は、上のほうで紹介したシステムプログラミング関連の書籍を読んで、さらにインタプリタの作り方を学べば、シェルの自作に挑戦できるはずです。

Step 5. もっと知識をつけるには…

OS 自作ぐらい知識がついてくると、

といった、Linux について日本語で(おそらく)最高峰の書籍も少し読めるようになってきます。

他には、OS について学んでいると、リンカ・ローダが気になってきます。 その際は『リンカ・ローダ実践開発テクニック―実行ファイルを作成するために必須の技術』がおすすめです。

おわりに

Linux について学ぶおすすめの流れを書籍を中心にまとめまてきました。

こういった話になると、とくにアプリケーションエンジニアの方から「これを学んでなんの役立つの?」と聞かれることが多いです。 私自身、どちらかというとアプリケーションよりの仕事をすることが多いのですが、それでもとても役に立っていると感じています。

例えば、エラーの解決力はかなり向上しました。 エラーに遭遇したときに、エラーメッセージを理解して即座に解決できることが増えたり、根本原因を追いかけられる範囲が広がりました。

また、プログラムのパフォーマンスを高めたいようなケースでは、OS の知識が役立つ場面は多いです。 (個人的には、OS の知識がないとパフォーマンスについて理解できないことが多いと感じます)

あとは何より面白いですね。 興味があって面白いと感じることが一番だと思います。