差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン両方とも次のリビジョン | ||
windows:wsl [2019/09/13 23:09] – ともやん | windows:wsl [2019/09/17 07:42] – [パッケージのインストール] ともやん | ||
---|---|---|---|
行 10: | 行 10: | ||
====== Windows Subsystem for Linux 2 (WSL 2) ====== | ====== Windows Subsystem for Linux 2 (WSL 2) ====== | ||
ソースコード: | ソースコード: | ||
+ | {{: | ||
\\ | \\ | ||
Windows Subsystem for Linux 2 (以下 WSL 2) は、2019/ | Windows Subsystem for Linux 2 (以下 WSL 2) は、2019/ | ||
行 25: | 行 26: | ||
===== インストール ===== | ===== インストール ===== | ||
- | コマンドプロンプトより Windows 10 ビルド 18917 以降を実行していることを確認する。\\ | + | [[.: |
- | <code batch> | + | |
- | > ver | + | |
- | Microsoft Windows | + | ===== 日本語環境に設定 ===== |
+ | 標準のインストールだと日本語が **□** に文字化けする。\\ | ||
+ | これはターミナルのフォントが日本語フォントになっていない為である。\\ | ||
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | $ ll | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | lrwxrwxrwx 1 tomoyan tomoyan | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ターミナルのフォントを**MSゴシック**などの日本語フォントに変更する。\\ | ||
+ | {{: | ||
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | $ ll | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | drwxr-xr-x 1 tomoyan tomoyan | ||
+ | lrwxrwxrwx 1 tomoyan tomoyan | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 日本語ランゲージパックをインストールする。\\ | ||
+ | **sudo dnf install langpacks-ja** を実行する。\\ | ||
+ | <WRAP prewrap 100% # | ||
+ | < | ||
+ | $ sudo dnf install langpacks-ja | ||
+ | Fedora Modular 30 - x86_64 | ||
+ | Fedora Modular 30 - x86_64 - Updates | ||
+ | Fedora 30 - x86_64 - Updates | ||
+ | Fedora 30 - x86_64 | ||
+ | whitewaterfoundry_wslu | ||
+ | Dependencies resolved. | ||
+ | ==================================================================================== | ||
+ | | ||
+ | ==================================================================================== | ||
+ | Installing: | ||
+ | | ||
+ | Installing dependencies: | ||
+ | | ||
+ | Installing weak dependencies: | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Transaction Summary | ||
+ | ==================================================================================== | ||
+ | Install | ||
+ | |||
+ | Total download size: 194 M | ||
+ | Installed size: 297 M | ||
+ | Is this ok [y/N]: y | ||
+ | Downloading Packages: | ||
+ | (1/5): google-noto-cjk-fonts-common-20190416-2.fc30 | ||
+ | (2/5): glibc-langpack-ja-2.29-22.fc30.x86_64.rpm | ||
+ | (3/5): langpacks-ja-1.0-17.fc30.noarch.rpm | ||
+ | (4/5): google-noto-sans-cjk-ttc-fonts-20190416-2.fc | ||
+ | (5/5): google-noto-serif-cjk-ttc-fonts-20190416-2.f 105 kB/s | 109 MB | ||
+ | ------------------------------------------------------------------------------------ | ||
+ | Total 188 kB/s | 194 MB | ||
+ | Running transaction check | ||
+ | Transaction check succeeded. | ||
+ | Running transaction test | ||
+ | Transaction test succeeded. | ||
+ | Running transaction | ||
+ | Preparing | ||
+ | Installing | ||
+ | Installing | ||
+ | Installing | ||
+ | Installing | ||
+ | Installing | ||
+ | Running scriptlet: langpacks-ja-1.0-17.fc30.noarch | ||
+ | Verifying | ||
+ | Verifying | ||
+ | Verifying | ||
+ | Verifying | ||
+ | Verifying | ||
+ | |||
+ | Installed: | ||
+ | langpacks-ja-1.0-17.fc30.noarch | ||
+ | glibc-langpack-ja-2.29-22.fc30.x86_64 | ||
+ | google-noto-sans-cjk-ttc-fonts-20190416-2.fc30.noarch | ||
+ | google-noto-serif-cjk-ttc-fonts-20190416-2.fc30.noarch | ||
+ | google-noto-cjk-fonts-common-20190416-2.fc30.noarch | ||
+ | |||
+ | Complete! | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== WSL 2 の systemd 問題 ==== | ||
+ | システムロケール設定を **ja_JP.UTF-8** に変更する。\\ | ||
+ | < | ||
+ | $ sudo localectl set-locale LANG=ja_JP.UTF-8 | ||
+ | System has not been booted with systemd as init system (PID 1). Can't operate. | ||
+ | Failed to create bus connection: Host is down | ||
+ | </ | ||
+ | < | ||
+ | システムは、initd システム (PID 1) なので systemd として起動されていません。操作できません。 | ||
+ | バスへの接続に失敗しました: | ||
</ | </ | ||
- | [スタート] - [設定] - [更新とセキュリティ] - [Windows Update] の順に選択し、[更新プログラムのチェック] を実行する。\\ | ||
\\ | \\ | ||
- | ※ 2019/09/13 現在 Build 18917 以降は **[[windows: | + | 本物の Fedora の PID 1 は **/ |
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | $ ps aux | ||
+ | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | ||
+ | root | ||
+ | root | ||
+ | ... | ||
+ | </ | ||
+ | </ | ||
- | PowerShell を管理者実行する。\\ | + | 現状の WSL 2 では PID 1 は **/init** である。\\ |
- | <code batch> | + | <WRAP prewrap 100%> |
- | > powershell start-process powershell -verb runas | + | <code> |
+ | $ ps aux | ||
+ | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | ||
+ | root | ||
+ | root | ||
+ | ... | ||
</ | </ | ||
+ | </ | ||
- | 管理者実行した PowerShell | + | 現時点 (2019/09/16 現在) の WSL 2 では、**systemd** はサポートされていない。\\ |
- | < | + | [[https:// |
- | PS > bcdedit /enum | find `" | + | 今後 Microsoft によって |
- | hypervisorlaunchtype | + | しかし、Fedora は **systemd** |
+ | \\ | ||
+ | **nmcli** も使えない... orz\\ | ||
+ | < | ||
+ | $ nmcli con | ||
+ | Error: Could not create NMClient object: Could not connect: No such file or directory. | ||
</ | </ | ||
- | Hyper-V が Off の場合は On にする。\\ | + | **systemctl** も使えない... orz\\ |
- | < | + | < |
- | PS > bcdedit /enum | find `" | + | $ systemctl |
- | hypervisorlaunchtype | + | System has not been booted with systemd as init system (PID 1). Can't operate. |
+ | Failed to connect to bus: Host is down | ||
</ | </ | ||
- | < | + | |
- | PS > bcdedit /set hypervisorlaunchtype auto | + | **localectl** も使えない(日本語化できない)... orz\\ |
- | この操作を正しく終了しました。 | + | < |
+ | $ sudo localectl | ||
+ | System has not been booted with systemd as init system (PID 1). Can't operate. | ||
+ | Failed to create bus connection: Host is down | ||
</ | </ | ||
- | Hyper-V を有効化した場合は PC を一旦再起動する。\\ | + | ==== genie-systemd の fork ==== |
- | < | + | 本家: [[https:// |
- | PS > shutdown | + | \\ |
+ | この fork は本家に取り込まれたので手順を修正した。\\ | ||
+ | [[https:// | ||
+ | < | ||
+ | < | ||
+ | \\ | ||
+ | 使い方は以下のようになる。\\ | ||
+ | < | ||
+ | $ sudo dnf install git | ||
+ | $ cd ~ | ||
+ | $ git clone https:// | ||
+ | $ cd genie | ||
+ | $ ./ | ||
+ | </code> | ||
+ | ※< | ||
+ | これで依存パッケージも genie もすべてインストールされる。\\ | ||
+ | \\ | ||
+ | **genie -s** を実行して **systemd** を有効化する。\\ | ||
+ | < | ||
+ | $ genie -s | ||
</ | </ | ||
- | 再起動した場合は再び PowerShell を管理者として実行する。\\ | + | この状態でシステムロケール設定が可能になる。\\ |
- | **" | + | < |
- | < | + | $ sudo localectl set-locale LANG=ja_JP.UTF-8 |
- | PS > Enable-WindowsOptionalFeature | + | $ source / |
+ | $ locale | ||
+ | LANG=ja_JP.UTF-8 | ||
+ | LC_CTYPE=" | ||
+ | LC_NUMERIC=" | ||
+ | LC_TIME=" | ||
+ | LC_COLLATE=" | ||
+ | LC_MONETARY=" | ||
+ | LC_MESSAGES=" | ||
+ | LC_PAPER=" | ||
+ | LC_NAME=" | ||
+ | LC_ADDRESS=" | ||
+ | LC_TELEPHONE=" | ||
+ | LC_MEASUREMENT=" | ||
+ | LC_IDENTIFICATION=" | ||
+ | LC_ALL= | ||
+ | $ sudo -s | ||
+ | [sudo] tomoyan のパスワード: | ||
+ | </ | ||
+ | < | ||
- | Path : | + | === getty@tty1.service の無効化 === |
- | Online | + | 本家のドキュメント [[https:// |
- | RestartNeeded : False | + | <WRAP prewrap 100%> |
+ | < | ||
+ | RECOMMENDATIONS | ||
+ | Once you have this up and running, I suggest disabling via systemctl the getty@tty1 service (since logging on and using WSL is done via ptsen, not ttys). | ||
</ | </ | ||
+ | < | ||
+ | これを実行したら、systemctl を介して getty@tty1 サービスを無効にすることをお勧めします (WSL へのログオンと使用は tty ではなく ptsen で行われるため)。 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | **getty@tty1.service** を停止し無効化する。\\ | ||
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | $ sudo systemctl stop getty@tty1.service | ||
+ | $ sudo systemctl disable getty@tty1.service | ||
+ | Removed / | ||
+ | $ sudo systemctl status getty@tty1.service | ||
+ | ● getty@tty1.service - Getty on tty1 | ||
+ | | ||
+ | | ||
+ | Docs: man: | ||
+ | | ||
+ | | ||
- | **" | + | 9月 16 08:11:54 Cmon-wsl systemd[1]: Started Getty on tty1. |
- | <code powershell> | + | 9月 16 08:45:09 Cmon-wsl systemd[1]: Stopping Getty on tty1... |
- | PS > shutdown /r /t 0 | + | 9月 16 08:45:09 Cmon-wsl systemd[1]: getty@tty1.service: |
+ | 9月 16 08:45:09 Cmon-wsl systemd[1]: Stopped Getty on tty1. | ||
</ | </ | ||
+ | </ | ||
- | 再起動した場合は再び PowerShell | + | === 毎回 genie -s を実行しなくても良い方法 === |
- | Windows Subsystem for Linux をインストールする。\\ | + | WSL 2 を起動する度に systemd |
- | <code powershell> | + | そこで以下のように bash 起動時に自動で有効化することが出来る。(お好みで...)\\ |
- | PS > Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux | + | <code> |
- | この操作を完了するために、今すぐコンピューターを再起動しますか? | + | $ sudo vi / |
- | [Y] Yes [N] No [?] ヘルプ | + | |
</ | </ | ||
+ | **systemd** が **PID 1** で起動していない場合は **genie -s** を実行する。\\ | ||
+ | <WRAP prewrap 100%> | ||
+ | <code bash / | ||
+ | if [ "`ps -eo pid, | ||
+ | genie -s | ||
+ | fi | ||
+ | </ | ||
+ | </ | ||
- | [[https://aka.ms/ | + | ===== 基本的なコマンドのインストール ===== |
- | {{: | + | [[https://www.tomoyan.net/linux/ |
- | ここでは、230 円だったので | + | ==== キャッシュのキープ ==== |
- | {{: | + | お好みで以下の設定を行っておくと RPM パッケージがキャッシュされるようになる。\\ |
+ | < | ||
+ | $ sudo vi / | ||
+ | </ | ||
+ | <code autoconf / | ||
+ | [main] | ||
+ | gpgcheck=1 | ||
+ | installonly_limit=3 | ||
+ | clean_requirements_on_remove=true | ||
+ | keepcache=1 <- 追記する。 | ||
+ | </ | ||
- | ダウンロードが完了したら | + | ダウンロード済の場合は **[SKIPPED]** になる。\\ |
< | < | ||
- | Unpacking Linux filesystem image, this may take a few minutes... | + | $ sudo dnf install usbutils -y |
- | WslRegisterDistribution failed with error: 0x80070057 | + | ... |
- | Error: 0x80070057 ??????????????? | + | パッケージのダウンロード: |
+ | [SKIPPED] hwdata-0.327-1.fc30.noarch.rpm: Already downloaded | ||
+ | [SKIPPED] usbutils-012-2.fc30.x86_64.rpm: | ||
+ | ... | ||
+ | 完了しました! | ||
+ | </ | ||
- | Press any key to continue... | + | ==== パッケージのインストール ==== |
+ | **tmux - 端末多重化ソフトウェア と htop - 高機能タスクマネージャー**\\ | ||
+ | \\ | ||
+ | WSL で端末の複数接続に悩む前に tmux を入れておくといいだろう。\\ | ||
+ | **tmux** は端末画面を複数分割してレイアウトできる。\\ | ||
+ | **Ctrl + B** を入力後に様々な機能を呼び出せる。(簡単に書くと以下の通り)\\ | ||
+ | * Ctrl + B を入力後 ? でキーバインド一覧 | ||
+ | * Ctrl + B を入力後 Shift + 5 で左右に分割 | ||
+ | * Ctrl + B を入力後 Shift + 2 で上下に分割 | ||
+ | * Ctrl + B を入力後 ↑ or ↓ or ← or → でペイン移動 | ||
+ | * Ctrl + B を入力後 Space を繰り返すとお好みのレイアウトに | ||
+ | **htop** は F1 キーを押すと使用方法が表示される。\\ | ||
+ | {{: | ||
+ | < | ||
+ | $ sudo dnf install tmux htop | ||
</ | </ | ||
- | 化けているが... 本当はこういうエラーらしい。\\ | + | \\ |
+ | **netstat arp ifconfig route** … など\\ | ||
< | < | ||
- | Unpacking Linux filesystem image, this may take a few minutes... | + | $ sudo dnf install net-tools -y |
- | WslRegisterDistribution failed with error: 0x80070057 | + | |
- | Error: 0x80070057 The parameter is incorrect. | + | |
- | Press any key to continue... | + | |
</ | </ | ||
- | Windows Subsystem for Linux を一旦無効化する。\\ | + | **dig host nslookup nsupdate**\\ |
- | < | + | < |
- | PS > Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux | + | $ sudo dnf install bind-utils -y |
- | この操作を完了するために、今すぐコンピューターを再起動しますか? | + | |
- | [Y] Yes [N] No [?] ヘルプ (既定値は " | + | |
</ | </ | ||
- | 再起動したら再び PowerShell を管理者として実行する。\\ | + | **whois**\\ |
- | Windows Subsystem for Linux を再度有効化して再起動する。\\ | + | < |
- | < | + | $ sudo dnf install jwhois |
- | PS > Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux | + | |
- | この操作を完了するために、今すぐコンピューターを再起動しますか? | + | |
- | [Y] Yes [N] No [?] ヘルプ (既定値は " | + | |
</ | </ | ||
- | 再起動が完了したら [スタート] | + | **lspci |
- | すると今度はきちんと以下のような状態になる。\\ | + | |
< | < | ||
- | Unpacking Linux filesystem image, this may take a few minutes... | + | $ cat / |
- | Welcome to Fedora Remix for WSL. Powered by Pengwin Enterprise. | + | cat: / |
- | Please create a default Linux user account. The username does not need to match your Windows username. | + | |
- | Enter new UNIX username: | + | |
</ | </ | ||
- | 最初にデフォルト Linux ユーザーの作成を行う。\\ | + | **lsusb**\\ |
< | < | ||
- | Welcome to Fedora Remix for WSL. Powered by Pengwin Enterprise. | + | $ sudo dnf install usbutils |
- | Please create a default Linux user account. The username does not need to match your Windows username. | + | |
- | Enter new UNIX username: tomoyan <- ユーザーを入力する(Windows ユーザーと一致している必要はない) | + | |
- | Changing password for user tomoyan. | + | |
- | New password: <- UNIX ユーザーのパスワードを入力 | + | |
- | Retype new password: <- UNIX ユーザーの確認用パスワードを入力 | + | |
- | passwd: all authentication tokens updated successfully. | + | |
- | Installation successful! | + | |
- | [tomoyan@Cmon ~]$ exit | + | |
</ | </ | ||
- | 再び PowerShell を管理者として実行する。\\ | + | **mkpasswd** … など\\ |
- | **wsl -l** を実行して | + | < |
- | < | + | $ sudo dnf install expect -y |
- | PS > wsl -l | + | </ |
+ | |||
+ | **rsync**\\ | ||
+ | < | ||
+ | $ sudo dnf install rsync -y | ||
+ | </ | ||
+ | |||
+ | ===== WSL 2 ファイルシステムへのアクセス ===== | ||
+ | WSL 2 のファイルシステムへのアクセスは | ||
+ | < | ||
+ | > wsl -l | ||
Windows Subsystem for Linux ディストリビューション: | Windows Subsystem for Linux ディストリビューション: | ||
fedoraremix (既定) | fedoraremix (既定) | ||
+ | > cd \\wsl$\fedoraremix | ||
+ | > explorer.exe . | ||
</ | </ | ||
+ | ===== Cloud9 SDK ===== | ||
+ | [[javascript: | ||
- | 念のため再度確認!! **wsl** コマンドに **--set-version** オプションが無い場合は Windows 10 ビルド 18917 以降を実行していないので Windows を更新する。\\ | + | ==== Node.js |
- | <WRAP prewrap 100% #result> | + | nodebrew |
- | < | + | < |
- | PS > wsl --help | + | $ curl -kL git.io/ |
- | Copyright (c) Microsoft Corporation. All rights reserved. | + | % Total % Received % Xferd Average Speed |
+ | | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 100 24634 100 24634 0 | ||
+ | Fetching nodebrew... | ||
+ | Installed nodebrew in $HOME/ | ||
- | 使用法: wsl.exe [Argument] [Options...] [CommandLine] | + | ======================================== |
+ | Export a path to nodebrew: | ||
- | Linux バイナリを実行するための引数: | + | export PATH=$HOME/ |
+ | ======================================== | ||
+ | </ | ||
- | コマンド ラインを指定しないと、wsl.exe は既定のシェルを起動します。 | + | 指示にしたがってパスを設定する。 |
+ | < | ||
+ | $ vi ~/.bashrc | ||
+ | </ | ||
+ | < | ||
+ | # User specific aliases and functions | ||
+ | export PATH=$HOME/ | ||
+ | </ | ||
+ | < | ||
+ | $ source ~/.bashrc | ||
+ | </ | ||
- | --exec, -e < | + | **node.js バイナリをインストール**\\ |
- | | + | インストール可能なバージョンを調べる。 |
+ | < | ||
+ | $ nodebrew ls-remote | ||
+ | 〜省略〜 | ||
+ | v12.7.0 | ||
+ | 〜省略〜 | ||
+ | </ | ||
- | -- | + | バージョンを指定してバイナリをインストールする。 |
- | 残りのコマンド ラインをそのまま渡します。 | + | <WRAP prewrap 100%> |
+ | < | ||
+ | $ nodebrew install-binary v12.10.0 | ||
+ | Fetching: https:// | ||
+ | ######################################################################### | ||
+ | Installed successfully | ||
+ | </ | ||
+ | </ | ||
- | オプション: | + | 利用するバージョンを指定する。 |
- | --distribution, | + | < |
- | | + | $ nodebrew use v12.10.0 |
+ | use v12.10.0 | ||
+ | </ | ||
- | --user, -u <ユーザー名> | + | 動作確認を行う。 |
- | | + | <code> |
+ | $ nodebrew use v12.10.0 | ||
+ | use v12.10.0 | ||
+ | $ node -v | ||
+ | v12.10.0 | ||
+ | </ | ||
- | Windows Subsystem for Linux を管理するための引数: | + | ==== その他依存パッケージのインストール ==== |
+ | < | ||
+ | $ sudo dnf install python2 gcc | ||
+ | </ | ||
- | --export <ディストリビューション名> | + | ==== Cloud9 SDK のインストール |
- | | + | github より Cloud9 SDK をダウンロードする。\\ |
- | | + | < |
+ | $ git clone https:// | ||
+ | </ | ||
- | --import < | + | Cloud9 SDK をビルドする。\\ |
- | | + | <code> |
- | | + | $ cd c9sdk |
+ | $ ./ | ||
+ | </ | ||
- | | + | Cloud9 SDK を実行する。\\ |
- | ディストリビューションを一覧表示します。 | + | < |
+ | $ node server.js | ||
+ | </ | ||
+ | [[http:// | ||
+ | WSL 2 では localhost 問題も解決しており http:// | ||
+ | {{: | ||
- | オプション: | + | ===== トラブルシューティング ===== |
- | --all | + | |
- | 現在インストール中またはアンインストール中のものを含めて | + | |
- | すべてのディストリビューションを一覧表示します。 | + | |
- | --running | + | ==== System has not been booted with systemd as init system (PID 1). が発生する ==== |
- | | + | < |
+ | System has not been booted with systemd as init system (PID 1). Can't operate. | ||
+ | Failed to create bus connection: Host is down | ||
+ | </ | ||
+ | < | ||
+ | システムは、initd システム (PID 1) なので systemd として起動されていません。操作できません。 | ||
+ | バスへの接続に失敗しました: | ||
+ | </ | ||
+ | \\ | ||
+ | 現時点の WSL 2 では、**systemd** はサポートされていない。\\ | ||
+ | [[https:// | ||
+ | \\ | ||
+ | 本物の Fedora の PID 1 は **/ | ||
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | $ ps aux | ||
+ | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | ||
+ | root | ||
+ | root | ||
+ | ... | ||
+ | </ | ||
+ | </ | ||
- | -setdefault, | + | 現状の WSL 2 では PID 1 は **/init** である。\\ |
- | | + | <WRAP prewrap 100%> |
+ | < | ||
+ | $ ps aux | ||
+ | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | ||
+ | root | ||
+ | root | ||
+ | ... | ||
+ | </ | ||
+ | </ | ||
- | --terminate, | + | === Process Monitor で WSL 2 の起動プロセスを追ってみた === |
- | | + | コマンドプロンプトより bash を起動すると以下のような流れで WSL 2 環境がロードされている。\\ |
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | > bash <- cmd.exe より bash.exe (Microsoft Bash ランチャー) | ||
- | | + | C: |
- | ディストリビューションの登録を解除します。 | + | C: |
+ | +- C: | ||
+ | +- C: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | +- C: | ||
+ | +- C: | ||
+ | +- C: | ||
+ | C: | ||
+ | </ | ||
+ | </ | ||
+ | おおよそこのような流れのようである。\\ | ||
- | | + | ==== genie-systemd の fork ==== |
- | | + | [[#genie-systemd_の_fork|genie-systemd の fork]] を参照。\\ |
+ | \\ | ||
+ | コマンドプロンプトより起動方法は WSL2 に入って genie -s を実行すると以下のように systemd が PID 1 なる。\\ | ||
+ | この状態で systemd に依存するものはすべて正常に使用できる。\\ | ||
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | > bash | ||
+ | $ genie -s | ||
- | --help | + | $ ps aux |
- | | + | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND |
+ | root | ||
+ | root 21 0.0 0.1 52848 16452 ? Ss 9月15 | ||
+ | root 56 0.0 0.1 324844 19564 ? Ssl | ||
+ | dbus 74 0.0 0.0 268584 | ||
+ | dbus 75 0.0 0.0 | ||
+ | root 80 0.0 0.0 | ||
+ | root 89 0.0 0.0 11996 6960 ? Ss 9月15 | ||
+ | root | ||
+ | root | ||
+ | tomoyan | ||
+ | tomoyan | ||
+ | tomoyan | ||
+ | tomoyan | ||
+ | |||
+ | $ systemctl | ||
+ | UNIT LOAD | ||
+ | proc-sys-fs-binfmt_misc.automount loaded active | ||
+ | dev-sdb.device | ||
+ | -.mount | ||
+ | dev-hugepages.mount | ||
+ | dev-mqueue.mount | ||
+ | etc-hostname.mount | ||
+ | init.mount | ||
+ | mnt-c.mount | ||
+ | proc-sys-fs-binfmt_misc.mount loaded active | ||
+ | run-lock.mount | ||
+ | run-shm.mount | ||
+ | run-user-1000.mount | ||
+ | run-user.mount | ||
+ | sys-fs-fuse-connections.mount loaded active | ||
+ | sys-kernel-debug.mount | ||
+ | tmp.mount | ||
</ | </ | ||
</ | </ | ||
+ | ==== genie-systemd (最初に試した時の資料です) ==== | ||
+ | [[https:// | ||
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | $ sudo dnf install git | ||
+ | |||
+ | $ sudo dnf copr enable @dotnet-sig/ | ||
+ | |||
+ | You are about to enable a Copr repository. Please note that this | ||
+ | repository is not part of the main distribution, | ||
+ | |||
+ | The Fedora Project does not exercise any power over the contents of | ||
+ | this repository beyond the rules outlined in the Copr FAQ at | ||
+ | < | ||
+ | and packages are not held to any quality or security level. | ||
+ | |||
+ | Please do not file bug reports about these packages in Fedora | ||
+ | Bugzilla. In case of problems, contact the owner of this repository. | ||
+ | |||
+ | Do you really want to enable copr.fedorainfracloud.org/ | ||
+ | Repository successfully enabled. | ||
+ | |||
+ | $ sudo curl -o / | ||
+ | v0.3.0/ | ||
+ | $ sudo chmod 755 / | ||
+ | |||
+ | $ sudo dnf install daemonize dotnet-runtime-2.2 dotnet-host-fxr-2.2 dotnet-sdk-2.2 | ||
+ | |||
+ | $ git clone https:// | ||
+ | $ cd genie/genie | ||
+ | $ dotnet publish -r linux-x64 --self-contained false | ||
+ | Program.cs(75, | ||
+ | Program.cs(80, | ||
+ | Program.cs(87, | ||
+ | Program.cs(99, | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | .NET Core アプリのビルドを 9p ファイルシステム上でビルドすると破損した実行ファイルができるようだ。\\ | ||
+ | 1 回目のビルドは失敗する。(これは genie の不具合ではない)\\ | ||
+ | <WRAP prewrap 100% #result> | ||
+ | < | ||
+ | $ pwd | ||
+ | / | ||
+ | |||
+ | $ cd genie | ||
+ | $ dotnet publish -r linux-x64 --self-contained false | ||
+ | Microsoft (R) Build Engine version 15.9.20.63311 for .NET Core | ||
+ | Copyright (C) Microsoft Corporation. All rights reserved. | ||
+ | |||
+ | Restoring packages for / | ||
+ | Generating MSBuild file / | ||
+ | Generating MSBuild file / | ||
+ | Restore completed in 306.02 ms for / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 2 回目のビルドは成功する。\\ | ||
+ | しかし、壊れた実行ファイルが出来上がっている。\\ | ||
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | $ dotnet publish -r linux-x64 --self-contained false | ||
+ | Microsoft (R) Build Engine version 15.9.20.63311 for .NET Core | ||
+ | Copyright (C) Microsoft Corporation. All rights reserved. | ||
+ | |||
+ | Restore completed in 75.31 ms for / | ||
+ | genie -> / | ||
+ | genie -> / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ビルドされた実行ファイルを起動すると以下のエラーが発生する。\\ | ||
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | $ genie/ | ||
+ | This executable is not bound to a managed DLL to execute. The binding value is: ' | ||
+ | A fatal error was encountered. This executable was not bound to load a managed DLL. | ||
+ | </ | ||
+ | < | ||
+ | この実行可能ファイルは、実行するマネージDLLにバインドされていません。バインディング値は: | ||
+ | ' | ||
+ | 致命的なエラーが発生しました。この実行可能ファイルは、マネージDLLを読み込むようにバインドされていません。 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | これは 9p が共有メモリマップ I/O (MSBuild はそのような I/O をするようだ) をサポートできないファイルシステムだからのようである。\\ | ||
+ | 9p ファイルシステムは /mnt/c つまり Windows 10 の C:\ をマウントしている部分のことである。\\ | ||
+ | <WRAP prewrap 100%> | ||
+ | < | ||
+ | $ pwd | ||
+ | / | ||
+ | $ mount | ||
+ | ... | ||
+ | C:\ on /mnt/c type 9p (rw, | ||
+ | </ | ||
+ | </ | ||
+ | ※この問題は dotnet-sdk の問題に上がっているようだ。\\ | ||
+ | [[https:// | ||
===== 参考文献 ===== | ===== 参考文献 ===== |