Open35

Minisforum UM790-Pro セットアップ

nmemotonmemoto

Powershellを管理者権限で実行して以下必要そうなパッケージを導入

winget install Microsoft.VisualStudioCode SlackTechnologies.Slack Discord.Discord AgileBits.1Password  Microsoft.PowerShell Microsoft.WindowsTerminal
nmemotonmemoto

以下を実行して、WSLを実行できる環境を作りたかったが、何かが足りないようだ

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
PS C:\Users\takaf> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
openSUSE-Leap-15.5                     openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed                    openSUSE Tumbleweed
PS C:\Users\takaf>
PS C:\Users\takaf> wsl --install Debian
インストール中: Debian GNU/Linux
Debian GNU/Linux がインストールされました。
Debian GNU/Linux を起動しています...
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370114
Error: 0x80370114 ???????????????????????????????????

Press any key to continue...
nmemotonmemoto

Windows Terminalでwsl --install Debianを改めて試したところ、BIOSで仮想化有効にしてねと怒られた。

PS > wsl --install Debian
Debian GNU/Linux は既にインストールされています。
Debian GNU/Linux を起動しています...
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
For information please visit https://aka.ms/enablevirtualization
Press any key to continue...
nmemotonmemoto

タスクマネージャー > パフォーマンス > CPU を確認したら、確かに、仮想化が無効になっていた。

nmemotonmemoto

ちゃんと起動することができた。

PS > wsl --install Debian
Debian GNU/Linux は既にインストールされています。
Debian GNU/Linux を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
nmemotonmemoto

いろいろあって、上記でインストールしたDebianを消す羽目になり、UbuntuとDebianをインストールしたが、Ubuntuがデフォルトとなってしまった。

Debianをデフォルトとするために、以下を行った。

PS C:\Users\nmemoto> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)
Debian
PS C:\Users\nmemoto> wsl --set-default Debian
この操作を正しく終了しました。
PS C:\Users\nmemoto> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Debian (既定)
Ubuntu
PS C:\Users\nmemoto>
nmemotonmemoto

一旦、インストールしたパッケージのアップグレード

まずは対象の有無を確認

PS > winget upgrade
名前                                                    ID                           バージョン    利用可能      ソース
-----------------------------------------------------------------------------------------------------------------------
Microsoft Edge                                          Microsoft.Edge               114.0.1823.82 114.0.1823.86 winget
Microsoft Visual C++ 2015-2019 Redistributable (x64) -… Microsoft.VCRedist.2015+.x64 14.29.30133.0 14.36.32532.0 winget
PowerShell 7-x64                                        Microsoft.PowerShell         7.3.5.0       7.3.6.0       winget
4 アップグレードを利用できます。

次のパッケージにはアップグレードを適用可能ですが、アップグレードには明示的対象化が必要です:
名前    ID              バージョン 利用可能 ソース
--------------------------------------------------
Discord Discord.Discord 1.0.9013   1.0.9015 winget

全部アップグレード

PS > winget upgrade --all
名前                                                    ID                           バージョン    利用可能      ソース
-----------------------------------------------------------------------------------------------------------------------
Microsoft Edge                                          Microsoft.Edge               114.0.1823.82 114.0.1823.86 winget
Microsoft Visual C++ 2015-2019 Redistributable (x64) -… Microsoft.VCRedist.2015+.x64 14.29.30133.0 14.36.32532.0 winget
PowerShell 7-x64                                        Microsoft.PowerShell         7.3.5.0       7.3.6.0       winget
4 アップグレードを利用できます。

次のパッケージにはアップグレードを適用可能ですが、アップグレードには明示的対象化が必要です:
名前    ID              バージョン 利用可能 ソース
--------------------------------------------------
Discord Discord.Discord 1.0.9013   1.0.9015 winget

(1/2) 見つかりました・・・・・
nmemotonmemoto

winget でのuninstallができなくなっていた。

PS C:\Users\nmemoto> winget uninstall Microsoft.VisualStudioCode
見つかりました Microsoft Visual Studio Code [Microsoft.VisualStudioCode]
パッケージのアンインストールを開始しています...
コマンドの実行中に予期しないエラーが発生しました:
0x800401f5 : �A�v���P�[�V������������܂��

そんなときは、直接アンインストーラーを実行すればよかった。
VSCodeは以下の場所にあった。

C:\Users\??????\AppData\Local\Programs\Microsoft VS Code
nmemotonmemoto

デフォルトで設定されたローカルのユーザー名が気に入らなくて変更したらすこぶる面倒なことになったので、何より一番最初にこれをやるべきだった。

nmemotonmemoto

WSLのDebianのセットアップ

nmemotonmemoto

Docker

Dockerのインストール

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker インストール後のユーザ権限とsystemdの自動起動設定

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
sudo service docker stop
sudo service docker start
nmemotonmemoto

Go

バージョンを気にしないので、aptインストール

sudo apt install golang
nmemoto@um790pro ~> go version
go version go1.19.8 linux/amd64
nmemotonmemoto
nmemotonmemoto

gh

Github CLIの導入

https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt

curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
&& sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y
nmemotonmemoto

リポジトリへのアクセスのためのエイリアス設定

rでリポジトリ一覧を確認できるようにした。

~/.config/fish/config.fish
alias r='cd $(ghq root)/$(ghq list | peco)'
nmemotonmemoto

WSLでブラウザを開くときに、WindowsのEdgeを開く設定

https://akimon658.github.io/en/p/2021/wsl-default-browser/ を参照

nmemoto@um790pro ~ [1]> sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser /mnt/c/Program\ Files\ \
(x86\)/Microsoft/Edge/Application/msedge.exe 1
[sudo] password for nmemoto:
update-alternatives: using /mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe to provide /usr/bin/x-www-browser (x-www-browser) in auto mode

上記を一度したが、一般的には環境変数BROWSERに設定することを思い出し、以下としようとした。

~/.config/fish/config.fish
# ブラウザ設定
set BROWSER "/mnt/c/Program\ Files\ \(x86\)/Microsoft/Edge/Application/msedge.exe"

さらに調べると、pwsh.exe /c startを設定するとよさそうなことがわかった

https://secon.dev/entry/2020/09/28/124700-wsl2-browser-env/

~/.config/fish/config.fish
# ブラウザ設定
set BROWSER "pwsh.exe /c start"
nmemotonmemoto

リポジトリのブラウザ画面を開くのに便利なエイリアス設定

~/.config/fish/config.fish
alias open="pwsh.exe /c start"  # https://secon.dev/entry/2020/09/03/073846/
alias rb='open https://$(ghq list | peco)' # Repository Browser
nmemotonmemoto

systemd

https://zenn.dev/link/comments/c0a91f8905b01c でDockerの自動起動の設定をしたが、デフォルトだとsystemdが有効でないことを知った。(serviceコマンドを使っていたのはそれが理由だったのか。)

以下を参考にsystemdを有効にした
https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/

(Debianの)wsl内の/etc/wsl.confを以下のようにする

/etc/wsl.conf
[boot]
systemd=true

WindowsのPowershellで以下を実行して、WSLインスタンスを再起動する。

 wsl --shutdown

確認したら確かに起動していた

sudo systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Sun 2023-07-23 22:36:10 JST; 33min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 134 (dockerd)
      Tasks: 23
     Memory: 127.3M
     CGroup: /system.slice/docker.service
             └─134 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jul 23 22:36:10 um790pro dockerd[134]: time="2023-07-23T22:36:10.497269509+09:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon >
Jul 23 22:36:10 um790pro dockerd[134]: time="2023-07-23T22:36:10.570896510+09:00" level=info msg="Loading containers: done."
Jul 23 22:36:10 um790pro dockerd[134]: time="2023-07-23T22:36:10.607051724+09:00" level=warning msg="WARNING: No blkio throttle.read_bps_device support"
Jul 23 22:36:10 um790pro dockerd[134]: time="2023-07-23T22:36:10.607080377+09:00" level=warning msg="WARNING: No blkio throttle.write_bps_device support"
Jul 23 22:36:10 um790pro dockerd[134]: time="2023-07-23T22:36:10.607083683+09:00" level=warning msg="WARNING: No blkio throttle.read_iops_device support"
Jul 23 22:36:10 um790pro dockerd[134]: time="2023-07-23T22:36:10.607086428+09:00" level=warning msg="WARNING: No blkio throttle.write_iops_device support"
Jul 23 22:36:10 um790pro dockerd[134]: time="2023-07-23T22:36:10.607097229+09:00" level=info msg="Docker daemon" commit=4ffc614 graphdriver=overlay2 version=24.0.4
Jul 23 22:36:10 um790pro dockerd[134]: time="2023-07-23T22:36:10.607284018+09:00" level=info msg="Daemon has completed initialization"
Jul 23 22:36:10 um790pro dockerd[134]: time="2023-07-23T22:36:10.761280209+09:00" level=info msg="API listen on /run/docker.sock"
Jul 23 22:36:10 um790pro systemd[1]: Started docker.service - Docker Application Container Engine.
nmemotonmemoto

wsl内のgit設定ができていなかったので、以下を実施

git config --global user.name "Takafumi Umemoto"
git config --global user.email "takafumi.umemoto@gmail.com"
nmemotonmemoto

IntelliJでdevcontainerでプロジェクトを開けるか試してみる
https://www.jetbrains.com/help/idea/connect-to-devcontainer.html#create_dev_container_inside_ide

nmemotonmemoto

Setting > Plugins > Dev Containers でプラグインを発見したが、IntelliJ IDEA Ultimate でないと使えなさそう

nmemotonmemoto

とりあえず、Ultimateをインストールしてみると、Remote DevelopementのオプションでWSLがあったので、これで開いてみる。

nmemotonmemoto

どうやら、別途JetBrains Clientというツールを使うようだ

nmemotonmemoto


上記を許可。

別途WSL側にもバックエンド側のモジュールがインストールされたようだ。(見逃した)

nmemotonmemoto

プロジェクトを開き、devcontainer.jsonを開くと、ここにあるのと同じように選択できた。

nmemotonmemoto

固まったので再起動しようとしたが、起動しなくなってしまった。
また改めて確認しようと思う。