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)以降で動作します。
インストール方法
機能を有効にする
- スタートメニューから「設定」を起動
- 「アプリと機能」→「関連設定」の「プログラムと機能」
- 「Windowsの機能の有効化または無効化」→「Windows Subsystem for Linux」をチェックしてOKを押下
- 再起動を促されるので再起動
Ubuntu 18.04 LTSを使えるようにする
- スタートメニューから「ストア」を起動
- 「検索」で「Ubuntu」を検索
- 「Ubuntu 18.04 LTS」を選択→「入手」を押下
- ダウンロード、インストールが完了したら、「起動」を押下
- コマンドプロンプトが開き、”Installing, this may take a few minutes...”と表示されるので少し待つ
- "Enter new UNIX username:"と出てユーザー名の作成を指示されるので入力する。
- "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