<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>みむらの手記手帳</title>
	<atom:link href="https://mimumimu.net/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://mimumimu.net/blog</link>
	<description>ときどき Developer ときどき Researcher そんな社会人のいちにち。</description>
	<lastBuildDate>Mon, 16 Jun 2025 04:31:01 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Hyper-V 上の Linux から GPU を利用する話</title>
		<link>https://mimumimu.net/blog/2024/06/17/hyper-v-%e4%b8%8a%e3%81%ae-linux-%e3%81%8b%e3%82%89-gpu-%e3%82%92%e5%88%a9%e7%94%a8%e3%81%99%e3%82%8b%e8%a9%b1/</link>
					<comments>https://mimumimu.net/blog/2024/06/17/hyper-v-%e4%b8%8a%e3%81%ae-linux-%e3%81%8b%e3%82%89-gpu-%e3%82%92%e5%88%a9%e7%94%a8%e3%81%99%e3%82%8b%e8%a9%b1/#comments</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Sun, 16 Jun 2024 18:48:05 +0000</pubDate>
				<category><![CDATA[Linux / Unix / Interix]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5929</guid>

					<description><![CDATA[<p>どうも、みむらです。 最近は在宅時は NACK5 さんを聞きながら仕事をしていることが増えているのですが、特に「日常野郎 鬼ガイバー！」と「あまがみ神社」に特にウキウキする今日この頃です。 さてさて。 Hyper-V 上 [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2024/06/17/hyper-v-%e4%b8%8a%e3%81%ae-linux-%e3%81%8b%e3%82%89-gpu-%e3%82%92%e5%88%a9%e7%94%a8%e3%81%99%e3%82%8b%e8%a9%b1/">Hyper-V 上の Linux から GPU を利用する話</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2024%2F06%2F17%2Fhyper-v-%25e4%25b8%258a%25e3%2581%25ae-linux-%25e3%2581%258b%25e3%2582%2589-gpu-%25e3%2582%2592%25e5%2588%25a9%25e7%2594%25a8%25e3%2581%2599%25e3%2582%258b%25e8%25a9%25b1%2F&amp;linkname=Hyper-V%20%E4%B8%8A%E3%81%AE%20Linux%20%E3%81%8B%E3%82%89%20GPU%20%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E8%A9%B1" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2024%2F06%2F17%2Fhyper-v-%25e4%25b8%258a%25e3%2581%25ae-linux-%25e3%2581%258b%25e3%2582%2589-gpu-%25e3%2582%2592%25e5%2588%25a9%25e7%2594%25a8%25e3%2581%2599%25e3%2582%258b%25e8%25a9%25b1%2F&amp;linkname=Hyper-V%20%E4%B8%8A%E3%81%AE%20Linux%20%E3%81%8B%E3%82%89%20GPU%20%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E8%A9%B1" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2024%2F06%2F17%2Fhyper-v-%25e4%25b8%258a%25e3%2581%25ae-linux-%25e3%2581%258b%25e3%2582%2589-gpu-%25e3%2582%2592%25e5%2588%25a9%25e7%2594%25a8%25e3%2581%2599%25e3%2582%258b%25e8%25a9%25b1%2F&amp;linkname=Hyper-V%20%E4%B8%8A%E3%81%AE%20Linux%20%E3%81%8B%E3%82%89%20GPU%20%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E8%A9%B1" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2024%2F06%2F17%2Fhyper-v-%25e4%25b8%258a%25e3%2581%25ae-linux-%25e3%2581%258b%25e3%2582%2589-gpu-%25e3%2582%2592%25e5%2588%25a9%25e7%2594%25a8%25e3%2581%2599%25e3%2582%258b%25e8%25a9%25b1%2F&#038;title=Hyper-V%20%E4%B8%8A%E3%81%AE%20Linux%20%E3%81%8B%E3%82%89%20GPU%20%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E8%A9%B1" data-a2a-url="https://mimumimu.net/blog/2024/06/17/hyper-v-%e4%b8%8a%e3%81%ae-linux-%e3%81%8b%e3%82%89-gpu-%e3%82%92%e5%88%a9%e7%94%a8%e3%81%99%e3%82%8b%e8%a9%b1/" data-a2a-title="Hyper-V 上の Linux から GPU を利用する話"></a></p>
<p class="wp-block-paragraph">どうも、みむらです。</p>



<p class="wp-block-paragraph">最近は在宅時は NACK5 さんを聞きながら仕事をしていることが増えているのですが、<br>特に「日常野郎 鬼ガイバー！」と「あまがみ神社」に特にウキウキする今日この頃です。</p>



<p class="wp-block-paragraph">さてさて。</p>



<p class="wp-block-paragraph">Hyper-V 上の Linux 上で GPU を使うというのがあります。<br>主に GPU で機械学習をしたり動画処理したり、私ですと職業柄 hashcat を回してみたり。</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1012" height="647" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-11.png" alt="" class="wp-image-5942" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-11.png 1012w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-11-768x491.png 768w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-11-624x399.png 624w" sizes="(max-width: 1012px) 100vw, 1012px" /></figure>



<p class="wp-block-paragraph">色々な記事はあったのですが Linux カーネルを新しめ (執筆時点では 6.8) のもので組むのには、少し手間が掛かってしまったのでここにまとめてみようかと。</p>



<p class="wp-block-paragraph">なおこの記事は「GPU パーティション分割」機能を用いた構築例となります。<br>GPU を直接触るものではないため、使い勝手は少し異なりますが、ホスト側と共存して使えるようになるため、個人的にはオススメです。</p>



<p class="wp-block-paragraph">詳細についてはこのあたりを参照ください：<br><a href="https://learn.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/gpu-partitioning">https://learn.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/gpu-partitioning</a></p>



<p class="wp-block-paragraph">今回は、諸事情で Kali Linux (Debian) での紹介となりますが、素のDebian や Ubuntu はもちろん、他のディストリビューションでも転用出来ると思います。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">1. ゲスト側の Linux で必要なファイルを WSL2 環境から取り出す</h2>



<p class="wp-block-paragraph">WSL のシステムディストリビューションを起動し、中から必要なファイルを取り出します。</p>



<p class="wp-block-paragraph">WSL2 はユーザがインストールしたディストリビューション（ユーザディストリビューション）をコンテナとして動かす仕組みになっています。<br>システムディストリビューションは、それらのコンテナにむけて機能を提供するホストとなっており、WSL が提供する機能のドライバ類はここに入っています。</p>



<p class="wp-block-paragraph">余談ですが、とくに手を入れていなければ CBL-Mariner が走っています。<br><a href="https://github.com/microsoft/azurelinux">https://github.com/microsoft/azurelinux</a><br>Azure に馴染みのある方であれば、 &#8220;Azure Linux&#8221; と呼ばれている軽量な Linux システムとして見たことがあるかたもいらっしゃると思います。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="566" height="220" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-4.png" alt="" class="wp-image-5935"/></figure>



<p class="wp-block-paragraph">今回ここから取り出すのは、/usr/lib/wsl/lib 以下にあるファイル群になります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><span style="text-decoration: underline;">Windows 環境側に作業用フォルダを作り</span>、必要なファイルをコピーして tar を作ります。</p>



<p class="wp-block-paragraph">なお下記のコマンド例では、作業用フォルダのパスは「 C:\Users\mimura1133\Desktop\work_wsl 」にあるものとします。</p>



<p class="wp-block-paragraph"><strong>・<span style="text-decoration: underline;">方法１：ディスク容量を気にしない場合</span></strong></p>



<p class="wp-block-paragraph">この場合はシンプルに<br> /usr/lib/wsl 以下を tar 固めなどして Windows 環境側に持ち出せばOKです。</p>



<p class="wp-block-paragraph">ただし、不要なドライバが大量に含まれるため、かなり大きくなります。<br>（私の環境では 3GB ほどありました）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>cd /usr/lib/wsl
bsdtar cf - lib | gzip &gt; /mnt/(Windows 側作業フォルダまでのパス)/lib.tar.gz
bsdtar cf - drivers | gzip &gt; /mnt/(Windows 側作業フォルダまでのパス)/drivers.tar.gz

# コマンド実行例：
# cd /usr/lib/wsl
# bsdtar cf - lib | gzip &gt; /mnt/c/Users/mimura1133/Desktop/work_wsl/lib.tar.gz
# bsdtar cf - drivers | gzip &gt; /mnt/c/Users/mimura1133/Desktop/work_wsl/drivers.tar.gz</code></pre></div>



<p class="wp-block-paragraph">以上の手順で作成された lib.tar.gz と drivers.tar.gz が後ほど必要になります。</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>・<span style="text-decoration: underline;">方法２：必要最小限のデータのみを取り出す場合</span></strong></p>



<p class="wp-block-paragraph">下記の手順では必要最小限のデータのみを取り出します。<br>（この方式では、当方環境ですと 1GB 未満になりました）</p>



<p class="wp-block-paragraph"><strong>1.  /usr/lib/wsl/lib ディレクトリ以下を取り出す</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>cd /usr/lib/wsl
bsdtar cf - lib | gzip &gt; /mnt/(Windows 側作業フォルダまでのパス)/lib.tar.gz

# コマンド実行例:
# cd /usr/lib/wsl
# bsdtar cf - lib | gzip &gt; /mnt/c/Users/mimura1133/Desktop/work_wsl/lib.tar.gz</code></pre></div>



<p class="wp-block-paragraph"><strong>2. 現在使用しているグラフィックドライバをコピーする</strong></p>



<p class="wp-block-paragraph">Windows 側の PowerShell で下記のコマンドを実行して、ドライバを特定します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>Get-CimInstance -ClassName Win32_VideoController -Property * | Format-Table InstalledDisplayDrivers -AutoSize -Wrap</code></pre></div>



<p class="wp-block-paragraph">実行例：</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1090" height="177" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-6.png" alt="" class="wp-image-5937" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-6.png 1090w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-6-768x125.png 768w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-6-624x101.png 624w" sizes="(max-width: 1090px) 100vw, 1090px" /></figure>



<p class="wp-block-paragraph">上記の例の場合は、 C:\Windows\System32\DriverStore\FileRepository\nv_dispsig.inf_amd64_e6cac7f31a92d62e 以下に必要なファイル群があることが分かります。</p>



<p class="wp-block-paragraph">上記の結果を用いて、必要なドライバをフォルダごと作業フォルダの &#8220;drivers&#8221; 以下にコピーします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># カレントディレクトリ移動
cd C:\Windows\System32\DriverStore\FileRepository
# ドライバをフォルダごとコピー
robocopy /mir (必要なドライバのフォルダ名) (作業フォルダまでのパス)\drivers\(必要なドライバのフォルダ名)
# ini ファイルをコピー
copy (必要なドライバのフォルダ名).ini (作業フォルダまでのパス)\drivers

# コマンド実行例:
# cd C:\Windows\System32\DriverStore\FileRepository
# robocopy /mir nv_dispsi.inf_amd64_2a40de5cdd82b074 C:\Users\mimura1133\Desktop\work_wsl\drivers\nv_dispsi.inf_amd64_2a40de5cdd82b074
# copy nv_dispig.inf_amd64_0afec3f2050014a0.ini C:\Users\mimura1133\Desktop\work_wsl\drivers</code></pre></div>



<p class="wp-block-paragraph">コピーが完了した後、drivers フォルダの中は下記のような状態になります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="627" height="148" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-19.png" alt="" class="wp-image-5972" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-19.png 627w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-19-624x147.png 624w" sizes="auto, (max-width: 627px) 100vw, 627px" /></figure>



<p class="wp-block-paragraph"><strong> 3.ドライバを tar で固める</strong></p>



<p class="wp-block-paragraph">WSL2 が動く Windows であれば、最初から tar が使えるようになっています。<br>コマンドプロンプトを用いて下記のコマンドを実行します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>cd (作業フォルダまでのパス)
tar zcvf drivers.tar.gz drivers</code></pre></div>



<p class="wp-block-paragraph">実行例：</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="626" height="152" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-20.png" alt="" class="wp-image-5973" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-20.png 626w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-20-624x152.png 624w" sizes="auto, (max-width: 626px) 100vw, 626px" /></figure>



<p class="wp-block-paragraph">以上で drivers.tar.gz と lib.tar.gz が出来ました。以降でこれらのファイルが必要になります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">2. Kali Linux をインストールする</h2>



<p class="wp-block-paragraph">通常通りのインストールを実施します。</p>



<p class="wp-block-paragraph">公式サイトからの VM イメージのダウンロード、iso を用いたインストール、Hyper-V のクイック作成等方法は問いません。</p>



<p class="wp-block-paragraph">なお、<span style="text-decoration: underline;"><strong>iso からインストールを行う場合は「第２世代」</strong></span>で作成を行ってください。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">3. 仮想マシン (VM) の設定を変更する</h2>



<p class="wp-block-paragraph">VMの設定を行います。</p>



<p class="wp-block-paragraph">既にVM が起動している場合はシャットダウンをおこなった上で<br>VMの設定画面を開き、いくつか確認を行っていきます。</p>



<p class="wp-block-paragraph"><strong>・セキュアブートが無効</strong>になっているか<br>　ON の場合、後段の dkms 周りで不具合が出る場合があります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="720" height="229" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-1.png" alt="" class="wp-image-5932" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-1.png 720w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-1-624x198.png 624w" sizes="auto, (max-width: 720px) 100vw, 720px" /></figure>



<p class="wp-block-paragraph"><strong>・動的メモリは無効</strong>になっているか<br>　仕組み上動的メモリを有効にすることは出来ないようです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="711" height="231" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-2.png" alt="" class="wp-image-5933" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-2.png 711w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-2-624x203.png 624w" sizes="auto, (max-width: 711px) 100vw, 711px" /></figure>



<p class="wp-block-paragraph">・<strong>チェックポイント（スナップショット）は無効</strong>になっているか<br>　これも、本機能有効時には使えないようです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="701" height="489" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-3.png" alt="" class="wp-image-5934" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-3.png 701w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-3-624x435.png 624w" sizes="auto, (max-width: 701px) 100vw, 701px" /></figure>



<p class="wp-block-paragraph"><br>上記までの設定が終わったら &#8220;OK&#8221; を押して画面を閉じます。</p>



<p class="wp-block-paragraph">続けて <span style="text-decoration: underline;"><strong>Powershell を管理者権限で起動</strong></span>し、下記の設定を順に行います。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># VM の情報を取得
$vm = Get-VM -Name &quot;&lt;VM名, ワイルドカードも使えます&gt;&quot;

# GPU の追加
$vm | Add-VMGpuPartitionAdapter

# Memory Mapped I/O 領域の設定
$vm | Set-VM -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1GB -HighMemoryMappedIoSpace 32GB</code></pre></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">4. VM 内に必要なデータをコピーする</h2>



<p class="wp-block-paragraph">VM を起動し、１つめのステップで作成した lib.tar.gz と drivers.tar.gz を Linux VM 内にコピーします。</p>



<p class="wp-block-paragraph">※ 2024.06.17 現在、Kali Linux ではこの段階では GUI (Xorg) の起動に失敗します。<br>後段でGUI 起動が出来るようになりますのでご安心ください。</p>



<p class="wp-block-paragraph">ファイルのコピーには SCP や curl 等を用いることもできますが、<br>一番やりやすい方法としては &#8220;Copy-VMFile&#8221; を用いるのが一番やりやすいかと思います。</p>



<p class="wp-block-paragraph"><span style="text-decoration: underline;"><strong>管理者権限で起動した PowerShell を用いて</strong></span>下記のように入力します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># VM の情報を取得。
# （Step 3 で行っている場合は下記コマンドは不要）
$vm = Get-VM -Name &quot;&lt;VM名, ワイルドカードも使えます&gt;&quot;

# ファイルコピー
$vm | Copy-VMFile -FileSource Host -SourcePath .\lib.tar.gz -DestinationPath /
$vm | Copy-VMFile -FileSource Host -SourcePath .\drivers.tar.gz -DestinationPath /</code></pre></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">上記手順が完了次第、Linux VM にログインし、<br><strong>ルート直下に lib.tar.gz と drivers.tar.gz があること</strong>を確認します。</p>



<p class="wp-block-paragraph">（Ctrl + Alt + F1 を押下してログイン画面を表示し、ログインします。）</p>



<p class="wp-block-paragraph">実行例：</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="513" height="77" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-8.png" alt="" class="wp-image-5939"/></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">5.  コピーした tar.gz ファイルを展開する</h2>



<p class="wp-block-paragraph">コピーしたファイルを VM 内の /usr/lib/wsl 以下に展開します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># ディレクトリを作成
sudo mkdir /usr/lib/wsl

# lib を展開
sudo tar zxvf lib.tar.gz -C /usr/lib/wsl

# drivers を展開
sudo tar zxvf drivers.tar.gz -C /usr/lib/wsl

# 権限を設定
sudo chmod -R 0555 /usr/lib/wsl</code></pre></div>



<p class="wp-block-paragraph">コピー後、下記のようなディレクトリ構造になっていることを確認出来れば OK です。<br>（ nv_dispsig.inf およびそれ以下の部分は、コピーした内容や環境の違いで変わります ）</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="355" height="206" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-9.png" alt="" class="wp-image-5940"/></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">6. コピーしたファイルにパスを通す</h2>



<p class="wp-block-paragraph">下記コマンドを実行しパスを通します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>echo &quot;/usr/lib/wsl/lib&quot; | sudo tee /etc/ld.so.conf.d/ld.wsl.conf
sudo ldconfig

# libcuda.so.1 に関するエラーが出ますが、無視してOKです。</code></pre></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">7. カーネルドライバをインストールする</h2>



<p class="wp-block-paragraph">WSL2 に組み込まれているカーネルモードドライバを組み込みます。</p>



<p class="wp-block-paragraph">この部分のコードは WSL2 のカーネルのソースコードにしかなく、通常、最新のカーネルコードを用いる場合Microsoft 社が公開しているコードでは手入れが必要です。</p>



<p class="wp-block-paragraph">とても親切なかたがインターネット上にはいらっしゃって、<br>最新のカーネルで上手く動くようにカスタムして公開してくれています。<br><a href="https://github.com/Nevuly/WSL2-Linux-Kernel-Rolling">https://github.com/Nevuly/WSL2-Linux-Kernel-Rolling</a></p>



<p class="wp-block-paragraph">今回はここのコードを用いて、今走っているカーネル向けのドライバを作って入れ込む戦略を採ります。入れ込む部分のコードについても、下記に公開されているものをお借りして進めます。</p>



<p class="wp-block-paragraph"><a href="https://gist.github.com/krzys-h/e2def49966aa42bbd3316dfb794f4d6a">https://gist.github.com/krzys-h/e2def49966aa42bbd3316dfb794f4d6a</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">・必要なプログラム・ファイルのインストール</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>sudo apt install linux-headers-amd64 dkms git</code></pre></div>



<p class="wp-block-paragraph">・カーネルモードドライバの作成・インストール</p>



<p class="wp-block-paragraph">先ほどのサイトからお借りして少し編集したものを下記に示します。<br>こちらを実行すれば必要なドライバがビルドされてインストールされます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>#!/bin/bash -e

#
# The original version is https://gist.github.com/krzys-h/e2def49966aa42bbd3316dfb794f4d6a
#

if [ &quot;$EUID&quot; -ne 0 ]; then
    echo &quot;Swithing to root...&quot;
    exec sudo $0 &quot;$@&quot;
fi

git clone --depth=1 https://github.com/Nevuly/WSL2-Linux-Kernel-Rolling
cd WSL2-Linux-Kernel-Rolling
VERSION=$(git rev-parse --short HEAD)

cp -r drivers/hv/dxgkrnl /usr/src/dxgkrnl-$VERSION
mkdir -p /usr/src/dxgkrnl-$VERSION/inc/{uapi/misc,linux}
cp include/uapi/misc/d3dkmthk.h /usr/src/dxgkrnl-$VERSION/inc/uapi/misc/d3dkmthk.h
cp include/linux/hyperv.h /usr/src/dxgkrnl-$VERSION/inc/linux/hyperv_dxgkrnl.h
sed -i &#39;s/\$(CONFIG_DXGKRNL)/m/&#39; /usr/src/dxgkrnl-$VERSION/Makefile
sed -i &#39;s#linux/hyperv.h#linux/hyperv_dxgkrnl.h#&#39; /usr/src/dxgkrnl-$VERSION/dxgmodule.c
echo &quot;EXTRA_CFLAGS=-I\$(PWD)/inc&quot; &gt;&gt; /usr/src/dxgkrnl-$VERSION/Makefile

cat &gt; /usr/src/dxgkrnl-$VERSION/dkms.conf &lt;&lt;EOF
PACKAGE_NAME=&quot;dxgkrnl&quot;
PACKAGE_VERSION=&quot;$VERSION&quot;
BUILT_MODULE_NAME=&quot;dxgkrnl&quot;
DEST_MODULE_LOCATION=&quot;/kernel/drivers/hv/dxgkrnl/&quot;
AUTOINSTALL=&quot;yes&quot;
EOF

dkms add dxgkrnl/$VERSION
dkms build dxgkrnl/$VERSION
dkms install dxgkrnl/$VERSION</code></pre></div>



<p class="wp-block-paragraph">上記の内容をダウンロードしやすいよう下記の gist にもアップロードしました。<br>よろしければご利用ください。</p>



<p class="wp-block-paragraph"><a href="https://gist.github.com/mimura1133/895b2f5f79ca1de1fbd7b0acf10358d6">https://gist.github.com/mimura1133/895b2f5f79ca1de1fbd7b0acf10358d6</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">8. CUDA の環境をインストールする</h2>



<p class="wp-block-paragraph">nvidia-cuda-toolkit のインストールと、ライブラリのリンクの張り替えを行います。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># cuda toolkit のインストール
sudo apt install nvidia-cuda-toolkit

# 不要な追加パッケージの削除
sudo apt remove nvidia-kernel-dkms nvidia-modprobe nvidia-kernel-common

# libcuda.so が cuda toolkit のモノになっているので張り替える。
sudo rm /usr/lib/x86_64-linux-gnu/libcuda.so
sudo rm /usr/lib/x86_64-linux-gnu/libcuda.so.1
sudo ln -s /usr/lib/wsl/lib/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so
sudo ln -s /usr/lib/wsl/lib/libcuda.so.1 /usr/lib/x86_64-linux-gnu/libcuda.so.1</code></pre></div>



<p class="wp-block-paragraph">ここまで来たら<span style="text-decoration: underline;"><strong>一度再起動</strong></span>を行います。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">再起動完了後、nvidia-smi を実行すると下記のような表示となり、<br>GPU (CUDA) が利用可能な状態になります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="762" height="360" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-12.png" alt="" class="wp-image-5944" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-12.png 762w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-12-624x295.png 624w" sizes="auto, (max-width: 762px) 100vw, 762px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">また CUDA を用いるアプリケーションにおいても正常に認識され、 Windows 側のタスクマネージャからも GPU が動作していることが分かります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="864" height="468" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-13.png" alt="" class="wp-image-5946" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-13.png 864w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-13-768x416.png 768w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-13-624x338.png 624w" sizes="auto, (max-width: 864px) 100vw, 864px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1155" height="878" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-14.png" alt="" class="wp-image-5947" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-14.png 1155w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-14-768x584.png 768w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-14-624x474.png 624w" sizes="auto, (max-width: 1155px) 100vw, 1155px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">CUI で計算を行う範囲で十分であれば、ここで設定は完了となります。<br>以降は GUI を有効にする場合の手順となります。<br></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">(追加) 9. GUI を有効にする</h2>



<p class="wp-block-paragraph">GUI が立ち上がるように設定を入れ込みます。</p>



<p class="wp-block-paragraph">modesetting ドライバで上手く処理が出来なくなっているのが原因であるため、<br>BusID とドライバの設定を行い動作するようにします。<br></p>



<p class="wp-block-paragraph">・<span style="text-decoration: underline;">内部に露出している PCI の BusID を調べる</span></p>



<p class="wp-block-paragraph">一度 xorg を起動して失敗させ、その中のログから調べるのが手っ取り早いです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># Xorg の起動を試みる。（失敗してエラーが表示されます）
sudo startx

# ログの中から PCI Bus の ID を見つける
grep &quot;PCI&quot; /var/log/Xorg.0.log

# --
# 実行例
# --
grep &quot;PCI&quot; /var/log/Xorg.0.log
[   3.668] (--) PCI:*(0@41715:0:0) 1414:008e:0000:0000 rev 0</code></pre></div>



<p class="wp-block-paragraph">上記の実行例の場合、必要になるのはアットマーク以降の <strong>&#8220;41715:0:0&#8221;</strong> になります。</p>



<p class="wp-block-paragraph">・<span style="text-decoration: underline;">調べた BusID を設定に入れる</span></p>



<p class="wp-block-paragraph">下記の内容を<strong> /etc/X11/xorg.conf.d/hv-fbdev.conf として保存</strong>します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>Section &quot;Device&quot;
         Identifier &quot;Card0&quot;
         Driver     &quot;fbdev&quot;
         BusID      &quot;PCI:(上記で見つけた ID)&quot;
EndSection</code></pre></div>



<p class="wp-block-paragraph">記入例としては下記のような形になります：</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>#
# 設定・記入例
#

# sudo vim /etc/X11/xorg.conf.d/hv-fbdev.conf

Section &quot;Device&quot;
         Identifier &quot;Card0&quot;
         Driver     &quot;fbdev&quot;
         BusID      &quot;PCI:41715:0:0&quot;
EndSection</code></pre></div>



<p class="wp-block-paragraph">その後、再起動すると GUI が立ち上がってきます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">（追加）10. Kali Linux の Enhanced Mode を有効にする</h2>



<p class="wp-block-paragraph">Enhanced Mode を有効にすることで、クリップボードの共有やスムーズな描画を使えるようにします。</p>



<p class="wp-block-paragraph">下記ページに従って設定を行った後、追加の設定を行います。<br><a href="https://www.kali.org/docs/virtualization/install-hyper-v-guest-enhanced-session-mode">https://www.kali.org/docs/virtualization/install-hyper-v-guest-enhanced-session-mode</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">・<span style="text-decoration: underline;">kali-tweaks を実行して、初期設定を行う</span></p>



<p class="wp-block-paragraph">下記の順番で遷移して設定を行います。<br>Virtualization → Configure</p>



<p class="wp-block-paragraph">設定後下記コマンドを入力し、xorg を xrdp を出力先として起動するように設定します。<br>（先述の 9 で設定した内容と排他になり、Enhanced Mode でのみ GUI が表示されるようになります。）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># Step 9 を実行している場合は、その設定を消去する
sudo rm /etc/X11/xorg.conf.d/hv-fbdev.conf

# xrdp を出力先として起動するように設定する
sudo cp /etc/X11/xrdp/xorg.conf /etc/X11/xorg.conf.d/</code></pre></div>



<p class="wp-block-paragraph">設定後 VM をシャットダウンします。</p>



<p class="wp-block-paragraph">・<span style="text-decoration: underline;">Enhanced Session の接続方式を HVSocket に切替える</span></p>



<p class="wp-block-paragraph"><span style="text-decoration: underline;">管理者権限で起動した PowerShell</span><strong><span style="text-decoration: underline;"> </span></strong>を用いて、下記のコマンドを実行します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># VM の情報を取得。
# （Step 3 や 4 で既に実行済みであれば実行不要）
$vm = Get-VM -Name &quot;&lt;VM名, ワイルドカードも使えます&gt;&quot;

$vm | Set-VM -EnhancedSessionTransportType HVSocket</code></pre></div>



<p class="wp-block-paragraph">上記が完了したら VM の電源を投入します。</p>



<p class="wp-block-paragraph">上手く行けば、起動時に下記のようなダイアログが表示されます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="512" height="301" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-15.png" alt="" class="wp-image-5948"/></figure>



<p class="wp-block-paragraph">接続を行い、IDとパスワードを入力後、デスクトップが出てくれば完成です。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1361" height="849" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-16.png" alt="" class="wp-image-5949" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-16.png 1361w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-16-768x479.png 768w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-16-624x389.png 624w" sizes="auto, (max-width: 1361px) 100vw, 1361px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">注意・留意事項等</h2>



<p class="wp-block-paragraph">・マイクロソフト社やその他関連する会社様などから記事の削除・非表示化の指示を受けた場合は予告なく記事を非表示にすることがあります。</p>



<p class="wp-block-paragraph">・本手法については公式のものではありません。内容に関する質問についてマイクロソフト社やその他の窓口に問い合わせすることはおやめください。また予告なく動作しなくなる場合も考えられます。</p>



<p class="wp-block-paragraph">・ホスト側のグラフィックドライバの更新などのVM 内のドライバも入れ替える必要がある可能性がある、とのことです（当方環境ではまだ未確認）</p>



<h2 class="wp-block-heading">執筆に際して参考にした記事など</h2>



<p class="wp-block-paragraph">Hyper-VでGPU(GPU-PV)を利用する方法 (Ubuntu編)<br><a href="https://qiita.com/Hyper-W/items/5ddfc93891f7b620da8a">https://qiita.com/Hyper-W/items/5ddfc93891f7b620da8a</a><br><br>Ubuntu 21.04 VM with GPU acceleration under Hyper-V&#8230;?<br><a href="https://gist.github.com/krzys-h/e2def49966aa42bbd3316dfb794f4d6a">https://gist.github.com/krzys-h/e2def49966aa42bbd3316dfb794f4d6a</a><br><br>GitHub &#8211; Nevuly/WSL2-Linux-Kernel-Rolling: Rolling Release Stable Kernel for Windows Subsystem for Linux2 (WSL2)<br><a href="https://github.com/Nevuly/WSL2-Linux-Kernel-Rolling">https://github.com/Nevuly/WSL2-Linux-Kernel-Rolling</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">検証しながら書いていたら、日が沈んで夜になり、また新たな朝日が昇ってきてしまいました。でもとっても楽しかったのでヨシとします・・！</p>



<p class="wp-block-paragraph">それではよき GPGPU ライフを VM 内でもお過ごしください！</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1356" height="785" src="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-17.png" alt="" class="wp-image-5954" srcset="https://mimumimu.net/blog/wp-content/uploads/2024/06/image-17.png 1356w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-17-768x445.png 768w, https://mimumimu.net/blog/wp-content/uploads/2024/06/image-17-624x361.png 624w" sizes="auto, (max-width: 1356px) 100vw, 1356px" /></figure>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2024%2F06%2F17%2Fhyper-v-%25e4%25b8%258a%25e3%2581%25ae-linux-%25e3%2581%258b%25e3%2582%2589-gpu-%25e3%2582%2592%25e5%2588%25a9%25e7%2594%25a8%25e3%2581%2599%25e3%2582%258b%25e8%25a9%25b1%2F&amp;linkname=Hyper-V%20%E4%B8%8A%E3%81%AE%20Linux%20%E3%81%8B%E3%82%89%20GPU%20%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E8%A9%B1" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2024%2F06%2F17%2Fhyper-v-%25e4%25b8%258a%25e3%2581%25ae-linux-%25e3%2581%258b%25e3%2582%2589-gpu-%25e3%2582%2592%25e5%2588%25a9%25e7%2594%25a8%25e3%2581%2599%25e3%2582%258b%25e8%25a9%25b1%2F&amp;linkname=Hyper-V%20%E4%B8%8A%E3%81%AE%20Linux%20%E3%81%8B%E3%82%89%20GPU%20%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E8%A9%B1" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2024%2F06%2F17%2Fhyper-v-%25e4%25b8%258a%25e3%2581%25ae-linux-%25e3%2581%258b%25e3%2582%2589-gpu-%25e3%2582%2592%25e5%2588%25a9%25e7%2594%25a8%25e3%2581%2599%25e3%2582%258b%25e8%25a9%25b1%2F&amp;linkname=Hyper-V%20%E4%B8%8A%E3%81%AE%20Linux%20%E3%81%8B%E3%82%89%20GPU%20%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E8%A9%B1" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2024%2F06%2F17%2Fhyper-v-%25e4%25b8%258a%25e3%2581%25ae-linux-%25e3%2581%258b%25e3%2582%2589-gpu-%25e3%2582%2592%25e5%2588%25a9%25e7%2594%25a8%25e3%2581%2599%25e3%2582%258b%25e8%25a9%25b1%2F&#038;title=Hyper-V%20%E4%B8%8A%E3%81%AE%20Linux%20%E3%81%8B%E3%82%89%20GPU%20%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E8%A9%B1" data-a2a-url="https://mimumimu.net/blog/2024/06/17/hyper-v-%e4%b8%8a%e3%81%ae-linux-%e3%81%8b%e3%82%89-gpu-%e3%82%92%e5%88%a9%e7%94%a8%e3%81%99%e3%82%8b%e8%a9%b1/" data-a2a-title="Hyper-V 上の Linux から GPU を利用する話"></a></p>The post <a href="https://mimumimu.net/blog/2024/06/17/hyper-v-%e4%b8%8a%e3%81%ae-linux-%e3%81%8b%e3%82%89-gpu-%e3%82%92%e5%88%a9%e7%94%a8%e3%81%99%e3%82%8b%e8%a9%b1/">Hyper-V 上の Linux から GPU を利用する話</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2024/06/17/hyper-v-%e4%b8%8a%e3%81%ae-linux-%e3%81%8b%e3%82%89-gpu-%e3%82%92%e5%88%a9%e7%94%a8%e3%81%99%e3%82%8b%e8%a9%b1/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Hyper-V の第２世代で Linux の起動ログを追いかける</title>
		<link>https://mimumimu.net/blog/2023/09/22/hyper-v-%e3%81%ae%e7%ac%ac%ef%bc%92%e4%b8%96%e4%bb%a3%e3%81%a7-linux-%e3%81%ae%e8%b5%b7%e5%8b%95%e3%83%ad%e3%82%b0%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%82%8b/</link>
					<comments>https://mimumimu.net/blog/2023/09/22/hyper-v-%e3%81%ae%e7%ac%ac%ef%bc%92%e4%b8%96%e4%bb%a3%e3%81%a7-linux-%e3%81%ae%e8%b5%b7%e5%8b%95%e3%83%ad%e3%82%b0%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Fri, 22 Sep 2023 11:47:04 +0000</pubDate>
				<category><![CDATA[Linux / Unix / Interix]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5916</guid>

					<description><![CDATA[<p>どうも、みむらです。 Hyper-V 上で Linux を動かすかとやっていたのですが内部で起動がコケてしまって、その追跡にとても時間が掛かったのでそのメモです。 １．COM ポートを生やす PowerShell で &#038; [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2023/09/22/hyper-v-%e3%81%ae%e7%ac%ac%ef%bc%92%e4%b8%96%e4%bb%a3%e3%81%a7-linux-%e3%81%ae%e8%b5%b7%e5%8b%95%e3%83%ad%e3%82%b0%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%82%8b/">Hyper-V の第２世代で Linux の起動ログを追いかける</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2023%2F09%2F22%2Fhyper-v-%25e3%2581%25ae%25e7%25ac%25ac%25ef%25bc%2592%25e4%25b8%2596%25e4%25bb%25a3%25e3%2581%25a7-linux-%25e3%2581%25ae%25e8%25b5%25b7%25e5%258b%2595%25e3%2583%25ad%25e3%2582%25b0%25e3%2582%2592%25e8%25bf%25bd%25e3%2581%2584%25e3%2581%258b%25e3%2581%2591%25e3%2582%258b%2F&amp;linkname=Hyper-V%20%E3%81%AE%E7%AC%AC%EF%BC%92%E4%B8%96%E4%BB%A3%E3%81%A7%20Linux%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%92%E8%BF%BD%E3%81%84%E3%81%8B%E3%81%91%E3%82%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2023%2F09%2F22%2Fhyper-v-%25e3%2581%25ae%25e7%25ac%25ac%25ef%25bc%2592%25e4%25b8%2596%25e4%25bb%25a3%25e3%2581%25a7-linux-%25e3%2581%25ae%25e8%25b5%25b7%25e5%258b%2595%25e3%2583%25ad%25e3%2582%25b0%25e3%2582%2592%25e8%25bf%25bd%25e3%2581%2584%25e3%2581%258b%25e3%2581%2591%25e3%2582%258b%2F&amp;linkname=Hyper-V%20%E3%81%AE%E7%AC%AC%EF%BC%92%E4%B8%96%E4%BB%A3%E3%81%A7%20Linux%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%92%E8%BF%BD%E3%81%84%E3%81%8B%E3%81%91%E3%82%8B" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2023%2F09%2F22%2Fhyper-v-%25e3%2581%25ae%25e7%25ac%25ac%25ef%25bc%2592%25e4%25b8%2596%25e4%25bb%25a3%25e3%2581%25a7-linux-%25e3%2581%25ae%25e8%25b5%25b7%25e5%258b%2595%25e3%2583%25ad%25e3%2582%25b0%25e3%2582%2592%25e8%25bf%25bd%25e3%2581%2584%25e3%2581%258b%25e3%2581%2591%25e3%2582%258b%2F&amp;linkname=Hyper-V%20%E3%81%AE%E7%AC%AC%EF%BC%92%E4%B8%96%E4%BB%A3%E3%81%A7%20Linux%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%92%E8%BF%BD%E3%81%84%E3%81%8B%E3%81%91%E3%82%8B" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2023%2F09%2F22%2Fhyper-v-%25e3%2581%25ae%25e7%25ac%25ac%25ef%25bc%2592%25e4%25b8%2596%25e4%25bb%25a3%25e3%2581%25a7-linux-%25e3%2581%25ae%25e8%25b5%25b7%25e5%258b%2595%25e3%2583%25ad%25e3%2582%25b0%25e3%2582%2592%25e8%25bf%25bd%25e3%2581%2584%25e3%2581%258b%25e3%2581%2591%25e3%2582%258b%2F&#038;title=Hyper-V%20%E3%81%AE%E7%AC%AC%EF%BC%92%E4%B8%96%E4%BB%A3%E3%81%A7%20Linux%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%92%E8%BF%BD%E3%81%84%E3%81%8B%E3%81%91%E3%82%8B" data-a2a-url="https://mimumimu.net/blog/2023/09/22/hyper-v-%e3%81%ae%e7%ac%ac%ef%bc%92%e4%b8%96%e4%bb%a3%e3%81%a7-linux-%e3%81%ae%e8%b5%b7%e5%8b%95%e3%83%ad%e3%82%b0%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%82%8b/" data-a2a-title="Hyper-V の第２世代で Linux の起動ログを追いかける"></a></p>
<p class="wp-block-paragraph">どうも、みむらです。</p>



<p class="wp-block-paragraph">Hyper-V 上で Linux を動かすかとやっていたのですが<br>内部で起動がコケてしまって、その追跡にとても時間が掛かったのでそのメモです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="525" height="229" src="https://mimumimu.net/blog/wp-content/uploads/2023/09/image.png" alt="" class="wp-image-5917"/></figure>



<h2 class="wp-block-heading">１．COM ポートを生やす</h2>



<p class="wp-block-paragraph">PowerShell で &#8220;Set-VMComPort&#8221; コマンドを使うことで生やせます。</p>



<p class="wp-block-paragraph">Set-VMComPort (Hyper-V) | Microsoft Learn<br><a href="https://learn.microsoft.com/en-us/powershell/module/hyper-v/set-vmcomport" title="">https://learn.microsoft.com/en-us/powershell/module/hyper-v/set-vmcomport</a></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>Set-VMComPort -VMName &quot;Gentoo Linux&quot; -Number 1 -Path \.\pipe\vm_debugcom</code></pre></div>



<p class="wp-block-paragraph">-VMName は VM 名、 -Number は 1を最小値として ttyS0 に当たっていきます。</p>



<h2 class="wp-block-heading">２． COM を見る</h2>



<p class="wp-block-paragraph">手っ取り早いのが PuTTY です。<br>管理者権限で起動した PuTTY で、名前付きパイプの文字列をそのまま入力すると繋いでくれます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="452" height="442" src="https://mimumimu.net/blog/wp-content/uploads/2023/09/image-1.png" alt="" class="wp-image-5918"/></figure>



<p class="wp-block-paragraph">その後、起動オプションに CONSOLE の設定を入れて起動します。<br>サンプルとしては下記のような感じです：</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>linux /vmlinuz-6.5.4-gentoo console=ttyS0,9600
boot</code></pre></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="868" height="414" src="https://mimumimu.net/blog/wp-content/uploads/2023/09/image-2.png" alt="" class="wp-image-5919" srcset="https://mimumimu.net/blog/wp-content/uploads/2023/09/image-2.png 868w, https://mimumimu.net/blog/wp-content/uploads/2023/09/image-2-768x366.png 768w, https://mimumimu.net/blog/wp-content/uploads/2023/09/image-2-624x298.png 624w" sizes="auto, (max-width: 868px) 100vw, 868px" /></figure>



<h2 class="wp-block-heading">３．ログを眺める</h2>



<p class="wp-block-paragraph">コンソールの内容が PuTTY 側に流れてきます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="661" height="418" src="https://mimumimu.net/blog/wp-content/uploads/2023/09/image-3.png" alt="" class="wp-image-5920" srcset="https://mimumimu.net/blog/wp-content/uploads/2023/09/image-3.png 661w, https://mimumimu.net/blog/wp-content/uploads/2023/09/image-3-624x395.png 624w" sizes="auto, (max-width: 661px) 100vw, 661px" /></figure>



<p class="wp-block-paragraph">今回の場合はどうやら &#8220;noxsave&#8221; を入れれば治るらしいのですが、<br>気持ち悪いので原因調査をしてみます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">&#8220;XSAVE has to be disabled as it is not supported by this module&#8221; ということで、<br>これで検索を掛けて見ると、下記のパッチが見つかります。</p>



<p class="wp-block-paragraph"><a href="https://lwn.net/ml/linux-kernel/1678386957-18016-3-git-send-email-ssengar@linux.microsoft.com/">https://lwn.net/ml/linux-kernel/1678386957-18016-3-git-send-email-ssengar@linux.microsoft.com/</a></p>



<p class="wp-block-paragraph">コードを抜粋するとまさにこんな感じ。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-c" data-lang="C"><code>+++ b/arch/x86/hyperv/hv_vtl.c

+static int __init hv_vtl_early_init(void)
+{
+	/*
+	 * `boot_cpu_has` returns the runtime feature support,
+	 * and here is the earliest it can be used.
+	 */
+	if (cpu_feature_enabled(X86_FEATURE_XSAVE))
+		panic(&quot;XSAVE has to be disabled as it is not supported by this module.\n&quot;
+			  &quot;Please add &#39;noxsave&#39; to the kernel command line.\n&quot;);
+
+	real_mode_header = &hv_vtl_real_mode_header;
+	apic-&gt;wakeup_secondary_cpu_64 = hv_vtl_wakeup_secondary_cpu;
+
+	return 0;
+}</code></pre></div>



<p class="wp-block-paragraph">調べてみると、 &#8220;Enable Linux to boot in VTL context&#8221; という項目を発見。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://mimumimu.net/blog/wp-content/uploads/2023/09/image-4.png" alt="" class="wp-image-5921" style="width:655px;height:289px" width="655" height="289" srcset="https://mimumimu.net/blog/wp-content/uploads/2023/09/image-4.png 1006w, https://mimumimu.net/blog/wp-content/uploads/2023/09/image-4-768x339.png 768w, https://mimumimu.net/blog/wp-content/uploads/2023/09/image-4-624x275.png 624w" sizes="auto, (max-width: 655px) 100vw, 655px" /></figure>



<p class="wp-block-paragraph">切ってみたところ、正常に起動しました。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">というわけで、第２世代でコンソールを生やして中身を追いかける話・・でした！<br>エラーメッセージを見れば一撃なんですけど、ここにたどり着くまでに数時間溶かしてしまったので、まだまだ精進します、、、<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a6.png" alt="💦" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2023%2F09%2F22%2Fhyper-v-%25e3%2581%25ae%25e7%25ac%25ac%25ef%25bc%2592%25e4%25b8%2596%25e4%25bb%25a3%25e3%2581%25a7-linux-%25e3%2581%25ae%25e8%25b5%25b7%25e5%258b%2595%25e3%2583%25ad%25e3%2582%25b0%25e3%2582%2592%25e8%25bf%25bd%25e3%2581%2584%25e3%2581%258b%25e3%2581%2591%25e3%2582%258b%2F&amp;linkname=Hyper-V%20%E3%81%AE%E7%AC%AC%EF%BC%92%E4%B8%96%E4%BB%A3%E3%81%A7%20Linux%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%92%E8%BF%BD%E3%81%84%E3%81%8B%E3%81%91%E3%82%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2023%2F09%2F22%2Fhyper-v-%25e3%2581%25ae%25e7%25ac%25ac%25ef%25bc%2592%25e4%25b8%2596%25e4%25bb%25a3%25e3%2581%25a7-linux-%25e3%2581%25ae%25e8%25b5%25b7%25e5%258b%2595%25e3%2583%25ad%25e3%2582%25b0%25e3%2582%2592%25e8%25bf%25bd%25e3%2581%2584%25e3%2581%258b%25e3%2581%2591%25e3%2582%258b%2F&amp;linkname=Hyper-V%20%E3%81%AE%E7%AC%AC%EF%BC%92%E4%B8%96%E4%BB%A3%E3%81%A7%20Linux%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%92%E8%BF%BD%E3%81%84%E3%81%8B%E3%81%91%E3%82%8B" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2023%2F09%2F22%2Fhyper-v-%25e3%2581%25ae%25e7%25ac%25ac%25ef%25bc%2592%25e4%25b8%2596%25e4%25bb%25a3%25e3%2581%25a7-linux-%25e3%2581%25ae%25e8%25b5%25b7%25e5%258b%2595%25e3%2583%25ad%25e3%2582%25b0%25e3%2582%2592%25e8%25bf%25bd%25e3%2581%2584%25e3%2581%258b%25e3%2581%2591%25e3%2582%258b%2F&amp;linkname=Hyper-V%20%E3%81%AE%E7%AC%AC%EF%BC%92%E4%B8%96%E4%BB%A3%E3%81%A7%20Linux%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%92%E8%BF%BD%E3%81%84%E3%81%8B%E3%81%91%E3%82%8B" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2023%2F09%2F22%2Fhyper-v-%25e3%2581%25ae%25e7%25ac%25ac%25ef%25bc%2592%25e4%25b8%2596%25e4%25bb%25a3%25e3%2581%25a7-linux-%25e3%2581%25ae%25e8%25b5%25b7%25e5%258b%2595%25e3%2583%25ad%25e3%2582%25b0%25e3%2582%2592%25e8%25bf%25bd%25e3%2581%2584%25e3%2581%258b%25e3%2581%2591%25e3%2582%258b%2F&#038;title=Hyper-V%20%E3%81%AE%E7%AC%AC%EF%BC%92%E4%B8%96%E4%BB%A3%E3%81%A7%20Linux%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%92%E8%BF%BD%E3%81%84%E3%81%8B%E3%81%91%E3%82%8B" data-a2a-url="https://mimumimu.net/blog/2023/09/22/hyper-v-%e3%81%ae%e7%ac%ac%ef%bc%92%e4%b8%96%e4%bb%a3%e3%81%a7-linux-%e3%81%ae%e8%b5%b7%e5%8b%95%e3%83%ad%e3%82%b0%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%82%8b/" data-a2a-title="Hyper-V の第２世代で Linux の起動ログを追いかける"></a></p>The post <a href="https://mimumimu.net/blog/2023/09/22/hyper-v-%e3%81%ae%e7%ac%ac%ef%bc%92%e4%b8%96%e4%bb%a3%e3%81%a7-linux-%e3%81%ae%e8%b5%b7%e5%8b%95%e3%83%ad%e3%82%b0%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%82%8b/">Hyper-V の第２世代で Linux の起動ログを追いかける</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2023/09/22/hyper-v-%e3%81%ae%e7%ac%ac%ef%bc%92%e4%b8%96%e4%bb%a3%e3%81%a7-linux-%e3%81%ae%e8%b5%b7%e5%8b%95%e3%83%ad%e3%82%b0%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ElasticSearch OSS / OpenSearch の Beats が &#8220;runtime/cgo: pthread_create failed: operation not permitted&#8221; で落ちるのを直す</title>
		<link>https://mimumimu.net/blog/2022/06/10/elasticsearch-oss-opensearch-%e3%81%ae-beats-%e3%81%8c-runtime-cgo-pthread_create-failed-operation-not-permitted-%e3%81%a7%e8%90%bd%e3%81%a1%e3%82%8b%e3%81%ae%e3%82%92%e7%9b%b4%e3%81%99/</link>
					<comments>https://mimumimu.net/blog/2022/06/10/elasticsearch-oss-opensearch-%e3%81%ae-beats-%e3%81%8c-runtime-cgo-pthread_create-failed-operation-not-permitted-%e3%81%a7%e8%90%bd%e3%81%a1%e3%82%8b%e3%81%ae%e3%82%92%e7%9b%b4%e3%81%99/#respond</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Thu, 09 Jun 2022 21:57:31 +0000</pubDate>
				<category><![CDATA[Linux / Unix / Interix]]></category>
		<category><![CDATA[beats]]></category>
		<category><![CDATA[elasticsearch]]></category>
		<category><![CDATA[opensearch]]></category>
		<category><![CDATA[pthread_create]]></category>
		<category><![CDATA[runtime/cgo]]></category>
		<category><![CDATA[wazuh]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5908</guid>

					<description><![CDATA[<p>どうも、みむらです。 某所の監視に Wazuh ( https://wazuh.com/ )をよく使っているのですが内部的に ElasticSearch OSS 7.10.2 を使っているため、新しすぎる OS 上で動か [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2022/06/10/elasticsearch-oss-opensearch-%e3%81%ae-beats-%e3%81%8c-runtime-cgo-pthread_create-failed-operation-not-permitted-%e3%81%a7%e8%90%bd%e3%81%a1%e3%82%8b%e3%81%ae%e3%82%92%e7%9b%b4%e3%81%99/">ElasticSearch OSS / OpenSearch の Beats が “runtime/cgo: pthread_create failed: operation not permitted” で落ちるのを直す</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F06%2F10%2Felasticsearch-oss-opensearch-%25e3%2581%25ae-beats-%25e3%2581%258c-runtime-cgo-pthread_create-failed-operation-not-permitted-%25e3%2581%25a7%25e8%2590%25bd%25e3%2581%25a1%25e3%2582%258b%25e3%2581%25ae%25e3%2582%2592%25e7%259b%25b4%25e3%2581%2599%2F&amp;linkname=ElasticSearch%20OSS%20%2F%20OpenSearch%20%E3%81%AE%20Beats%20%E3%81%8C%20%E2%80%9Cruntime%2Fcgo%3A%20pthread_create%20failed%3A%20operation%20not%20permitted%E2%80%9D%20%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%81%AE%E3%82%92%E7%9B%B4%E3%81%99" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F06%2F10%2Felasticsearch-oss-opensearch-%25e3%2581%25ae-beats-%25e3%2581%258c-runtime-cgo-pthread_create-failed-operation-not-permitted-%25e3%2581%25a7%25e8%2590%25bd%25e3%2581%25a1%25e3%2582%258b%25e3%2581%25ae%25e3%2582%2592%25e7%259b%25b4%25e3%2581%2599%2F&amp;linkname=ElasticSearch%20OSS%20%2F%20OpenSearch%20%E3%81%AE%20Beats%20%E3%81%8C%20%E2%80%9Cruntime%2Fcgo%3A%20pthread_create%20failed%3A%20operation%20not%20permitted%E2%80%9D%20%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%81%AE%E3%82%92%E7%9B%B4%E3%81%99" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F06%2F10%2Felasticsearch-oss-opensearch-%25e3%2581%25ae-beats-%25e3%2581%258c-runtime-cgo-pthread_create-failed-operation-not-permitted-%25e3%2581%25a7%25e8%2590%25bd%25e3%2581%25a1%25e3%2582%258b%25e3%2581%25ae%25e3%2582%2592%25e7%259b%25b4%25e3%2581%2599%2F&amp;linkname=ElasticSearch%20OSS%20%2F%20OpenSearch%20%E3%81%AE%20Beats%20%E3%81%8C%20%E2%80%9Cruntime%2Fcgo%3A%20pthread_create%20failed%3A%20operation%20not%20permitted%E2%80%9D%20%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%81%AE%E3%82%92%E7%9B%B4%E3%81%99" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F06%2F10%2Felasticsearch-oss-opensearch-%25e3%2581%25ae-beats-%25e3%2581%258c-runtime-cgo-pthread_create-failed-operation-not-permitted-%25e3%2581%25a7%25e8%2590%25bd%25e3%2581%25a1%25e3%2582%258b%25e3%2581%25ae%25e3%2582%2592%25e7%259b%25b4%25e3%2581%2599%2F&#038;title=ElasticSearch%20OSS%20%2F%20OpenSearch%20%E3%81%AE%20Beats%20%E3%81%8C%20%E2%80%9Cruntime%2Fcgo%3A%20pthread_create%20failed%3A%20operation%20not%20permitted%E2%80%9D%20%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%81%AE%E3%82%92%E7%9B%B4%E3%81%99" data-a2a-url="https://mimumimu.net/blog/2022/06/10/elasticsearch-oss-opensearch-%e3%81%ae-beats-%e3%81%8c-runtime-cgo-pthread_create-failed-operation-not-permitted-%e3%81%a7%e8%90%bd%e3%81%a1%e3%82%8b%e3%81%ae%e3%82%92%e7%9b%b4%e3%81%99/" data-a2a-title="ElasticSearch OSS / OpenSearch の Beats が “runtime/cgo: pthread_create failed: operation not permitted” で落ちるのを直す"></a></p>
<p class="wp-block-paragraph">どうも、みむらです。</p>



<p class="wp-block-paragraph">某所の監視に Wazuh ( <a href="https://wazuh.com/">https://wazuh.com/</a> )をよく使っているのですが<br>内部的に ElasticSearch OSS 7.10.2 を使っているため、新しすぎる OS 上で動かそうとすると filebeat が下記のように落ちてしまうことがあります</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="301" src="https://mimumimu.net/blog/wp-content/uploads/2022/06/Untitled.png" alt="" class="wp-image-5909"/><figcaption>runtime/cgo: pthread_create failed: Operation not permitted</figcaption></figure>



<p class="wp-block-paragraph">もちろん、この問題は新しいバージョンの Beats では解決されているのですが<br>他方で 7.13 以降の Beats は OpenSearch 1.x や Elasticsearch OSS などで使えないという問題があります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1235" height="879" src="https://mimumimu.net/blog/wp-content/uploads/2022/06/image.png" alt="" class="wp-image-5910"/><figcaption><a href="https://opensearch.org/docs/latest/clients/agents-and-ingestion-tools/index/">https://opensearch.org/docs/latest/clients/agents-and-ingestion-tools/index/</a></figcaption></figure>



<p class="wp-block-paragraph">この問題については、下記のコメントにあるように elasticsearch 側もアップデートすることが推奨されていますので、公式に解決される可能性は低そうです。</p>



<p class="wp-block-paragraph"><a href="https://github.com/elastic/beats/pull/26305#issuecomment-863472649">https://github.com/elastic/beats/pull/26305#issuecomment-863472649</a></p>



<p class="wp-block-paragraph">枯れたものを使え、公式でサポートしていないディストリビューションを使うな、というのは一理あるのですが、その方法で回避するのは面白くないですので、修正含めてやってみました。</p>



<p class="wp-block-paragraph">（wazuh のサポートで解決している例が見当たらなかったこともあり、最初だけ英語で併記します。）</p>



<h3 class="wp-block-heading">注意：</h3>



<p class="wp-block-paragraph">修正は自己責任でお願いします。本番用環境に対して独自ビルドを行ったものを適用したことにより問題が発生しても当方では責任を負えません。</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">落ちる原因 (Cause)：</h2>



<p class="wp-block-paragraph"><strong>&#8220;clone3&#8221; のシステムコールが seccomp の許可リストに登録されていないため。</strong><br> en : The systemcall &#8220;clone3&#8221; is not allowed by seccomp. </p>



<p class="wp-block-paragraph">glibc 2.34 以降において、 pthread_create() を呼び出す際に clone3 システムコールが用いられるようになったことが原因となっています。<br></p>



<h2 class="wp-block-heading">修正方法 (Solution):</h2>



<p class="wp-block-paragraph"><strong>libbeat/common/seccomp 以下の &#8220;policy_linux_386.go&#8221; と &#8220;policy_linux_amd64.go&#8221; に &#8220;clone3&#8221; を追記する</strong><br>en: Add &#8220;clone3&#8221; to policy_linux_386.go and policy_linux_amd64.go under libbeat/common/seccomp.</p>



<p class="wp-block-paragraph">具体的な追加内容については、まさしく当該する patch がありますのでこれに従います。<br><a href="https://github.com/elastic/beats/commit/82507fda20bee46cee4808d388a0c809dd01ff13">https://github.com/elastic/beats/commit/82507fda20bee46cee4808d388a0c809dd01ff13</a></p>



<p class="wp-block-paragraph">また<strong> glibc 2.35 以降では &#8220;rseq&#8221; システムコールも用いる</strong>そうですので<br>こちらも併せて対応しておくとよいと思います。<br>en: It is a recommend to also add &#8220;rseq&#8221; to policy_linux_386.go and policy_linux_amd64.go under libbeat/common/seccomp, due to the syscall is used glibc >= 2.35.</p>



<p class="wp-block-paragraph"><a href="https://github.com/elastic/beats/commit/f02fa32e0a37d6529983e2181b80bf62e4a16b41">https://github.com/elastic/beats/commit/f02fa32e0a37d6529983e2181b80bf62e4a16b41</a></p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">実際にやってみる</h2>



<p class="wp-block-paragraph">実際に上記のパッチを当てて問題が解決するか確認してみました。</p>



<p class="wp-block-paragraph">確認環境 : Fedora 36 x86_64</p>



<span id="more-5908"></span>



<h3 class="wp-block-heading">1. beats のソースコードを取ってくる</h3>



<p class="wp-block-paragraph">今回の例では wazuh で配信されているのが filebeat 7.10 ですのでこちらに合わせます。<br>(Elasticsearch OSS に対応している最新バージョンを用いる場合は 7.12 を使ってください)</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>git clone https://github.com/elastic/beats -b v7.10</code></pre></div>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">2. パッチを当てる</h3>



<p class="wp-block-paragraph">下記の２つのコミットに併せてファイルを修正します。</p>



<p class="wp-block-paragraph">common/seccomp: add rseq syscall (<a href="https://github.com/elastic/beats/pull/30620">#30620</a>)<br><a href="https://github.com/elastic/beats/commit/f02fa32e0a37d6529983e2181b80bf62e4a16b41">https://github.com/elastic/beats/commit/f02fa32e0a37d6529983e2181b80bf62e4a16b41</a></p>



<p class="wp-block-paragraph">seccomp: allow clone3 syscall for x86 (<a href="https://github.com/elastic/beats/pull/28117">#28117</a>)<br><a href="https://github.com/elastic/beats/commit/82507fda20bee46cee4808d388a0c809dd01ff13">https://github.com/elastic/beats/commit/82507fda20bee46cee4808d388a0c809dd01ff13</a></p>



<p class="wp-block-paragraph">修正した差分としては下記の通りとなります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="patch.patch"><code>diff -r -u old/libbeat/common/seccomp/policy_linux_386.go new/libbeat/common/seccomp/policy_linux_386.go
--- old/libbeat/common/seccomp/policy_linux_386.go      2022-06-10 06:19:17.664958700 +0900
+++ new/libbeat/common/seccomp/policy_linux_386.go      2022-06-10 06:20:36.020958700 +0900
@@ -35,6 +35,7 @@
                                        &quot;chown&quot;,
                                        &quot;clock_gettime&quot;,
                                        &quot;clone&quot;,
+                                       &quot;clone3&quot;,
                                        &quot;close&quot;,
                                        &quot;dup&quot;,
                                        &quot;dup2&quot;,
@@ -99,6 +100,7 @@
                                        &quot;rename&quot;,
                                        &quot;renameat&quot;,
                                        &quot;restart_syscall&quot;,
+                                       &quot;rseq&quot;,
                                        &quot;rt_sigaction&quot;,
                                        &quot;rt_sigprocmask&quot;,
                                        &quot;rt_sigreturn&quot;,
diff -r -u old/libbeat/common/seccomp/policy_linux_amd64.go new/libbeat/common/seccomp/policy_linux_amd64.go
--- old/libbeat/common/seccomp/policy_linux_amd64.go    2022-06-10 06:17:27.775958700 +0900
+++ new/libbeat/common/seccomp/policy_linux_amd64.go    2022-06-10 06:20:47.961958700 +0900
@@ -38,6 +38,7 @@
                                        &quot;chown&quot;,
                                        &quot;clock_gettime&quot;,
                                        &quot;clone&quot;,
+                                       &quot;clone3&quot;,
                                        &quot;close&quot;,
                                        &quot;connect&quot;,
                                        &quot;dup&quot;,
@@ -111,6 +112,7 @@
                                        &quot;recvmsg&quot;,
                                        &quot;rename&quot;,
                                        &quot;renameat&quot;,
+                                       &quot;rseq&quot;,
                                        &quot;rt_sigaction&quot;,
                                        &quot;rt_sigprocmask&quot;,
                                        &quot;rt_sigreturn&quot;,
diff -r -u old/libbeat/common/seccomp/seccomp-profiler-allow.txt new/libbeat/common/seccomp/seccomp-profiler-allow.txt
--- old/libbeat/common/seccomp/seccomp-profiler-allow.txt       2022-06-10 06:21:00.270958700 +0900
+++ new/libbeat/common/seccomp/seccomp-profiler-allow.txt       2022-06-10 06:21:11.876958700 +0900
@@ -3,6 +3,7 @@
 set_robust_list
 tgkill
 time
+rseq

 # cgo os/user
 access</code></pre></div>



<p class="wp-block-paragraph">なお上記の patch を使う場合は下記のようなコマンドで適用可能です</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># beats = git clone したディレクトリ
# patch.patch = 上記の内容を記録したテキストファイル

patch -d beats -p1 &lt; patch.patch</code></pre></div>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">3. 依存するモジュールを修正する</h3>



<p class="wp-block-paragraph">当方で確認を進めた際、 &#8220;service&#8221; が blakerouse さんのリポジトリから上手く取得出来ませんでした。</p>



<p class="wp-block-paragraph">そのため、下記のように &#8220;go.mod&#8221; 内の replace 句内にある行を１行削除します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="patch2.patch"><code>--- old_go.mod  2022-06-10 06:40:17.691958700 +0900
+++ go.mod      2022-06-10 06:40:27.436958700 +0900
@@ -199,7 +199,6 @@
        github.com/fsnotify/fsnotify =&gt; github.com/adriansr/fsnotify v0.0.0-20180417234312-c9bbe1f46f1d
        github.com/google/gopacket =&gt; github.com/adriansr/gopacket v1.1.18-0.20200327165309-dd62abfa8a41
        github.com/insomniacslk/dhcp =&gt; github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 // indirect
-       github.com/kardianos/service =&gt; github.com/blakerouse/service v1.1.1-0.20200924160513-057808572ffa
        github.com/tonistiigi/fifo =&gt; github.com/containerd/fifo v0.0.0-20190816180239-bda0ff6ed73c
        golang.org/x/tools =&gt; golang.org/x/tools v0.0.0-20200602230032-c00d67ef29d0 // release 1.14
 )</code></pre></div>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">4. ビルドする</h3>



<p class="wp-block-paragraph">全部をビルドしてもよいですが、<br>今回は wazuh 用に filebeat のみビルドしてみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>cd filebeat
go get
make</code></pre></div>



<p class="wp-block-paragraph">完了すると、同じディレクトリに &#8220;filebeat&#8221; という名前の実行ファイルが生成されます。</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">5. 差替える</h3>



<p class="wp-block-paragraph">お行儀は余り良くないですが、<br>今回生成した filebeat を systemd から呼び出される filebeat のファイルと差替えます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>cp ./filebeat /usr/share/filebeat/bin/filebeat
cp ./filebeat /usr/bin/filebeat</code></pre></div>



<p class="wp-block-paragraph">差替えた後、 systemctl 等で起動すれば落ちない filebeat のできあがりです。</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">glibc 2.34 以降の環境で wazuh 等の Elasticsearch-oss と合わせた beats を使う場合に、seccomp の修正が必要という内容です。</p>



<p class="wp-block-paragraph">冒頭にも書きましたが、これを行うことについては自己責任となりますが<br>もし困っている方の助けとなりましたら幸いです。</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F06%2F10%2Felasticsearch-oss-opensearch-%25e3%2581%25ae-beats-%25e3%2581%258c-runtime-cgo-pthread_create-failed-operation-not-permitted-%25e3%2581%25a7%25e8%2590%25bd%25e3%2581%25a1%25e3%2582%258b%25e3%2581%25ae%25e3%2582%2592%25e7%259b%25b4%25e3%2581%2599%2F&amp;linkname=ElasticSearch%20OSS%20%2F%20OpenSearch%20%E3%81%AE%20Beats%20%E3%81%8C%20%E2%80%9Cruntime%2Fcgo%3A%20pthread_create%20failed%3A%20operation%20not%20permitted%E2%80%9D%20%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%81%AE%E3%82%92%E7%9B%B4%E3%81%99" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F06%2F10%2Felasticsearch-oss-opensearch-%25e3%2581%25ae-beats-%25e3%2581%258c-runtime-cgo-pthread_create-failed-operation-not-permitted-%25e3%2581%25a7%25e8%2590%25bd%25e3%2581%25a1%25e3%2582%258b%25e3%2581%25ae%25e3%2582%2592%25e7%259b%25b4%25e3%2581%2599%2F&amp;linkname=ElasticSearch%20OSS%20%2F%20OpenSearch%20%E3%81%AE%20Beats%20%E3%81%8C%20%E2%80%9Cruntime%2Fcgo%3A%20pthread_create%20failed%3A%20operation%20not%20permitted%E2%80%9D%20%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%81%AE%E3%82%92%E7%9B%B4%E3%81%99" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F06%2F10%2Felasticsearch-oss-opensearch-%25e3%2581%25ae-beats-%25e3%2581%258c-runtime-cgo-pthread_create-failed-operation-not-permitted-%25e3%2581%25a7%25e8%2590%25bd%25e3%2581%25a1%25e3%2582%258b%25e3%2581%25ae%25e3%2582%2592%25e7%259b%25b4%25e3%2581%2599%2F&amp;linkname=ElasticSearch%20OSS%20%2F%20OpenSearch%20%E3%81%AE%20Beats%20%E3%81%8C%20%E2%80%9Cruntime%2Fcgo%3A%20pthread_create%20failed%3A%20operation%20not%20permitted%E2%80%9D%20%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%81%AE%E3%82%92%E7%9B%B4%E3%81%99" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F06%2F10%2Felasticsearch-oss-opensearch-%25e3%2581%25ae-beats-%25e3%2581%258c-runtime-cgo-pthread_create-failed-operation-not-permitted-%25e3%2581%25a7%25e8%2590%25bd%25e3%2581%25a1%25e3%2582%258b%25e3%2581%25ae%25e3%2582%2592%25e7%259b%25b4%25e3%2581%2599%2F&#038;title=ElasticSearch%20OSS%20%2F%20OpenSearch%20%E3%81%AE%20Beats%20%E3%81%8C%20%E2%80%9Cruntime%2Fcgo%3A%20pthread_create%20failed%3A%20operation%20not%20permitted%E2%80%9D%20%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%81%AE%E3%82%92%E7%9B%B4%E3%81%99" data-a2a-url="https://mimumimu.net/blog/2022/06/10/elasticsearch-oss-opensearch-%e3%81%ae-beats-%e3%81%8c-runtime-cgo-pthread_create-failed-operation-not-permitted-%e3%81%a7%e8%90%bd%e3%81%a1%e3%82%8b%e3%81%ae%e3%82%92%e7%9b%b4%e3%81%99/" data-a2a-title="ElasticSearch OSS / OpenSearch の Beats が “runtime/cgo: pthread_create failed: operation not permitted” で落ちるのを直す"></a></p>The post <a href="https://mimumimu.net/blog/2022/06/10/elasticsearch-oss-opensearch-%e3%81%ae-beats-%e3%81%8c-runtime-cgo-pthread_create-failed-operation-not-permitted-%e3%81%a7%e8%90%bd%e3%81%a1%e3%82%8b%e3%81%ae%e3%82%92%e7%9b%b4%e3%81%99/">ElasticSearch OSS / OpenSearch の Beats が “runtime/cgo: pthread_create failed: operation not permitted” で落ちるのを直す</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2022/06/10/elasticsearch-oss-opensearch-%e3%81%ae-beats-%e3%81%8c-runtime-cgo-pthread_create-failed-operation-not-permitted-%e3%81%a7%e8%90%bd%e3%81%a1%e3%82%8b%e3%81%ae%e3%82%92%e7%9b%b4%e3%81%99/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CentOS から Fedora に直接アップグレードしてみる</title>
		<link>https://mimumimu.net/blog/2022/01/17/centos-%e3%81%8b%e3%82%89-fedora-%e3%81%ab%e7%9b%b4%e6%8e%a5%e3%82%a2%e3%83%83%e3%83%97%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%89%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://mimumimu.net/blog/2022/01/17/centos-%e3%81%8b%e3%82%89-fedora-%e3%81%ab%e7%9b%b4%e6%8e%a5%e3%82%a2%e3%83%83%e3%83%97%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%89%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Mon, 17 Jan 2022 14:42:34 +0000</pubDate>
				<category><![CDATA[Linux / Unix / Interix]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5900</guid>

					<description><![CDATA[<p>どうも、みむらです。 気がついたら 2022 年になっていましたし、オリンピックも終わっていました。年が進むのは早いものですね。 同じく年が早いと気づかされたものとして、CentOS Linux 8 のサポート切れがあり [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2022/01/17/centos-%e3%81%8b%e3%82%89-fedora-%e3%81%ab%e7%9b%b4%e6%8e%a5%e3%82%a2%e3%83%83%e3%83%97%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%89%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">CentOS から Fedora に直接アップグレードしてみる</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F01%2F17%2Fcentos-%25e3%2581%258b%25e3%2582%2589-fedora-%25e3%2581%25ab%25e7%259b%25b4%25e6%258e%25a5%25e3%2582%25a2%25e3%2583%2583%25e3%2583%2597%25e3%2582%25b0%25e3%2583%25ac%25e3%2583%25bc%25e3%2583%2589%25e3%2581%2597%25e3%2581%25a6%25e3%2581%25bf%25e3%2582%258b%2F&amp;linkname=CentOS%20%E3%81%8B%E3%82%89%20Fedora%20%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F01%2F17%2Fcentos-%25e3%2581%258b%25e3%2582%2589-fedora-%25e3%2581%25ab%25e7%259b%25b4%25e6%258e%25a5%25e3%2582%25a2%25e3%2583%2583%25e3%2583%2597%25e3%2582%25b0%25e3%2583%25ac%25e3%2583%25bc%25e3%2583%2589%25e3%2581%2597%25e3%2581%25a6%25e3%2581%25bf%25e3%2582%258b%2F&amp;linkname=CentOS%20%E3%81%8B%E3%82%89%20Fedora%20%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F01%2F17%2Fcentos-%25e3%2581%258b%25e3%2582%2589-fedora-%25e3%2581%25ab%25e7%259b%25b4%25e6%258e%25a5%25e3%2582%25a2%25e3%2583%2583%25e3%2583%2597%25e3%2582%25b0%25e3%2583%25ac%25e3%2583%25bc%25e3%2583%2589%25e3%2581%2597%25e3%2581%25a6%25e3%2581%25bf%25e3%2582%258b%2F&amp;linkname=CentOS%20%E3%81%8B%E3%82%89%20Fedora%20%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F01%2F17%2Fcentos-%25e3%2581%258b%25e3%2582%2589-fedora-%25e3%2581%25ab%25e7%259b%25b4%25e6%258e%25a5%25e3%2582%25a2%25e3%2583%2583%25e3%2583%2597%25e3%2582%25b0%25e3%2583%25ac%25e3%2583%25bc%25e3%2583%2589%25e3%2581%2597%25e3%2581%25a6%25e3%2581%25bf%25e3%2582%258b%2F&#038;title=CentOS%20%E3%81%8B%E3%82%89%20Fedora%20%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B" data-a2a-url="https://mimumimu.net/blog/2022/01/17/centos-%e3%81%8b%e3%82%89-fedora-%e3%81%ab%e7%9b%b4%e6%8e%a5%e3%82%a2%e3%83%83%e3%83%97%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%89%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/" data-a2a-title="CentOS から Fedora に直接アップグレードしてみる"></a></p>
<p class="wp-block-paragraph">どうも、みむらです。</p>



<p class="wp-block-paragraph">気がついたら 2022 年になっていましたし、オリンピックも終わっていました。<br>年が進むのは早いものですね。</p>



<p class="wp-block-paragraph">同じく年が早いと気づかされたものとして、CentOS Linux 8 のサポート切れがあります。</p>



<p class="wp-block-paragraph">CentOS Stream 8 にアップグレードしましょう、という話もありますが、<br>&#8220;Stream&#8221; は RHEL の &#8220;Nightly&#8221; の立ち位置になっていますし、<br>今までのRHEL 互換を求めるなら、<a href="https://almalinux.org/" title="Alma Linux ">Alma Linux </a>や <a href="https://rockylinux.org/" title="Rocky Linux">Rocky Linux</a> に切替えていくのが正しいように見えます。</p>



<p class="wp-block-paragraph">Fedora/CentOS Stream/CentOS/RHELの関係性 &#8211; 赤帽エンジニアリングブログ<br><a href="https://rheb.hatenablog.com/entry/202007-fedora-distribution">https://rheb.hatenablog.com/entry/202007-fedora-distribution</a></p>



<p class="wp-block-paragraph">GitHub の CentOS などから Alma Linux に移行するためのツール (Almalinux-deploy)：<br><a href="https://github.com/AlmaLinux/almalinux-deploy">https://github.com/AlmaLinux/almalinux-deploy</a></p>



<p class="wp-block-paragraph">上記の移行ツールの使用について日本語で書かれた記事：<br><a href="https://www.server-memo.net/memo/centos8_to_almalinux.html">https://www.server-memo.net/memo/centos8_to_almalinux.html</a></p>



<p class="wp-block-paragraph">他方、 CentOS Stream 9 からミラーが変わるようで、<br>執筆時点 (2022/01/17) では日本のサーバがなく寂しい所でもあります。</p>



<p class="wp-block-paragraph">CentOS Stream 9 Mirror list:<br><a href="https://admin.fedoraproject.org/mirrormanager/mirrors/CentOS">https://admin.fedoraproject.org/mirrormanager/mirrors/CentOS</a></p>



<p class="wp-block-paragraph">今実験用に稼働させているサーバのひとつが CentOS なのですが、<br>実験用ですし CentOS Stream が &#8220;Nightly&#8221; の立場に変わるのであれば、<br>更に上流の Fedora にアップグレード出来るのではないか・・と試してみました。</p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph"><strong>注意：</strong><br>下記の手法を試したことにより生じた損害や被害などは当方では全く関知しません。<br>また、公式ではない方法かつ危険が伴う可能性もあるため、バックアップ等を取り、リスクを取ることが出来る環境でのみお試しください。</p>



<hr class="wp-block-separator"/>



<span id="more-5900"></span>



<p class="wp-block-paragraph">今回は CentOS 8 から Fedora へのアップグレードを実行しました。</p>



<h3 class="wp-block-heading">1.  Release, gpg-key, repos を CentOS のものから Fedora に変更する</h3>



<p class="wp-block-paragraph">下記 URL から次のファイルをダウンロードします<br><a href="https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/28/Everything/x86_64/Packages/f/">https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/28/Everything/x86_64/Packages/f/</a></p>



<ul class="wp-block-list"><li>fedora-release-28-6.noarch.rpm</li><li>fedora-repos-28-7.noarch.rpm</li><li>fedora-gpg-keys-28-7.noarch.rpm</li></ul>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>wget https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/28/Everything/x86_64/Packages/f/fedora-release-28-6.noarch.rpm
wget https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/28/Everything/x86_64/Packages/f/fedora-repos-28-7.noarch.rpm
wget https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/28/Everything/x86_64/Packages/f/fedora-gpg-keys-28-7.noarch.rpm</code></pre></div>



<p class="wp-block-paragraph">centos-linux-release, centos-linux-repos, centos-gpg-keys を削除します。<br>( Stream になっている場合は centos-stream-release, centos-stream-repos, centos-gpg-keys を削除します )</p>



<p class="wp-block-paragraph">また削除の際は &#8220;&#8211;nodeps&#8221; をつけて、依存関係を無視する必要があります。<br>( epel が入っている方は epel も削除する必要があります )</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>rpm -e --nodeps centos-linux-release centos-gpg-keys centos-linux-repos
rpm -e --nodeps centos-stream-release centos-gpg-keys centos-stream-repos</code></pre></div>



<p class="wp-block-paragraph">Fedora の fedora-release, fedora-repos, fedora-gpgkeys をインストールします</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>rpm -Uvh fedora-release* fedora-repos* fedora-gpgkeys*</code></pre></div>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">2. アップデート可能なパッケージをアップデートする</h3>



<p class="wp-block-paragraph">下記のコマンドでパッケージをアップグレードします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>dnf upgrade --allowerasing --nobest --refresh</code></pre></div>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">3. dnf-plugin-system-upgrade をインストールする</h3>



<p class="wp-block-paragraph">まず dnf パッケージと libmodulemd パッケージをダウンロードし<br>dnf パッケージのみをアップグレードします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>dnf download dnf libmodulemd

rpm -Uvh dnf-2.7.5-12.fc28.noarch.rpm --nodeps --force</code></pre></div>



<p class="wp-block-paragraph">次に、下記のコマンドで dnf-plugin-system-upgrade をインストールします</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>dnf install dnf-plugin-system-upgrade --allowerasing</code></pre></div>



<p class="wp-block-paragraph">この状態で dnf コマンドを実行すると、下記のようなエラーが表示されます。<br>（もし出ない場合は次に進んでください）</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="771" height="194" src="https://mimumimu.net/blog/wp-content/uploads/2022/01/image.png" alt="" class="wp-image-5902"/></figure>



<p class="wp-block-paragraph">下記のコマンドを実行して、不足している libmodulemd を補ってあげるとエラーが出なくなります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>rpm -Uvh libmodulemd-1.3.0-2.fc28.x86_64.rpm --force</code></pre></div>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">4. システムアップグレード</h3>



<p class="wp-block-paragraph">まず、yum コマンドが入っている場合はこれを削除します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>rpm -e yum</code></pre></div>



<p class="wp-block-paragraph">続いて、次のコマンドで Fedora 30 のアップグレードの準備（ダウンロード）をします</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>dnf system-upgrade --releasever=30 download --allowerasing</code></pre></div>



<p class="wp-block-paragraph">&#8220;dnf &#8211;refresh upgrade&#8221; を実行しましたか、と聞かれますので &#8220;y&#8221; と答えて続行します。</p>



<p class="wp-block-paragraph">ダウンロードが完了したら &#8220;dnf system-upgrade reboot&#8221; を実行して待ちます。</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">5. システムブート</h3>



<p class="wp-block-paragraph">grub 周りもガシガシ変更が入るため、<br>コンフィグファイルが消えてしまい一時的に grub が起動できなくなります。</p>



<p class="wp-block-paragraph">起動できなくなった場合は、下記のようなコマンドを入れて起動させます<br>（例：efi 領域, /boot 領域, /領域 の3パーティションの場合）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>linux (hd0,gpt2)/vmlinuz-5.6.13-100.fc30.x86_64 root=/dev/sda3
initrd (hd0,gpt2)/initramfs-5.6.13-100.fc30.x86_64.img</code></pre></div>



<p class="wp-block-paragraph">その後無事起動したら、下記のコマンドでコンフィグを再生成しておきましょう。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg</code></pre></div>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">6. 不要なパッケージを削除して、再度アップグレード</h3>



<p class="wp-block-paragraph">ほとんどのパッケージが Fedora のものになっていますが、<br>いくつかのパッケージに限り CentOS 由来のものが残っているでしょう。</p>



<p class="wp-block-paragraph">下記のコマンドを実行し、不要なパッケージがあれば削除を行います</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>rpm -qa | grep el8
# 削除は dnf remove や rpm -e を使う。</code></pre></div>



<p class="wp-block-paragraph">また el8 モジュール依存のコンフリクトが起きている場合は、<br>&#8220;dnf module reset (パッケージ名)&#8221; にて解決を行いましょう。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="983" height="174" src="https://mimumimu.net/blog/wp-content/uploads/2022/01/image-1.png" alt="" class="wp-image-5903"/></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>#上記の場合の例
dnf module reset perl-IO-Socket-SSL perl-libwww-perl python36</code></pre></div>



<p class="wp-block-paragraph">そして、最後に &#8220;dnf upgrade &#8211;refresh&#8221; と &#8220;dnf distro-sync &#8211;allowerasing&#8221; を実行してアップデートが必要なパッケージが依存関係の破損などが存在しないことを確認した上で、<br>&#8220;dnf system-upgrade&#8221; を用いて更に上位のバージョンへアップグレードします。<br>（バージョンは2個先まで指定可能です）</p>



<p class="wp-block-paragraph">ここから先は、Fedora の公式ドキュメントとほぼ同じになります。</p>



<p class="wp-block-paragraph">DNF System Upgrade<br><a href="https://docs.fedoraproject.org/ja/quick-docs/dnf-system-upgrade/">https://docs.fedoraproject.org/ja/quick-docs/dnf-system-upgrade/</a></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>dnf upgrade --refresh
# Nothing to do. と出る事を確認。他の表示が出た場合は画面に従う。
dnf distro-sync --allowerasing
# Nothing to do. と出る事を確認。他の表示が出た場合は画面に従う。
dnf system-upgrade --releasever=32 download
# ダウンロードが完了したら
dnf system-upgrade reboot</code></pre></div>



<p class="wp-block-paragraph">あとは、システムアップグレードを繰り返し、最新版（執筆時点では Version 34）まで到達出来れば完成です。</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">さいごに</h2>



<p class="wp-block-paragraph">この方法はあくまでもその結果の責任が持てる方向けの<br>ちょっとした遊び心として執筆しました。</p>



<p class="wp-block-paragraph">冒頭にもあるように、これを実行したことにより何か影響が出た場合でも自己責任にて対処頂ければと思います。（上手くいかない等の質問は OK ですが、ファイルが消えてしまった等による責任問題については対処出来ません。。）</p>



<p class="wp-block-paragraph">執筆中、なぜ CentOS から Fedora にインプレースアップグレード（？）を行ったかということを聞かれたのですが・・そこに Fedora があったとしか言えません。</p>



<p class="wp-block-paragraph">Fedora さんも昔に比べて安定したと聞いていますので、これからちょっと遊んでみようかなと思っています。</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F01%2F17%2Fcentos-%25e3%2581%258b%25e3%2582%2589-fedora-%25e3%2581%25ab%25e7%259b%25b4%25e6%258e%25a5%25e3%2582%25a2%25e3%2583%2583%25e3%2583%2597%25e3%2582%25b0%25e3%2583%25ac%25e3%2583%25bc%25e3%2583%2589%25e3%2581%2597%25e3%2581%25a6%25e3%2581%25bf%25e3%2582%258b%2F&amp;linkname=CentOS%20%E3%81%8B%E3%82%89%20Fedora%20%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F01%2F17%2Fcentos-%25e3%2581%258b%25e3%2582%2589-fedora-%25e3%2581%25ab%25e7%259b%25b4%25e6%258e%25a5%25e3%2582%25a2%25e3%2583%2583%25e3%2583%2597%25e3%2582%25b0%25e3%2583%25ac%25e3%2583%25bc%25e3%2583%2589%25e3%2581%2597%25e3%2581%25a6%25e3%2581%25bf%25e3%2582%258b%2F&amp;linkname=CentOS%20%E3%81%8B%E3%82%89%20Fedora%20%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F01%2F17%2Fcentos-%25e3%2581%258b%25e3%2582%2589-fedora-%25e3%2581%25ab%25e7%259b%25b4%25e6%258e%25a5%25e3%2582%25a2%25e3%2583%2583%25e3%2583%2597%25e3%2582%25b0%25e3%2583%25ac%25e3%2583%25bc%25e3%2583%2589%25e3%2581%2597%25e3%2581%25a6%25e3%2581%25bf%25e3%2582%258b%2F&amp;linkname=CentOS%20%E3%81%8B%E3%82%89%20Fedora%20%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2022%2F01%2F17%2Fcentos-%25e3%2581%258b%25e3%2582%2589-fedora-%25e3%2581%25ab%25e7%259b%25b4%25e6%258e%25a5%25e3%2582%25a2%25e3%2583%2583%25e3%2583%2597%25e3%2582%25b0%25e3%2583%25ac%25e3%2583%25bc%25e3%2583%2589%25e3%2581%2597%25e3%2581%25a6%25e3%2581%25bf%25e3%2582%258b%2F&#038;title=CentOS%20%E3%81%8B%E3%82%89%20Fedora%20%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B" data-a2a-url="https://mimumimu.net/blog/2022/01/17/centos-%e3%81%8b%e3%82%89-fedora-%e3%81%ab%e7%9b%b4%e6%8e%a5%e3%82%a2%e3%83%83%e3%83%97%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%89%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/" data-a2a-title="CentOS から Fedora に直接アップグレードしてみる"></a></p>The post <a href="https://mimumimu.net/blog/2022/01/17/centos-%e3%81%8b%e3%82%89-fedora-%e3%81%ab%e7%9b%b4%e6%8e%a5%e3%82%a2%e3%83%83%e3%83%97%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%89%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">CentOS から Fedora に直接アップグレードしてみる</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2022/01/17/centos-%e3%81%8b%e3%82%89-fedora-%e3%81%ab%e7%9b%b4%e6%8e%a5%e3%82%a2%e3%83%83%e3%83%97%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%89%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Jumbo Frame + WinServer 2019 の Hyper-V の通信は妙に遅い。</title>
		<link>https://mimumimu.net/blog/2021/06/17/jumbo-frame-winserver-2019-%e3%81%ae-hyper-v-%e3%81%ae%e9%80%9a%e4%bf%a1%e3%81%af%e5%a6%99%e3%81%ab%e9%81%85%e3%81%84%e3%80%82/</link>
					<comments>https://mimumimu.net/blog/2021/06/17/jumbo-frame-winserver-2019-%e3%81%ae-hyper-v-%e3%81%ae%e9%80%9a%e4%bf%a1%e3%81%af%e5%a6%99%e3%81%ab%e9%81%85%e3%81%84%e3%80%82/#respond</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Wed, 16 Jun 2021 23:21:27 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[雑記]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5879</guid>

					<description><![CDATA[<p>どうもみむらです。最近梅雨に入ったのか夏に入ったのか、色々パッとしなくて困る日々が続いております。 先日 Windows Server 2019 (もしくは Hyper-V Server 2019) を Jumbo Fr [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2021/06/17/jumbo-frame-winserver-2019-%e3%81%ae-hyper-v-%e3%81%ae%e9%80%9a%e4%bf%a1%e3%81%af%e5%a6%99%e3%81%ab%e9%81%85%e3%81%84%e3%80%82/">Jumbo Frame + WinServer 2019 の Hyper-V の通信は妙に遅い。</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F06%2F17%2Fjumbo-frame-winserver-2019-%25e3%2581%25ae-hyper-v-%25e3%2581%25ae%25e9%2580%259a%25e4%25bf%25a1%25e3%2581%25af%25e5%25a6%2599%25e3%2581%25ab%25e9%2581%2585%25e3%2581%2584%25e3%2580%2582%2F&amp;linkname=Jumbo%20Frame%20%2B%20WinServer%202019%20%E3%81%AE%20Hyper-V%20%E3%81%AE%E9%80%9A%E4%BF%A1%E3%81%AF%E5%A6%99%E3%81%AB%E9%81%85%E3%81%84%E3%80%82" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F06%2F17%2Fjumbo-frame-winserver-2019-%25e3%2581%25ae-hyper-v-%25e3%2581%25ae%25e9%2580%259a%25e4%25bf%25a1%25e3%2581%25af%25e5%25a6%2599%25e3%2581%25ab%25e9%2581%2585%25e3%2581%2584%25e3%2580%2582%2F&amp;linkname=Jumbo%20Frame%20%2B%20WinServer%202019%20%E3%81%AE%20Hyper-V%20%E3%81%AE%E9%80%9A%E4%BF%A1%E3%81%AF%E5%A6%99%E3%81%AB%E9%81%85%E3%81%84%E3%80%82" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F06%2F17%2Fjumbo-frame-winserver-2019-%25e3%2581%25ae-hyper-v-%25e3%2581%25ae%25e9%2580%259a%25e4%25bf%25a1%25e3%2581%25af%25e5%25a6%2599%25e3%2581%25ab%25e9%2581%2585%25e3%2581%2584%25e3%2580%2582%2F&amp;linkname=Jumbo%20Frame%20%2B%20WinServer%202019%20%E3%81%AE%20Hyper-V%20%E3%81%AE%E9%80%9A%E4%BF%A1%E3%81%AF%E5%A6%99%E3%81%AB%E9%81%85%E3%81%84%E3%80%82" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F06%2F17%2Fjumbo-frame-winserver-2019-%25e3%2581%25ae-hyper-v-%25e3%2581%25ae%25e9%2580%259a%25e4%25bf%25a1%25e3%2581%25af%25e5%25a6%2599%25e3%2581%25ab%25e9%2581%2585%25e3%2581%2584%25e3%2580%2582%2F&#038;title=Jumbo%20Frame%20%2B%20WinServer%202019%20%E3%81%AE%20Hyper-V%20%E3%81%AE%E9%80%9A%E4%BF%A1%E3%81%AF%E5%A6%99%E3%81%AB%E9%81%85%E3%81%84%E3%80%82" data-a2a-url="https://mimumimu.net/blog/2021/06/17/jumbo-frame-winserver-2019-%e3%81%ae-hyper-v-%e3%81%ae%e9%80%9a%e4%bf%a1%e3%81%af%e5%a6%99%e3%81%ab%e9%81%85%e3%81%84%e3%80%82/" data-a2a-title="Jumbo Frame + WinServer 2019 の Hyper-V の通信は妙に遅い。"></a></p>
<p class="wp-block-paragraph">どうもみむらです。<br>最近梅雨に入ったのか夏に入ったのか、色々パッとしなくて困る日々が続いております。</p>



<p class="wp-block-paragraph">先日 Windows Server 2019 (もしくは Hyper-V Server 2019) を Jumbo Frame 環境下で用いると、通信が遅くなるということが分かりましたのでメモがてら。<br>同じような問題に遭遇した方の一助のとなればありがたいです。</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">事象：</h3>



<p class="wp-block-paragraph"><span style="text-decoration: underline;">Windows Server 2019 上の Hyper-V </span>に展開された VM において<br><span style="text-decoration: underline;">RSC (Receive Side Coalescing,  Linux では Large Receive Offload で知られている) が有効</span><br>かつ<span style="text-decoration: underline;"> VM が Jumbo Frame</span> の環境において、VMから見て受信方向の通信が遅くなる。</p>



<p class="wp-block-paragraph"><span style="text-decoration: underline;">注１：Windows Server 2019 では<strong> RSC は既定で有効</strong>になっています。</span><br><span style="text-decoration: underline;">注２：<strong>MTU が 2850 bytes を上回る ( >2850 ) 場合</strong>に速度低下が発生するようです。 </span></p>



<h3 class="wp-block-heading">原因：</h3>



<p class="wp-block-paragraph">VMSwitch において Reassemble されたパケットが VMに届かなくなる。</p>



<h3 class="wp-block-heading">回避方法：</h3>



<p class="wp-block-paragraph"><span style="text-decoration: underline;">RSC を無効にするか MTU を 1500 にする</span></p>



<p class="wp-block-paragraph"><strong>方法１</strong>：ゲスト VM の MTU を 1500 にする。<br>　例） ip l set mtu 1500 dev eth0</p>



<p class="wp-block-paragraph"><strong>方法２</strong>：ホスト側でRSC 機能を VMSwitch 単位で無効にする<br>　例）Set-VMSwitch (Switch名)  -EnableSoftwareRsc $false</p>



<p class="wp-block-paragraph"><strong>方法３</strong>：ゲストVM において ethtool 等を用いて &#8220;large-receive-offload&#8221; を off にする<br>　Linux） ethtool -K eth0 large-receive-offload off<br>　Windows） Set-NetAdapterAdvancedProperty &#8220;*&#8221; -DisplayName &#8220;Recv Segment Coalescing&#8221; -RegistryValue 0</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">パケットの気持ちになってみる</h2>



<p class="wp-block-paragraph">最近パケットの気持ちになる、が一部界隈で有名ですので「なってみよう」と思います。</p>



<p class="wp-block-paragraph">ざっくりと構成は下記の通り。<br>Hyper-V サーバ内に立てられた VM-01 との通信について Hyper-V サーバの前段のミラー (CAP-01) と VMSwitch のミラー (CAP-02) で通信をキャプチャして挙動を確認しよう、という構成になっています。</p>



<p class="wp-block-paragraph">（<span style="text-decoration: underline;">なお、各キャプチャは同タイミングでのものではありません。ご了承ください</span>）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="332" height="607" src="https://mimumimu.net/blog/wp-content/uploads/2021/06/image-12.png" alt="" class="wp-image-5892"/></figure>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">VM-01 での curl での速度比較</h3>



<p class="wp-block-paragraph">事象を確認するためにまずは curl で適当な通信を発生させて速度を見てみます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="724" height="196" src="https://mimumimu.net/blog/wp-content/uploads/2021/06/image-3.png" alt="" class="wp-image-5883"/></figure>



<p class="wp-block-paragraph">MTU 1500 の場合は Average Speed が 10.7M となっているのに対し<br>MTU 9000 の場合は Average Speed が 44024 となっています。</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">MTU 9000 の時の VM-01 のキャプチャ</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="901" height="299" src="https://mimumimu.net/blog/wp-content/uploads/2021/06/image-9.png" alt="" class="wp-image-5889"/></figure>



<p class="wp-block-paragraph">上記のようになります。 </p>



<p class="wp-block-paragraph">No. 12 において Seq=141, Ack=1409 をサーバに対して返答していますが<br>その次にやってきたパケット (No.13) は Seq=16897 になっています。<br>（通常は直前の Ack と同じ番号の Seq が返ってきます）</p>



<p class="wp-block-paragraph">そのため No.14 において Ack=1409 を再度送信され、<br>サーバ側からは No.16 において Seq=1409 の返答（再送）が起きてしまっています。</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">MTU9000 の時の CAP-02 のキャプチャ</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="932" height="548" src="https://mimumimu.net/blog/wp-content/uploads/2021/06/image-11.png" alt="" class="wp-image-5891"/></figure>



<p class="wp-block-paragraph">上記のようになります。<br>No. 13 までは先ほどの VM-01 と同じような流れになっています。</p>



<p class="wp-block-paragraph">ですが No.14 付近から 1474 bytes  ではないパケットが流れはじめます。<br>また<span style="text-decoration: underline;">それを境にして、 Ack と Seq の関係が壊れはじめる</span>のも確認が出来ます。</p>



<p class="wp-block-paragraph">たとえば No.14 は Seq=1409 として 2882 bytes の通信が行われていますが<br>その後の ACK (No.16) では Ack=1409 として返答が行われていることが分かり、<br>通信が正常に行われていないことがここから読み取れます。</p>



<p class="wp-block-paragraph">またこの 1475 bytes でないパケットについては先述の VM-01 のキャプチャにおいては確認出来ず、その後発生した No.25 の Ack に対する No.26 の 1474 bytes の通信が行われて初めて VM-01 側にパケットが到達しているように見受けられます。</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">MTU9000 の時の CAP-01 のキャプチャ</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="943" height="442" src="https://mimumimu.net/blog/wp-content/uploads/2021/06/image-13.png" alt="" class="wp-image-5893"/></figure>



<p class="wp-block-paragraph">上記のようになります。</p>



<p class="wp-block-paragraph">インターネットを介して No.10 ~ No.19 に掛けて勢いよく通信が行われていますが<br>その後 No.20 において Ack=1 が返され、No.23 において再送が行われています。</p>



<p class="wp-block-paragraph">この間 Seq は 12673 まで増えており、この No.19 に当該するパケットは先述の CAP-02 においても No.21 として観測できているように見受けられます。</p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">以上の事象、また CAP-02 においてパケットをとり続けると、 reassemble されたパケットが送信された後に再送要求が発生していること、そして RSC を Disable にするとこれらの事象が解決することから RSC (LRO) が原因と判断しました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="727" height="445" src="https://mimumimu.net/blog/wp-content/uploads/2021/06/image-14.png" alt="" class="wp-image-5894"/></figure>



<p class="wp-block-paragraph">また繰り返しではありますが、<br><span style="text-decoration: underline;">Windows Server 2022 (Preview) や Windows 10 (21H1) では発生しない</span>ことを確認していますので<span style="text-decoration: underline;"> Windows Server 2019 特有の問題 ( 1809 ベースの Hyper-V 特有? ) と判断</span>しています。</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading"> 番外：ドライバベースで治せないかやってみる</h2>



<p class="wp-block-paragraph">Linux のドライバは自由に修正したりして実験できますので、<br>これで何か出来ないかやってみます。</p>



<h3 class="wp-block-heading">１．そもそも機能を切る:</h3>



<p class="wp-block-paragraph">netvsc の 603 行目に下記のような記述があります<br><a href="https://github.com/torvalds/linux/blob/master/drivers/net/hyperv/netvsc.c#L603">https://github.com/torvalds/linux/blob/master/drivers/net/hyperv/netvsc.c#L603</a></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>/* Negotiate NVSP protocol version */
static int negotiate_nvsp_ver(struct hv_device *device,
			      struct netvsc_device *net_device,
			      struct nvsp_message *init_packet,
			      u32 nvsp_ver)
{

/// 省略 ///

	if (nvsp_ver &gt;= NVSP_PROTOCOL_VERSION_61)
		init_packet-&gt;msg.v2_msg.send_ndis_config.capability.rsc = 1;

/// 省略 ///

	return ret;
}</code></pre></div>



<p class="wp-block-paragraph">この nvsp_ver で Windows Server 2019 とそれ以降の区別を試みましたが<br>共に NVSP_PROTOCOL_VERSION_61 (0x60001) が返るため、区別は出来ませんでした。</p>



<p class="wp-block-paragraph">もちろんですが、&#8221;init_packet->msg.v2_msg.send_ndis_config.capability.rsc = <span style="text-decoration: underline;">0;</span>&#8221; とすると RSC の機能が恒久的に無効になります。</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">２．別パラメータから値を推測する等で値を修正する：</h3>



<p class="wp-block-paragraph">こちらですが、そもそも VMBus 経由での VMQ の割込が来ないため<br>修正は難しいという形になりました。</p>



<p class="wp-block-paragraph">Hyper-V のネットワーク通信は下記のようなアーキテクチャになっています。</p>



<figure class="wp-block-image"><img decoding="async" src="https://docs.microsoft.com/ja-jp/windows-hardware/drivers/network/images/vmqarch.png" alt="vmq コンポーネント"/></figure>



<p class="wp-block-paragraph">引用元 : <a href="https://docs.microsoft.com/ja-jp/windows-hardware/drivers/network/vmq-components">https://docs.microsoft.com/ja-jp/windows-hardware/drivers/network/vmq-components</a></p>



<p class="wp-block-paragraph">親（ホスト）が持つ NetVSP (VMSwitch) に対して VMBus 経由で接続するアーキテクチャになっており、Linux の netvsc ドライバにおいても 1665 行目付近でその接続が行われていることが伺えます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>struct netvsc_device *netvsc_device_add(struct hv_device *device,
				const struct netvsc_device_info *device_info)
{

/// 省略 ///

	/* Enable NAPI handler before init callbacks */
	netif_napi_add(ndev, &net_device-&gt;chan_table[0].napi,
		       netvsc_poll, NAPI_POLL_WEIGHT);

	/* Open the channel */
	device-&gt;channel-&gt;rqstor_size = netvsc_rqstor_size(netvsc_ring_bytes);
	ret = vmbus_open(device-&gt;channel, netvsc_ring_bytes,
			 netvsc_ring_bytes,  NULL, 0,
			 netvsc_channel_cb, net_device-&gt;chan_table);

	if (ret != 0) {
		netdev_err(ndev, &quot;unable to open channel: %d\n&quot;, ret);
		goto cleanup;
	}

	/* Channel is opened */
	netdev_dbg(ndev, &quot;hv_netvsc channel opened successfully\n&quot;);

	napi_enable(&net_device-&gt;chan_table[0].napi);

	/* Connect with the NetVsp */
	ret = netvsc_connect_vsp(device, net_device, device_info);
	if (ret != 0) {
		netdev_err(ndev,
			&quot;unable to connect to NetVSP - %d\n&quot;, ret);
		goto close;
	}

/// 省略 ///

}</code></pre></div>



<p class="wp-block-paragraph"><a href="https://github.com/torvalds/linux/blob/9d31d2338950293ec19d9b095fbaa9030899dcb4/drivers/net/hyperv/netvsc.c#L1648">https://github.com/torvalds/linux/blob/9d31d2338950293ec19d9b095fbaa9030899dcb4/drivers/net/hyperv/netvsc.c#L1648</a></p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">試しに netvsc_receive 関数を下記のように編集してみると下記のような出力が得られました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>static int netvsc_receive(struct net_device *ndev,
			  struct netvsc_device *net_device,
			  struct netvsc_channel *nvchan,
			  const struct vmpacket_descriptor *desc)
{
	struct net_device_context *net_device_ctx = netdev_priv(ndev);
	struct vmbus_channel *channel = nvchan-&gt;channel;
	const struct vmtransfer_page_packet_header *vmxferpage_packet
		= container_of(desc, const struct vmtransfer_page_packet_header, d);
	const struct nvsp_message *nvsp = hv_pkt_data(desc);
	u32 msglen = hv_pkt_datalen(desc);
	u16 q_idx = channel-&gt;offermsg.offer.sub_channel_index;
	char *recv_buf = net_device-&gt;recv_buf;
	u32 status = NVSP_STAT_SUCCESS;
	int i;
	int count = 0;

  // 下記行を追記
	netif_info(netdevice_ctx, rx_err, ndev, &quot;BUF-SIZE : %u, SEC-SIZE : %u, RSC-PKTLEN %u\n&quot;,
    net_device-&gt;recv_buf_size, net_device-&gt;recv_section_size,
    nvchan-&gt;rsc.pktlen);

	/* Ensure packet is big enough to read header fields */
	if (msglen &lt; sizeof(struct nvsp_message_header)) {
		netif_err(net_device_ctx, rx_err, ndev,
			  &quot;invalid nvsp header, length too small: %u\n&quot;,
			  msglen);
		return 0;
	}

/// 以下省略 ///</code></pre></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1025" height="475" src="https://mimumimu.net/blog/wp-content/uploads/2021/06/image-15.png" alt="" class="wp-image-5895"/></figure>



<p class="wp-block-paragraph">BUF-SIZE が Window Size にちょっと足したもの、SEC-SIZE が MTU にちょっと足したものの値になり、 RSC-PKTLEN  がフレームサイズと同じ値を指し示すようです。</p>



<p class="wp-block-paragraph">RSC-PKTLEN の値は 1474 を示しており、冒頭のパケットキャプチャと同じような感じになっていることが読み取れます。</p>



<p class="wp-block-paragraph">なお、同じ VM を同じ設定で Windows 10 の上に構築した場合は下記のようになります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="472" src="https://mimumimu.net/blog/wp-content/uploads/2021/06/image-17.png" alt="" class="wp-image-5897"/></figure>



<p class="wp-block-paragraph">RSC-PKTLEN が十分に大きな値になっており、 RSC にて reassemble されたパケットが受信出来ていることが分かります。</p>



<p class="wp-block-paragraph">ドライバを追いかけてみたのですが、正しい値が別パラメータに入っていることなどはなく、また NetVSP の割込が来ないため修正は難しいと考えられました。</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">Windows Server 2019 の Hyper-V を使用して VM を作成する場合は</p>



<p class="wp-block-paragraph">・MTU を 1500 以下に設定して RSO が正常に機能するようにして使う<br>・Jumbo Frame を有効にしたい場合は RSO を Disable にする</p>



<p class="wp-block-paragraph">のどちらかで利用しないと、落とし穴があるという話です。</p>



<p class="wp-block-paragraph">執筆時点の最新版である &#8220;10.0.17763.1999&#8221; でもこの事象は発生していますので、<br>お気をつけくださいませ。</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">P.S.</h3>



<p class="wp-block-paragraph">割と海外のフォーラムだと &#8220;RSO を無効にしたら良くなった！&#8221; 的なのはちらほら報告されているみたいですね。。修正されたらいいなとぼんやり思ってます。。</p>



<p class="wp-block-paragraph"><a href="https://social.technet.microsoft.com/Forums/en-US/8aa6a88c-ffc8-4ede-abfc-42e746ff5996/windows-server-2019-hyperv-guest-on-windows-server-2019-hyperv-host?forum=winserverhyperv">https://social.technet.microsoft.com/Forums/en-US/8aa6a88c-ffc8-4ede-abfc-42e746ff5996/windows-server-2019-hyperv-guest-on-windows-server-2019-hyperv-host?forum=winserverhyperv</a></p>



<p class="wp-block-paragraph"><a href="https://www.doitfixit.com/blog/2020/01/15/slow-network-speed-with-hyper-v-virtual-machines-on-windows-server-server-2019/">https://www.doitfixit.com/blog/2020/01/15/slow-network-speed-with-hyper-v-virtual-machines-on-windows-server-server-2019/</a></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F06%2F17%2Fjumbo-frame-winserver-2019-%25e3%2581%25ae-hyper-v-%25e3%2581%25ae%25e9%2580%259a%25e4%25bf%25a1%25e3%2581%25af%25e5%25a6%2599%25e3%2581%25ab%25e9%2581%2585%25e3%2581%2584%25e3%2580%2582%2F&amp;linkname=Jumbo%20Frame%20%2B%20WinServer%202019%20%E3%81%AE%20Hyper-V%20%E3%81%AE%E9%80%9A%E4%BF%A1%E3%81%AF%E5%A6%99%E3%81%AB%E9%81%85%E3%81%84%E3%80%82" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F06%2F17%2Fjumbo-frame-winserver-2019-%25e3%2581%25ae-hyper-v-%25e3%2581%25ae%25e9%2580%259a%25e4%25bf%25a1%25e3%2581%25af%25e5%25a6%2599%25e3%2581%25ab%25e9%2581%2585%25e3%2581%2584%25e3%2580%2582%2F&amp;linkname=Jumbo%20Frame%20%2B%20WinServer%202019%20%E3%81%AE%20Hyper-V%20%E3%81%AE%E9%80%9A%E4%BF%A1%E3%81%AF%E5%A6%99%E3%81%AB%E9%81%85%E3%81%84%E3%80%82" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F06%2F17%2Fjumbo-frame-winserver-2019-%25e3%2581%25ae-hyper-v-%25e3%2581%25ae%25e9%2580%259a%25e4%25bf%25a1%25e3%2581%25af%25e5%25a6%2599%25e3%2581%25ab%25e9%2581%2585%25e3%2581%2584%25e3%2580%2582%2F&amp;linkname=Jumbo%20Frame%20%2B%20WinServer%202019%20%E3%81%AE%20Hyper-V%20%E3%81%AE%E9%80%9A%E4%BF%A1%E3%81%AF%E5%A6%99%E3%81%AB%E9%81%85%E3%81%84%E3%80%82" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F06%2F17%2Fjumbo-frame-winserver-2019-%25e3%2581%25ae-hyper-v-%25e3%2581%25ae%25e9%2580%259a%25e4%25bf%25a1%25e3%2581%25af%25e5%25a6%2599%25e3%2581%25ab%25e9%2581%2585%25e3%2581%2584%25e3%2580%2582%2F&#038;title=Jumbo%20Frame%20%2B%20WinServer%202019%20%E3%81%AE%20Hyper-V%20%E3%81%AE%E9%80%9A%E4%BF%A1%E3%81%AF%E5%A6%99%E3%81%AB%E9%81%85%E3%81%84%E3%80%82" data-a2a-url="https://mimumimu.net/blog/2021/06/17/jumbo-frame-winserver-2019-%e3%81%ae-hyper-v-%e3%81%ae%e9%80%9a%e4%bf%a1%e3%81%af%e5%a6%99%e3%81%ab%e9%81%85%e3%81%84%e3%80%82/" data-a2a-title="Jumbo Frame + WinServer 2019 の Hyper-V の通信は妙に遅い。"></a></p>The post <a href="https://mimumimu.net/blog/2021/06/17/jumbo-frame-winserver-2019-%e3%81%ae-hyper-v-%e3%81%ae%e9%80%9a%e4%bf%a1%e3%81%af%e5%a6%99%e3%81%ab%e9%81%85%e3%81%84%e3%80%82/">Jumbo Frame + WinServer 2019 の Hyper-V の通信は妙に遅い。</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2021/06/17/jumbo-frame-winserver-2019-%e3%81%ae-hyper-v-%e3%81%ae%e9%80%9a%e4%bf%a1%e3%81%af%e5%a6%99%e3%81%ab%e9%81%85%e3%81%84%e3%80%82/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VPN 越しに DLNA 経由で NAS に触る (SSDP Proxy)</title>
		<link>https://mimumimu.net/blog/2021/05/17/vpn-%e8%b6%8a%e3%81%97%e3%81%ab-dlna-%e7%b5%8c%e7%94%b1%e3%81%a7-nas-%e3%81%ab%e8%a7%a6%e3%82%8b-ssdp-proxy/</link>
					<comments>https://mimumimu.net/blog/2021/05/17/vpn-%e8%b6%8a%e3%81%97%e3%81%ab-dlna-%e7%b5%8c%e7%94%b1%e3%81%a7-nas-%e3%81%ab%e8%a7%a6%e3%82%8b-ssdp-proxy/#respond</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Sun, 16 May 2021 22:10:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5870</guid>

					<description><![CDATA[<p>どうもみむらです。 VPN 越しに NAS のコンテンツに、しかも DLNA 対応アプリ経由で触りたいと思ったことはありませんか。 数ヶ月前に NAS を購入して、速攻で静音化の記事 ( ASUSTOR DataSync [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2021/05/17/vpn-%e8%b6%8a%e3%81%97%e3%81%ab-dlna-%e7%b5%8c%e7%94%b1%e3%81%a7-nas-%e3%81%ab%e8%a7%a6%e3%82%8b-ssdp-proxy/">VPN 越しに DLNA 経由で NAS に触る (SSDP Proxy)</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F17%2Fvpn-%25e8%25b6%258a%25e3%2581%2597%25e3%2581%25ab-dlna-%25e7%25b5%258c%25e7%2594%25b1%25e3%2581%25a7-nas-%25e3%2581%25ab%25e8%25a7%25a6%25e3%2582%258b-ssdp-proxy%2F&amp;linkname=VPN%20%E8%B6%8A%E3%81%97%E3%81%AB%20DLNA%20%E7%B5%8C%E7%94%B1%E3%81%A7%20NAS%20%E3%81%AB%E8%A7%A6%E3%82%8B%20%28SSDP%20Proxy%29" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F17%2Fvpn-%25e8%25b6%258a%25e3%2581%2597%25e3%2581%25ab-dlna-%25e7%25b5%258c%25e7%2594%25b1%25e3%2581%25a7-nas-%25e3%2581%25ab%25e8%25a7%25a6%25e3%2582%258b-ssdp-proxy%2F&amp;linkname=VPN%20%E8%B6%8A%E3%81%97%E3%81%AB%20DLNA%20%E7%B5%8C%E7%94%B1%E3%81%A7%20NAS%20%E3%81%AB%E8%A7%A6%E3%82%8B%20%28SSDP%20Proxy%29" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F17%2Fvpn-%25e8%25b6%258a%25e3%2581%2597%25e3%2581%25ab-dlna-%25e7%25b5%258c%25e7%2594%25b1%25e3%2581%25a7-nas-%25e3%2581%25ab%25e8%25a7%25a6%25e3%2582%258b-ssdp-proxy%2F&amp;linkname=VPN%20%E8%B6%8A%E3%81%97%E3%81%AB%20DLNA%20%E7%B5%8C%E7%94%B1%E3%81%A7%20NAS%20%E3%81%AB%E8%A7%A6%E3%82%8B%20%28SSDP%20Proxy%29" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F17%2Fvpn-%25e8%25b6%258a%25e3%2581%2597%25e3%2581%25ab-dlna-%25e7%25b5%258c%25e7%2594%25b1%25e3%2581%25a7-nas-%25e3%2581%25ab%25e8%25a7%25a6%25e3%2582%258b-ssdp-proxy%2F&#038;title=VPN%20%E8%B6%8A%E3%81%97%E3%81%AB%20DLNA%20%E7%B5%8C%E7%94%B1%E3%81%A7%20NAS%20%E3%81%AB%E8%A7%A6%E3%82%8B%20%28SSDP%20Proxy%29" data-a2a-url="https://mimumimu.net/blog/2021/05/17/vpn-%e8%b6%8a%e3%81%97%e3%81%ab-dlna-%e7%b5%8c%e7%94%b1%e3%81%a7-nas-%e3%81%ab%e8%a7%a6%e3%82%8b-ssdp-proxy/" data-a2a-title="VPN 越しに DLNA 経由で NAS に触る (SSDP Proxy)"></a></p>
<p class="wp-block-paragraph">どうもみむらです。</p>



<p class="wp-block-paragraph">VPN 越しに NAS のコンテンツに、しかも DLNA 対応アプリ経由で触りたいと思ったことはありませんか。</p>



<p class="wp-block-paragraph">数ヶ月前に NAS を購入して、速攻で静音化の記事 ( <a href="https://mimumimu.net/blog/2021/04/28/asustor-%e3%81%ae-datasync-center-%e3%81%ae-hdd-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e9%9d%99%e3%81%8b%e3%81%ab%e3%81%99%e3%82%8b%e3%80%82/" title="ASUSTOR DataSync Center の HDD アクセスを静かにする">ASUSTOR DataSync Center の HDD アクセスを静かにする</a> ) を書いたりしていたのですが、DLNA 経由で音楽ファイルに触れるようにしてみた所これが大変使いやすく、ぜひ VPN 越しにもこれを享受したい・・と。。</p>



<p class="wp-block-paragraph">DLNA は UPnP を用いており、その機器発見に SSDP (1900/udp) を用いているのですが、早い話が VPN 越しにブロードキャストが上手く動作しないので、これを改善してみようというそういう話です。</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">１．サーバから VPN 感を感じ取れないようにする</h2>



<p class="wp-block-paragraph">DLNA は同一ネットワーク上での動作を想定しているものになります。<br>他のネットワークからアクセスしようとすると上手く動いてくれないケースがいくつか見られましたので、下記のようにしてサーバからの 「VPN 感」を少し消してみます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="533" height="582" src="https://mimumimu.net/blog/wp-content/uploads/2021/05/image-4.png" alt="" class="wp-image-5874"/></figure>



<p class="wp-block-paragraph">NAS 側には &#8220;192.168.1.0/24&#8221; のネットワークに属しているように見せ、VPN 用に &#8220;192.168.1.224/28&#8221; のネットワークを用意しておきます。</p>



<p class="wp-block-paragraph">VPN サーバには <strong>Proxy ARP の設定</strong>を入れて、192.168.1.0/24 のネットワーク上からも 192.168.1.224/28 の端末の MAC アドレスの解決 （といっても VPN サーバが指し示されるだけ）が出来るようになります。</p>



<p class="wp-block-paragraph">なお、Proxy ARP については、こちらのサイトが詳しいですので参照ください：<br>Proxy ARP（プロキシARP）とは / ネットワークエンジニアとして<br><a href="https://www.infraexpert.com/study/gateway.htm" title="Proxy ARP（プロキシARP）とは / ネットワークエンジニアとして">https://www.infraexpert.com/study/gateway.htm</a></p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">具体的な設定方法としては<br><span style="text-decoration: underline;">&#8220;/proc/sys/net/ipv4/conf/&lt;device>/proxy_arp&#8221; を 1</span> に書き換えるか<br><span style="text-decoration: underline;">systemd-networkd の &#8220;[Network]&#8221; セクションに &#8220;IPv4ProxyARP=yes&#8221;</span> とする方法が<br>簡単かなと思います。</p>



<p class="wp-block-paragraph">設定する際は、<span style="text-decoration: underline;">&#8220;192.168.1.0/24&#8221; の方に ProxyARP の設定を適用</span>する形になります。</p>



<h4 class="wp-block-heading">systemd-networkd の設定例）</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># cat /etc/systemd/network/eth0.network
[Match]
Name=eth0

[Network]
Address=192.168.1.240/24
Gateway=192.168.1.254
IPv4ProxyARP=yes

# cat /etc/systemd/network/eth1.network
[Match]
Name=eth1

[Network]
Address=192.168.1.238/28

[Link]
MTUBytes=1200</code></pre></div>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">2. SSDP をプロキシする</h2>



<p class="wp-block-paragraph">探索プロトコルの通信を転送するようにしてみます。<br>転送しないと探索が VPN のネットワーク内で閉じてしまい、本来の機器まで届かなくなってしまいます。</p>



<p class="wp-block-paragraph">SSDP の中身は概ね下記のような HTTP ベースの通信になっています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># リクエストの例。（クライアントからサーバに対して送る）
# 239.255.255.250:1900/UDP に対して送出される
---
M-SEARCH * HTTP/1.1
MX: 5
ST: urn:schemas-upnp-org:device:MediaServer:1
MAN: &quot;ssdp:discover&quot;
User-Agent: UPnP/1.0
Host: 239.255.255.250:1900
Connection: close

---

# 応答例。
# サーバからリクエストを行ったクライアントのポートに対してユニキャストで応答が入る
---
HTTP/1.1 200 OK
Cache-Control: max-age=1800
EXT:
Location: http://192.168.1.22:55247/dms
Server: Linux 4.0.0 UPnP/1.0
ST: urn:schemas-upnp-org:device:MediaServer:1
USN: uuid:xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx::urn:schemas-upnp-org:device:MediaServer:1
Date: Sun, 16 May 2021 19:42:50 GMT

---</code></pre></div>



<p class="wp-block-paragraph">見ていただくとわかるように、<span style="text-decoration: underline;"><strong>応答の中にユニキャストアドレスが含まれている</strong></span>ため、発見処理のみプロキシしてあげれば後は１対１での通信となります。</p>



<p class="wp-block-paragraph">ということで下記のようなプログラムを書いてみました</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-file="dlna_proxy.py" data-lang="Python"><code>#!/bin/python3

#
# SSDP (DLNA の探索プロトコル) を吸って吐くプロキシ。
# Wireguard のように純粋にbridgeできないネットワーク間で使うと幸せになれる気がします。
# (使ったことでネットワークがダウン等しても保証は出来ませんので、自己責任でどうぞ。)
#
# Author : Satoshi Mimura (@mimura1133)
#

import socket
from contextlib import closing

def main():
        multicast_group = &#39;239.255.255.250&#39;
        src_adapter_ip = &#39;&#39; # DLNA クライアントがいるネットワークの IP アドレスを指定
        dst_adapter_ip = &#39;&#39; # DLNA サーバがいるネットワークの IP アドレスを指定
        port = 1900
        timeout = 5.0

        with closing(socket.socket(socket.AF_INET,socket.SOCK_DGRAM)) as src_sock:
            src_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
            src_sock.bind((&#39;&#39;,port))
            src_sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP,
                                  socket.inet_aton(multicast_group) + socket.inet_aton(src_adapter_ip))

            while True:
                request_data, client_addr = src_sock.recvfrom(4096)
                with closing(socket.socket(socket.AF_INET,socket.SOCK_DGRAM)) as dst_sock:
                    dst_sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.inet_aton(dst_adapter_ip))
                    dst_sock.settimeout(timeout)
                    dst_sock.sendto(request_data,(multicast_group,port))
                    print(&quot;\033[31m [FORWARDED:REQUEST]\033[0m {} -&gt; {}&quot;.format(client_addr,(multicast_group,port)))
                    print(request_data)
                    while True:
                        try:
                            response_data, server_addr = dst_sock.recvfrom(4096)
                            src_sock.sendto(response_data,client_addr)
                            print(&quot;\033[32m [FORWARDED:RESPONSE]\033[0m {} -&gt; {}&quot;.format(server_addr,client_addr))
                            print(response_data)

                        except Exception:
                            break
        return

if __name__ == &#39;__main__&#39;:
    main()</code></pre></div>



<p class="wp-block-paragraph">動かしてみた結果は下図の通り。中々上手く動いてます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="769" src="https://mimumimu.net/blog/wp-content/uploads/2021/05/image-5.png" alt="" class="wp-image-5875"/></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="750" height="483" src="https://mimumimu.net/blog/wp-content/uploads/2021/05/image-7.png" alt="" class="wp-image-5877"/><figcaption>今回の検証には iPhone 側に OPlayer Lite を入れて検証しています。</figcaption></figure>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">3.永続化する</h2>



<p class="wp-block-paragraph">毎回手動で起動するのは筋がよくありませんので、systemd のサービスにしてしまいましょう。</p>



<p class="wp-block-paragraph">まずは、先ほどの Proxy をするプログラムからデバッグ用の print 文を消去したものを準備します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>#!/bin/python3

#
# SSDP (DLNA の探索プロトコル) を吸って吐くプロキシ。
# Wireguard のように純粋にbridgeできないネットワーク間で使うと幸せになれる気がします。
# (使ったことでネットワークがダウン等しても保証は出来ませんので、自己責任でどうぞ。)
#
# Author : Satoshi Mimura (@mimura1133)
#

import socket
from contextlib import closing

def main():
        multicast_group = &#39;239.255.255.250&#39;
        src_adapter_ip = &#39;&#39; # DLNA クライアントがいるネットワークの IP アドレスを指定
        dst_adapter_ip = &#39;&#39; # DLNA サーバがいるネットワークの IP アドレスを指定
        port = 1900
        timeout = 5.0

        with closing(socket.socket(socket.AF_INET,socket.SOCK_DGRAM)) as src_sock:
            src_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
            src_sock.bind((&#39;&#39;,port))
            src_sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP,
                                  socket.inet_aton(multicast_group) + socket.inet_aton(src_adapter_ip))

            while True:
                request_data, client_addr = src_sock.recvfrom(4096)
                with closing(socket.socket(socket.AF_INET,socket.SOCK_DGRAM)) as dst_sock:
                    dst_sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.inet_aton(dst_adapter_ip))
                    dst_sock.settimeout(timeout)
                    dst_sock.sendto(request_data,(multicast_group,port))
                    while True:
                        try:
                            response_data, server_addr = dst_sock.recvfrom(4096)
                            src_sock.sendto(response_data,client_addr)

                        except Exception:
                            break
        return

if __name__ == &#39;__main__&#39;:
    main()</code></pre></div>



<p class="wp-block-paragraph">上記を<span style="text-decoration: underline;"> <strong>/usr/local/sbin/proxy_dlna.py </strong>として保存</span>しておきます。</p>



<p class="wp-block-paragraph">保存が完了したら下記のように systemd のサービスを作成します。<br>今回は下記の内容を <span style="text-decoration: underline;"><strong>/etc/systemd/system/proxy_dlna.service として作成</strong></span>しました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[Unit]
Description=Launch DLNA Proxy (/usr/local/sbin/proxy_dlna.py)
# After=wg-quick@wg0.service  #WireGuard を使っている場合はこうしておくと WireGuard が起動した後に起動するようになります。

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/proxy_dlna.py

[Install]
WantedBy=multi-user.target</code></pre></div>



<p class="wp-block-paragraph">保存が完了しましたら <span style="text-decoration: underline;">systemctl enable proxy_dlna</span> 等で有効にすれば完了です。</p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">手順は以上となります。</p>



<p class="wp-block-paragraph">ただ上記のようなプロキシで全て動作するかというとそうではなく、特に DTCP-IP 等を用いるシステムの場合は「TTL は 3ホップ以下」「RTT は 7ms 以下」という制約が存在するため実現するのが大変難しい状況になっています。</p>



<p class="wp-block-paragraph">もしそのような場合については NTT の NGN 網の特殊性を用いて回避しているケースや、L2TPv3 などを上手く組み合わせて回避しているケースがネット上にいくつか転がっていますのでそちらを用いるのが良いかなと思われます。</p>



<p class="wp-block-paragraph">とはいえ、当方環境ではこれで VPN ライフがかなり改善されましたので、もしよろしければ参考にしていただけたらと！</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F17%2Fvpn-%25e8%25b6%258a%25e3%2581%2597%25e3%2581%25ab-dlna-%25e7%25b5%258c%25e7%2594%25b1%25e3%2581%25a7-nas-%25e3%2581%25ab%25e8%25a7%25a6%25e3%2582%258b-ssdp-proxy%2F&amp;linkname=VPN%20%E8%B6%8A%E3%81%97%E3%81%AB%20DLNA%20%E7%B5%8C%E7%94%B1%E3%81%A7%20NAS%20%E3%81%AB%E8%A7%A6%E3%82%8B%20%28SSDP%20Proxy%29" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F17%2Fvpn-%25e8%25b6%258a%25e3%2581%2597%25e3%2581%25ab-dlna-%25e7%25b5%258c%25e7%2594%25b1%25e3%2581%25a7-nas-%25e3%2581%25ab%25e8%25a7%25a6%25e3%2582%258b-ssdp-proxy%2F&amp;linkname=VPN%20%E8%B6%8A%E3%81%97%E3%81%AB%20DLNA%20%E7%B5%8C%E7%94%B1%E3%81%A7%20NAS%20%E3%81%AB%E8%A7%A6%E3%82%8B%20%28SSDP%20Proxy%29" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F17%2Fvpn-%25e8%25b6%258a%25e3%2581%2597%25e3%2581%25ab-dlna-%25e7%25b5%258c%25e7%2594%25b1%25e3%2581%25a7-nas-%25e3%2581%25ab%25e8%25a7%25a6%25e3%2582%258b-ssdp-proxy%2F&amp;linkname=VPN%20%E8%B6%8A%E3%81%97%E3%81%AB%20DLNA%20%E7%B5%8C%E7%94%B1%E3%81%A7%20NAS%20%E3%81%AB%E8%A7%A6%E3%82%8B%20%28SSDP%20Proxy%29" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F17%2Fvpn-%25e8%25b6%258a%25e3%2581%2597%25e3%2581%25ab-dlna-%25e7%25b5%258c%25e7%2594%25b1%25e3%2581%25a7-nas-%25e3%2581%25ab%25e8%25a7%25a6%25e3%2582%258b-ssdp-proxy%2F&#038;title=VPN%20%E8%B6%8A%E3%81%97%E3%81%AB%20DLNA%20%E7%B5%8C%E7%94%B1%E3%81%A7%20NAS%20%E3%81%AB%E8%A7%A6%E3%82%8B%20%28SSDP%20Proxy%29" data-a2a-url="https://mimumimu.net/blog/2021/05/17/vpn-%e8%b6%8a%e3%81%97%e3%81%ab-dlna-%e7%b5%8c%e7%94%b1%e3%81%a7-nas-%e3%81%ab%e8%a7%a6%e3%82%8b-ssdp-proxy/" data-a2a-title="VPN 越しに DLNA 経由で NAS に触る (SSDP Proxy)"></a></p>The post <a href="https://mimumimu.net/blog/2021/05/17/vpn-%e8%b6%8a%e3%81%97%e3%81%ab-dlna-%e7%b5%8c%e7%94%b1%e3%81%a7-nas-%e3%81%ab%e8%a7%a6%e3%82%8b-ssdp-proxy/">VPN 越しに DLNA 経由で NAS に触る (SSDP Proxy)</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2021/05/17/vpn-%e8%b6%8a%e3%81%97%e3%81%ab-dlna-%e7%b5%8c%e7%94%b1%e3%81%a7-nas-%e3%81%ab%e8%a7%a6%e3%82%8b-ssdp-proxy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SARA の更新はじめます。</title>
		<link>https://mimumimu.net/blog/2021/05/02/sara-%e3%81%ae%e6%9b%b4%e6%96%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%99%e3%80%82/</link>
					<comments>https://mimumimu.net/blog/2021/05/02/sara-%e3%81%ae%e6%9b%b4%e6%96%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%99%e3%80%82/#respond</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Sat, 01 May 2021 17:58:01 +0000</pubDate>
				<category><![CDATA[ソフトウェア]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5867</guid>

					<description><![CDATA[<p>どうも、みむらです。 サポート掲示板でよく「擬似言語シミュレータ SARA」のお問い合わせを受けるのですが、ソースコードの欠損やバージョンの差異などによりサポートが難しい状況でした。 今回、一部データの補足を加えて Vi [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2021/05/02/sara-%e3%81%ae%e6%9b%b4%e6%96%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%99%e3%80%82/">SARA の更新はじめます。</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F02%2Fsara-%25e3%2581%25ae%25e6%259b%25b4%25e6%2596%25b0%25e3%2581%25af%25e3%2581%2598%25e3%2582%2581%25e3%2581%25be%25e3%2581%2599%25e3%2580%2582%2F&amp;linkname=SARA%20%E3%81%AE%E6%9B%B4%E6%96%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%99%E3%80%82" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F02%2Fsara-%25e3%2581%25ae%25e6%259b%25b4%25e6%2596%25b0%25e3%2581%25af%25e3%2581%2598%25e3%2582%2581%25e3%2581%25be%25e3%2581%2599%25e3%2580%2582%2F&amp;linkname=SARA%20%E3%81%AE%E6%9B%B4%E6%96%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%99%E3%80%82" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F02%2Fsara-%25e3%2581%25ae%25e6%259b%25b4%25e6%2596%25b0%25e3%2581%25af%25e3%2581%2598%25e3%2582%2581%25e3%2581%25be%25e3%2581%2599%25e3%2580%2582%2F&amp;linkname=SARA%20%E3%81%AE%E6%9B%B4%E6%96%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%99%E3%80%82" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F02%2Fsara-%25e3%2581%25ae%25e6%259b%25b4%25e6%2596%25b0%25e3%2581%25af%25e3%2581%2598%25e3%2582%2581%25e3%2581%25be%25e3%2581%2599%25e3%2580%2582%2F&#038;title=SARA%20%E3%81%AE%E6%9B%B4%E6%96%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%99%E3%80%82" data-a2a-url="https://mimumimu.net/blog/2021/05/02/sara-%e3%81%ae%e6%9b%b4%e6%96%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%99%e3%80%82/" data-a2a-title="SARA の更新はじめます。"></a></p>
<p class="wp-block-paragraph">どうも、みむらです。</p>



<p class="wp-block-paragraph">サポート掲示板でよく「擬似言語シミュレータ SARA」のお問い合わせを受けるのですが、<br>ソースコードの欠損やバージョンの差異などによりサポートが難しい状況でした。</p>



<p class="wp-block-paragraph">今回、一部データの補足を加えて Visual Studio 2019 にてビルドが出来る状況になりましたので、リファクタリングと機能追加含めてはじめていこうと考えています。<br>（もう Windows Forms でなくて XAML で良いよね、とか、 .NET Framework 4.8 ベースとかにしても良いよね・・とか色々と。。）</p>



<p class="wp-block-paragraph">にしても最初のリリースは１０年前だったんですね。。。<br><a href="https://xtech.nikkei.com/it/article/NEWS/20101004/352568/">https://xtech.nikkei.com/it/article/NEWS/20101004/352568/</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1340" height="1003" src="https://mimumimu.net/blog/wp-content/uploads/2021/05/image.png" alt="" class="wp-image-5868"/></figure>



<p class="wp-block-paragraph">ということで、ボチボチはじめていきますー。</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F02%2Fsara-%25e3%2581%25ae%25e6%259b%25b4%25e6%2596%25b0%25e3%2581%25af%25e3%2581%2598%25e3%2582%2581%25e3%2581%25be%25e3%2581%2599%25e3%2580%2582%2F&amp;linkname=SARA%20%E3%81%AE%E6%9B%B4%E6%96%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%99%E3%80%82" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F02%2Fsara-%25e3%2581%25ae%25e6%259b%25b4%25e6%2596%25b0%25e3%2581%25af%25e3%2581%2598%25e3%2582%2581%25e3%2581%25be%25e3%2581%2599%25e3%2580%2582%2F&amp;linkname=SARA%20%E3%81%AE%E6%9B%B4%E6%96%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%99%E3%80%82" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F02%2Fsara-%25e3%2581%25ae%25e6%259b%25b4%25e6%2596%25b0%25e3%2581%25af%25e3%2581%2598%25e3%2582%2581%25e3%2581%25be%25e3%2581%2599%25e3%2580%2582%2F&amp;linkname=SARA%20%E3%81%AE%E6%9B%B4%E6%96%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%99%E3%80%82" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F05%2F02%2Fsara-%25e3%2581%25ae%25e6%259b%25b4%25e6%2596%25b0%25e3%2581%25af%25e3%2581%2598%25e3%2582%2581%25e3%2581%25be%25e3%2581%2599%25e3%2580%2582%2F&#038;title=SARA%20%E3%81%AE%E6%9B%B4%E6%96%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%99%E3%80%82" data-a2a-url="https://mimumimu.net/blog/2021/05/02/sara-%e3%81%ae%e6%9b%b4%e6%96%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%99%e3%80%82/" data-a2a-title="SARA の更新はじめます。"></a></p>The post <a href="https://mimumimu.net/blog/2021/05/02/sara-%e3%81%ae%e6%9b%b4%e6%96%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%99%e3%80%82/">SARA の更新はじめます。</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2021/05/02/sara-%e3%81%ae%e6%9b%b4%e6%96%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%99%e3%80%82/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ASUSTOR DataSync Center の HDD アクセスを静かにする</title>
		<link>https://mimumimu.net/blog/2021/04/28/asustor-%e3%81%ae-datasync-center-%e3%81%ae-hdd-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e9%9d%99%e3%81%8b%e3%81%ab%e3%81%99%e3%82%8b%e3%80%82/</link>
					<comments>https://mimumimu.net/blog/2021/04/28/asustor-%e3%81%ae-datasync-center-%e3%81%ae-hdd-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e9%9d%99%e3%81%8b%e3%81%ab%e3%81%99%e3%82%8b%e3%80%82/#respond</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Tue, 27 Apr 2021 18:53:57 +0000</pubDate>
				<category><![CDATA[ハードウェア]]></category>
		<category><![CDATA[雑記]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5852</guid>

					<description><![CDATA[<p>どうもみむらです。 時代の流れに沿って（？）最近 NAS を買ってみました。 録画データを置いておいたり、時々使う ISO ファイルの保存場所に使ってみたり DLNA で色んな機器から触れるようになって QoL があがっ [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2021/04/28/asustor-%e3%81%ae-datasync-center-%e3%81%ae-hdd-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e9%9d%99%e3%81%8b%e3%81%ab%e3%81%99%e3%82%8b%e3%80%82/">ASUSTOR DataSync Center の HDD アクセスを静かにする</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F04%2F28%2Fasustor-%25e3%2581%25ae-datasync-center-%25e3%2581%25ae-hdd-%25e3%2582%25a2%25e3%2582%25af%25e3%2582%25bb%25e3%2582%25b9%25e3%2582%2592%25e9%259d%2599%25e3%2581%258b%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%25e3%2580%2582%2F&amp;linkname=ASUSTOR%20DataSync%20Center%20%E3%81%AE%20HDD%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E9%9D%99%E3%81%8B%E3%81%AB%E3%81%99%E3%82%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F04%2F28%2Fasustor-%25e3%2581%25ae-datasync-center-%25e3%2581%25ae-hdd-%25e3%2582%25a2%25e3%2582%25af%25e3%2582%25bb%25e3%2582%25b9%25e3%2582%2592%25e9%259d%2599%25e3%2581%258b%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%25e3%2580%2582%2F&amp;linkname=ASUSTOR%20DataSync%20Center%20%E3%81%AE%20HDD%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E9%9D%99%E3%81%8B%E3%81%AB%E3%81%99%E3%82%8B" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F04%2F28%2Fasustor-%25e3%2581%25ae-datasync-center-%25e3%2581%25ae-hdd-%25e3%2582%25a2%25e3%2582%25af%25e3%2582%25bb%25e3%2582%25b9%25e3%2582%2592%25e9%259d%2599%25e3%2581%258b%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%25e3%2580%2582%2F&amp;linkname=ASUSTOR%20DataSync%20Center%20%E3%81%AE%20HDD%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E9%9D%99%E3%81%8B%E3%81%AB%E3%81%99%E3%82%8B" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F04%2F28%2Fasustor-%25e3%2581%25ae-datasync-center-%25e3%2581%25ae-hdd-%25e3%2582%25a2%25e3%2582%25af%25e3%2582%25bb%25e3%2582%25b9%25e3%2582%2592%25e9%259d%2599%25e3%2581%258b%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%25e3%2580%2582%2F&#038;title=ASUSTOR%20DataSync%20Center%20%E3%81%AE%20HDD%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E9%9D%99%E3%81%8B%E3%81%AB%E3%81%99%E3%82%8B" data-a2a-url="https://mimumimu.net/blog/2021/04/28/asustor-%e3%81%ae-datasync-center-%e3%81%ae-hdd-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e9%9d%99%e3%81%8b%e3%81%ab%e3%81%99%e3%82%8b%e3%80%82/" data-a2a-title="ASUSTOR DataSync Center の HDD アクセスを静かにする"></a></p>
<p class="wp-block-paragraph">どうもみむらです。</p>



<p class="wp-block-paragraph">時代の流れに沿って（？）最近 NAS を買ってみました。</p>



<p class="wp-block-paragraph">録画データを置いておいたり、時々使う ISO ファイルの保存場所に使ってみたり DLNA で色んな機器から触れるようになって QoL があがったりと「NAS は良いものだ」なんて感じている今日この頃です。</p>



<p class="wp-block-paragraph">DataSync Center というソフトを入れると、外部のクラウドサービスとも同期してくれるので、スマホで撮った画像をクラウド経由で NAS に入れて DLNA で触れるようになったり・・等々、とても QoL が上がっております。</p>



<p class="wp-block-paragraph">ただそんな NAS と DataSync Center なのですが、このソフトが常時 HDD にアクセスに行くために夜中も音がしてしまい、これは精神衛生上よろしくないので静音化を図ることにしてみました。</p>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">内容について</h2>



<p class="wp-block-paragraph">紹介する内容を実施した後で不具合が発生しても、私自身は責任を負えないため自己責任でお願い致します。</p>



<p class="wp-block-paragraph">下記の内容としては稼働中の datacenter のメタデータを tmpfs に配置して解決というものになります。後半に作成物がありますので、お急ぎの方はそちらを参照ください。</p>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">1. 原因を追う</h2>



<h3 class="wp-block-heading">1.1. entware のインストールと SSH アクセスの許可</h3>



<p class="wp-block-paragraph">DataSync Center が何にアクセスしているかをトレースするため<br><span style="text-decoration: underline;">entware のインストール</span>と、<span style="text-decoration: underline;">SSH アクセスの許可</span>を行います。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1057" height="643" src="https://mimumimu.net/blog/wp-content/uploads/2021/04/image.png" alt="" class="wp-image-5853" style="width:655px;height:398px"/><figcaption class="wp-element-caption">App Central から entware-ng インストール</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1027" height="636" src="https://mimumimu.net/blog/wp-content/uploads/2021/04/image-1.png" alt="" class="wp-image-5854"/></figure>



<p class="wp-block-paragraph">以上の手順を踏むと &#8220;/opt/bin/opkg&#8221; から entware のパッケージマネージャが使えるようになります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="979" height="512" src="https://mimumimu.net/blog/wp-content/uploads/2021/04/image-2.png" alt="" class="wp-image-5855"/></figure>



<hr class="wp-block-separator has-css-opacity"/>



<h3 class="wp-block-heading">1.2. strace で挙動を見る</h3>



<p class="wp-block-paragraph">sudo su 等で root に登った後、下記のコマンドでインストールします。</p>



<p class="wp-block-paragraph">なお opkg のパッケージは基本的に /opt 以下で触れるように配置されます。<br>またそれらのデータ群は /usr/local/AppCentral/entware-ng/opt/ 以下にシンボリックリンクが張られるようになるため、App Central から entware を削除すると、同時に opkg で入れたファイル群も削除されるようです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># /opt/bin/opkg update
Downloading http://bin.entware.net/armv7sf-k2.6/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware

# /opt/bin/opkg install strace
Installing strace (5.10-1) to root...
Downloading http://bin.entware.net/armv7sf-k2.6/strace_5.10-1_armv7-2.6.ipk
Configuring strace.</code></pre></div>



<p class="wp-block-paragraph">次に ps コマンドでプロセスを探します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># ps | grep datasync
 3442 root       0:00 grep datasync
 5145 ***** 1295:0 /usr/local/AppCentral/datasync-center/bin/datasync_center 1</code></pre></div>



<p class="wp-block-paragraph">上記の例では PID は 5145 になっていることが分かります。<br>では strace でアタッチして挙動を観察しましょう。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># /opt/bin/strace -p (PID)
(上記例の場合は /opt/bin/strace -p 5145 と入力する)

gettimeofday({tv_sec=1619546282, tv_usec=544859}, NULL) = 0
gettimeofday({tv_sec=1619546282, tv_usec=544976}, NULL) = 0
gettimeofday({tv_sec=1619546282, tv_usec=545057}, NULL) = 0
stat64(&quot;/usr/builtin/etc/ldapclient/asldapclient.conf&quot;, 0xbead4188) = -1 EACCES (Permission denied)
stat64(&quot;/etc/passwd&quot;, {st_mode=S_IFREG|0644, st_size=461, ...}) = 0
open(&quot;/etc/passwd&quot;, O_RDONLY|O_LARGEFILE) = 12
read(12, &quot;root:x:0:0:,0,,root:/root:/bin/s&quot;..., 461) = 461
close(12)                               = 0
stat64(&quot;/etc/passwd&quot;, {st_mode=S_IFREG|0644, st_size=461, ...}) = 0
open(&quot;/etc/passwd&quot;, O_RDONLY|O_LARGEFILE) = 12
read(12, &quot;root:x:0:0:,0,,root:/root:/bin/s&quot;..., 461) = 461
close(12)                               = 0
stat64(&quot;/etc/passwd&quot;, {st_mode=S_IFREG|0644, st_size=461, ...}) = 0
open(&quot;/etc/passwd&quot;, O_RDONLY|O_LARGEFILE) = 12
read(12, &quot;root:x:0:0:,0,,root:/root:/bin/s&quot;..., 461) = 461
close(12)                               = 0
stat64(&quot;/etc/nas.conf&quot;, {st_mode=S_IFREG|0644, st_size=3257, ...}) = 0
open(&quot;/etc/nas.conf&quot;, O_RDONLY|O_LARGEFILE) = 12
read(12, &quot;[Basic]\nModel = AS1002T\nVersion &quot;..., 3257) = 3257
close(12)                               = 0
lstat64(&quot;/share&quot;, {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0
lstat64(&quot;/share/home&quot;, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64(&quot;/share/home/*******&quot;, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open(&quot;/share/home/*******/.datasync-center/connections/1/user_info.json.lock&quot;, O_RDWR|O_CREAT|O_LARGEFILE|O_CLOEXEC, 0777) = 12
flock(12, LOCK_EX)                      = 0
open(&quot;/share/home/*******/.datasync-center/connections/1/user_info.json_5145.tmp&quot;, O_WRONLY|O_CREAT|O_TRUNC, 0644) = 15
write(15, &quot;{\&quot;quota\&quot;:1131723882496,\&quot;normal\&quot;:&quot;..., 109) = 109
close(15)                               = 0
rename(&quot;/share/home/*******/.datasync-center/connections/1/user_info.json_5145.tmp&quot;, &quot;/share/home/*******/.datasync-center/connections/1/user_info.json&quot;) = 0
open(&quot;/etc/passwd&quot;, O_RDONLY|O_CLOEXEC) = 15
_llseek(15, 0, [0], SEEK_CUR)           = 0
fstat64(15, {st_mode=S_IFREG|0644, st_size=461, ...}) = 0
mmap2(NULL, 461, PROT_READ, MAP_SHARED, 15, 0) = 0xb6faa000
_llseek(15, 461, [461], SEEK_SET)       = 0
munmap(0xb6faa000, 461)                 = 0
close(15)                               = 0
geteuid32()                             = 1000
chmod(&quot;/share/home/*******/.datasync-center/connections/1/user_info.json&quot;, 0700) = 0
flock(12, LOCK_UN)                      = 0
close(12)                               = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({tv_sec=1, tv_nsec=0}, </code></pre></div>



<p class="wp-block-paragraph">定期的な read は良いとしても 「<span style="text-decoration: underline;">user_info.json_5145.tmp という名前でファイルを書いて、 user_info.json を消して、user_info.json に置換する</span>」というのを<span style="text-decoration: underline;">定期的に行われる</span>のは、やはりあんまり心臓にもよろしくないですね。。</p>



<p class="wp-block-paragraph">ということで、これらを tmpfs に配置するようにしてみます。<br>（ディスクの書き込み先を RAM 上に作成したドライブに変更して、ディスクへの書き込みを行わせない）</p>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">2. データを tmpfs に配置するようにする。</h2>



<h3 class="wp-block-heading">2.1. 現在のデータをコピーして取っておく</h3>



<p class="wp-block-paragraph">方針としては、起動時・シャットダウン時にメタデータをコピーしておき<br>稼働中は tmpfs に対してずっと書かせるようにしてみます。</p>



<p class="wp-block-paragraph">/share/home/(USERNAME)/.datasync-center/connections 以下のデータがずっと読み書きされていますので、connections 以下を tmpfs にするように丸っとコピーを取ります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># /volume1/.@plugins/etc/init.d/K50datasync-center stop
(DataSync Center を停止する)

# cd /share/home/(USERNAME)/.datasync-center/
( ユーザ名が hogeo であれば cd /share/home/hogeo/.datasync-center/ になる.)

# ls -ln
(UID,GID を調べておく. 下記の例では UID=1000, GID=100)
drwxrwxrwt    3 1000     100             60 Apr 23 11:55 connections

# cp -R connections original_connections
(コピーを取る)</code></pre></div>



<hr class="wp-block-separator has-css-opacity"/>



<h3 class="wp-block-heading">2.2. 起動時・シャットダウン時の挙動をサービスとして記述する</h3>



<p class="wp-block-paragraph">下記のサイトを参考にすると &#8220;/volume1/.@plugins/etc/init.d/ &#8221; あたりにスクリプトを配置すると幸せになれそうですので、ここにスクリプトを記述していきます。</p>



<p class="wp-block-paragraph">Digging in to the Linux install on a NAS<br><a href="https://ljones.dev/blog/digging-into-nas/">https://ljones.dev/blog/digging-into-nas/</a></p>



<p class="wp-block-paragraph">基本的には下記２つのスクリプトを作成するだけです。</p>



<hr class="wp-block-separator has-css-opacity"/>



<h4 class="wp-block-heading">/volume1/.@plugins/etc/init.d/S01prepare-datasync-center</h4>



<p class="wp-block-paragraph">このスクリプトでは既存の connections ディレクトリを削除して tmpfs (かつ UID, GID はユーザに合わせる)  をそこにマウントさせた後、コピーしておいたものを書き戻す処理になります。</p>



<p class="wp-block-paragraph">下記スクリプトを利用される際は (USERNAME) 部分および (UID) 部分をご自身の環境に合わせて書き換えてください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>#!/bin/sh -e

rm -rf /share/home/(USERNAME)/.datasync-center/connections
mkdir /share/home/(USERNAME)/.datasync-center/connections
mount tmpfs -t tmpfs /share/home/(USERNAME)/.datasync-center/connections -o uid=(UID),gid=100

cp -R /share/home/(USERNAME)/.datasync-center/original_connections/* /share/home/(USERNAME)/.datasync-center/connections/
chown -R (UID):100 /share/home/(USERNAME)/.datasync-center/connections/</code></pre></div>



<hr class="wp-block-separator has-css-opacity"/>



<h4 class="wp-block-heading">/volume1/.@plugins/etc/init.d/K99store-datasync-center</h4>



<p class="wp-block-paragraph">このスクリプトでは既存の connections ディレクトリの中身を待避する内容になります。</p>



<p class="wp-block-paragraph">上記同様、下記スクリプトを利用される際は (USERNAME) 部分および (UID) 部分をご自身の環境に合わせて書き換えてください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>#!/bin/sh -e

cp -R /share/home/(USERNAME)/.datasync-center/connections/* /share/home/(USERNAME)/.datasync-center/original_connections/</code></pre></div>



<hr class="wp-block-separator has-css-opacity"/>



<p class="wp-block-paragraph">上記二つのスクリプトを書き上げた後は chmod で実行権限を与えることを忘れずに。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># vi /volume1/.@plugins/etc/init.d/S01prepare-datasync-center
( スクリプトを書く。書き上がったら :wq で抜ける )
# vi /volume1/.@plugins/etc/init.d/K99store-datasync-center
( スクリプトを書く。書き上がったら :wq で抜ける )
# chmod 755 /volume1/.@plugins/etc/init.d/S01prepare-datasync-center
# chmod 755 /volume1/.@plugins/etc/init.d/K99store-datasync-center</code></pre></div>



<hr class="wp-block-separator has-css-opacity"/>



<h3 class="wp-block-heading">2.3. NAS を再起動して動作することを確認する</h3>



<p class="wp-block-paragraph">再起動後に root で mount コマンドを実行して tmpfs がマウントされていることを確認します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># mount
rootfs on / type rootfs (rw)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /tmp type tmpfs (rw,relatime)
/dev/md0 on /volume0 type ext4 (rw,relatime,data=ordered)
/dev/loop0 on /share type ext4 (rw,relatime)
/dev/md1 on /volume1 type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/home type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Web type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Music type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Photos type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Pictures type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Movie type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/MSDN type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Media type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
tmpfs on /share/home/******/.datasync-center/connections type tmpfs (rw,relatime,uid=****,gid=100)</code></pre></div>



<p class="wp-block-paragraph">また DataSync Center を開き、正常に動作していることを併せて確認します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1019" height="616" src="https://mimumimu.net/blog/wp-content/uploads/2021/04/image-4.png" alt="" class="wp-image-5860"/></figure>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">3. 後片付け</h2>



<p class="wp-block-paragraph">App Central から entware-ng の削除 (インストールした場合) と、</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1036" height="623" src="https://mimumimu.net/blog/wp-content/uploads/2021/04/image-5.png" alt="" class="wp-image-5861"/></figure>



<p class="wp-block-paragraph">SSH の無効化を忘れずに行っておきましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1012" height="613" src="https://mimumimu.net/blog/wp-content/uploads/2021/04/image-6.png" alt="" class="wp-image-5862"/></figure>



<hr class="wp-block-separator has-css-opacity"/>



<p class="wp-block-paragraph">ということで・・。</p>



<p class="wp-block-paragraph">ここまで完了すると、HDD への DataSync Center による常時アクセスが無くなるため、 &#8220;Disk Hibernation&#8221; の設定に従って、未使用時間は眠ってくれるようになります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1015" height="614" src="https://mimumimu.net/blog/wp-content/uploads/2021/04/image-7.png" alt="" class="wp-image-5863"/></figure>



<p class="wp-block-paragraph">快適な睡眠も得られて、めでたしめでたし・・です！<br>（書いてる時間的に寝られているのか、というのは一端脇に置いておきましょう）</p>



<p class="wp-block-paragraph">素敵な NAS ライフをー！</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F04%2F28%2Fasustor-%25e3%2581%25ae-datasync-center-%25e3%2581%25ae-hdd-%25e3%2582%25a2%25e3%2582%25af%25e3%2582%25bb%25e3%2582%25b9%25e3%2582%2592%25e9%259d%2599%25e3%2581%258b%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%25e3%2580%2582%2F&amp;linkname=ASUSTOR%20DataSync%20Center%20%E3%81%AE%20HDD%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E9%9D%99%E3%81%8B%E3%81%AB%E3%81%99%E3%82%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F04%2F28%2Fasustor-%25e3%2581%25ae-datasync-center-%25e3%2581%25ae-hdd-%25e3%2582%25a2%25e3%2582%25af%25e3%2582%25bb%25e3%2582%25b9%25e3%2582%2592%25e9%259d%2599%25e3%2581%258b%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%25e3%2580%2582%2F&amp;linkname=ASUSTOR%20DataSync%20Center%20%E3%81%AE%20HDD%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E9%9D%99%E3%81%8B%E3%81%AB%E3%81%99%E3%82%8B" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F04%2F28%2Fasustor-%25e3%2581%25ae-datasync-center-%25e3%2581%25ae-hdd-%25e3%2582%25a2%25e3%2582%25af%25e3%2582%25bb%25e3%2582%25b9%25e3%2582%2592%25e9%259d%2599%25e3%2581%258b%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%25e3%2580%2582%2F&amp;linkname=ASUSTOR%20DataSync%20Center%20%E3%81%AE%20HDD%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E9%9D%99%E3%81%8B%E3%81%AB%E3%81%99%E3%82%8B" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F04%2F28%2Fasustor-%25e3%2581%25ae-datasync-center-%25e3%2581%25ae-hdd-%25e3%2582%25a2%25e3%2582%25af%25e3%2582%25bb%25e3%2582%25b9%25e3%2582%2592%25e9%259d%2599%25e3%2581%258b%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%25e3%2580%2582%2F&#038;title=ASUSTOR%20DataSync%20Center%20%E3%81%AE%20HDD%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E9%9D%99%E3%81%8B%E3%81%AB%E3%81%99%E3%82%8B" data-a2a-url="https://mimumimu.net/blog/2021/04/28/asustor-%e3%81%ae-datasync-center-%e3%81%ae-hdd-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e9%9d%99%e3%81%8b%e3%81%ab%e3%81%99%e3%82%8b%e3%80%82/" data-a2a-title="ASUSTOR DataSync Center の HDD アクセスを静かにする"></a></p>The post <a href="https://mimumimu.net/blog/2021/04/28/asustor-%e3%81%ae-datasync-center-%e3%81%ae-hdd-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e9%9d%99%e3%81%8b%e3%81%ab%e3%81%99%e3%82%8b%e3%80%82/">ASUSTOR DataSync Center の HDD アクセスを静かにする</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2021/04/28/asustor-%e3%81%ae-datasync-center-%e3%81%ae-hdd-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e9%9d%99%e3%81%8b%e3%81%ab%e3%81%99%e3%82%8b%e3%80%82/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>コンソールで Optane Memory を有効にする</title>
		<link>https://mimumimu.net/blog/2021/01/16/%e3%82%b3%e3%83%b3%e3%82%bd%e3%83%bc%e3%83%ab%e3%81%a7-optane-memory-%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/</link>
					<comments>https://mimumimu.net/blog/2021/01/16/%e3%82%b3%e3%83%b3%e3%82%bd%e3%83%bc%e3%83%ab%e3%81%a7-optane-memory-%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Fri, 15 Jan 2021 19:26:03 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5844</guid>

					<description><![CDATA[<p>あけましておめでとうございます｡今年も宜しくお願い致します｡ 自宅内で Windows Server 2019 が走っているのですが､大きなデータを保存しておく場所として HDD が搭載されておりこれの高速化として &# [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2021/01/16/%e3%82%b3%e3%83%b3%e3%82%bd%e3%83%bc%e3%83%ab%e3%81%a7-optane-memory-%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/">コンソールで Optane Memory を有効にする</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F01%2F16%2F%25e3%2582%25b3%25e3%2583%25b3%25e3%2582%25bd%25e3%2583%25bc%25e3%2583%25ab%25e3%2581%25a7-optane-memory-%25e3%2582%2592%25e6%259c%2589%25e5%258a%25b9%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%2F&amp;linkname=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%20Optane%20Memory%20%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F01%2F16%2F%25e3%2582%25b3%25e3%2583%25b3%25e3%2582%25bd%25e3%2583%25bc%25e3%2583%25ab%25e3%2581%25a7-optane-memory-%25e3%2582%2592%25e6%259c%2589%25e5%258a%25b9%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%2F&amp;linkname=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%20Optane%20Memory%20%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F01%2F16%2F%25e3%2582%25b3%25e3%2583%25b3%25e3%2582%25bd%25e3%2583%25bc%25e3%2583%25ab%25e3%2581%25a7-optane-memory-%25e3%2582%2592%25e6%259c%2589%25e5%258a%25b9%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%2F&amp;linkname=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%20Optane%20Memory%20%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F01%2F16%2F%25e3%2582%25b3%25e3%2583%25b3%25e3%2582%25bd%25e3%2583%25bc%25e3%2583%25ab%25e3%2581%25a7-optane-memory-%25e3%2582%2592%25e6%259c%2589%25e5%258a%25b9%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%2F&#038;title=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%20Optane%20Memory%20%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B" data-a2a-url="https://mimumimu.net/blog/2021/01/16/%e3%82%b3%e3%83%b3%e3%82%bd%e3%83%bc%e3%83%ab%e3%81%a7-optane-memory-%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/" data-a2a-title="コンソールで Optane Memory を有効にする"></a></p>
<p class="wp-block-paragraph">あけましておめでとうございます｡<br>今年も宜しくお願い致します｡</p>



<p class="wp-block-paragraph">自宅内で Windows Server 2019 が走っているのですが､<br>大きなデータを保存しておく場所として HDD が搭載されており<br>これの高速化として &#8220;Optane Memory&#8221; を使おうとしてみました｡</p>



<p class="wp-block-paragraph">入れてみて､さて有効にしようと画面を開こうとしたところ･･</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="808" height="442" src="https://mimumimu.net/blog/wp-content/uploads/2021/01/image.png" alt="" class="wp-image-5845"/><figcaption>The Intel Optane memory application ran into a problem と表示される</figcaption></figure>



<p class="wp-block-paragraph">ということで､起動が出来ません｡でも Optane Memory での高速化はしたい｡</p>



<p class="wp-block-paragraph">ただコンソールで Optane Memory の有効化操作を行ったところ<br>上手く有効になりましたので､今後のメモとしてここに記録します｡</p>



<hr class="wp-block-separator"/>



<h4 class="wp-block-heading">記事にあたり:</h4>



<p class="wp-block-paragraph">インテル公式としては､ <span style="text-decoration: underline;">Windows Server での Optane Memory の動作は保証していない</span>ようです｡<br>本番環境に導入するなどして障害が起きてもこちらではカバー出来ませんので､あくまでも<span style="text-decoration: underline;">実験用やデータが飛んでも問題ない環境で</span>お試しください｡</p>



<p class="wp-block-paragraph">インテル® Optane<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />メモリー: 購入する前に、主な要件<a href="https://www.intel.co.jp/content/www/jp/ja/support/articles/000023994/memory-and-storage/intel-optane-memory.html">https://www.intel.co.jp/content/www/jp/ja/support/articles/000023994/memory-and-storage/intel-optane-memory.html</a></p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">1.ドライバを入れる</h3>



<p class="wp-block-paragraph">セットアッププログラムを使用したり､<br>pnputil コマンド ( 例 : pnputil /add-driver iaStorAC.inf /install ) などでドライバをインストールします｡</p>



<p class="wp-block-paragraph">18.x 系のドライバが必要なため､マザーボードベンダなどで提供されているドライバが古い場合は最新版のドライバを入れておけば大丈夫だと思います｡</p>



<p class="wp-block-paragraph">インテル® Optane<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />・メモリーを備えたインテル®ラピッド・ストレージ・テクノロジードライバー・インストール・ソフトウェア<br><a href="https://downloadcenter.intel.com/ja/download/29978">https://downloadcenter.intel.com/ja/download/29978</a></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">また､ドライバが上手く当たらない場合 (古いバージョンのまま､等) は<br>devcon.exe を Windows Driver Kit (WDK) から持ってきて更新することも可能です｡</p>



<p class="wp-block-paragraph">DevCon Update &#8211; Windows drivers | Microsoft Docs<br><a href="https://docs.microsoft.com/ja-jp/windows-hardware/drivers/devtest/devcon-update">https://docs.microsoft.com/ja-jp/windows-hardware/drivers/devtest/devcon-update</a></p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">2. RSTCliPro を用意する</h3>



<p class="wp-block-paragraph">下記のサイトから RSTCliPro.exe をダウンロードし､<br>当該端末 (今回の私の場合は Windows Server 2019) にコピーしておきます｡</p>



<p class="wp-block-paragraph">インテル® Optane<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />メモリー向けインテル® RSTCLI Pro<br><a href="https://downloadcenter.intel.com/ja/download/29986/-Optane-RSTCLI-Pro">https://downloadcenter.intel.com/ja/download/29986/-Optane-RSTCLI-Pro</a></p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">3. Optane Memory と 高速化したい HDD の ID を確認する</h3>



<p class="wp-block-paragraph">下記のコマンドを実行します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>RstCliPro.exe -I</code></pre></div>



<p class="wp-block-paragraph">実行すると下記のようにデバイス一覧が出てきます</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="687" height="431" src="https://mimumimu.net/blog/wp-content/uploads/2021/01/image-2.png" alt="" class="wp-image-5847"/></figure>



<p class="wp-block-paragraph">そのうち､<span style="text-decoration: underline;">高速化したいデバイスの ID と Optane Memory の ID を探して控え</span>ます｡<br>今回の場合は &#8220;0-0-5-0&#8221; が高速化したいデバイスで､ &#8220;0-1-0-0&#8221; が Optane Memory の ID になります｡</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="497" height="585" src="https://mimumimu.net/blog/wp-content/uploads/2021/01/image-3.png" alt="" class="wp-image-5848"/></figure>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">4. Optane Memory を有効化する</h3>



<p class="wp-block-paragraph">先ほどメモをした ID を元に次のようなコマンドを実行します｡</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>RstCliPro --OptaneMemory --enable --fast-drive &lt;Optane MemoryのID&gt; --drive-to-accel &lt;高速化したいドライブ&gt;</code></pre></div>



<p class="wp-block-paragraph">私の場合は､ <br>&#8220;RstCliPro.exe &#8211;OptaneMemory &#8211;enable &#8211;fast-drive 0-1-0-0 &#8211;drive-to-accel 0-0-5-0&#8221;<br>というコマンドになります｡</p>



<p class="wp-block-paragraph">実行して &#8220;Enable completed&#8221; と出れば OK です｡</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="750" height="43" src="https://mimumimu.net/blog/wp-content/uploads/2021/01/image-4.png" alt="" class="wp-image-5849"/></figure>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">以上で設定は完了です｡</p>



<p class="wp-block-paragraph">上記が完了した後 &#8220;RstCliPro.exe &#8211;OptaneMemory &#8211;info&#8221; を実行することで設定内容を確認することも可能です｡</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="589" height="376" src="https://mimumimu.net/blog/wp-content/uploads/2021/01/image-5.png" alt="" class="wp-image-5850"/></figure>



<p class="wp-block-paragraph">というわけで､素敵な Optane Memory ライフを!</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F01%2F16%2F%25e3%2582%25b3%25e3%2583%25b3%25e3%2582%25bd%25e3%2583%25bc%25e3%2583%25ab%25e3%2581%25a7-optane-memory-%25e3%2582%2592%25e6%259c%2589%25e5%258a%25b9%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%2F&amp;linkname=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%20Optane%20Memory%20%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F01%2F16%2F%25e3%2582%25b3%25e3%2583%25b3%25e3%2582%25bd%25e3%2583%25bc%25e3%2583%25ab%25e3%2581%25a7-optane-memory-%25e3%2582%2592%25e6%259c%2589%25e5%258a%25b9%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%2F&amp;linkname=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%20Optane%20Memory%20%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F01%2F16%2F%25e3%2582%25b3%25e3%2583%25b3%25e3%2582%25bd%25e3%2583%25bc%25e3%2583%25ab%25e3%2581%25a7-optane-memory-%25e3%2582%2592%25e6%259c%2589%25e5%258a%25b9%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%2F&amp;linkname=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%20Optane%20Memory%20%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2021%2F01%2F16%2F%25e3%2582%25b3%25e3%2583%25b3%25e3%2582%25bd%25e3%2583%25bc%25e3%2583%25ab%25e3%2581%25a7-optane-memory-%25e3%2582%2592%25e6%259c%2589%25e5%258a%25b9%25e3%2581%25ab%25e3%2581%2599%25e3%2582%258b%2F&#038;title=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%20Optane%20Memory%20%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B" data-a2a-url="https://mimumimu.net/blog/2021/01/16/%e3%82%b3%e3%83%b3%e3%82%bd%e3%83%bc%e3%83%ab%e3%81%a7-optane-memory-%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/" data-a2a-title="コンソールで Optane Memory を有効にする"></a></p>The post <a href="https://mimumimu.net/blog/2021/01/16/%e3%82%b3%e3%83%b3%e3%82%bd%e3%83%bc%e3%83%ab%e3%81%a7-optane-memory-%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/">コンソールで Optane Memory を有効にする</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2021/01/16/%e3%82%b3%e3%83%b3%e3%82%bd%e3%83%bc%e3%83%ab%e3%81%a7-optane-memory-%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Writeup : 2020年に修正されたとある脆弱性について</title>
		<link>https://mimumimu.net/blog/2020/12/31/writeup-2020%e5%b9%b4%e3%81%ab%e4%bf%ae%e6%ad%a3%e3%81%95%e3%82%8c%e3%81%9f%e3%81%a8%e3%81%82%e3%82%8b%e8%84%86%e5%bc%b1%e6%80%a7%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/</link>
					<comments>https://mimumimu.net/blog/2020/12/31/writeup-2020%e5%b9%b4%e3%81%ab%e4%bf%ae%e6%ad%a3%e3%81%95%e3%82%8c%e3%81%9f%e3%81%a8%e3%81%82%e3%82%8b%e8%84%86%e5%bc%b1%e6%80%a7%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/#respond</comments>
		
		<dc:creator><![CDATA[みむら]]></dc:creator>
		<pubDate>Thu, 31 Dec 2020 14:36:09 +0000</pubDate>
				<category><![CDATA[雑記]]></category>
		<guid isPermaLink="false">https://mimumimu.net/blog/?p=5827</guid>

					<description><![CDATA[<p>どうもみむらです。 年末です。後数時間で年が変わります。私はといえば、「千葉県少年少女オーケストラとアキラさんの大発見コンサート2020」の放送を見ながら、この記事を書き終えたらソバをと最後の力をふりしぼっているところで [&#8230;]</p>
The post <a href="https://mimumimu.net/blog/2020/12/31/writeup-2020%e5%b9%b4%e3%81%ab%e4%bf%ae%e6%ad%a3%e3%81%95%e3%82%8c%e3%81%9f%e3%81%a8%e3%81%82%e3%82%8b%e8%84%86%e5%bc%b1%e6%80%a7%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/">Writeup : 2020年に修正されたとある脆弱性について</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2020%2F12%2F31%2Fwriteup-2020%25e5%25b9%25b4%25e3%2581%25ab%25e4%25bf%25ae%25e6%25ad%25a3%25e3%2581%2595%25e3%2582%258c%25e3%2581%259f%25e3%2581%25a8%25e3%2581%2582%25e3%2582%258b%25e8%2584%2586%25e5%25bc%25b1%25e6%2580%25a7%25e3%2581%25ab%25e3%2581%25a4%25e3%2581%2584%25e3%2581%25a6%2F&amp;linkname=Writeup%20%3A%202020%E5%B9%B4%E3%81%AB%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%82%E3%82%8B%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2020%2F12%2F31%2Fwriteup-2020%25e5%25b9%25b4%25e3%2581%25ab%25e4%25bf%25ae%25e6%25ad%25a3%25e3%2581%2595%25e3%2582%258c%25e3%2581%259f%25e3%2581%25a8%25e3%2581%2582%25e3%2582%258b%25e8%2584%2586%25e5%25bc%25b1%25e6%2580%25a7%25e3%2581%25ab%25e3%2581%25a4%25e3%2581%2584%25e3%2581%25a6%2F&amp;linkname=Writeup%20%3A%202020%E5%B9%B4%E3%81%AB%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%82%E3%82%8B%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2020%2F12%2F31%2Fwriteup-2020%25e5%25b9%25b4%25e3%2581%25ab%25e4%25bf%25ae%25e6%25ad%25a3%25e3%2581%2595%25e3%2582%258c%25e3%2581%259f%25e3%2581%25a8%25e3%2581%2582%25e3%2582%258b%25e8%2584%2586%25e5%25bc%25b1%25e6%2580%25a7%25e3%2581%25ab%25e3%2581%25a4%25e3%2581%2584%25e3%2581%25a6%2F&amp;linkname=Writeup%20%3A%202020%E5%B9%B4%E3%81%AB%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%82%E3%82%8B%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2020%2F12%2F31%2Fwriteup-2020%25e5%25b9%25b4%25e3%2581%25ab%25e4%25bf%25ae%25e6%25ad%25a3%25e3%2581%2595%25e3%2582%258c%25e3%2581%259f%25e3%2581%25a8%25e3%2581%2582%25e3%2582%258b%25e8%2584%2586%25e5%25bc%25b1%25e6%2580%25a7%25e3%2581%25ab%25e3%2581%25a4%25e3%2581%2584%25e3%2581%25a6%2F&#038;title=Writeup%20%3A%202020%E5%B9%B4%E3%81%AB%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%82%E3%82%8B%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" data-a2a-url="https://mimumimu.net/blog/2020/12/31/writeup-2020%e5%b9%b4%e3%81%ab%e4%bf%ae%e6%ad%a3%e3%81%95%e3%82%8c%e3%81%9f%e3%81%a8%e3%81%82%e3%82%8b%e8%84%86%e5%bc%b1%e6%80%a7%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/" data-a2a-title="Writeup : 2020年に修正されたとある脆弱性について"></a></p>
<p class="wp-block-paragraph">どうもみむらです。</p>



<p class="wp-block-paragraph">年末です。後数時間で年が変わります。<br>私はといえば、「千葉県少年少女オーケストラとアキラさんの大発見コンサート2020」の放送を見ながら、この記事を書き終えたらソバをと最後の力をふりしぼっているところです。</p>



<p class="wp-block-paragraph">宮川彬良さんのアルバム、時々仕事中にも聞いておりますが<br>音楽の中に遊びというか楽しみポイントが多数含まれているのもあって、すごい人だなと思うわけです。</p>



<p class="wp-block-paragraph">・・・いや、今回はそういうことを書きたいわけではなくて。</p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">今年、9月頃にとある一つの脆脆弱性が修正されました。</p>



<p class="wp-block-paragraph">私が報告者になっているもので古いバージョンの製品に含まれていたものではありますが、<br>色々なベンダーさんでもやってしまいそうな知見が多々ありましたので<br>軽くご紹介できたらな、と。</p>



<p class="wp-block-paragraph">なお、仕事柄脆弱性診断は行っておりますが、<br>趣味の範囲での発見で既に修正されているものになります。</p>



<p class="wp-block-paragraph">またこの記事は<span style="text-decoration: underline;">特定の製品やブランドを貶めることは一切目的としておりません</span>。<br><span style="text-decoration: underline;">自社の製品に対して「こういう脆弱性あるかも知れない」という気づき</span>として使って頂くことを目的としておりますので、ご理解ください。</p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">今回の脆弱性では<br>「ソフトウェアアップデート」の処理において下記のような問題点がありました。</p>



<ul class="wp-block-list"><li>ソフトウェアアップデートのファイルの検証に不備があり<br>任意のファイルを挿入できた。</li><li>ソフトウェアアップデートのファイルの処理に不備があり<br>高権限で任意のコードを実行できた。</li></ul>



<h3 class="wp-block-heading">1．ソフトウェアアップデートのファイル検証</h3>



<p class="wp-block-paragraph">今回のソフトウェアではアップデートの方式が下記のような仕組みになっていました：</p>



<ol class="wp-block-list"><li>サーバからアップデートのメタ情報を取得する</li><li>メタ情報に手元のソフトウェアより新しいソフトウェアがあればダウンロードする</li><li>アップデートに際し追加の処理が必要な場合は実行する</li></ol>



<p class="wp-block-paragraph">今回一つ目の問題点だったのは<br>「ソフトウェアアップデートのファイル検証」が不十分だったことでした。</p>



<p class="wp-block-paragraph">ダウンロードしたファイルに付属しているメタデータは下記のような構造でした。<br>（実際にはもっと多くの情報などがあり、このように簡易な形にはなっていません）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="784" height="135" src="https://mimumimu.net/blog/wp-content/uploads/2020/12/image-5.png" alt="" class="wp-image-5832"/></figure>



<p class="wp-block-paragraph">ここにおいてのファイルチェックの方法に下記の不備がありました。<br>（繰り返しではありますが既に修正済みです）</p>



<ul class="wp-block-list"><li>&#8220;file&#8221; 要素で記述されているファイルのみチェックされる<br>→ <span style="text-decoration: underline;">記述されていないファイルはチェックされない</span></li><li>&#8220;file&#8221; 要素で書かれている内容が MD5 や SHA1によるファイルのハッシュのみだった。<br>→ ファイルの整合性は検証できるが、<br>　「<span style="text-decoration: underline;">信頼出来るところからのものか」を検証できない</span></li></ul>



<p class="wp-block-paragraph">今回のケースでは、その先の処理でファイルの信頼性の検証は行われていましたが<br>ソフトウェアアップデートの処理を作成する際に上記のような項目のテストは<br>抜けがちになるのではないかと感じています。</p>



<p class="wp-block-paragraph">対策としては下記のような追加の検証処理の追加や、<br>テストコードの追加が出来るとよいかと思います。</p>



<ol class="wp-block-list"><li>MD5 や SHA1 などの整合性チェックに加えて<br><span style="text-decoration: underline;">電子署名を用いたアップデートファイルの信頼性の検証</span>を付加する</li><li>アップデートファイルが zip や tar といった一般的なアーカイブファイルを併用している場合などは、<span style="text-decoration: underline;">メタ情報などに記述されていないファイルが入っていた場合に検証を失敗させる</span>などする。</li></ol>



<p class="wp-block-paragraph">1に関しては例えば OpenSSL を用いて下記のような処理で実現できます：</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code># ベンダーが持つ秘密鍵で電子署名を作成する
$ openssl dgst -sha256 -sign private-key.pem patch.zip &gt; patch.sig

# 受け取り側では公開鍵と提供された署名 (patch.sig) を用いて検証する
$ openssl dgst -sha256 -verify public-key.pem -signature patch.sig patch.zip</code></pre></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">C# ですと &#8220;RSAPKCS1SignatureDeformatter.VerifySignature&#8221; などを用いて<br>実現するのも良いと思います。</p>



<p class="wp-block-paragraph">参考例 / 引用元 : デジタル署名を作成、検証する &#8211; .NET Tips (VB.NET,C#&#8230;)<br><a href="https://dobon.net/vb/dotnet/string/digitalsignature.html">https://dobon.net/vb/dotnet/string/digitalsignature.html</a><br>( 一部コードの修正などを筆者側で加えています )</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-csharp" data-lang="C#"><code>using System;
using System.Text;
using System.Security.Cryptography;

/// &lt;summary&gt;
/// デジタル署名を作成する
/// &lt;/summary&gt;
/// &lt;param name=&quot;message&quot;&gt;署名を付けるメッセージ&lt;/param&gt;
/// &lt;param name=&quot;privateKey&quot;&gt;署名に使用する秘密鍵&lt;/param&gt;
/// &lt;returns&gt;作成された署名&lt;/returns&gt;
public static string CreateDigitalSignature(
    string message, string privateKey)
{
    //メッセージをバイト型配列にして、SHA1ハッシュ値を計算
    var msgData = Encoding.UTF8.GetBytes(message);
    var hashData = (new SHA1Managed()).ComputeHash(msgData);

    //RSACryptoServiceProviderオブジェクトの作成
    var rsa = new RSACryptoServiceProvider();
    //秘密鍵を使って初期化
    rsa.FromXmlString(privateKey);

    //RSAPKCS1SignatureFormatterオブジェクトを作成
    var rsaFormatter = new RSAPKCS1SignatureFormatter(rsa);
    //署名の作成に使用するハッシュアルゴリズムを指定
    rsaFormatter.SetHashAlgorithm(&quot;SHA1&quot;);

    //署名を作成し、文字列に変換して返す
    return Convert.ToBase64String(rsaFormatter.CreateSignature(hashData));
}

/// &lt;summary&gt;
/// デジタル署名を検証する
/// &lt;/summary&gt;
/// &lt;param name=&quot;message&quot;&gt;署名の付いたメッセージ&lt;/param&gt;
/// &lt;param name=&quot;signature&quot;&gt;署名&lt;/param&gt;
/// &lt;param name=&quot;publicKey&quot;&gt;送信者の公開鍵&lt;/param&gt;
/// &lt;returns&gt;認証に成功した時はTrue。失敗した時はFalse。&lt;/returns&gt;
public static bool VerifyDigitalSignature(
    string message, string signature, string publicKey)
{
    var msgData = Encoding.UTF8.GetBytes(message);
    var hashData = (new SHA1Managed()).ComputeHash(msgData);

    //RSACryptoServiceProviderオブジェクトの作成
    var rsa = new RSACryptoServiceProvider();
    //公開鍵を使って初期化
    rsa.FromXmlString(publicKey);

    var rsaDeformatter = new RSAPKCS1SignatureDeformatter(rsa);
    //署名の検証に使用するハッシュアルゴリズムを指定
    rsaDeformatter.SetHashAlgorithm(&quot;SHA1&quot;);

    //署名を検証し、結果を返す
    return rsaDeformatter.VerifySignature(hashData,
        Convert.FromBase64String(signature));
}</code></pre></div>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">余談ですが、今回脆弱性を発見するきっかけになったのは<br>「メタ情報」に容易にアクセスできたことでした。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="874" height="367" src="https://mimumimu.net/blog/wp-content/uploads/2020/12/image-1.png" alt="" class="wp-image-5828"/></figure>



<p class="wp-block-paragraph">今回、ソフトウェアが Windows の Proxy 設定をアップデート時に使用するようになっており、プロキシを挟んだ途端に上記のように通信が確認出来る状態になりました。</p>



<p class="wp-block-paragraph">Windows では Proxy 設定は、グループポリシ等で制約している場合を除き、</p>



<pre class="wp-block-preformatted">KEY : HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
Element: ProxyServer 
Type : REG_SZ</pre>



<p class="wp-block-paragraph">またこのとき、アップデートの通信に関し HTTPS 通信で行われていましたが、<br>HTTPS 通信の証明書の検証は行われておらず、改竄した内容がそのまま信頼される状態になっていました。</p>



<p class="wp-block-paragraph">HTTPS 通信の証明書の検証は、一般的に検証をした方が不必要なリスクから守ることができる場合が多いため行った方が良いです。</p>



<p class="wp-block-paragraph">ただ今回のような「アップデータ」の場合は、検証に失敗したことによってアップデートが出来なくなるという可能性も考えられますので、どちらのリスクを取るかは検討した方が良いかと思いますし、先述のファイルに対する電子署名を信頼して、HTTPS 通信の証明書の検証はしないという選択もありだと思います。</p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">また、今回の脆弱性を外部から悪用する場合、DNS の変更か Proxy の変更が必要でした。<br>（その他の方法もありますが割愛します）</p>



<p class="wp-block-paragraph">世の中を見渡してみますと「インターネットの高速化」などを偽って、ローカルの DNS 設定を書き換えてしまうマルウェア ( 例：<a href="https://eset-info.canon-its.jp/malware_info/trend/detail/161017.html">ユーザーに気付かれずにひそかにDNS設定を変えてしまう「DNSアンロッカー」</a> / マルウェア情報局 ) や 脆弱なルータを突いて設定を書き換えてしまう攻撃 (例： <a href="https://blog.kaspersky.co.jp/hacked-routers-dns-hijacking/23100/">ルーターをハッキングし、利用者をフィッシングサイトへリダイレクトする攻撃 </a>/ カスペルスキー公式ブログ ) も出ている背景がありますので、<br>必ずしもかなり難しい攻撃ではないと考えられます。</p>



<p class="wp-block-paragraph">ですので、DNS や HTTPS の証明書といった経路に対して信頼を付与するのではなく、通信内容（今回の場合はアップデートのファイル）について「エンド-エンド」での信頼を前提として、その上で HTTPS の証明書検証をするといったような形がよいと考えます。</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">2．ソフトウェアアップデート処理が高権限で走っている</h3>



<p class="wp-block-paragraph">アップデートの処理がコンピュータ内で一番高い権限を持っているプロセスで実行されており、アップデート処理を細工することで任意のプログラムを一番高い権限で実行できるようになっていました。</p>



<p class="wp-block-paragraph">アップデートファイルの展開処理などが高い権限で実行されている場合<br>アーカイブファイルの細工 (例 : <a href="https://www.jpcert.or.jp/newsflash/2018060601.html">Zip Slip</a> / ディレクトリトラバーサルが発生する zip ファイルを用いて、意図しないファイルの書き換えを行えてしまう ) をはじめとした色々な要因によってファイルの意図しない変更が発生する可能性があります。</p>



<p class="wp-block-paragraph">対策としては、ファイルの検証は低い権限で行うなど、不必要に高い権限を与えないように設計するのが良いかと思います。</p>



<p class="wp-block-paragraph">また、今回の例ではありませんでしたが<br>アップデートの処理が書かれたプログラム（アップデータ）を配布ファイルに含めている実装もいくつか見られます。</p>



<p class="wp-block-paragraph">この場合、可能であれば既に稼働中のプログラムに処理を入れ（ファイルの書き換えを稼働中の信頼出来るプログラムによって行うようにし）権限を徐々に与えるという形が良いでしょう。</p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">そばが食べたい一心で書いていましたので、<br>途中誤字や設計としてそれはオカシイ！という点もあるかも知れません。<br>指摘等は受け付けておりますので、気兼ねなくメッセージをいただければ幸いです。</p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">余談ではありますが、「脆弱性情報」と聞くとその製品を叩いたり「こんな危険なものは使えない！」と思われる方がいらっしゃると思うのですが、それは違うと思っています。</p>



<p class="wp-block-paragraph">逆に「実はあるのに、みんな黙っている世界」というのを考えてみたら、そっちの方が怖いかと思いますし、それでしたら「どういうことがあって狙われる、こういう風にすることで修正できる」という話を優しく広げていくことが大事なのではないかなと。</p>



<p class="wp-block-paragraph">私自身、元々ソフトウェアディベロッパーから、今は情報セキュリティ関係を主軸にしていますが、正直「情報セキュリティの人たちすごく怖いな・・」というのはかつてありまして、今も時々感じることはあります。</p>



<p class="wp-block-paragraph">「これが分かってて当然」「これが出来ないのはオカシイ」という話がよく出てくる世の中ではありますが、失敗しても治していくことができればそれでいいんじゃないかな、とかつての経験とかを振り返りながら思う今日この頃です。<br>（何かありましたら気兼ねなく聞いてもらえればと！）</p>



<p class="wp-block-paragraph">それでは、よいお年をお迎えください！</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2020%2F12%2F31%2Fwriteup-2020%25e5%25b9%25b4%25e3%2581%25ab%25e4%25bf%25ae%25e6%25ad%25a3%25e3%2581%2595%25e3%2582%258c%25e3%2581%259f%25e3%2581%25a8%25e3%2581%2582%25e3%2582%258b%25e8%2584%2586%25e5%25bc%25b1%25e6%2580%25a7%25e3%2581%25ab%25e3%2581%25a4%25e3%2581%2584%25e3%2581%25a6%2F&amp;linkname=Writeup%20%3A%202020%E5%B9%B4%E3%81%AB%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%82%E3%82%8B%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2020%2F12%2F31%2Fwriteup-2020%25e5%25b9%25b4%25e3%2581%25ab%25e4%25bf%25ae%25e6%25ad%25a3%25e3%2581%2595%25e3%2582%258c%25e3%2581%259f%25e3%2581%25a8%25e3%2581%2582%25e3%2582%258b%25e8%2584%2586%25e5%25bc%25b1%25e6%2580%25a7%25e3%2581%25ab%25e3%2581%25a4%25e3%2581%2584%25e3%2581%25a6%2F&amp;linkname=Writeup%20%3A%202020%E5%B9%B4%E3%81%AB%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%82%E3%82%8B%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=https%3A%2F%2Fmimumimu.net%2Fblog%2F2020%2F12%2F31%2Fwriteup-2020%25e5%25b9%25b4%25e3%2581%25ab%25e4%25bf%25ae%25e6%25ad%25a3%25e3%2581%2595%25e3%2582%258c%25e3%2581%259f%25e3%2581%25a8%25e3%2581%2582%25e3%2582%258b%25e8%2584%2586%25e5%25bc%25b1%25e6%2580%25a7%25e3%2581%25ab%25e3%2581%25a4%25e3%2581%2584%25e3%2581%25a6%2F&amp;linkname=Writeup%20%3A%202020%E5%B9%B4%E3%81%AB%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%82%E3%82%8B%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fmimumimu.net%2Fblog%2F2020%2F12%2F31%2Fwriteup-2020%25e5%25b9%25b4%25e3%2581%25ab%25e4%25bf%25ae%25e6%25ad%25a3%25e3%2581%2595%25e3%2582%258c%25e3%2581%259f%25e3%2581%25a8%25e3%2581%2582%25e3%2582%258b%25e8%2584%2586%25e5%25bc%25b1%25e6%2580%25a7%25e3%2581%25ab%25e3%2581%25a4%25e3%2581%2584%25e3%2581%25a6%2F&#038;title=Writeup%20%3A%202020%E5%B9%B4%E3%81%AB%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%82%E3%82%8B%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" data-a2a-url="https://mimumimu.net/blog/2020/12/31/writeup-2020%e5%b9%b4%e3%81%ab%e4%bf%ae%e6%ad%a3%e3%81%95%e3%82%8c%e3%81%9f%e3%81%a8%e3%81%82%e3%82%8b%e8%84%86%e5%bc%b1%e6%80%a7%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/" data-a2a-title="Writeup : 2020年に修正されたとある脆弱性について"></a></p>The post <a href="https://mimumimu.net/blog/2020/12/31/writeup-2020%e5%b9%b4%e3%81%ab%e4%bf%ae%e6%ad%a3%e3%81%95%e3%82%8c%e3%81%9f%e3%81%a8%e3%81%82%e3%82%8b%e8%84%86%e5%bc%b1%e6%80%a7%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/">Writeup : 2020年に修正されたとある脆弱性について</a> first appeared on <a href="https://mimumimu.net/blog">みむらの手記手帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mimumimu.net/blog/2020/12/31/writeup-2020%e5%b9%b4%e3%81%ab%e4%bf%ae%e6%ad%a3%e3%81%95%e3%82%8c%e3%81%9f%e3%81%a8%e3%81%82%e3%82%8b%e8%84%86%e5%bc%b1%e6%80%a7%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
