*本記事は旧TechblogからCOLORSに統合した記事です。

目次

  1. はじめに
  2. Linux環境を構築する選択肢
  3. 各選択肢の特徴
    1. コンテナ型仮想化ツール
    2. ハイパーバイザー型仮想化ツール
    3. WSL1/2
  4. Linuxのコマンド等で学習する上でのポイント
  5. 終わりに

1. はじめに

しまふくろうです。最近Lpic level1をとったのですが、Linuxを触ったことがない状態からの学習だと、まずどうやってLinux環境を用意すればいいのかがわかりませんでした。そういった方々の助けになれば幸いです。
(他OSでも共通する情報はあると思いますが、記事自体はWindowsPC使用者向けです。)

先に結論をお伝えすると、
ハイパーバイザー型仮想化ツールを使う(必要があればWSLを補助で使う)のがおすすめです。
ハイパーバイザー型仮想化ツールで環境構築…という話は検索したらすぐ出てくると思うので割愛しますが、以下では、その結論に至った理由などを主にまとめておきたいと思います。

2. Linux環境を構築する選択肢

ITの勉強を始めた頃、「LinuxはOSの一種だから、Windows, MacOSのように、PCを新しく買って環境を用意しなくてはいけないのか?」などと思っていました。
(もちろんそれでもいいんですが)今使っているPCに環境を用意することが可能です。いくつか選択肢があるので見ていきましょう。

種類再現度学習コスト(※3)軽量さ具体的な製品名等備考
コンテナ型仮想化ツールDocker本ブログ参考ページ: Dockerを使ってみよう!
ハイパーバイザー型仮想化ツールVMWare,
VirtualBox
WSL1(※2)Linuxとの完全な互換性はない
WSL2Windowsの場合、一部の仮想化ツールと共存できない※4
表:「Linuxの学習」という観点から整理した環境構築選択肢

※2: WSL:Windows Subsystem for Linux 2の略。
※3: 学習コスト:ここでは、本筋となるLinuxコマンド等を除いた、仮想化技術自体の学習コストを指す。
※4: VirtualBox, VMWareなど。ただし、バージョンによっては共存できる場合もある

3. 各選択肢の特徴

順に、前項で上げた選択肢を簡単に解説します。

1. コンテナ型仮想化ツール

DockerやMesosphereなど。
ホストOS(ツールを動かしているOS)の仕組み(カーネル)を共有する方式なので、環境を共有する際のデータ量なども抑えられますし、動作も軽いと言われます。
仮想環境で使えるOSはホストOSに依存しますが、Docker For Windowsの場合は後述するWSLを内部で使用しており、LinuxOSも使用できます。

  • 仮想環境は基本CLI操作のみ(画面なし)
  • 実行コマンドの制限(一部の管理系コマンド等)が比較的多い
  • コンテナ、イメージ等、使うまでの学習項目が多め

2. ハイパーバイザー型仮想化ツール

VMWareやVirtualBoxなど。
ゲストOS(仮想環境で動かすOS)を、用意する環境毎にインストールする方式なので、ホストOSとは異なるOSを扱えるメリットがあります。動作はコンテナ型と比して重いと言われます。

  • 仮想環境はGUI操作可能(画面あり)
  • OSをインストールするところからできる

3. WSL1/2

Windows上で使えるLinux環境。
1と2があり(2021/01/31現在)、どちらも起動が速い、軽量、などの特徴を持っています。
WSL1はLinux書式のコマンド等をWindowsで解釈しているだけ(システムコールの互換性が不完全)だった一方、WSL2では実際に仮想化技術が使われている、という違いがあります。

  • 起動が速い
  • 環境はCLI操作のみ(画面なし)
  • 実行コマンドの制限(一部の管理系コマンド等)がある
図:VirtualBox(ハイパーバイザー型仮想化ツール)で起動したUbuntuのGUI画面

初学者向けであれば、GUIで使え、かつ機の再現度が高いハイパーバイザー型仮想化ツールが適切だと言えるんではないでしょうか。
ちなみに筆者の場合、ハイパーバイザー型仮想化は、比較的起動までに時間がかかるので、メインはハイパーバイザー型仮想化ツール(VirtualBox)を使用して学習し、ちょっとしたコマンドの書式確認やエディタ系の操作確認などにはWSL1を使用してました。

4. Linuxのコマンド等で学習する上でのポイント

Lpicの学習をするうえで、いくつか心がけていてよかったな、と思うポイントがあったので、もしこれから学習する人は参考にしていただければ幸いです。

コマンドを覚えるには、英語の意味も理解するとよい

コマンド自体の意味、オプション指定の英単語など、英単語の意味がわかっているとすんなり頭に入ってきやすいです。
ただ、ショートオプション指定などは、略元(大抵、ロングオプション)の単語の意味がわかっていないと覚えにくいですね(例: ls –recursive → ls -R )。筆者は以下の様な方法で略元調べてました。

  • コマンドの説明文をman 1 [コマンド] で開き、略元を確認(一部推測)
  • 上記で分からない場合はネットで検索

設定ファイル系は軽く目を通し、どういった設定が入っているかをみておくとよい

参考書などに出てきた設定ファイルは、大体どんな内容が記載されているか目を通しておくと理解が進みやすいと思います。
参考書などの説明文だけだとツールやサービスのイメージが付きづらい場合もありますし、ものによってはファイル内の書式も覚える必要がありますからね。
(筆者も、/etc/X11/xorg.confの「InputDevice」と「ServerLayout」という設定項目の違いが判らず、参考書の説明だけ読んで悶々としていました…)

  • 仮想環境で、cat [ファイルパス]コマンドでファイルを見る
  • ファイルがない(※5)場合などは、ファイルパスで検索

※5: ディストリビューションの違い、デフォルトでは存在しないファイル…等の理由でファイルが見れない場合もあります。

5. 終わりに

学習環境構築時、ネットで調べると大抵ハイパーバイザー型仮想化ツールが出てきます。
ただ、仮想化技術について中途半端に知識があった筆者にとっては、「他の仮想化ツールではだめなのか?」「どういった点で適していないのか?」がわからなかったので、今回仮想化技術について調べてみました。
この記事が同じ疑問を持ったような人に届けばいいなと思います。

6. 参考文献

docker docs「Docker Desktop WSL 2」 docker docs, 2021/01/28(最終閲覧: 2021/01/31) https://docs.docker.com/docker-for-windows/wsl/
m/field Tech Blog「Dockerを使ってみよう!」Tech Blog, 2021/01/29(最終閲覧: 2021/01/31) https://lab.m-field.co.jp/2021/01/29/lets-use-docker/
Microsoft 「Linux 用 Windows サブシステムとは」 Microsoft, 2020/07/21(最終閲覧: 2021/01/31) https://docs.microsoft.com/ja-jp/windows/wsl/about
Microsoft 「WSL 2 に関する FAQ」 Microsoft, 2019/05/30(最終閲覧: 2021/01/31) https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-faq
タイトル画像:
“Tux, Linux’s Mascot” lewing@isc.tamu.edu Larry Ewing and The GIMP, CC0, via Wikimedia Commons