Windows 11上でのWSL2+Ubuntu 20.04LTSの初期設定

はじめに_

本ページの作業は事前にWSLのインストールとUbuntuのインストールを終えていることを前提としている。

このページではUbuntuのバージョン名20.04 LTSをWSL2上にインストールしたあとの初期設定について説明する。

動画版_

注:このページで説明されていることのうち、動画の方が理解しやすいものだけ用意しています。

Ubuntu用ユーザアカウントの設定_

初回起動時は下記の図のようなメッセージがでて、初期設定が行われる(私の環境だと5~6分かかった)。

初期設定が終わるとログイン名が求められる。このUbuntu上で使うログイン名を入力する(半角英数字、空白不可)。特に思いつかなければ自分の名前(First name)か名字(Family name)のローマ字 or 英語表記にするとよい。たとえば、私は後藤祐一(ごとう ゆういち)なので、gotoh や yuichiをユーザ名として使っている。

続いて、ログインパスワードを入力する。Windowsのログインパスワードと異なるもので良い。なお、パスワードを入力している際に画面上には何も表示されないが、キー入力は受け付けているので気にせずパスワードを入力し、Enterキーを押すこと。

上で設定したものと同じパスワードを入力する。入力したパスワードが1度目に入力したものと異なると、再度パスワードの入力が求められる。1度目と2度目のパスワードが一致すると「passwd: password updated successfully」というメッセージが表示される。

「Installation successful!」と表示されインストール終了となる。以下、この開いているウィンドウのことを「ターミナル」と呼ぶこととする。

フォントおよびターミナルサイズの変更_

ターミナル中のフォントの大きさなどを変更したい場合は、ターミナルの上部バー部分にカーソルを合わせて右クリックをする。開いたメニューバーの中の「プロパティ」を選択する。以下の画像および動画はUbntu 18.04 LTSの例だが、Ubuntu 20.04 LTSでも同様にターミナルサイズを変更できる。

日本語表記を表示できるように日本語フォント(MS ゴシックなど)を選択すること。

Ubuntu上での操作の留意点_

CUIとGUI_

Ubuntuを始めとするLinuxは 主にCUI (Character User Interface) で操作を行う。CUIは命令(コマンド)を文字列の形で入力し操作する方法である。一方で、WindowsやMacOSのようにアイコンをマウスでクリックすることで操作する方法をGUI(Graphic User Interface)という。

WindowsアプリとUbuntuターミナル間でのコピー&ペースト_

以下の操作では基本的にCUIで操作を行う。このとき、コマンドを打ち間違えるとうまく動かない。そこで、このページのコマンド例をコピー&ペーストして実行することをお勧めする。

WindowsアプリからUbuntuターミナルへのコピー&ペーストは以下のように行う。

  • Windows上でコピーしたい文字列を選択し(マウスで選んで反転させる)、Ctrl+cでコピーする(あるいはマウスの右クリックで「コピー」)
  • Ubuntuターミナルのウィンドウ上部で右クリックをし「編集」→「貼り付け」を選択する

UbuntuターミナルからWindowsアプリへのコピー&ペーストは以下のように行う。

  • Ubuntuターミナルのウィンドウ上部で右クリックをし「編集」→「マーク」を選択し、Ubuntuターミナル上のコピーしたい文字列を反転させる。
  • Ubuntuターミナルのウィンドウ上部で右クリックをし「編集」→「コピー」を選択し、コピーする。
  • Windowsアプリ上で張り付けたい場所にマウスカーソルを移動させ、Ctrl+vで張り付ける(あるいはマウスの右クリックで「貼り付け」)
  • YouTube: Ubuntuターミナルへの/からのコピー&ペースト

本ページでのLinux/Unixコマンドの表記方法_

本ページではターミナル上で入力する命令(Linux/Unixコマンド、あるいはコマンドという)をパーセント記号(%)の後ろに表記する。たとえば以下のように表記する。

% Linux/Unixコマンド

Linux/Unixコマンドの一つであるlsを表記する場合は以下のようにあらわす。これはターミナル上でlsという文字列を入力し、そのごEnterキーを押すという意味である。

% ls 

また、必要に応じてLinux/Unixコマンドを実行した際の出力結果も例として示す。出力結果は冒頭にパーセント記号がついていない文字列である。以下の表記例は ls -1 というコマンドを実行した結果としてgotohという文字列が表示されたことを表す。

% ls -1
gotoh

これとは別に、次で説明するroot権限でコマンドを実行する場合には冒頭にパーセント記号の代わりにシャープ記号(#)を用いて表記する。

管理者(root)権限とsudoコマンド_

WindowsやMacOSと同様にLinuxでも新しいソフトウェアをインストールする際には管理者権限(以後、root権限と呼ぶ)が必要となる。

Ubuntuでは初期設定でroot権限を持つユーザ(rootやsuper userという)が作成されていない。このため、root権限で操作を行う場合には、一般ユーザ(インストール時に設定したユーザ)の状態で、実行したいコマンドの前に「sudo」という特別なコマンドつけて実行する。「sudo」をつけてコマンドを実行する際には一般ユーザのパスワードの入力が要求される。

たとえば、lsというコマンドをroot権限で実行するときには以下のように入力する(これ以降のコマンド入力例ではコマンドの前に「%」や「#」がついている。%や#は入力しないこと。%がついているコマンドは一般ユーザ権限での実行を表し、#がついているコマンドはroot権限での実行を示す。)以下のようにパスワードの入力が求められるのでパスワードを入力する。

% sudo ls
[sudo] **** のパスワード:

初期設定_

/etc/apt/source.list のリポジトリを日本国内に変更する_

Ubuntuではソフトウェアをパッケージという名前で管理している(プログラム&設定ファイルをひとまとめにしてパッケージと呼んでいる)。パッケージは /etc/apt/source.list に記載されているリポジトリで提供されている。標準設定では海外のリポジトリにアクセスするようになっている。海外のリポジトリにアクセスすると時間がかかるため、日本国内のリポジトリにアクセスするように変更する。

以下のコマンドを実行する。

% cd /etc/apt

% ls 
(sources.listというファイルがあるかどうかを確かめる)

% sudo sed -i.bak -e "s/http:\/\/archive\.ubuntu\.com/http:\/\/jp\.archive\.ubuntu\.com/g" sources.list
(上のコマンドの意味は source.list中の「http://archive.ubuntu.com」という文字列を
 「http://jp.archive.ubuntu.com」という文字列に置き換える。
  元のファイルは sources.list.bakという名前でバックアップをとっている)

% ls 
(sources.listとsources.list.bakいうファイルがあるかどうかを確かめる)

% diff sources.list.bak sources.list
(二つのファイルの差分を表示するコマンド。 
「<」記号が1つ目のファイルの記述、「>」の記号が2つ目のファイルの該当部分
上のコマンドの実行結果は以下のようになる。archive.ubuntu.comがjp.archive.ubuntu.comに置き換えられていればよい。)
diff sources.list.bak sources.list
3,4c3,4
< deb http://archive.ubuntu.com/ubuntu/ focal main restricted
< # deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted
---
> deb http://jp.archive.ubuntu.com/ubuntu/ focal main restricted
> # deb-src http://jp.archive.ubuntu.com/ubuntu/ focal main restricted
8,9c8,9
< deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
< # deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
---
> deb http://jp.archive.ubuntu.com/ubuntu/ focal-updates main restricted
> # deb-src http://jp.archive.ubuntu.com/ubuntu/ focal-updates main restricted
14,17c14,17
< deb http://archive.ubuntu.com/ubuntu/ focal universe
< # deb-src http://archive.ubuntu.com/ubuntu/ focal universe
< deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
< # deb-src http://archive.ubuntu.com/ubuntu/ focal-updates universe
---
> deb http://jp.archive.ubuntu.com/ubuntu/ focal universe
> # deb-src http://jp.archive.ubuntu.com/ubuntu/ focal universe
> deb http://jp.archive.ubuntu.com/ubuntu/ focal-updates universe
> # deb-src http://jp.archive.ubuntu.com/ubuntu/ focal-updates universe
24,27c24,27
< deb http://archive.ubuntu.com/ubuntu/ focal multiverse
< # deb-src http://archive.ubuntu.com/ubuntu/ focal multiverse
< deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
< # deb-src http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
---
> deb http://jp.archive.ubuntu.com/ubuntu/ focal multiverse
> # deb-src http://jp.archive.ubuntu.com/ubuntu/ focal multiverse
> deb http://jp.archive.ubuntu.com/ubuntu/ focal-updates multiverse
> # deb-src http://jp.archive.ubuntu.com/ubuntu/ focal-updates multiverse
34,35c34,35
< deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
< # deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
---
> deb http://jp.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
> # deb-src http://jp.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse

これでパッケージをダウンロードするリポジトリの変更ができた。

インストールされているソフトウェアの更新(apt update, apt upgrade)_

次にインストールされているソフトウェアを最新版に更新する。これは、WindowsでいうWindows Updateと同じような処理である。Windows Subsystem for Linux上にインストールしたUbuntuでは適宜、手動で行う必要がある。

以下のコマンドを定期的に(1週間に1度くらい)実行する必要がある。では、以下を実行する。インターネット環境やお使いのパソコンの性能によってしばらく時間がかかる。

% sudo apt update
% sudo apt upgrade -y

アップグレード途中で選択肢が表示された場合は、基本的に「Yes」を選択し、続ければよい(慣れてきたら検討すること)。

インストールしたいソフトウェア(パッケージ)の検索_

Ubuntuに新しいソフトウェアを追加したい場合(たとえばプログラミング言語Pythonとか)は、まずはパッケージが存在するかどうかを調べる必要がある。

パッケージの検索は以下のコマンドで行う。

% sudo apt search 検索したい文字列

たとえば、日本語設定用パッケージlanguage-pack-ja が存在するか調べたい場合は、以下のように入力する。

% sudo apt search language-pack-ja

ソフトウェアのインストール(apt install)_

パッケージのインストールは以下の書式になっている。

% sudo apt install パッケージ名, ...

たとえば、language-pack-ja をインストールする場合は以下のようにする。

% sudo apt install language-pack-ja

上記の図のようにあるパッケージが必要なその他のパッケージが合わせて表示される。インストールする場合にはYのキーを、インストールを止める場合はNのキーを押す。今回はYを押してインストールする。

インストール済みのソフトウェアを調べる_

whichコマンドで使いたいLinuxコマンドがあるかどうかを確認できる。

% which 調べたいLinuxコマンド

たとえば、データ分析や自然言語処理でよく使われているプログラミング言語 Python バージョン3 がインストールされているか調べたいときには以下のコマンドを実行する。

% which python3

コマンドがインストールされている場合はインストールされているディレクトリ(Windowsでいうフォルダ)が表示される。インストールされている場合は何も表示されない(上の例だとwhich hogehogeの結果)。

日本語環境の設定_

Ubuntuをインストールした直後は英語環境になっている。たとえば、日付を表示するコマンドdateコマンドを打つと英語メッセージが表示される。(%表示はコマンドを表すためのもの。入力しなくてよい)

% date
Fri Aug 16 18:58:51 JST 2019

日本語環境に設定を変更する。The modern stone age.:【Windows10/WSL Ubuntu】日本語のロケールとタイムゾーンの変更を参考に設定をする。

language-pack-jaがインストールされているとする。インストールしていない場合は以下のコマンドでインストールする。

% sudo apt install language-pack-ja

まず、メッセージなどを日本語にする。以下のコマンドを実行する。

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

一度、Ubuntuを終了する。

% exit

Ubuntu 20.04 LTSを再起動し、日本語環境になっているかを確認する。

% echo $LANG

上の図のように「ja_JP.UTF-8」が表示され、dateコマンドのメッセージが日本語化されていれば設定変更は成功している。

タイムゾーンを日本(JST)にする_

標準時間帯を変更する。日本標準時(JST)はグリニッジ標準時から9時間進んでいる(UTC+9)。

% sudo dpkg-reconfigure tzdata

上の画面で方向キーを使って「アジア」を選択する。Tabキーを押して「了解」を選択し、Enterキーを押す。

上の画面で上の画面で方向キーを使って「東京」を選択する。Tabキーを押して「了解」を選択し、Enterキーを押す。なお、以下の画像の例ではsudoでパスワード入力失敗している。

dateコマンドの結果の末尾がJSTになっていたらタイムゾーンの設定の変更が成功である。

Manの日本語化_

オンラインマニュアル(Linuxのコマンドのマニュアル)を表示するコマンドmanのマニュアルを日本語化する。

現状は英語マニュアルになっている。確認する。ページ送りはEnterキーかスペースキー。manの終了はqキーを押す。

% man ls

日本語マニュアルをインストールする。

% sudo apt install manpages-ja manpages-ja-dev

確認する。ページ送りはEnterキーかスペースキー。manの終了はqキーを押す。

% man ls

X Windowの利用_

X Windows System_

詳しくはWikipedia参照→ja.Wikipedia: X Window System

現時点ではざっくりと「UbuntuにインストールしたGUIアプリケーションを別ウィンドウで開くための仕組み」と覚えておけばよい。

注:WSL2では、クライアント側(Linux側)から見えるホスト側(Windows側)のIPアドレスがローカルホスト(localhost, 170.0.0.1)固定ではなく、適宜、変更されるためWSL1とは異なる設定をする必要がある。

Windows 11でのX Windows Systemの利用方法_

以下のページのとおりWindows 11 ビルド 22000 以上であるならば、標準でX Windows Systemに対応している。このため、特に追加で何かを設定する必要はない。

ちゃんと動くことを確認する。Ubuntuのターミナル上で以下のコマンドを実行する。

% sudo apt install x11-apps -y
% xeyes &

xeyesのウィンドウが出現したら設定成功。このxeyesはマウスのカーソルの位置を目で示してくれる。

gnome-terminalの利用_

WindowsアプリからインストールしたUbuntuターミナルでは、Windows上の文字をコピー&ペーストして貼り付けるのが面倒である(ターミナル上で右クリックし「編集」→「貼り付け」or「コピー」を選ぶ必要がある)。

そこで、コピー&ペーストが楽なgnome-terminalをインストールして、利用できるようにする。インストールする。なお、大量に関連パッケージもインストールされるのでそこそこ時間がかかる。

% sudo apt install -y gnome-terminal

GUI用の日本語フォントをインストールする。

% sudo apt install -y fonts-ipafont

起動してみる。VcxSrvを起動しておくこと。

% gnome-terminal &

gnome-terminalを終了するときは「exit」と入力する。

毎回、gnome-terminal と入力するのは面倒なので gtermというコマンド名でgnome-terminalを呼び出せるように設定する。.bash_profileにエイリアス(alias 別名)設定を追記する。

% echo 'alias gterm="/usr/bin/gnome-terminal"' >> ~/.bash_profile

% cat ~/.bash_profile 
alias gterm="/usr/bin/gnome-terminal"

% source ~/.bash_profile
% gterm &

Windowsアプリとgnome-terminal間のコピー&ペーストの方法_

WindowsからUbuntuへのコピー&ペースト

  • Windows上でコピーしたい文字列を選択し(マウスで選んで反転させる)、Ctrl+cでコピーする(あるいはマウスの右クリックで「コピー」)
  • Ubuntu上で張り付けたい場所にマウスカーソルを移動させ、マウスのホイールを押し込む

UbuntuからWindowsへのコピー&ペースト

  • Ubuntu上でコピーしたい文字列を選択する(マウスで選んで反転させる)。Shift+Ctrl+cでコピーできる(あるいはgnorm-terminalのメニューのEdit→Copy )
  • Windows上で張り付けたい場所にマウスカーソルを移動させ、Ctrl+vで張り付ける(あるいはマウスの右クリックで「貼り付け」)

UbuntuとWindowsでファイルをやりとりする方法_

ファイルシステム_

LinuxやWindowsなどのオペレーティングシステム(OS)がOS上のファイルやディレクトリ/フォルダを管理する仕組みのことをファイルシステムという。各OSごとにファイルシステムが異なるため、基本的には他のOSのファイルシステムで管理されているファイルやディレクトリ/フォルダにはアクセスできない。このため、異なるOSで使っていた記録媒体(HDDやSSDなど)を別のOSにつないでもそのままではファイルは読み込めない。

Windows subsystem for Linux(WSL)では、Windows側からWSL上にインストールしたLinuxのファイルにアクセスする仕組み、WSL上にインストールしたLinuxからWindows側のファイルにアクセスする仕組みが用意されている。

Windows側からWSL上のファイルを閲覧する_

まず、WSL上のUbuntuを起動しておくこと。スタートメニューから「エクスプローラー」を開く。

エクスプローラーにおいて、パス(path, コンピュータ上でどこにファイルやフォルダ/ディレクトリがあるのかを表す表記)の欄に「\\wsl$」(バックスラッシュ2つ、半角小文字でwsl、最後に半角文字でドルマーク)を入力し、Enterキーを押す。

するとWSL上にインストールしているLinuxの一覧が表示される。今回はUbuntu-18.04が表示されている。このアイコンをクリックするとUbuntu上のファイルやディレクトリにアクセスできる。

WSL上のLinux側からWindowsのファイルを閲覧する_

WSL上のLinux(今回の例ではUbuntu)からWindows側のファイルを閲覧するときには、Linux側はWindowsのドライブ名を利用して閲覧できるようにしている。ドライブ名とはWindows上で記録媒体の塊ごとに割り振られている識別子のことである。

たとえば、私の環境では下のようにCドライブとDドライブという2つのドライブがある。Windowsではどの環境においてもCドライブは必ず存在するが、Dドライブ移行は使用しているパソコンの環境によって異なっている。

Ubuntuを起動し、ターミナル(UbuntuターミナルでもGnomeターミナルでもどちらでもよい)上で以下のコマンドを実行する。このdfコマンドはLinux上の記憶領域(ハードディスクドライブ、メインメモリなど)の占有率とその記憶領域がLinux上でどういうディレクトリ名で認識されているのかを表示するコマンドである。以下は私の環境での実行結果。

% df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc        251G  2.1G  237G   1% /
none            3.9G  104K  3.9G   1% /mnt/wslg
none            3.9G  4.0K  3.9G   1% /mnt/wsl
tools           238G   83G  156G  35% /init
none            3.9G     0  3.9G   0% /dev
none            3.9G   16K  3.9G   1% /run
none            3.9G     0  3.9G   0% /run/lock
none            3.9G     0  3.9G   0% /run/shm
none            3.9G     0  3.9G   0% /run/user
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
none            3.9G  1.6M  3.9G   1% /mnt/wslg/versions.txt
none            3.9G  1.6M  3.9G   1% /mnt/wslg/doc
drivers         238G   83G  156G  35% /usr/lib/wsl/drivers
lib             238G   83G  156G  35% /usr/lib/wsl/lib
drvfs           238G   83G  156G  35% /mnt/c
drvfs           932G  214M  932G   1% /mnt/d

上記のdfコマンドの出力結果のうち「/mnt/c」と「/mnt/d」という表記があるがこれがWindows上のCドライブおよびDドライブに該当する。試しにCドライブの中身を確認してみる。

% cd /mnt/c
% ls

lsやcp, mvコマンドを用いてファイルのコピーや移動を行うことができる。

注意:Windowsの「ドキュメント」「デスクトップ」「ダウンロード」へのアクセス_

Windowsの「ドキュメント」「デスクトップ」「ダウンロード」というフォルダは、基本的にCドライブの下の「ユーザ」フォルダの下にある個人ユーザフォルダの下にある。このため、Linux側からアクセスするときには正しくパスを入力する必要がある。

Windows側でパスを確認する場合は、エクスプローラーのパス欄をクリックすると表示される。たとえばエクスプローラーで「ダウンロード」フォルダに移動してみる。

この「ダウンロード」フォルダのパスはエクスプローラーのパス欄をクリックすると表示される「C:\Users\gotoh\Downloads」である。基本的には「C:\Users\Windowsのユーザ名\Downloads」というパスになる。

この「ダウンロード」フォルダにLinux側からアクセスする場合は以下のパスになる。

% ls /mnt/c/Users/gotoh/Downloads/

おわりに_

これでUbuntuの基本設定が終わった。

戻る_