読者です 読者をやめる 読者になる 読者になる

Matthewの備忘録

忘れたときはここを見ろ。何か書いてある。

Windows Subsystem for Linux 環境整備その1

 VMWareUbuntuイメージが壊れたので、ちょうどよい機会とばかりに、Windows Subsystem for Linuxの環境を整えることにした。Windows 10 バージョン1607以降を前提とする。

機能有効化

 次のサイトを参考にして、Windows Subsystem for Linuxを有効にする。

www.server-world.info

  1. Windows 機能の有効化または無効化」を開き、以下のように「Windows Subsystem for Linux (Beta)」にチェックを入れて OK を押下。
    • Windows 10から「Windows 機能の有効化または無効化」を表示させ難くなった気がするが、Cortanaに「Windows 機能の有効化または無効化」と入力すれば直接ダイアログを開いてくれる。もしくは[スタートメニュー]から[Windowsシステムツール]を選び[コントロールパネル]を開けば[プログラム]があるので、そこの中で[プログラムと機能]に入れば、左側に「Windows 機能の有効化または無効化」がある。
  2. 変更を反映のためにWindows 10を再起動
  3. スタートメニューの「設定」から「更新とセキュリティ」を選択し、左のメニューから「開発者向け」を選択し、「開発者モード」を選択。
  4. Windows 10のコマンドプロンプトを起動し、「bash」を実行。
    • 初回起動時は Ubuntu のダウンロードが実行される。
  5. ダウンロード完了後に任意のユーザーアカウントの作成が求められるので設定。作成完了後に Ubuntu が起動し、Bash シェル上での操作が可能となるが終了させる。
    • 終了前にcat /etc/os-releaseを実行してOSのバージョンを確認するべきだろう。

初期設定の変更

 次のサイトを参考にして、初期設定を変更する。
qiita.com

  1. スタートアップメニューに"Bash on Ubuntu on Windows"が追加されるので、それを実行。
  2. そのままではsudoを実行するたびにホストの名前解決ができないと警告するので次を実行
  3. (実行しなくてもよい)Ubuntuのパッケージ・リポジトリまでの経路を最短(国内)にする。

配置・版・設定などを確かめる。

 次のサイトを参考にして、いろいろと確かめてみる。
rcmdnk.github.io

  1. Bash on Ubuntu on Windows上で次のコマンドを実行してバージョンなどを確認
  2. エクスプローラーでファイルシステムを確認
    1. 先ず、エクスプローラーの「表示」タブにあるオプションを押下して、フォルダーオプションのダイアログを出現させる
    2. その中の「表示」タブを選び、「詳細設定」の最後の方にある「保護されたオペレーティングシステムファイルを表示しない(推奨)」のチェックを外して適用ボタンを押下
    3. %USERPROFILE%\AppData\Local\lxssにrootfsやhomeがあることを確認
      • %USERPROFILE%は大抵はC:\Users\\AppData\Local\lxssになっていて、Windows 10を一人のユーザーで使っている場合はC:\Users\user\AppData\Local\lxssになっていることが多いだろう。
        • %LocalAppData%\lxssとも表現されるが、同じことである。
    4. 確認できたら、「保護されたオペレーティングシステムファイルを表示しない(推奨)」をチェックして適用を押下
      • そのままでもよい。
  3. 次のコマンドでメモリの利用状況を見てみる
    • free -h を実行
      • メモリが全て使えていない記述を散見するが、当方ではWindows 10が認識しているメモリ空間とほぼ同等の情報が表示された。8GBメモリ搭載PCであれば、memtotalが8GBを示すなど。
  4. Windows 10のファイルシステムへアクセスしてみる
    • /mnt以下にマウントされているので、適当なディレクトリに適当なファイルを描きだしたり、読みだしたりしてみる。

sshd

 とりあえず次のページに書いてあることを行えばクライアントから接続できる。
fftest33.blog.fc2.com

  1. Windows 管理ツール」の「サービス」でSSH Server BrokerとSSH Server Proxyを停止・無効に。
  2. Windows ファイアウォール」で新しい規則を選び、TCP port22を有効にする。
    • 規則の種類 → ポート
    • プロトコルおよびポート → TCP ポート22
    • 操作 → 接続を許可する
    • プロファイル → ドメイン、プライベート(現在のネットワークに合わせて設定。わからない場合はコントロールパネル→ネットワークと共有センターで現在接続されてるネットワークの種類が見れます)
      • 多くの場合はプライベートだろう
    • 名前 → 適当に付ける
  3. bash上で
    1. ホストキーを作る:cd /etc/ssh; sudo ssh-keygen -t rsa -N '' -f ssh_host_rsa_key
    2. sshdの設定をする(viなどで/etc/ssh/sshd_configを編集し、暗号化方式rsaで接続)
    3. sshサーバ起動
      • sudo /etc/init.d/ssh start
    4. ssh localhostを実行して接続可能か確認する。
  4. 他の端末から接続できるか試してみる。
  5. よりセキュアにしたければ公開鍵と秘密鍵を生成して公開鍵を交換すればよい。

因みに、Windowsを再起動するなどして再びbashを起動したときにsshdに接続できなくなったときは、SSH Server BrokerとSSH Server Proxyが起動している可能性が高い。停止ではなく無効にするがよい。Bashsshdが起動していないも関わらず、その二つが起動しているとssh接続をしているかのように錯覚するようなことがある。実際はパスワード/公開鍵認証などができなくて「おかしいぞ?!」ということになる。

その他

  1. rootユーザーになるには、su -i
  2. Bash on Ubuntu on Windowsを再構築するには、PowerShellもしくはコマンドプロンプトで下記のコマンドを順に実行
    • lxrun /uninstall /full
      • アンインストール・コマンドである
    • lxrun /install



他の参考サイト:
ascii.jp
www.buildinsider.net
qiita.com
www.compnet.jp
mattn.kaoriya.net
qiita.com