LoginSignup
0
2

More than 1 year has passed since last update.

WSL2 に Archlinux をインストールするめも

Last updated at Posted at 2022-07-03

お仕事で使っている 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-genja_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.     

以上!

0
2
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
0
2