WSLにArch Linuxをインストールします。
Ubuntu上のfish, ssh, code server, hexo, jellyfinをArch Linuxに移行します。

https://wiki.archlinux.org/title/Install_Arch_Linux_on_WSL

環境

Software

  • Widows 11 Pro
    • wsl 2.6.1
      • Arch Linux
        • fish 4.1.2
        • starship v1.24.0
        • code-server v4.105.1
        • hexo 8.1.0
          • hexo-theme-butterfly 5.5.1
        • jellyfin 10.11.0
      • Ubuntu (現行のデフォルト)

Ports

port 用途
22 ssh
443 code-server
4000 hexo s
8096 jellyfin

構築

Arch Linux導入

  1. WSLをアップデート
    wsl --update
  2. Arch Linuxをインストール
    管理者で実行
    wsl --install archlinux
    wsl --list
  3. 念のためWindowsを再起動
  4. Windows Terminalからログイン

Arch Linux環境設定

  1. 初期設定
    pacman-key --init
    pacman-key --populate
    pacman -Syu
    pacman -S base-devel git openssh vim wget curl
  2. アカウントの作成
    useradd -m -G wheel -s /bin/bash arch
    passwd arch
    pacman -S sudo
    echo '%wheel ALL=(ALL) ALL' > /etc/sudoers.d/wheel
    /etc/wsl.conf
    [boot]
    systemd=true

    [user]
    default = arch
  3. paru#paru-AUR-の導入
    https://ktkr3d.github.io/archlinux/#paru-AUR-の導入
  4. fish shell, starship設定
    https://ktkr3d.github.io/2024/10/17/fish_starship/
  5. fastfetch
    https://ktkr3d.github.io/2024/08/01/Fastfetch/
  6. ssh確認(現行WSL(Ubuntu)へ接続)
    ssh ubuntu@localhost
    ファイル転送(ディレクトリの場合)
    scp -r ubuntu@localhost:/hoge/fuga/ .
    • /home/ubuntu/.ssh/
    • /home/ubuntu/.local/share/mkcert/
    • /home/ubuntu/repos/blog/source/

Arch Linuxのサービス設定

  1. ssh設定
    sshdサービス設定

    Arch Linuxシェル
    sudo pacman -S openssh
    sudo systemctl enable --now sshd
  2. code server設定
    証明書のコピー

    scp -r ubuntu@localhost:~/.local/share/mkcert ~/.local/share/
    paru -S code-server
    ~/.config/code-server/config.yaml
    bind-addr: 0.0.0.0:443
    auth: none
    cert: /home/arch/.local/share/mkcert/DESKTOP-2P2LUE8.local.pem
    cert-key: /home/arch/.local/share/mkcert/DESKTOP-2P2LUE8.local-key.pem
    sudo systemctl enable --now code-server@$USER
  3. hexo設定
    https://ktkr3d.github.io/hexo/
    現行の設定ファイル./_config.butterfly.ymlと新しいの設定ファイルの雛形./node_modules/hexo-theme-butterfly/_config.ymlを比較して新しい設定ファイル./_config.butterfly.ymlを作成して保存

  4. jellyfin設定
    https://ktkr3d.github.io/2025/07/03/Jellyfin/

    sudo pacman -S jellyfin-server jellyfin-web

ポートフォワード

  1. 転送スクリプト
    c:\tools\wsl-proxy\wsl-proxy.ps1
    $WSL2_IPV4=bash -c "ip route | grep 'eth0 proto kernel scope' | cut -d ' ' -f9"
    $HOST_IPV4="*"
    $PORTS=@(22,443,4000,8096)

    foreach ($PORT in $PORTS)
    {
    netsh interface portproxy delete v4tov4 listenaddress=$HOST_IPV4 listenport=$PORT
    netsh interface portproxy add v4tov4 listenaddress=$HOST_IPV4 listenport=$PORT connectaddress=$WSL2_IPV4 connectport=$PORT
    }
  2. タスクスケジューラでシステム起動時にwsl-proxy.ps1を起動

WSL切り替え

  1. 現行のWSL(Ubuntu)を一旦停止
    Windowsコマンドプロンプト
    wsl --terminate <ディストリビューション名>
  2. デフォルトを切り替え
    wsl --list
    wsl --set-default archlinux
    wsl --list
  3. wslconfigを設定
    C:\Users\ユーザー名\.wslconfig
    [experimental]
    autoMemoryReclaim=gradual
  4. タスクスケジューラでシステム起動時にWSLを起動