Linuc取得に向けたLinuxお奨め学習方法

## はじめに
これまで一度もLinuxを触ったことのない初心者の方が、Linuxのスキルを身につけたいと考えた場合、Linuc(LPI-Japan主催のLinux認定試験) Level1の受験勉強をされる方が多いかと思います。Linucはコマンド関連について問われることが多く、座学だけだとなかなか知識として定着させるのが難しいかなと思います。どういった方法が良いかというのは人それぞれなので、一概には言えませんが、私のお奨めするLinux学習方法をまとめてみました。

## 学習方法
### Linuxディストリビューションの準備
LinuxはWindowsとは異なり、コマンドが実行できてなんぼのOSですので、まずはLinuxの環境に触れてコマンドを色々実行してみることをお奨めします。Linuxは様々なディストリビューションが提供されていますが、ディストリビューション固有のコマンドが提供されていたりします。Linucはそういった固有のコマンドを問うてきたりします。その為、個人的には下記2つのディストリビューションの環境を両方保有しておくと便利かと思います。

* RedHat Enterprise Linux 
* Ubuntu LTS

RedHat Enterprise Linuxは商用Linuxなのですが、ここ2年ほど前から、下記のRedhat Developerサイトにユーザー登録をすれば、個人でも無料でisoファイルをダウンロード、インストールして利用できるようになりました。(以前はRedHat Enterprise Linuxから商用ソフトウェアを除いたCentOSというものを利用するのが主流でした。)

https://developers.redhat.com/

利用にはSubscription登録が必要で、利用期間は1年間ですが、1年後にRedhat Developerサイトでユーザー登録を更新の上、Subscriptionの再登録をすれば翌年も1年間無料で継続利用することができます。以下がサンプルです。
```
[testuser@localhost ~]$ sudo subscription-manager list
[sudo] testuser のパスワード:
+-------------------------------------------+
    インストール済み製品のステータス
+-------------------------------------------+
製品名:           Red Hat Enterprise Linux for x86_64
製品 ID:          479
バージョン:       8.9
アーキテクチャー: x86_64
状態:             サブスクライブ済み
状態の詳細:
開始:             2024年02月27日
終了:             2025年02月26日

製品名:           Red Hat CodeReady Linux Builder for x86_64
製品 ID:          491
バージョン:       8.7
アーキテクチャー: x86_64
状態:             サブスクライブ済み
状態の詳細:
開始:             2024年02月27日
終了:             2025年02月26日
```

Ubuntu Linuxについては、下記のサイトから無料でisoファイルをダウンロードしてインストール可能です。

https://www.ubuntulinux.jp/download

### ハイパーバイザーの準備

下記のいずれかを使用すれば良いかと思います。

[VirtualBox](https://www.virtualbox.org/)
[VMWare Workstation Player](https://www.vmware.com/content/vmware/vmware-published-sites/us/products/workstation-player.html.html)

ただ、Linuxの仮想化機能であるKVMをスタディー目的として、Linux環境構築をするのであれば、上記のうちVMWare Workstaion Playerをハイパーバイザーとして利用いただくことをお奨めします。下記のサンプルに見られるように「Intel VT-x/EPTまたはAMD-V/RVIを仮想化」にチェックを入れることで、VMWare Workstation Player上に導入したLinuxにおいて、仮想化支援機能を有効にすることができるようになります。
![p1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1567099/371245a2-efc0-5629-7863-621e209b93e0.jpeg)

※VirtualBoxの場合、PCと相性が良くないと、最悪の場合、VMWare Workstation Playerでチェックを入れた項目に相当するチェック項目がグレー表示となってチェックを入れることが出来ず、仮想化支援機能を有効に出来なくてKVMが使えないことになる可能性があります。(現に、私の場合がそうでした。。)

仮想化支援機能が有効になると、lscpuコマンドを実行した際、grepコマンドで「VT-X」もしくは「AMD-V」を検出可能です。以下は出力サンプルです。
```
[testuser@localhost ~]$ lscpu | grep "VT-x"
仮想化:                              VT-x
```

### クラウド上でLinuxを利用する
以下のようなユースケースにおいては、自分のPC上にLinuxを入れずとも、クラウド上でLinuxをプロビジョニングして利用するのもお奨めです。
* Linuc Level1で問われるような基本的なLinuxコマンドを試してみたい
* NFS(Network File System)機能を試してみたい

## お奨めハンズオン
FTPサーバーやSSHサーバー等はLinuxで一度は構築してみられることをお奨めします。特にSSHサーバーの構築経験があると、クラウド上にLinuxをプロビジョニングして使用する場合にも役に立ちますのでお奨めです。

私個人的には、FTPサーバー(VSFTP)、SSHサーバー(OpenSSH)を使用しています。

## 各種設定ファイルを見てみる
Linuxには、xxx.confといった名前の設定ファイルが多くあります。これらの中身を見てみる、実際に定義を追加・変更してみるといったこともLinux学習の上では、有効かと思います。

## さいごに
本記事では、私個人的にお奨めするLinux学習方法を紹介しました。よく、「コマンドは暗記する」と言った声を聞きますが、Linuxの実機に触れることなく座学で得た知識というのは、楽な分、それだけ記憶から消え去るスピードも速いです。やっぱり実機を通して色々試してみることで得られた知識というのは、なかなか忘れにくいものです。これは、Linuxに限らず、パブリック・クラウド(AWS、Azure、Google Cloud)のスキルを身につける場合も同様だと思います。
どうせスタディーするなら、少しでも知識を確実なものにしていくために、Linuxの実機を触り倒すことをお奨めします。