コンピューター好きのブログ

主にコンピューター・ラズパイと電子工作・オーディオ関連の記事を書いています。

Windows Subsystem for LinuxでUbuntu 18.04 LTSを動かす方法

Windows 8.1以前、Windows上でLinuxを使いたいとき、"ほぼ"仮想マシンを導入するしかありませんでした。

”ほぼ”というのは、仮想マシンを使わなくても実現する方法があったからです。

 

過去にWindows上でLinuxカーネルを動かすCooperative Linux(略称coLinux)というソフトウェアがありました。

Linux用のコンソールアプリケーションを開発するのに重宝したのを覚えています。

しかし、2011年で開発が止まっており、カーネルバージョンが2.6と古いので最近のソフトウェアは動作しないと思われます。

 

しかし、Windows 10ではWindows Subsystem for Linux(略してWSL)という機能を使用してLinuxを使うことができます。

軽くLinuxで試してみたいことがあったので、使ってみました。

 

 

動作要件

Windows Subsystem for Linuxは、Windows 10 SやWindows 10 IoT Coreを除く、Windows 10 version 1709 (Fall Creators Update)以降で動作します。

 

インストール方法

機能を有効にする

  1. スタートメニューから「設定」を起動
  2. 「アプリと機能」→「関連設定」の「プログラムと機能」
  3. 「Windowsの機能の有効化または無効化」→「Windows Subsystem for Linux」をチェックしてOKを押下
  4. 再起動を促されるので再起動

Ubuntu 18.04 LTSを使えるようにする

  1. スタートメニューから「ストア」を起動
  2. 「検索」で「Ubuntu」を検索
  3. 「Ubuntu 18.04 LTS」を選択→「入手」を押下
  4. ダウンロード、インストールが完了したら、「起動」を押下
  5. コマンドプロンプトが開き、”Installing, this may take a few minutes...”と表示されるので少し待つ
  6. "Enter new UNIX username:"と出てユーザー名の作成を指示されるので入力する。
  7. "Enter new UNIX password:"と出てパスワードの作成を指示されるので、確認と合わせて2回入力する。

これで使えるようになります。

以降は「スタートメニュー」から「Ubuntu 18.04」を選べば、Ubuntuのコンソールが起動できます。コンソールは何枚も開くことができます。

 

使い方

SSHを使えるようにする

まず、Ubuntuにsshでアクセスできるようにするため、sshdを起動します。

1.下記のコマンドでsshdの設定ファイルを開き編集します。

sudo vi /etc/ssh/sshd_config

2.下記の部分の"no"を"yes"にします。

PasswordAuthentication no

3.下記のコマンドでsshdを起動します。

sudo /etc/init.d/ssh start

これでTeraTermやWinSCPなどにより、SSHで接続できるようになります。

ファイルのやりとりはWinSCPで行えます。

ソフトウェアパッケージをインストールする

普通にapt-getでパッケージをインストールできます。

下記のように実行します。

sudo apt-get install <インストールしたいパッケージ名>

最初はgcc(Cコンパイラ)も入っていないので、apt-getでインストールしました。

 

CPUやメモリなどリソースの配分

CPUやメモリ、ファイルシステムはWindowsと完全に共有です。

Core i5-3320M(2コア4スレッド)のマシンで"cat /proc/cpuinfo"コマンドを実行すると4CPU分見えますし、12GBのマシンでfreeコマンドを実行すると、下記のように12GB分見えます。

つまり、WindowsでCPUやメモリを使いまくるとUbuntuに影響があるし、その逆もあります。

$ free
total used free shared buff/cache available
Mem: 12455836 5099352 7127132 17720 229352 7222752
Swap: 15345108 110696 15234412

Windowsのファイルシステムは/mnt配下にあります。Cドライブであれば、/mnt/cにマウントされています。dfコマンドで見ると以下のような感じです。

使用量(Use%)がすべてのマウントポイントで同じなので、WindowsとLinuxで完全に共有していることが分かります。Windowsでディスクをたくさん使うとUbuntuで使えるサイズが小さくなるし、逆もまた然りです。

$ df -kv
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 122760864 92273164 30487700 76% /
none 122760864 92273164 30487700 76% /dev
none 122760864 92273164 30487700 76% /run
none 122760864 92273164 30487700 76% /run/lock
none 122760864 92273164 30487700 76% /run/shm
none 122760864 92273164 30487700 76% /run/user
C: 122760864 92273164 30487700 76% /mnt/c

 

WSLを使ってみた感想

ちらっとWebサーバー(apache2)を起動してみましたが、問題なくテストページを開くことができました。

今のところ普通にLinuxが使えています。手軽なのがありがたいです。

これから活用していきたいと思います。

 

ちなみに、最初にapache2を起動するとき、下記のwarningになりました。

Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT

対処として/etc/apache2/apache2.confの末尾に下記を追記しました。

AcceptFilter http none
AcceptFilter https none