💭

WSL2でArchベースのManjaroを使う方法

2021/12/13に公開
2

Manjaroってなんjaro

関連記事:
WSL2でArchLinuxを使う

Windows11がリリースされ、
WSLではWSLg時代に突入。
Windows上でLinuxUIを使う機会が増えてきた。

この流れならLinux DesktopもWindows上で使うんじゃないかなと思い、
良い感じのものを探していた。
候補に挙がったのは以下の二つ

Pop!_OSを試してみたが、
いまいちうまくいかなかった。
ならば、Manjaroでどうかということでやってみることにした。

過去にArchLinuxをDocker経由でWSLに組み込んだが、
同じ系統なので多分いけるやろ。
たぶん公式のDockerイメージを使ってWSLに組み込んでみよう。

https://hub.docker.com/r/manjarolinux/base

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

事前準備

Dockerが必要なので、
手っ取り早くDocker Desktopを入れておく

PowerShell上で以下のコマンドを実行

winget install Docker.DockerDesktop

DockerHubよりたぶん公式?のイメージをpullして起動

先にpullしておくとキャッシュしてくれるので。

docker pull manjarolinux/base:latest
docker run --rm -it -t manjarolinux/base:latest

Dockerfile

./Dockerfile
FROM manjarolinux/base:latest

ARG BUILDERNAME=builder
ARG USERNAME=dozo

RUN pacman-mirrors -c Japan,United_States\
 && pacman -Sy\
 && pacman -Syu --noconfirm --needed git sudo wget nano go base-devel
RUN usermod -l ${USERNAME} ${BUILDERNAME}\
 && groupmod -n ${USERNAME}  ${BUILDERNAME}\
 && usermod -d /home/${USERNAME}  -m ${USERNAME} 
RUN usermod -aG wheel ${USERNAME}\
 && passwd -d ${USERNAME}\
 && printf "%%wheel ALL=(ALL) NOPASSWD:ALL\n" | tee -a /etc/sudoers.d/wheel\
 && printf "[user]\ndefault=${USERNAME}\n" | tee /etc/wsl.conf

RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG="ja_JP.UTF-8" \
    LANGUAGE="ja_JP:ja" \
    LC_ALL="ja_JP.UTF-8"

USER ${USERNAME}

RUN cd \
 && git clone https://aur.archlinux.org/yay-bin \
 && cd yay-bin\
 && makepkg -si --noconfirm\ 
 && cd .. \
 && rm -rf ./yay-bin

WORKDIR /home/${USERNAME}

令和4年9月20日: Dockerfileを修正
コメントよりご指摘がありDockerfileにbase-develが必要のようです。(未確認)
DockerHubを確認したところ、
同年8月31日の更新でmanjarolinux/baseイメージサイズの容量が削減があった模様。

dockerビルド開始

docker build . -t manjaro:1.0

コンテナをエクスポートしてWSLにインポート

docker psにてコンテナIDを取得

docker run -t manjaro:1.0 test
docker ps -a
  CONTAINER ID   IMAGE         COMMAND
  e4c8378ef5ae   manjaro:1.0   "test"

PowerShell上でコンテナをディスクイメージに出力
インストール先を C:\Programs\Manjaroとすると

docker export -o manjaro.tar e4c8378ef5ae
wsl --import Manjaro C:\Programs\Manjaro manjaro.tar --version 2

WSLログインしてみる

ではログインしてみよう

wsl -d manjaro
$ passwd
New password:
Retype new password:
passwd: password updated successfully

(・∀・)(・∀・)

------------------- ↓ 後書はここから ↓-------------------

以下の事項は前述のDockerfileには記載済み。
調べると後からわかることも多いので、
分かった時点で逐次更新する方向で。

pacmanのリポジトリを日本にする

Archの時でもあったが、
pacmanリポジトリ遅い問題はmanjaroに変えたところで存在する。
前回はリポジトリサイトにリクエストを投げていたが、
どうやら更新するコマンドがあるらしいので今回はそれを使っている
一応アメリカも追加。

./Dockerfile
RUN pacman-mirrors -c Japan,United_States\
 && pacman -Sy

yayをインストール

go版pacmanであるyayをインストールの記述を改めて載せておく
ArchLinuxのインストールの時はソースビルドだが、
バイナリがあるので今回はそちらを使っている。

./Dockerfile
RUN pacman -Syu --noconfirm --needed go
・・・
RUN cd \
 && git clone https://aur.archlinux.org/yay-bin \
 && cd yay-bin\
 && makepkg -si --noconfirm\ 
 && cd .. \
 && rm -rf ./yay-bin

Discussion

tm1001tm1001

とても参考になる記事でした。ありがとうございます。
本日 2022年9月19日 時点のmanjarolinux/base:latestを使うとmakepkg の箇所で
ERROR: Cannot find the strip binary required for object file stripping.
が発生します。

下記の通り base-develの追加が必要なようです。
 && pacman -Syu --noconfirm --needed git sudo wget nano go base-devel

dozodozo

ご指摘ありがとうございます。
base-devel を追記しました。