このページの本文へ

Windows Info 第75回

Windows Subsystem for Linuxの環境を整える【準備編】

2016年10月23日 10時00分更新

文● 塩田紳二 編集● ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windows Subsystem for Linuxの具体的な話をする前に、Linux系での表記などについて簡単に解説しておく。Windows系では、特殊フォルダを含めて、階層化ディレクトリを「フォルダ」と表現するようになっているためこれに従うが、Linux系では「ディレクトリ」と呼ぶことが多いため、Linux側での表現は「ディレクトリ」する。

今回からはWindows Subsystem for Linuxの実際の動作環境を作っていく

 意味的には同じことになるが、WSL内とWindows側では同じ場所でもパスが違うため、用語を使い分ける。WSL側では、たとえば、ユーザー、shiodaのホームディレクトリは「/home/shioda」となるが、これはWindows側では「%Userprofile%\appdata\local\lxss\home」フォルダとなる。また、このユーザーディレクトリは、Linuxでは、「~」で表現できる。

 たとえば、ユーザーフォルダの下にある「abc.txt」というファイルへのパスは、「~/abc.txt」と表記できる。これは、Windowsでいう%Userprofile%環境変数やshellショートカットのshell:profile(これについては過去記事を参照)と同じようなものと考えていただいてかまわない。

 WSLには、Ubuntu Linuxのコードは使われているが、カーネル自体はエミュレーション、また、bash.exeが起動して環境が立ち上がることから、通常のLinuxとはユーザーモードの初期化などが違っている。

 一般的にLinuxでは、initと呼ばれるプログラムが、ユーザーモードの初期化を行ない、必要なデーモン(バックグラウンドで動作するプログラム)などを起動する。しかし、WSLでは、こうした仕組みは残っているものの、デーモン類は何も起動されず、bashのみが起動される。また、一般的にLinuxでパッケージ管理システムを使ってソフトウェアをインストールすると、必要な設定が同時に行なわれる。このため、Linux起動時のランレベル設定などについては、あまり触る必要はないかと思われるが、起動状態を修正するためには、起動システムについて知っておく必要がある。

 従来Unix System V系の流れを汲むUnix/Linuxシステムでは、「SysVinit」と呼ばれるシステムが起動時に動作していた。SysVinitは、実際には、initというコマンド名でユーザーモード最初の動作コマンドとして起動され、設定に従って、バックグラウンドで動作する「デーモン」類を起動していた。このとき、設定を複数用意しておき、これを切り替えて利用することができる。その設定を「ランレベル」(run level)と呼んでいた。

 ランレベルには、メンテンナンス時などに管理者だけがログインできる「シングルユーザーモード」などに対して割り当てられているものと、通常の起動だが、ログイン前からGUIを起動する、しないなどの設定の違いをランレベルで指定するなどが行われてきた。ただし、ランレベルを示す番号と意味の対応はLinuxでもディストリビューションにより違いがある。

 Ubuntuでは、SysVinitに代わり、Updatartがinitプロセスに対応するが、従来SysVinitで行ってきたランレベルによる設定管理と互換性を持たせるように設定されている。このため、起動時のランレベルごとの設定は、/etc/rc[0~6S].dディレクトリに記録されている。

 このあたりに深入りすると、かなり大変なので、とりあえず、WSLの起動時の挙動について調べるのであれば、「init」、「Upstart」、「initctl」(起動時設定の変更ツール)などについて調べてほしい(manコマンドが使える)。基本的には、WSLでは、通常のUbuntu Linuxのようにデーモン類を起動することはないが、仕組み自体はちゃんと残っている。

bashの初期設定状態

 WSLでは、こうした初期設定ののち、ユーザーのログイン手続きは省略され、/bin/bashが起動する。WSLでは、そもそもbashしか起動しないが、そのbashの初期設定は、原則ユーザーディレクトリにある「.bashrc」で行う。実際には、ログイン時には、以下のようなシーケンスでユーザーの環境が設定される。

1. ログイン直後(WSLではbash.exeを起動したとき)には、/etc/profileが実行される
 1.1 /etc/profile内では、以下の処理を行なう
 1.2 bashの場合、/etc/bash.bashrcが実行中のシェルに読み込まれて実行される
 1.3 /etc/profile.dディレクトリ以下の実行許可のある.shファイルがファイル名の順に実行される(※実行許可がない.shファイルは実行されない)
2. ~/.bash_profileを実行(個別ユーザーのbash用プロファイル)。なければ実行しない
3. ~/.bash_loginを実行(個別ユーザーのbash用ログインスクリプト)。なければ実行しない
4. ~/.profileを実行(個別ユーザーのbsh互換プロファイル)。bash以外でも実行
 4.1 ~/.profileは、~/.bashrcを実行(ユーザーのシェルがbashのときのみ)

 この状態がbash.exeを起動した直後の状態となる。ただし、WSL(Ubuntu Linux)では、「~/.bash_profile」と「~/.bash_login」は標準では存在しないため実行されない。/etc/側にあるファイルを修正すると、通常は他のユーザーにも影響が及ぶが、WSLでは、インストール時に設定したユーザーのほかには、rootしかシェルを対話的に起動するユーザーはない。

 そのためどうでもいいといえばいいのだが、何かの理由でユーザーを追加する可能性もあるだろうから、一般的な修正を行なっておくことをお勧めする。一般的には、自分のホームディレクトリ以下にあるファイルのみを修正して/bin/bashの初期状態を制御する。

 もう1つ、/etc/profileなど、ファイル名に「bash」という文字が含まれないスクリプトは、ログインシェルを/bin/bash以外に設定したときも有効だ。Linuxでは、ユーザーのログインシェルを変更することが可能であることに注意されたい。逆に「bash」が含まれるスクリプトは、意識的に設定しないかぎり、他のシェルに切り替えたときには無効になる。

 bashが起動したあと、その上で起動されるbashは現在の環境を引き継ぐ、また、初期状態として「/etc/bash.bashrc」、「~/.bashrc」を起動時に読み込む。このため、ログインシェルでとこれらの設定内容と関わる設定(たとえばコマンドのエイリアス設定)を手動で行っても、新たに起動されたbashでは、~/.bashrcを読み込んで実行しているため、設定が元に戻されることになる。

 ログアウトする場合、ログインシェルは、「~/.bash_logout」を実行する。個人環境に関して、なにかの後始末やデータを保存する必要があるなら、このスクリプトファイル内で実行する。

ドットソース実行に注意

 もう1つ、こうしたシェルスクリプトの実行は、「ドットソース」と呼ばれ、スクリプトファイルが実行中のbashに読み込まれて処理される。これは、bashからスクリプトファイルを単に指定して起動した場合とは違う。

 たとえばbashのプロンプトから「xxx.sh」ファイルを起動すると、新規に/bin/bashが起動して、これを実行する。このため、内部状態などの変更は、すべて新しく起動した/bin/bashプロセスに対して行われ、実行が終了すると消えてしまう。MS-DOSやWindowsのコマンドラインでもこの仕組みは同じで、初心者がつまづきやすいところだ。

 これに対して「ドットソース」実行は、現在の/bin/bashプロセスに対して指定されたスクリプトファイルを読み込み実行する。このため、変数やエイリアスといった設定をbashが保持したままになる。「ドットソース」実行は、「.」コマンドで行う。ドットだけだと意味が分からなくなってしまうので、ドット(ピリオド)がソースファイルを読んで実行するため「ドットソース」表記する。

WSLの再インストール

 /etc以下にある設定をむやみに変更すると、最悪、WSLが起動しなくなることがある。このため、まずは、WSLへのUbuntu Linuxのアンインストールと再インストール方法を解説しておく。WSL自体は、設定変更で壊れてしまうことはないが、Ubuntu Linux自体は、設定を間違えると、起動できなくなってしまう。特にWSLでは、いくつかの機能がうまく動いておらず、Linuxでは問題のない設定でもbash.exeが起動しなくなる可能性がある。

/etc以下にはさまざまな設定情報が含まれている

 たとえば、コンソール系の制御は、Linuxとしてみると完全ではないため、画面を分割する類いのscreenやtmuxといったソフトウェアがうまく動作しない。このため、こうしたアプリをログイン時にシェルとして起動してしまうような設定をすると、簡単にbash.exeが起動しなくなる。Ubuntu Linuxでは、byobuと呼ばれるscreenやtmuxのフロントエンドプログラムがあり、これをログイン時に起動する仕組みがあり、有効にしただけで次回からbash.exeが起動できなくなってしまう。

 どこで起動しているのかわかっているなら%userprofile%\local\lxss\rootfs以下をWindows側で修正することで復旧できるが、わからない場合には、再インストールするしかない。

 幸いなことにWSLへのUbuntu Linuxのアンインストールでは、ユーザーフォルダ(Linux側の/home以下と/root)を維持することができ、再インストール時に再度これを使うことができる。パスワードは再設定(前のものと同じにする必要はないし、同じでもかまわない)が必要だが、ユーザー名はそのまま残る。

 なので、重要なファイルはなるべく、自分のホームディレクトリ(WSL側の/home以下)に置くようにしよう。Linuxに慣れるまでの間は、ファイルを/tmpなどにおいて、あとからコピーしようなどとは考えないほうがいい。

 さて、アンインストールは、

lxrun /uninstall

で行なう。このとき、/fullオプションを付けると、ユーザーディレクトリも完全に消去するが、付けなければ、フォルダはそのまま残る。再インストールするには、

lxrun /install

とする。このとき、パスワードを聞いてくるが、ユーザー名に関しては、残っている/homeディレクトリから自動的に設定される(前回までLinux側で使っていたユーザー名)。これで、WSLの設定を間違えて起動しなくなったといった問題を解消できる。

 回復の方法や具体的な起動の仕組みがわかったので、次回は、bashの初期設定を見ていくことにしよう。

カテゴリートップへ

この連載の記事
1
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥39,800
2
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
¥26,880
3
【整備済み品】富士 通 2in1ノートパソコン V727【本体のみ】/第7世代Core M3/12.3型タッチパネル1920×1080/メモリ 8GB/SSD 128GB/Win 11/MS Office 2019/USB 3.1/Type-C/無線WIFI/オーディオ内蔵/WEBカメラ/初期設定済
【整備済み品】富士 通 2in1ノートパソコン V727【本体のみ】/第7世代Core M3/12.3型タッチパネル1920×1080/メモリ 8GB/SSD 128GB/Win 11/MS Office 2019/USB 3.1/Type-C/無線WIFI/オーディオ内蔵/WEBカメラ/初期設定済
¥9,600
4
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
¥29,800
5
【Amazon.co.jp限定】 ASUS ノートパソコン Vivobook 15 X1502VA 15.6インチ インテル Core i7 13620H メモリ16GB SSD 1TB Windows 11 バッテリー駆動 8.9時間 重量1.7kg PC Game Pass 3ヶ月利用権付き クワイエットブルー X1502VA-I7H161W
【Amazon.co.jp限定】 ASUS ノートパソコン Vivobook 15 X1502VA 15.6インチ インテル Core i7 13620H メモリ16GB SSD 1TB Windows 11 バッテリー駆動 8.9時間 重量1.7kg PC Game Pass 3ヶ月利用権付き クワイエットブルー X1502VA-I7H161W
¥104,800

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥1,880
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,390
3
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥1,880
4
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥660
5
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980
6
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
7
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
¥18,980
8
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
¥2,000
9
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,545
10
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
¥652

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン