いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

WSL2でAlpine Linuxの環境を作る

概要

Alpine Linux のページで rootfs ファイルがあるのを発見したので、ついでにWSL2の環境を作ったので忘れないうちにメモメモ。。

Alpine Linux の rootfs は以下からダウンロードできます。

alpinelinux.org

右下に MINI ROOT FILESYSTEM というセクションがあるので、そこからダウンロードします。

alpine-minirootfs-3.15.0-x86_64.tar.gz を落としたのですが、なんとサイズが 2.6MB 。さすが軽量Linux。

後は、参考情報にある記事と同じ内容になりますが、セットアップしていきます。

rootfs をインポート

> wsl --import alpine c:\data\wsl\alpine c:\data\rootfs\alpine-minirootfs-3.15.0-x86_64.tar --version 2

起動して初期設定

先程インポートした環境に入ります。

> wsl -d alpine

ルートユーザでログインした状態になっているので、初期設定を済ませます。

私の場合はGoでちょっと遊べればいいので、それ用のものなどをインストール。

# 最低限必要なものとかタイムゾーンとかユーザ作成とか
$ apk update
$ apk add shadow tzdata sudo bash bash-completion git vim make musl-dev go curl openssh figlet bat

$ cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ echo 'Asia/Tokyo' > /etc/timezone
$ echo 'export TZ=Asia/Tokyo' >> /etc/profile
$ echo 'export LANG=ja_JP.UTF-8' >> /etc/profile
$ echo 'export LANGUAGE=ja_JP.UTF-8' >> /etc/profile
$ echo 'export LC_ALL=ja_JP.UTF-8' >> /etc/profile
$ echo 'export GOPATH=/go' >> /etc/profile
$ echo 'export PATH=/go/bin:/usr/local/go/bin:${PATH}:/mnt/c/Windows' >> /etc/profile

# ユーザ作成
$ useradd -m -s $(which bash) dev
$ passwd dev
$ usermod -G wheel dev

# GOPATHの場所を用意して、オーナーを調整
$ mkdir /go
$ chown dev:wheel /go

# WSL2で入ったらデフォルトのユーザをdevに
$ cat << EOF > /etc/wsl.conf
[user]
default=dev
[interop]
appendWindowsPath=false
EOF

# sudo出来るように
$ cat << EOF > /etc/sudoers
dev ALL=(root) ALL
EOF

$ exit

個々まで来たら、一度再起動しておきます。

> wsl -t alpine

一般ユーザでの初期設定

次にログインすると一般ユーザになっています。

> wsl -d alpine

後はちょっとした調整。

# .profileと.bashrcとか
$ echo '. ${HOME}/.bashrc' >> "${HOME}/.profile"
$ echo 'PS1="\[\e[1;32m\]\u@\h:\[\e[0m\]\w\[\e[1;32m\]\n$ \[\e[0m\]"' >> "${HOME}/.bashrc"
$ echo 'cd ~' >> "${HOME}/.bashrc"
# Windowsのパス追加を設定で無効にしている場合は code コマンドが見えないのでエイリアス追加
$ echo 'alias code=/mnt/c/path/to/vscode/bin/code' >> "${HOME}/.bashrc" 

# Goでよく使うライブラリをインストール
$ go install golang.org/x/tools/cmd/goimports@latest
$ go install honnef.co/go/tools/cmd/staticcheck@latest

# おまけ
$ cd /tmp
$ git clone https://github.com/xero/figlet-fonts.git
$ sudo mkdir -p /usr/share/figlet
$ sudo mv figlet-fonts /usr/share/figlet/fonts

これで個人的にはオッケイ。最後に再起動して入り直せば環境出来上がりです。

> wsl -t alpine
> wsl -d alpine
$ figlet -f starwars 'Alpine WSL2'
     ___       __      .______    __  .__   __.  _______
    /   \     |  |     |   _  \  |  | |  \ |  | |   ____|
   /  ^  \    |  |     |  |_)  | |  | |   \|  | |  |__
  /  /_\  \   |  |     |   ___/  |  | |  . `  | |   __|
 /  _____  \  |  `----.|  |      |  | |  |\   | |  |____
/__/     \__\ |_______|| _|      |__| |__| \__| |_______|

____    __    ____   _______. __       ___
\   \  /  \  /   /  /       ||  |     |__ \
 \   \/    \/   /  |   (----`|  |        ) |
  \            /    \   \    |  |       / /
   \    /\    / .----)   |   |  `----. / /_
    \__/  \__/  |_______/    |_______||____|

参考情報

alpinelinux.org

devlights.hatenablog.com

github.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com