久しぶりのLinux関係。
数年前に、Linuxの勉強をはじめたのだがなかなか続かない。
そこで、「どう学んだらよいのか」、「何を勉強したらよいのか」、一度メモとして残すことにした。
しっかり記録した上で、あとあと見返してみようというのが目的。
参考にした本はこちら。
日経Linux2018年9月号付録「基礎からわかる最新Linuxマスターブック」
この本から「学び方」をメモしようと思います。
まずは、Linuxの基礎知識となる要素
- インストール
- 基本的なコマンド
- Linuxの構成要素
- ブートフロー
- プログラムの実行フロー
- ネットワーク
基礎知識に何を含めるかは目的によって異なるが、示した6つの基礎知識は最低限知っておいた方が良いもの。
「インストール」、「基本的なコマンド」は何となくやってたけど、他はきちんと学んだことないなー。
次に、どのように学習をしていったら良いか。
- 目的設定
- インストール
- コマンド操作の学習
- Linuxの構造理解
- 目的に関する学習
- 目的達成
目的設定以降の学習は、「実践」(試す、動かす)して、「理論」(動作原理や手順の意味など)を理解することを反服する。
◆ 目的設定
例えば、「サーバーを構築する」「プログラムの開発環境を作る」など。
おすすめは「Webサーバー構築を目的にすること」
作成したWebサーバーを公開してクライアントPCから閲覧するという身近なテーマであり、サーバー構築はネットワーク環境作りの要素も含んでいるから。
たしかに「目的設定」というのは重要かなと思う。
◆ インストールについて
インストール手順は、学習要素がさまざま。これらの要素の中にはブートプログラム、パッケージ管理システム、ユーザー管理、セキュリティなどLinuxを構成する仕組みや概念が含まれている。
- ディスクパーティション
⇒ストレージの分割 - ファイルシステム
⇒複数種類のファイルシステムの選択と割り当て - Linuxのディレクトリー構造
⇒ファイルシステムに割り当てるディレクトリー - マルチユーザー
⇒管理者ユーザー(root)、一般ユーザーの作成 - ローカライズ
⇒タイムゾーン、言語などの設定 - インストールタイプ(クライアントやサーバーなど)
⇒インストールするソフトウェアの選択
まずは、「インストール」「いろいろ触る」「壊す」を繰り返す。
壊したって、インストールしなおせるのがLinuxのとても良いところ。これらは、ディストリビューションのインストールしまくったからだいたいわかる。
◆ コマンド操作の学習
Linuxには無数のコマンドが存在するのですべてを記憶するのは困難。コマンドを学習する際は、次のポイントを押さえておくのが良い。
- シェルについて
⇒シェルの考え方、シェルの機能
(コマンド補完、ショートカットキー、環境変数など) - コマンドの構造
⇒コマンド名、オプション、引数の組み合わせ - 絶対パス、相対パスの概念
- コマンド実行の方法
⇒環境変数PATHからの実行、相対パス実行、絶対パス実行 - コマンドの組み合わせ
⇒リダイレクト、パイプなど
「シェル」とは、ユーザーとOS(Linuxカーネル)の間に立ち、ユーザーの入力(コマンド)をOSに伝え、OSの処理結果(出力)をユーザーに伝える役割を持っている。
コマンドの入力、実行、結果の出力などの機能をユーザーに提供するソフトウェアが「シェル」と考える。
こうやってポイントを並べてみると、良くわからない言葉が多い。これらもしっかり学んでみたい。
◆ Linuxの構造理解
- ディレクトリー構造
⇒ファイルシステムと紐づいたLinuxのファイル管理構造 - ファイル構成
⇒Linuxを構成するファイル群の構成 - 起動関連(ブートプロセス)
⇒ブートローダーやintプロセスなどのLinuxが起動する仕組み
これらのLinuxの構造は、ディストリビューションにより差異が大きい。そのため、目的に関する学習の中やその後でも問題なし。
また、ブートプロセスは、奥が深く、難しい構造になっているが、どのような流れでLinuxが起動していくかを知っておくことはLinuxの構造を理解する上で不可欠。
ディレクトリー、ファイルなんかは大まかにはわかる。ブートプロセスは良くわかってない。
◆ 目的に関する学習
設定した目的により学習する内容が異なるが、「なぜこのようなことをしなければならないのか」「どうしてこういうことになるのか」といった理論も同時に知ることが重要。
例として「Webサーバーの構築での学習」の場合
- ネットワーク設定(実践)
- TCP/IPの知識(理論)
- Webサーバーの設定(実践)
- HTTPの知識(理論)
「実践」と「理論」を両方まなぶことが重要。
Linuxでは『Apache HTTP Server』というソフトウェアをよく使う。
最初は最低限動作できる範囲で設定し、動きを確認できるようにする。資料はインターネット上の解説記事や書籍など。
実際に動作が確認できたら、『Apache』のマニュアルや公式サイトの資料を読みながら、一つずつ各設定を変更して動作を確認する。
『Apache』の設定には、『Apache』専用のものと『HTTP』の仕様に基づくものがあるので、『HTTP』関連の仕様書などを読むのもよい。
おそらく、Webサーバーを作ることはネットを調べればできそうだが、その理論や仕様までは考えてなかった。
◆ 目的達成
具体的に自分でいろいろ動かして、その動作結果を確認し、その理論を学ぶことができれば目的達成。
Linuxをより理解したければ、次の目的を設定してそれを繰り返す。
おまけ 資格取得
技術習得の目的の一つとして、資格の取得がある。
Linuxの資格で、人気の高いものとして、LPI認定資格というものがある。特徴として、ベンダー系の資格と異なり、特定のディストリビューションに偏らない(一部依存あり)、Linux全般に必要とされる総合的な知識を認定するとのこと。
本のメモは以上。
さて、これまでを振り返ってみると、Linuxのディストリビューションをインストールして、PCとして使いながら、たまに端末からコマンドをいじるくらいだった。
一度、Raspberry PiでNASをつくったが、さすがに理論までは学ぼうと思わなかった。
とうことで、まずは『Webサーバー構築』を目的に勉強スタートしてみよう。
何か良い教材ないかしら・・・。
ポチっとしてくれたら、うれしいです。