LoginSignup
5
3

More than 3 years have passed since last update.

Windows Subsystem for Linux 2(WSL2)のUbuntuの設定方法

Last updated at Posted at 2020-10-12

概要

Windows Subsystem for Linux(WSL)のUbuntuでやった設定を備忘録的にまとめていきます。

前提

Windows 10 バージョン 2004からWSL2が搭載されましたが,KB4566116適用後であれば1903及び1909でも使えるようです。

環境

Windows 10 バージョン 1903 Build 18362.1049 or later
Windows 10 バージョン 1909 Build 18363.1049 or later
Windows 10 バージョン 2004 Build 19041 or later

確認方法

1.Win+Rで「ファイル名を指定して実行」を起動します
image.png
2.winverと入力しEnterを押します

winver.png

WSLの有効化

1. 「Linux 用 Windows サブシステム」のオプションを有効化します

PowerShellを管理者で実行し以下のコマンドを実行

PowerShell[管理者]
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2. 「仮想マシン プラットフォーム」のオプションを有効化します

PowerShellを管理者で実行し以下のコマンドを実行

PowerShell[管理者]
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

3. PCを再起動します

4. Linux カーネル更新プログラム パッケージをダウンロード

こちらからダウンロードして、インストールしてください。

5. WSL2をデフォルトに設定

PowerShell[管理者]
wsl --set-default-version 2

6. Microsoft StoreからUbuntuのインストール

以下から入手、インストールしてください。
https://www.microsoft.com/ja-jp/p/ubuntu/9nblggh4msv6?

7. Ubuntuを起動する

Windowsキーを押し、アプリ一覧からUbuntuを起動します。
まず、ユーザーネームを設定します。
今回、画像ではuserになっていますが、半角英数の範囲で好きに決めてもらってOKです。
つづいて、パスワードを2回入力します。入力しても表示されませんがちゃんと入力されています。
(以後、何度も使うので忘れないようにしてください)
image.png

参考
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10

VcXsrv Windows X Serverのインストール

Linux上のGUIプログラムを実⾏するために、X-Windowサーバーをインストールします。

1. インストーラのダウンロード

こちらから、インストーラをダウンロード。

2. インストーラ起動

ダウンロードしたインストーラを起動、指⽰に従ってインストール。

3. XLaunchの起動

スタートメニューでXLaunchを検索して起動
次へをクリックしていき、3枚目の画面Additional parameters for VcXsrvの欄に-acと書き込みます。
image.png

save configurationで設定ファイルをshell:startupに保存しておくと、Windows起動時に自動でVcXsrvを起動してくれるようになります。
image.png

WSLの設定

私はWindows Terminalを使用しています。かなり使いやすいので、使いたい方はにインストール・設定方法を記載していますので参考にしてください。

1. Ubuntuを起動

2. パッケージのインストール

以下のコマンドを順に実行してください。多分数時間は軽くかかると思います。
※3行目は、かなり長いですので注意してください。

bash
sudo apt update -y
sudo apt upgrade -y
sudo apt install -y language-pack-ja manpages-ja manpages-ja-dev nkf build-essential x11-apps emacs emacs-mozc fcitx-mozc dbus-x11 gtypist typespeed texlive-full evince gnome-terminal sox nodejs libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev libsdl2-gfx-dev libopencv-dev freeglut3-dev fonts-freefont-ttf fonts-ubuntu gdb python3-pip libreadline-dev libssl-dev python3-gi-cairo

一応何やってるか説明します

1行目:パッケージ一覧を更新(以後リポジトリの追加・削除時には必ず実行するようにしてください)
2行目:パッケージを更新
3行目:基本的なパッケージ・debファイルのインストール

3.各種設定

ディスプレイの設定として、以下のコマンドを実行します。

bash
echo "export DISPLAY=\$(cat /etc/resolv.conf | grep nameserver | awk '{print \$2}'):0.0" >> ~/.profile
echo 'export LIBGL_ALWAYS_INDIRECT=1' >> ~/.profile

ローケルの設定として以下のコマンドを実行します。

bash
sudo update-locale LANG=ja_JP.UTF-8

続いて、⽇本語⼊⼒の設定として、以下の内容を~/.profile追記します。

~/.profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx
if xset -r 49; then
fcitx-autostart >/dev/null 2>&1 &
else
echo "Start XLaunch and then Restart Ubuntu"
fi

続けてタイムゾーンの設定をしていきます。

bash
sudo dpkg-reconfigure tzdata

を実行して、AsiaTokyoを選択します。

4.テキストエディタの設定

VSCodeをインストールしてRemort - WSLを導入していれば、codeコマンドでVSCodeが開けますが、sudoで編集できない(やる方法あれば教えてください...)ので、vimやemacsの設定もしておきましょう。

VSCode

以下から入手、インストールします。
https://code.visualstudio.com/download

続いて、ctrl+shift+xまたは左端の□マークから拡張機能をインストールします。
Remort - WSL
Japanese Language Pack for Visual Studio Code
は必須です。(※日本語にしたくなければRemort - WSLだけでOKです。)

拡張機能のインストール後、再読み込みして、ctrl+shift+pを押してコマンドパレットを表⽰させます。
Configure Display Languageを⼊⼒&選択し、jaに変更すると、日本語化できます。

その他、お好みで拡張機能の導入をしてください。

ほかにも私は
Vimのキーバインドを導入する拡張機能
カラースキームMonokai Proの拡張機能
などの拡張機能をインストールしていますが、好みが分かれるので割愛します。

ctrl+,あるいは左下の歯車→設定から設定が開けます。
GUIになっているのでわかりやすいと思います。(jsonでも編集可能)

参考
https://rfs.jp/sb/vsc/vsc-setting.html
https://qiita.com/hi85/items/eaede5ebb509f21f27f5

LaTeXを使う場合は、以前記事にしていますので、
こちら)を参考に設定してみてください。

Vim

~/.vimrcに設定を記述します。
また、初期では配色がよくないので、私はカラースキームmolokaiを導入しています。

設定例

molokaiのダウンロード

bash
mkdir ~/.vim
cd ~/.vim
mkdir colors
git clone https://github.com/tomasr/molokai
mv molokai/colors/molokai.vim ~/.vim/colors/
vi ~/.vimrc

~/.vimrcの内容

~/.vimrc
set fenc=utf-8 "UTF-8形式で保存する
set title "編集中のファイル名を表示
set showmatch "括弧入力時の対応する括弧を表示
set number "行番号を表示
syntax on "コードの色分けをオンにする
set smartindent "スマートインデントを設定
set tabstop=2 "インデントをスペース2個分に設定
syntax on "コードの色分け
set showcmd "入力中のコマンドを表示する
set virtualedit=onemore "行末の1文字先までカーソルを移動できるようにする
set clipboard=unnamedplus "yankした時クリップボードに入るようにする
set ignorecase "検索文字列が小文字の場合は大文字小文字を区別なく検索する
set smartcase "検索文字列に大文字が含まれている場合は区別して検索する
set incsearch "検索文字列入力時に順次対象文字列にヒットさせる
set wrapscan "検索時に最後まで行ったら最初に戻る
set hlsearch "検索語をハイライト表示
nmap <Esc><Esc> :nohlsearch<CR><Esc> "ESC連打でハイライト解除
colorscheme molokai "カラースキームをmolokaiにする
set t_Co=256 "vimを256色対応させる

emacs

~/.emacs.d/init.elに記述します。
初期ではディレクトリ~/.emacs.dはないと思うので

bash
mkdir ~/.emacs.d

で作成しておきます。

設定例

~/.emacs.d/init.el
;;日本語入力の設定
(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")
;;初期画面でwelcome画面の表示を消す
(setq initial-scratch-message t)
(setq initial-scrarch-message nil)
;;画面の下のバーで何行何列にいるか表示
(line-number-mode t)
(column-number-mode t)
;;yesとnoをyとnで打てるようにする
(defalias 'yes-or-no-p 'y-or-n-p)
;;行番号表示
(global-linum-mode)
(setq linum-format "%4d ")
;;テキストエンコーディングをUTF-8にする
(set-default-coding-systems 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(prefer-coding-system 'utf-8)

5.フォントの設定

WindowsのフォントをWSLでも使えるようにします。
まずsudoで/etc/fonts/local.confを開きます。
viのところはemacsでもいいです(codeは不可)

bash
sudo vi /etc/fonts/local.conf

続いて、以下の内容を貼り付けます。

/etc/fonts/local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>

この後、

bash
fc-cache -fv

を実行するとWindowsのフォントがWSLでも使えるようになります。

開発ツールのインストール

1.Python

Ubuntu20.04のデフォルトでは3.8.6と若干古いですし、バージョンの複数管理できたほうが便利です。

1.pyenvのダウンロード

bash
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

2.pyenvでのpythonのダウンロード

bash
pyenv install --list

でインストールできる一覧が見れます。

投稿時点での最新版は3.9.0なので、それをインストールしていきます。別バージョンをインストールする場合は適宜読み替えてください。

bash
pyenv install 3.9.0
pyenv global 3.9.0

3.pipパッケージインストール

bash
pip3 install pandas numpy scipy xlrd matplotlib japanize-matplotlib Pillow opencv-python folium plotly requests beautifulsoup4 lxml Flask Flask-Bootstrap4 Django PyMySQL

2.Ruby on Rails

1.rbenvのインストール

bash
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
~/.rbenv/bin/rbenv init
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

2.ruby-buildのインストール

bash
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

3.Rubyのインストール

bash
rbenv install -list

としてやると、

bash
2.5.8
2.6.6
2.7.2
jruby-9.2.13.0
maglev-1.0.0
mruby-2.1.2
rbx-5.0
truffleruby-20.2.0
truffleruby+graalvm-20.2.0

のように出てきます。今回は2.7.2をインストールします。
別バージョンをインストールする場合は適宜読み替えてください。

bash
rbenv install 2.7.2
rbenv rehash
rbenv global 2.7.2

4.Railsのインストール

bash
gem install rails

5.SQL/bundler/yarnのインストール

bash
sudo apt install libsqlite3-dev
gem install sqlite3
gem install bundler
curl -o- -L https://yarnpkg.com/install.sh | bash

6.Railsの実行

bash
rails new app
cd app
rails server

ブラウザで127.0.0.1:3000にアクセスして、
image.png
このようなものが出ればOKです。

エイリアスの設定

エイリアスとはコマンドの別名のことです。
~/.bashrc追記する形で記述していきます。

以下、私の設定ですが、下2つ以外は基本的なものばかりなので追加しておいて損はないと思います。

設定例

~/.bashrc
#(略)
#追記してください
alias ..='cd ..'
alias ..2='cd ../..'
alias ..3='cd ../../..'
alias agi='sudo apt install'
alias agr='sudo apt remove'
alias agu='sudo apt update && sudo apt upgrade'
alias agi='sudo apt install'
alias ags='apt search'
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -ri'
alias g='git'
alias ga='git add'
alias gd='git diff'
alias gs='git status'
alias gp='git push'
alias gb='git branch'
alias gst='git status'
alias gco='git checkout'
alias gf='git fetch'
alias gc='git commit'
#この2つは少し過激なので注意...
alias m='mkdir'
alias p='python3

参考
https://qiita.com/reireias/items/d906ab086c3bc4c22147

シンボリックリンク

シンボリックリンクとは、 Windowsで言うところのショートカットのようなものです。

WSLでWindowsのCドライブは/mnt/cになっていますので、Downloadsフォルダは/mnt/c/User/(Windowsのユーザー名)/Downloadsとなります。

ここにシンボリックリンクを貼ってみましょう。

bash
ln -s /mnt/c/User/(Windowsのユーザー名)/Downloads

image.png
このようにシンボリックリンクが貼れています。このようにシンボリックリンクを使うとWSLとホストのWindowsの連携がとりやすくなります。

とりあえず私はこれくらい貼ってます。
image.png

Microsoft StoreからWindows Terminalのインストール・設定(任意)

以下から入手、インストールしてください。
https://www.microsoft.com/ja-jp/p/windows-terminal/9n0dx20hk701

インストール出来たら起動して、∨から設定を選ぶか、Ctrl+,で設定を開きます。

profiles内のUbuntuのprofileのguidをglobalsのdefaultProfileに指定しましょう。
listの順番を並び替えて自分の好きなようにしてください。
私はUbuntuPowershellcmdの順にしています。

続いて、Ubuntuのprofile内のstartingDirectoryを//wsl$/Ubuntu/home/(ユーザー名)に設定します。
ここでのユーザー名はUbuntuのユーザー名です。

参考までに、私の場合は以下のようになっています。

settings.json
{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",
    "profiles": {
        "defaults": {
        },
        "list": [
            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": false,
                "name": "Ubuntu",
                "startingDirectory": "//wsl$/Ubuntu/home/user",
                "source": "Windows.Terminal.Wsl"
            },
            {
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },
            {
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "コマンド プロンプト",
                "commandline": "cmd.exe",
                "hidden": false
            },
            //(略)
        ]
    },
    //(以下略)
}

ターミナルの配色やキーバインディングの設定については割愛します。(好みが分かれそうなため)

参考
https://docs.microsoft.com/ja-jp/windows/terminal/get-started

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3