メインコンテンツまでスキップ

「WSL」タグの記事が7件件あります

全てのタグを見る

WSL2 に Rocky Linux 8.10 をインストールする

· 約2分
ひかり
Main bloger

WSL 2 イメージのダウンロード

https://dl.rockylinux.org/pub/rocky/8/images/x86_64/Rocky-8-Container-Base.latest.x86_64.tar.xz

ここからダウンロードする。

参考: https://docs.rockylinux.org/8/guides/interoperability/import_rocky_to_wsl/

イメージを展開

tar.xz を展開し、tar 形式にする。 tar にすることで、WSL2 へのインポートが可能となる。

cd ~/Downloads

xz -d Rocky-8-Container-Base.latest.x86_64.tar.xz

※Windows にインストール済みの bsdtar では展開不可。 ※xz コマンドがない場合は、cygwin64 でインストールするか、別の WSL ディストリビューションを用いて展開する。

イメージのインポート

WSL2 にイメージをインポートする。

wsl --import RockyLinux-8.10 $HOME .\Rocky-8-Container-Base.latest.x86_64.tar --version 2

イメージの確認

wsl -l -v

ユーザーの追加とデフォルトユーザーの設定

ユーザー名: hikari の場合

wsl -d RockyLinux-8.10 -u root -- dnf install sudo passwd -y

wsl -d RockyLinux-8.10 -u root -- adduser hikari

wsl -d RockyLinux-8.10 -u root -- passwd -d hikari

wsl -d RockyLinux-8.10 -u root -- usermod -aG wheel hikari

wsl -d RockyLinux-8.10 -u root -- sed -i 's/^# %wheel/%wheel/' /etc/sudoers

wsl -d RockyLinux-8.10 -u root -- echo -e "[user]\\ndefault=hikari" `| tee -a /etc/wsl.conf

イメージの起動

wsl -d RockyLinux-8.10

Rocky Linux 8.10 を WSL にインストールする

· 約2分
ひかり
Main bloger

Rocky Linux 8.10 のイメージをダウンロードする

$dest = Join-Path $env:TEMP "Rocky-8-Container-Base.latest.x86_64.tar.xz"
Invoke-WebRequest -Uri "https://dl.rockylinux.org/pub/rocky/8/images/x86_64/Rocky-8-Container-Base.latest.x86_64.tar.xz" -OutFile $dest

インポート

wsl --import RockyLinux-8.10 $HOME $dest

passwd のインストール

wsl -d RockyLinux-8.10 -u root dnf update -y `&`& dnf install -y passwd

ユーザーの作成

$username = "hikari" # 好きなユーザー名を設定
wsl -d RockyLinux-8.10 -u root useradd -mG wheel $username
wsl -d RockyLinux-8.10 -u root passwd -d $username # ユーザーのパスワードを消去

sudo のインストール

wsl -d RockyLinux-8.10 -u root dnf update -y `&`& dnf install sudo -y

デフォルトユーザーの設定

$username = "hikari" # 好きなユーザー名を設定
$uid = wsl -d RockyLinux-8.10 id $username -u
if (-not $uid) {
Write-Error "UID の取得に失敗しました。ユーザー '$username' が存在しない可能性があります。"
exit 1
}

$basePath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss"

$targetKey = Get-ChildItem $basePath | Where-Object {
(Get-ItemProperty $_.PSPath).DistributionName -eq "RockyLinux-8.10"
}
if (-not $targetKey) {
Write-Error "DistributionName 'RockyLinux-8.10' が見つかりませんでした。"
exit 1
}

Set-ItemProperty -Path $targetKey.PSPath -Name "DefaultUid" -Value ([int]$uid)

EPEL の有効化

wsl -d RockyLinux-8.10 -u root dnf update -y `&`& dnf install -y epel-release

起動

wsl -d RockyLinux-8.10

デフォルトのディストリビューションにする場合

wsl --set-default RockyLinux-8.10

FastFetch のインストール

wsl -d RockyLinux-8.10 -u root dnf update -y `&`& dnf install fastfetch

FastFetch の実行

> wsl -d RockyLinux-8.10 -u root fastfetch
__wgliliiligw_, root@DESKTOP-MS-7C56-B550
_williiiiiiliilililw, -------------------------
_%iiiiiilililiiiiiiiiiii_ OS: Rocky Linux 8.10 x86_64
.Qliiiililiiiiiiililililiilm. Host: Windows Subsystem for Linux (2.0.14.0)
_iiiiiliiiiiililiiiiiiiiiiliil, Kernel: 5.15.133.1-microsoft-standard-WSL2
.lililiiilililiiiilililililiiiii, Uptime: 8 mins
_liiiiiiliiiiiiiliiiiiF{iiiiiilili, Packages: 285 (rpm)
jliililiiilililiiili@` ~ililiiiiiL Shell: bash 4.4.20
iiiliiiiliiiiiiili>` ~liililii Display 1: 1920x1080 @ 60Hz
liliiiliiilililii` -9liiiil Display 2: 1920x1080 @ 60Hz
iiiiiliiliiiiii~ "4lili WM: WSLg (Wayland)
4ililiiiiilil~| -w, )4lf Terminal: Windows Terminal
-liiiiililiF' _liig, )' CPU: AMD Ryzen 9 3900X (24) @ 3.800018 GHz
)iiiliii@` _QIililig, GPU: Microsoft Corporation Basic Render Driver
)iiii>` .Qliliiiililw Memory: 458.57 MiB / 62.76 GiB (0%)
)<>~ .mliiiiiliiiiiil, Disk (/): 51.72 GiB / 1007 GiB (5%)
_gllilililiililii~ Locale: C.UTF-8
giliiiiiiiiiiiiT`
-^~$ililili@~~' ████████████████████████
████████████████████████

Ubuntu (WSL2 含む) に pyenv と Python をインストールする方法

· 約1分
ひかり
Main bloger

依存パッケージのインストール

参考: Home · pyenv/pyenv Wiki

sudo apt update
sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

Pyenv のインストール

参考: pyenv/pyenv-installer: This tool is used to install pyenv and friends.

curl https://pyenv.run | bash

~/.bashrc に初期化スクリプトを書き込む

# ~/.bashrc を開く
code ~/.bashrc

以下を書き込みます。

export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

Python のインストール

インストール可能なバージョン一覧を表示

pyenv install -l

Python のインストール

Python 3.12.2 をインストールします。

pyenv install 3.12.2

Python のバージョンを指定

デフォルトのバージョンを Python 3.12.2 に設定します。

pyenv global 3.12.2

python -V # Python 3.12.2

Ubuntu (WSL2 含む) に dotnet をインストール方法

· 約1分
ひかり
Main bloger

参考: パッケージ マネージャーを使用せずに Linux に .NET をインストールする - .NET | Microsoft Learn

インストールスクリプトのダウンロード

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh

インストールスクリプトへ実行権限付与

chmod +x ./dotnet-install.sh

dotnet SDK をインストール

./dotnet-install.sh

最新版をインストールする場合は

./dotnet-install.sh --version latest

パスを通す

$HOME/.bashrc を開き、以下を追記

export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

WSL2 で SSH のトンネルを使用して、WSL2 上のサーバーを LAN に公開する方法

· 約2分
ひかり
Main bloger

Step1. WSL 側に OpenSSH Server をインストール

WSL2 に OpenSSH Server をインストールします。 それと、sshd サービスを立ち上げます。

# WSL2 側
sudo apt install openssh-server
sudo service sshd start

Step2. Windows 側で公開鍵を登録

Windows に公開鍵を登録していない場合は、以下のコマンドを実行します。

# Windows 側
ssh-keygent -t ed25519

次に WSL2 に公開鍵を登録します。

# Windows 側
$pubkey = $(cat $HOME\.ssh\id_ed25519.pub)
wsl -- echo $pubkey `| tee -a `$HOME/.ssh/authorized_keys

Step3. SSH でトンネルを通す

Windows から WSL2 に対し、SSH 接続を行います。

# Windows 側
ssh (wsl -- hostname -I).trim() -g -L8081:localhost:8080

コマンドを区切って説明します。

  • (wsl -- hostname -I).trim() は WSL2 の IP アドレスを取得します
  • -g はポートを LAN にフォワーディングします (外部の端末から 192.168.x.x のようなアドレスで参照可能になります)
  • -L はローカルフォワードのオプションです。サーバーのポートをローカルに転送します
  • 8081localhost:8080 は ローカルの 8081 にアクセスすると、localhost:8080 に転送されるという意味です。 ここでいう localhost はサーバー側から見た localhost です

Step4. サーバーを立ち上げる

公開対象となるサーバーを WSL2 上で立ち上げます。

# WSL2 側
ruby -run -e httpd . # ディレクトリ一覧が公開される

Step5. サーバーにアクセスする

http://localhost:8081 または、http://<ipconfig で表示される IP アドレス>:8081 でサービスにアクセスできます。

トンネル接続によるデメリットとしては毎回トンネルを通すのが面倒なことです。 不安定ですが、netsh interface portproxy ~ による設定を行っても同じようにできます。

rbenv (WSL2 / Ubuntu) へのインストール方法

· 約1分
ひかり
Main bloger

依存パッケージのインストール

sudo apt update
sudo apt install autoconf patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev -y

rbenv のインストール

# rbenv と ruby-build をインストール
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash

# 起動時に rbenv を読み込み
echo 'eval "$($HOME/.rbenv/bin/rbenv init - bash)"' | tee -a ~/.bashrc

参考

Ruby 3.3.0 のインストール

source ~/.bashrc     # rbenv を初期化 (WSL 再ログインでも可)
rbenv install 3.3.0 # Ruby 3.3.0 のインストール
rbenv global 3.3.0 # Ruby 3.3.0 を規定に設定

参考

WSL2 で DNS サーバーを設定する

· 約1分
ひかり
Main bloger

/etc/resolv.conf の自動生成の無効化

/etc/wsl.conf を以下のように編集する。

[network]
generateResolvConf = false

/etc/resolv.conf の作成

例えば、DNS サーバーが 1.1.1.1 のとき、/etc/resolv.conf は以下のように編集する。

nameserver 1.1.1.1

削除されないように

WSL2 を再起動すると /etc/resolv.conf が削除されるので、削除されないようにする。

sudo chattr +i /etc/resolv.conf

参考サイト