お仕事で使っている Archlinux が yay -Syu
で gpg key のエラーが出るようになった、解決方法を調べるの面倒、だいぶ長く使ってる環境、そろそろ VirtualBox やめたいということで、WSL2 に移行した際のめもです。
基本的にはMSの公式ドキュメントに従えばOK。
注意: どうやらこの手順だとイメージに何かしらの問題がある模様。locale の設定でエラーが出ています。原因わかり次第更新します。 解決しました
前提
- Windows 10
- WSLに Ubuntu 環境導入済み
Ubuntu 環境に docker install
Docker がまだ入っていなかったので、下記公式に従ってインストール。Ubuntu でなくても Docker が実行できればなんでもいいです。
Archlinux の tar イメージ作成
このステップ。
https://docs.microsoft.com/ja-jp/windows/wsl/use-custom-distro#export-the-tar-from-a-container
上記手順は centos なので、その代わりに Archlinux の公式 Docker image を使います。
sudo service docker start
sudo docker run -t archlinux ls / # (1)
dockerContainerID=$(sudo docker container ls -a | grep -i archlinux| awk '{print $1}') # (2)
sudo docker export $dockerContainerID > /mnt/c/temp/archlinux.tar
sudo docker rm $dockerContainerID
基本は公式手順通り。ポイントは以下。
- デフォルトでは docker コマンドの実行には要sudo
- centos の手順では (1) で
bash ls /
を指定しているが、archlinux のイメージでは entry point が設定されているのでls /
のみでOK。bash
を指定すると/usr/sbin/ls: cannot execute binary file
のエラー発生。 - Docker コンテナはデフォルトは終了しても残るので、(1) のコマンドを繰り返すと、(2) で複数のコンテナIDを取得することになってしまうので注意
- 最後に不要になったコンテナを削除。
WSL に Import
Powershell を起動してtar ファイルをインポートし、起動。
wsl --import Arch c:\<path-to-disk-image-dir> .\archlinux.tar
wsl -d Arch
パッケージを更新しておく。
pacman -Syu
Pacman のミラー設定
pacman -S pacman-contrib # rankmirrors を使うのに必要
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
curl -s "https://archlinux.org/mirrorlist/?country=JP&country=AU&protocol=https&use_mirror_status=on" | sed -e 's/^#Server/Server/' -e '/^#/d' | rankmirrors -n 5 - > /etc/pacman.d/mirrorlist
ユーザーの作成とデフォルトログインユーザーの変更
ログインユーザーが root になっているので、普段使用する一般ユーザーを追加。
useradd -m -G wheel -s /bin/bash <username>
passwd <username> # パスワードを設定
sudo を使えるように。
pacman -S sudo vim
EDITOR=vim visudo
# %wheel ALL=(ALL:ALL) NOPASSWD: ALL <-- この行をアンコメント
作成したユーザーでログインするよう変更。
echo -e "[user]\ndefault=<username>" >> /etc/wsl.conf
WSLインスタンスを再起動して、sudo 設定が反映されていることを確認。
wsl --terminate Arch
wsl -d Arch
sudo ls
locale設定
/etc/locale-gen
の ja_JP.UTF-8 UTF-8
の行をアンコメントして次のコマンドを実行。
locale-gen
しかしエラー発生
ja_JP.UTF-8...[error] cannot open locale definition file `ja_JP': No such file or directory
いろいろ調べたところ、どうやら /locale/lib/locale
に該当のファイルがないらしい。
こちらを参考に glibc のキャッシュから必要なファイルをコピー。
https://zenn.dev/dozo/articles/30b0a292246f92
# 上記記事から引用
cd
mkdir glibc
cp /var/cache/pacman/pkg/glibc-2.35-2-x86_64.pkg.tar.zst ./
tar xvf ./glibc-2.35-2-x86_64.pkg.tar.zst -C ./glibc
sudo cp usr/share/i18n/locales/ja_JP /usr/share/i18n/locales/
再度 locale-gen
を実行して完了。
locale-gen
Generating locales... ja_JP.UTF-8... done
Generation complete.
以上!