Windows
Linux

Windows10環境でLinux環境を構築する(WSL+ホームディレクトリ変更+SSH接続)

利用用途

リモートサーバーでの作業がメインだがたまにローカルで作業をした方が便利な時があり、そのための環境

背景

windows7環境からwindows10環境に移行した
windows7環境の時はvirtualbox+vagrantでローカルにubuntu環境を構築していた
windows10環境でもローカルにubuntu環境を構築したい

今回やること

  1. WSL(Windows Subsystem for Linux)を使ってubuntu環境を構築
  2. windows環境からファイルを操作できるようにホームディレクトリを変更する
  3. SSHで接続できるように環境を構築する

環境変更に伴う pros and cons

pros

  • 環境構築がvirtualboxより楽
  • windowsを起動するとubuntuも既に起動している
    • SSH接続するときにわざわざVMを起動させなくてよい

cons

  • 同じ環境を複数構築するのは大変そう(まだちゃんと調べられていない)
    • バージョンやOSが違うならそんなに手間はなさそう

環境構築手順

1. WSL(Windows Subsystem for Linux)を使ってubuntu環境を構築

手順①「スタートボタン」を右クリック
手順②「アプリと機能」をクリック
手順③「プログラムと機能」をクリック
手順④「Windowsの機能の有効化または無効化」をクリック
手順⑤「Windows Subsystem for Linux」をクリック

図1.png

手順⑥「microsoft store」を起動

図3.png

手順⑦「ubuntu」を検索
手順⑧ 任意のバージョンを選択してインストール
手順⑨ 初回起動で「ユーザ名」と「パスワード」を入力する

図4.png

2. windows環境からファイルを操作できるようにホームディレクトリを変更する

なぜ必要?

windows環境からubuntu環境にアクセスする方法はあるが、windows環境からubuntu環境配下で何か変更してしまうとubuntu環境が壊れてしまう。
ubuntu環境にはwindows環境の固定ドライブがマウントされている。
「C:」ドライブなら「/mnt/c」でubuntu環境からwindows環境へアクセスできる。
そこで、ubuntu環境での作業をwindows環境下で行うことでwindows環境から操作できるようにする

手順

※例:windowsのDocumentsに「ubuntu」というディレクトリを作成し、そこを新ホームディレクトリとする
手順① ubuntuを起動して、デフォルトのホームディレクトリにあるファイルをwindows環境の新ホームディレクトリに移動する

$ cd
$ cp -p .* /mnt/c/Users/***/Documents/ubuntu/

手順② 設定ファイルを開く

sudo vim /etc/passwd

手順③ 記載内容の変更
※「username」は初回起動時に設定したユーザ名

※変更前

「username」:x:1000:1000:,,,:/home/「username」:/bin/bash

※変更後

「username」:x:1000:1000:,,,:/mnt/c/Users/***/Documents/ubuntu:/bin/bash

手順④ ubuntuを再起動

3. SSHで接続できるように環境を構築する

なぜ必要?

正直なくても問題ないが、リモートサーバーに接続しているターミナルエミュレーターと同様に操作できるようにするため

手順

①ubuntu環境でopenssh-serverを立ち上げる
2018/07/16時点では既にインストールされているopenssh-serverをそのまま使うとエラーになるので、一度アンインストールする

sudo apt-get remove --purge openssh-server
sudo apt-get update --fix-missing
sudo apt-get install openssh-server
sudo service ssh start

②windows起動時にssh serverを自動起動するように設定する
以下ファイルを作成する。
※「password」は初回起動時に設定したパスワード

startssh.vbs
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'echo 「password」 | sudo -S /etc/init.d/ssh start'",0

このファイルをwindowsのスタートアップフォルダに置く。
※「username」は初回起動時に設定したユーザ名

C:\Users\「username」\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

参考