astro-notion-blog のローカル環境を作ろうとして、どうにもエラーが出たりで「これは Linux 環境で作ったほうが楽だろうな」と思いたち Windows11 に WSL で Ubuntu を入れました。これもすんなり簡単に!とはいかなかったので、忘備録かねてまとめます。
1. WSL、Ubuntu のインストール
Windows に Linux 環境を作ろうという場合 Cygwin で頑張る記憶があったんですが、調べたところ、今は「WSL(Windows Subsystem for Linux)」というものがあるらしい。今回は WSL で環境を作ることに。
WSL のインストールには以下 2 つの方法があるとのこと。
- WSLコマンドを使ったインストール(従来)
- Microsoft Store 経由でインストール(今後こちら推奨らしい)
参考)
https://atmarkit.itmedia.co.jp/ait/articles/2301/27/news029.html
推奨とされてる Microsoft Store 経由でインストールすることに。
Microsoft Store で「wsl」と検索し、「Windows Subsystem for Linux」と「Ubuntu」をインストール。
インストールが終わったら、Microsoft Store の Ubuntu ページの「開く」ボタンを押す。
1-1. エラーが出てしまったら
※エラーが出ない場合は「1-2. エラーが出ない状態になったら」に飛んで OK。
黒い画面として Ubuntu が開いて、本来ならここで Ubuntu のユーザー名とパスワードを設定するはず…なのだがエラーが出てしまって進まず。エラー内容は次のようなもの。
Installing, this may take a few minutes...
WslRegisterDistribution failed with error:~~以下中略~~
Press any key to continue...
私の場合、仮想マシンプラットフォームが有効化されていないことが原因だった。なお、仮想化支援機能(Intel VT-x/AMD-V)が BIOS で無効になってる場合にもこのようなエラーが出るらしい。
1-1-1. 仮想マシンプラットフォームの有効化方法
[コントロールパネル] > [プログラムと機能] > 左ナビゲーション内の [Windows の機能の有効化または無効化] をクリック > 「仮想マシンプラットフォーム」にチェックをつけて OK ボタンを押す。
最後にマシンを再起動。
1-2. エラーが出ない状態になったら
マシン再起動後に改めて Ubuntu を開く。
「Enter new UNIX username:」とユーザー名を聞かれるので入力して Enter キーを押す、続いてパスワードも聞かれるので入力して Enter キーを押す。
1+. Windows Terminal を入れておくと楽
ここからの作業、PowerShell と Ubuntu の切り替え(黒い画面の切り替え)が多くあるので Windows Terminal を使うとタブで切り替えられたり色々便利です。
別記事にまとめたので、リンクを貼っておきます。
2. Ubuntu に色々入れていく
上記ページを参考にしつつ、作業を進めた。Windows11 の PowerShell と、Ubuntu の bash、2 つの黒い画面を使っていく。間違えて反対に打ち込むとエラーになるので注意。
Ubuntu を立ち上げ、ディストリビューション内のパッケージを更新する。
sudo apt update
…が、もうこの時点でエラーが出た。最初気づかずに 3 時間くらいやり直してしまった。
2-1. Temporary failure resolving エラーが出た場合
エラー文は「Temporary failure resolving 'archive.ubuntu.com'」。このエラー文で検索したところ以下の記事を発見。
名前解決ができていないことが原因とのこと。
PowerShell で以下のように打ち込んで自分の DNS サーバーを調べる。
ipconfig.exe /all
いっぱい色々な情報が表示されるので、「DNS サーバー」と書いてある部分を探す。
私の場合こんなかんじで、 192.168.11.1
が DNS サーバーの IP アドレスだった。
2-1-1. /etc/resolv.conf に nameserver を書き込む
/etc/resolv.conf
を開く
sudo nano /etc/resolv.conf
次に以下の内容を追記する。 192.168.11.1
の部分は各自の DNS サーバー IP アドレスにする。もしすでに nameserver~という行があったら、削除してから追記する。
保存は Ctrl+o
→ Enter
。閉じるときは Ctrl+x
。
ここではエディタとして nano を使っていますが、Vim が良い!という方は、コマンドの nano 部分を vim に変更しても◯。(Vim, nano に限らずエディタはなんでも OK 。)
nameserver 192.168.11.1
これでエラーが出なくなるはずなので、先程エラーがでてしまった以下の内容を打ち込んでみる。
sudo apt update
問題なく進んだら OK。
2-1-2. /etc/resolv.conf の内容を永続化させる
先程設定した etc/resolv.conf
の内容は WSL によって上書きされてしまい設定が変わってしまうことがあるので、変更されないよう永続化させる設定をしておく。
まずは /etc/wsl.conf
を開く。
sudo nano /etc/wsl.conf
以下の内容を追記する。
[network]
generateResolvConf = false
この設定が効いた状態にするため、一旦 PowerShell で以下の内容を打ち込み WSL を再起動。
wsl --shutdown
/etc/resolv.conf
の中身が上書きされてしまっているかもしれないため、「2-1-1. /etc/resolv.conf に nameserver を書き込む」の内容を再度行って設定する。
参考)
2-2. アプリのインストール
先程も見ていた以下のページを改めて開き、色々なアプリをインストール。
私は Google Chrome、X11 アプリ、Nautilus を入れました。
ここでインストールしたアプリは、以下の 2 つの方法で起動できる。
- Ubuntu にコマンドを打ち込んで起動
- Windows のアプリ一覧の「Ubuntu」部分から起動
Linux 向け Google Chrome
- ディレクトリを temp フォルダーに変更
cd /tmp
- wget を使用してそれをダウンロード
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- 現在の安定したバージョンを取得
sudo dpkg -i google-chrome-stable_current_amd64.deb
- パッケージを修正
sudo apt install --fix-broken -y
- パッケージを構成
sudo dpkg -i google-chrome-stable_current_amd64.deb
Nautilus
sudo apt install nautilus -y
X11 アプリ
sudo apt install x11-apps -y
それぞれ起動できるか確認して、問題なければ OK。
3. 日本語化と日本語入力できるようにする
デフォルトでは日本語に対応していないので、先程インストールした Chrome で日本語サイトを見ると日本語部分が文字化けする。
そのため日本語対応が必要。以下のサイトを参考に対応しました。
4. Windows / Ubuntu のファイルにアクセスするには
4-1. Windows から Ubuntu のファイルにアクセスする
Windows で \\wsl$\
にアクセスするとディストリビューションごとのフォルダがある。今回は「Ubuntu」フォルダ。
4-2. Ubuntu から Windows のファイルにアクセスする
Ubuntu で cd /mnt/c/
にアクセスすると Windows の C ドライブにアクセスできる。
参考