- ArchWSLの使い方及びインストール方法です。
- 現在(2021-03-22)の時点ではOutdateしていません。
はじめに
Insider Previewを使っていること前提です。
Windows InsiderのDevリングで運用すると3ヶ月に一回OSが壊れるのでSlowにしたほうがいいですよ。まじで。(←最近はDevリングも安定してきました)
でもスリルと新機能がたまんねぇよな!
ドキュメント
オフィシャルドキュメンテーション
公式のドキュメンテーションです。
分からないことがあったら、下記のどちらかに飛んで、検索機能を使うといいと思います。
- wsldlのドキュメンテーション
- ArchWSLのドキュメンテーション
最初に知っておきたいこと
Shellとは
Shellでシェルと読みます。
ターミナルなどからの入力をコンパイルして、 OSに命令をする役割に当たります。
また、OSからの出力も受信します。
Terminalとは
Terminalでターミナルと読みます。
これはシェルにアクセスするためのものです。
ユーザーからの入力をシェルに入力したり、シェルからの出力を表示したりします。
WSLとは
Windows Subsystem For Linux
略してWSL(ダブリュー エス エル)です。
WSLで勘違いしやすいのが、あくまでもWSLはWindows上でLinuxを動かす機能だということです。
OSのことを指しているのではありません。
WSL1
WSL1(WSLと呼ばれていた) はLinuxカーネルをエミュレート、つまりLinuxカーネルのふりをしてOSを動かします。
そのためパフォーマンスが悪かったり、使えないシステムコールがあります。
まあ、Linuxのふりをするのにも限度があったわけですね。
WSL2
そこで誕生したのが WSL2 です。
これでLinuxカーネルをWindows上で動かせるようになりました。
パフォーマンスが劇的に向上しています。
下準備
まずWSLのインストール
PowerShellを管理者権限で開き
Win+R
;
powershell
or
pwsh
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
## Press keyboard "N" key at all times
再起動をしたら
wsl.exe --set-default-version 2 # デフォルトでWSL2をインストールするようにする
カーネルを更新
wsl_update_x64.msiをインストール
また、設定のアップデートにカーネルの更新がないかも確認してください。
もし更新が可能なら更新をしてください。
Wingetのインストール
github.com
/microsoft
/winget-cli
/releases
から.appxbundle
をダウンロードして開き、インストール。または再インストール。
Terminal
{
"$schema": "https://aka.ms/winget-settings.schema.json",
// For documentation on these settings, see: https://aka.ms/winget-settings
"source": {
"autoUpdateIntervalInMinutes": 1
},
"experimentalFeatures": {
"experimentalMSStore": true,
"experimentalCmd": true,
"experimentalArg": true,
"list": true,
"upgrade": true
}
}
# Winget Config
winget settings
# Winget Install
## Windows Terminal Preview
winget install Microsoft.WindowsTerminalPreview -s msstore
## PowerShell-Preview
winget install powershell-preview
## Alacritty (Stale)
### Wingetのマニフェストが少し古いです
winget install alacritty
これらは推奨ではありません。。必須なんだよなぁ。。なので入れます
Preview版のほうが新しいって感じでいいですよね?胸が躍リマスね!
- RegistoryのLxssを使ってる系(Win-Terとか)は不具合を起こすことがあります。そのときは再起動をします。
大抵は治るのですが、治らなかった場合はWindowsUpdとかのきっかけで治る場合もあります。早まってクリーンインストール繰り返してWindows構築何回もしたくないですよね^^
フォント
木漏れ日フォント+
Firacode+
Nerd をみっくすして使っています。。。みっくす、、えろいえっち
みっくす方法、リリースはここ!
https://git.io/ecchi
インストール
ArchWSLor
ArchWSL2から、Arch(2).zipをDL
ArchWSLと2の違いはSystemd関連です。
どっち??ってなったらArchWSLを試してみましょう。こっち使わないと2の恩恵がわからないしね!
このようにArch.exe
とrootfs.tar.gz
が入っています。
-
Arch.exe
はリネームすればWSLに登録するディストリ名を変えられます。(Arch.exe
ランチャーのソース) -
rootfs.tar.gz
はリネームしたらいけない。(詳しくはソース)
ソースの
main
より
https://github.com/yuk7/wsldl/blob/6e191a1876a4cdec8d47467b5f6baa2c78680a7b/main.c#L62
install.tar
,install.tar.gz
rootfs.tar
,rootfs.tar.gz
これらがインストールするソースボールの名前に使えます。
Gentooなどは.txz
なのでTarに解凍すればインストールできます。
私はArcherと言う名前にしてます。
WSLで動かすOSの場所
何処においてもいいんです。サイコー
ただ、分かりやすい位置に置いとくのがベターだと思います。
例 : C:\Users\Username\WSL\Arch\Ver2
例 : Z:\WSL\Zarch\
あとはターミナルでArch.exe起動しましょう。それだけでインストールされる。すき❤////
エラー出たらまずは再起動してみるといいです。
0x80370102
エラーが出たらBIOSで仮想化を有効化してください。
デフォルトターミナル
これは任意ですが、Arch.exe
から起動するのはデフォルトではWindows Terminal
ではないので変えることができます。
Arch.exe
をリネームしていたら代入してください。
### Arch.exeがあるディレクトリで実行
Arch.exe config --default-term wt
初期設定
※インターネット環境がある前提です^^
Pacman
vim /etc/pacman.d/mirrorlist;vim /etc/pacman.conf
pacman.conf
とmirrorlist
の書き方はArchWiki/Pacman と ArchWiki/Mirrorを参照してください。
pacman-key --init;pacman-key --populate;pacman -Syy archlinux-keyring
keyringの初期設定;keyringのインストール;keyringの更新
パッケージのインストール+アップグレード
pacman -Syyuu --needed base-devel fish vim neovim git progress python go repo tmux
WSL2ではSYSV IPC
が動作するためfakeroot-tcp
である必要はありません。うそついてごめんなさい。
最初にfakeroot
をインストールするか Y/n で聞かれるので n と打ち Enter を押しましょう。 Y だと一部システムが動かなくなります。
fakeroot-tcp
をもし置き換えてしまった場合は、やり直すかコンパイル済みのものをインストールします。
Installfakeroot-tcp
tmp_fakeroottcp=$(mktemp) &&
curl -L "https://mirror.lesviallon.fr/arch4edu/$(uname -m)/fakeroot-tcp-1.25.3-2-$(uname -m).pkg.tar.zst" > ${tmp_fakeroottcp} &&
pacman -U ${tmp_fakeroottcp} && rm -f ${tmp_fakeroottcp} && unset tmp_fakeroottcp
#### 非ルートユーザーの作成
ルートユーザーだと`yay`が使えないのですy。
`$Ur_Favo_Name` に作りたいユーザーの名を代入してください
```bash:shell
# 代入
export Ur_Favo_Name=''
## or
set -gx Ur_Favo_Name ''
# 作成
useradd -md /home/$Ur_Favo_Name $Ur_Favo_Name
# sudoの設定
$EDITOR /etc/sudoers
### Or
echo -e "\n##\n## Manually defining privilege user specification\n##\n${Ur_Favo_Name} ALL=NOPASSWD:ALL" \
>> /etc/sudoers
# パスワードの設定
passwd $Ur_Favo_Name
ユーザー名に代入してください。
viの場合、保存するときに:wq!
を使います。
...
ユーザー名 ALL=NOPASSWD:ALL
yay
git clone https://aur.archlinux.org/yay-git.git;sed -i -e /exit\ \$E_ROOT/d /bin/makepkg;cd yay-git;makepkg;pacman -U yay-git-*.pkg.tar.*
Genie
このままだとSystemdが使えないので(2ではない場合)
sudo -u $Ur_Favo_Name yay -S genie-systemd-git
その他
Shellの起動時にGenieが実行されるようにすると便利
genie -s
Genieを使いたくない場合FishならこうすることでConfを読み込まずにシェルを起動できる
wsl -- env HOME=(mktemp -d) fish
例えば、Tmuxすぐ起動したいなら
@REM e.g. locate in ${env:USERPROFILE}\bin etc....
@wsl.exe -d ArchV2 -- genie -c tmux
Xserverを使うには$DISPLAY
にIPアドレスを入れないといけないです。
これはipconfig
でもできるらしいけどやらない、、
set -gx DISPLAY (pwsh.exe -c 'Get-NetIPAddress -AddressFamily IPv4 | Where{$_.InterfaceAlias -eq "vEthernet (WSL)" } | select -ExpandProperty IPAddress' | perl -pe 's/\015\012/\012/g' | sed -e "s/\$/:3/" ) > /dev/null &
(絶対.NETのほうが速い、、、)
WindowsのPATHをLinux側で消したいとき
set PATH (echo $PATH|tr ' ' '\n'|grep -v /mnt/|grep -E '^/')
トラブルシューティング等
fishが/mnt
上で動かない
別シェルを使うしかないね、、、、、
Xを使うとdbusが応答しない
-> aurdbus-x11
に置き換える。
Dockerが使えない
-> podmanを使う (monoとかでも動くと思います。)
daemonレスで使えますが、rootレスで使うには別途作業が必要です。
-> ubuntuを使う
https://cloud-images.ubuntu.com/ から xxxxxx-server-cloudimg-amd64-wsl.rootfs.tar.gz
をDLしてrootfs.tar.gz
にリネーム
https://github.com/yuk7/wsldl/releases/download/19111602/icons.zip から icons.zip
/ubuntu.exe
(Ubuntuのバージョン番号を加えてリネームしたほうがわかりやすいかと)
この2つを同じディレクトリに置けばUbuntuがインストールできます。
あきかんはリサイクル
お問い合わせは、
お客様相談室(体言止め)
ピラミッド
知らんけど