📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の94版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
ここでは、Linuxホスト上にlibvirtd + QEMUで仮想マシンを構築して、グラフィックボードやUSBポートを物理PCと同様に使用できるように設定する。<br> | |||
<br> | <br> | ||
Linuxの欠点の1つは、利用できるソフトウェアがそれほど多くないことである。<br> | |||
最近では、多くのソフトウェアがLinuxに移植されたのは事実であるが、まだまだWindows専用に開発されたソフトウェアが多い。<br> | |||
<br> | <br> | ||
Linuxでは、これらのWindows専用ソフトウェアを使用するために、以下に示す4つの方法がある。<br> | |||
* Wineを使用する。 | |||
*: ただし、Wineは、古いソフトウェアなら機能する場合が多い。 | |||
* デュアルブートセットアップを使用して、Windows専用ソフトウェアを使用するたびにWindowsをブートする。 | |||
*: ただし、手間が掛かる。 | |||
* ホストOS型の仮想化ソフトウェアにWindowsの仮想マシンを構築する。 | |||
*: ただし、グラフィック性能が活かせない。 | |||
* GPUパススルーを備えたWindowsの仮想マシンを使用する。 | |||
*: ハードウェアの前提条件がいくつかある (特定のCPUとGPUでのみ機能する) が、適切なハードウェアがあれば可能である。 | |||
<br> | |||
基本的な設定の流れは、次のようになる。<br> | |||
# CPUの仮想化支援機能(Intel VT-xまたはAMD-Vi)を有効にする | # CPUの仮想化支援機能(Intel VT-xまたはAMD-Vi)を有効にする | ||
# グラフィックボードのパススルー設定 | # グラフィックボードのパススルー設定 | ||
# | #* IOMMUの有効化 | ||
# | #* Linuxホストのグラフィックボード無効化 | ||
# | # KVM / QEMUのインストール | ||
# ゲストOS作成 | # ゲストOS作成 | ||
# | #* 仮想マシンのチューニングを行った後に仮想マシンをインストールする。 | ||
# グラフィックボードのパススルー | # グラフィックボードのパススルー | ||
# | # USBデバイスのパススルー設定を行う。<br>または、SynergyあるいはBarrier (開発停止) を使用する。<br><br>Synergyのインストールは、[[インストール - マウス・キーボード共有ソフトウェア]]のページを参照すること。 | ||
<br> | <br> | ||
<br> | <br> | ||
ここでは、実際に設定を行うPCの環境は、以下の通りである。<br> | ここでは、実際に設定を行うPCの環境は、以下の通りである。<br> | ||
* CPU : Ryzen 3900X | * CPU | ||
* | *: Ryzen 3900X | ||
* | * M/B | ||
* | *: GIGABYTE X570 UD(BIOS F37e) | ||
* OS : | * GPU 1 | ||
*: 玄人志向 Radeon RX550 LP | |||
* GPU 2 | |||
*: GIGABYTE GeForce GT1030 | |||
* OS | |||
*: SLE (Linuxカーネル 5.14.21) | |||
<br><br> | <br><br> | ||
| 56行目: | 66行目: | ||
<br> | <br> | ||
==== F12より新しいBIOS ==== | ==== F12より新しいBIOS ==== | ||
* AMD-Viの有効化 | * AMD-Viの有効化 | ||
*: [M.I.T.] - [高度な周波数設定] - [Advanced CPU Settings] - [SVM Mode]を[Enable]に変更する。 | *: [M.I.T.] - [高度な周波数設定] - [Advanced CPU Settings] - [SVM Mode]を[Enable]に変更する。 | ||
| 88行目: | 97行目: | ||
後は、下記の[ゲストOSの作成]セクションに移動して、VMの作成および設定を行う。<br> | 後は、下記の[ゲストOSの作成]セクションに移動して、VMの作成および設定を行う。<br> | ||
<br> | <br> | ||
なお、この手順は以下に示す動画を参考にしている。<br> | |||
<center><embedvideo service="youtube">https://youtu.be/Nu2bHV8mA6c</embedvideo></center><br> | |||
<br><br> | <br><br> | ||
== KVM / QEMUのインストール == | == KVM / QEMUのインストール == | ||
KVM / QEMUおよび依存関係のライブラリをインストールする。<br> | KVM / QEMUおよび依存関係のライブラリをインストールする。<br> | ||
* SLES / openSUSE | |||
*: <code>sudo zypper install libvirt libvirt-client libvirt-daemon virt-manager virt-install virt-viewer \</code> | |||
*: <code>qemu qemu-kvm qemu-ovmf-x86_64 qemu-tools \</code> | |||
*: <code>biosdevname</code> | |||
*: <br> | |||
* SLED | |||
*: ソースコードからKVMとQEMUをインストールする場合、[[インストール - KVM#ソースコードからインストール]]を参照する。 | |||
*: <br> | |||
*: または、以下のパッケージをダウンロードして、~/.profileファイル等に環境変数PATHおよびLD_LIBRARY_PATHを追記する。 | |||
*: libvirt : https://software.opensuse.org/package/libvirt | |||
*: libvirt-client : https://software.opensuse.org/package/libvirt-client | |||
*: libvirt-daemon : https://software.opensuse.org/package/libvirt-daemon | |||
*: virt-manager : https://software.opensuse.org/package/virt-manager | |||
*: virt-install : https://software.opensuse.org/package/virt-install | |||
*: virt-viewer : https://software.opensuse.org/package/virt-viewer?search_term=virt-viewer | |||
*: qemu : https://software.opensuse.org/package/qemu | |||
*: qemu-kvm : https://software.opensuse.org/package/qemu-kvm | |||
*: qemu-ovmf-x86_64 : https://software.opensuse.org/package/qemu-ovmf-x86_64 | |||
*: qemu-tools : https://software.opensuse.org/package/qemu-tools?search_term=qemu-tools | |||
<br> | <br> | ||
[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso こちらのWebサイト]から、VirtIOドライバをダウンロードする。<br> | [https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso こちらのWebサイト]から、VirtIOドライバをダウンロードする。<br> | ||
<br><br> | |||
== ラップトップPC上のdGPUを通過させるための手順 == | |||
この手順は、ACPIの呼び出しを使用してdGPUファームウェアを読み込まないラップトップPCにのみ適用される。<br> | |||
dGPUファームウェアを読み込むためにACPIの呼び出しを使用するラップトップPCについては、u/jscinoz'sのoptimus-vfio-docsを参照すること。<br> | |||
<br> | |||
現状、ACPIの呼び出しでdGPUがファームウェアを読み込むかどうかを確認する方法は不明である。<br> | |||
<br> | |||
最近の多くのOptimusなラップトップPCはMUXレス方式を採用しているが、<br> | |||
HP/Thinkpad/Dellモバイルワークステーション、Clevo P650、Alienwareの一部等はMUXed方式を採用している。<br> | |||
<br> | |||
Optimusソリューションが登場する前の時代には、グラフィックスカードを切り替えるために再起動が必要で、1度に1つしか使用できない古いMUXed方式があったが、<br> | |||
最新のMUXed方式では、OptimusとdGPUのみを切り替えることができ、Optimus使用時にはディスプレイ出力ポートをdGPUに直接接続することもできる。(一部のラップトップPCにのみ適用)<br> | |||
<br> | |||
MUXレス方式でCode 43(エラーコード)に遭遇したPCは、(ゲストOSでdGPUを見ることができ、NVIDIAドライバも問題なくインストールできるにもかかわらず)<br> | |||
[https://www.reddit.com/r/VFIO/comments/6q7bf5/short%20report%20wip%20got%20the%20nvidia%20gpu%20to/ ACPIの呼び出しがdGPUファームウェアの読み込みに失敗したため]である。<br> | |||
<br> | |||
これは、NVIDIAドライバがvfio-pciを通して提供されたROMを使用する代わりに、UEFIからdGPUのROMを読み込もうとしているからである。<br> | |||
<br> | |||
このような問題が発生した場合は、[https://github.com/jscinoz/optimus-vfio-docs u/jscinozのoptimus-vfio-docs]を参照すること。<br> | |||
<br> | |||
MUXレスの成功報告があるラップトップPCを以下に示す。<br> | |||
* MSI GS60-040XFR | |||
* MSI GS60 2PC | |||
* ASUS G751JM | |||
<br> | |||
[[ファイル:KVM GPU Passthrough Laptop 1.jpg|フレームなし|中央]] | |||
<br> | |||
この手順で可能になる事柄を以下に示す。<br> | |||
* Bumblebeeを使用することにより、オンデマンドでNVIDIA dGPUの電源オン / オフすることが可能である。 | |||
* ホストPCにNVIDIA dGPUが不要の場合は、ゲストOSにNVIDIA dGPUを渡すことができる。 | |||
* ゲストOSのシャットダウン時にdGPUを戻すことができる。 | |||
* dGPUのバインド / アンバインドプロセス中に再起動する必要はない。 | |||
* 外部ディスプレイは必須ではない。(ハードウェアとVMが実行しているWindowsのバージョンに依存する) | |||
* また、外部ディスプレイを直接ゲストOSに接続することができる。 | |||
<br> | |||
使用しているNVIDIAグラフィックスカード (dGPU) がMUXedまたはMUXlessかどうかを確認する。<br> | |||
BIOS/UEFIオプションにおいて、<u>integrated graphics</u> / <u>PCI graphics</u>が選択できる場合、MUXedである。<br> | |||
選択できない場合はMUXレスである。<br> | |||
<br> | |||
MUXedの場合は、https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28 を参照すること。<br> | |||
MUXレスの場合、https://github.com/jscinoz/optimus-vfio-docs を参照すること。<br> | |||
<br><br> | <br><br> | ||
| 139行目: | 208行目: | ||
次に、IOMMUグループが有効であることを確認する。<br> | 次に、IOMMUグループが有効であることを確認する。<br> | ||
以下のシェルスクリプトを作成して実行する。(ここでは、シェルスクリプトのファイル名をlsIOMMU.shとする)<br> | 以下のシェルスクリプトを作成して実行する。(ここでは、シェルスクリプトのファイル名をlsIOMMU.shとする)<br> | ||
< | <syntaxhighlight lang="sh"> | ||
#!/bin/bash | #!/bin/bash | ||
| 148行目: | 217行目: | ||
lspci -nns "${d##*/}" | lspci -nns "${d##*/}" | ||
done; | done; | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 実行 | # 実行 | ||
| 171行目: | 240行目: | ||
<br> | <br> | ||
<u>'''2つのグラフィックボードがそれぞれ異なる場合(nVidia製とATI製)'''</u><br> | <u>'''2つのグラフィックボードがそれぞれ異なる場合(nVidia製とATI製)'''</u><br> | ||
/etc/modprobe.d/50-blacklist.confファイルを編集して、以下の内容を追記する。<br> | /lib/modprobe.d/50-blacklist.confファイル、または、/etc/modprobe.d/50-blacklist.confファイルを編集して、以下の内容を追記する。<br> | ||
# SUSE 15.4以降の場合 | |||
sudo vi /lib/modprobe.d/50-blacklist.conf | |||
# SUSE 15.3以前の場合 | |||
sudo vi /etc/modprobe.d/50-blacklist.conf | |||
<br> | |||
# LinuxホストにATI製グラフィックボード、VMにnVidia製グラフィックボードを使用する場合 | # LinuxホストにATI製グラフィックボード、VMにnVidia製グラフィックボードを使用する場合 | ||
blacklist nouveau | blacklist nouveau | ||
| 181行目: | 256行目: | ||
<br> | <br> | ||
<u>'''2つのグラフィックボードが同じ場合(両方ともnVidia製または両方ともATI製)'''</u><br> | <u>'''2つのグラフィックボードが同じ場合(両方ともnVidia製または両方ともATI製)'''</u><br> | ||
まず、/etc/modprobe.d/gpu-passthrough.confファイルを作成して、以下のように編集する。<br> | まず、/lib/modprobe.d/gpu-passthrough.confファイル、または、/etc/modprobe.d/gpu-passthrough.confファイルを作成して、以下のように編集する。<br> | ||
ここで、<VMで使用するGPUのベンダー>と<VMで使用するGPUのモデルID>は、上記セクションで実行したlsIOMMU.shの出力結果に記載されている。<br> | ここで、<VMで使用するGPUのベンダー>と<VMで使用するGPUのモデルID>は、上記セクションで実行したlsIOMMU.shの出力結果に記載されている。<br> | ||
# /etc/modprobe.d/gpu-passthrough.confファイル | # SUSE 15.4以降の場合 | ||
sudo vi /lib/modprobe.d/gpu-passthrough.conf | |||
# SUSE 15.3以前の場合 | |||
sudo vi /etc/modprobe.d/gpu-passthrough.conf | |||
<br> | |||
# /lib/modprobe.d/gpu-passthrough.confファイル または /etc/modprobe.d/gpu-passthrough.confファイル | |||
options vfio-pci ids=<VMで使用するGPUのベンダー>,<VMで使用するGPUのモデルID> | options vfio-pci ids=<VMで使用するGPUのベンダー>,<VMで使用するGPUのモデルID> | ||
<br> | <br> | ||
例えば、上記セクションの結果から、以下のように記述する。<br> | 例えば、上記セクションの結果から、以下のように記述する。<br> | ||
また、<code>options vfio- | また、<code>options vfio-pci disable_vga=1</code>は、ホストPCがLinuxカーネル 4.1以降、かつ、ゲストOSがUEFIの場合のみ有効である。<br> | ||
VGAアービトレーションがホストデバイスに干渉するのを防ぐのに役立つ。<br> | VGAアービトレーションがホストデバイスに干渉するのを防ぐのに役立つ。<br> | ||
# /lib/modprobe.d/gpu-passthrough.confファイル | |||
# または | |||
# /etc/modprobe.d/gpu-passthrough.confファイル | # /etc/modprobe.d/gpu-passthrough.confファイル | ||
options vfio-pci ids=10de:1d01,10de:0fb8 | options vfio-pci ids=10de:1d01,10de:0fb8 | ||
options vfio- | options vfio-pci disable_vga=1 | ||
<br> | <br> | ||
また、Windows10 1803以降をインストールする場合は、以下の設定も追記する。<br> | また、Windows10 1803以降をインストールする場合は、以下の設定も追記する。<br> | ||
# /etc/modprobe.d/gpu-passthrough.confファイル | しかし、Linuxカーネル 5.9.1以降はこのオプションが問題を引き起こすという報告がある。<br> | ||
個人的には、<code>kvm.ignore_msrs=1</code>オプションを付加して、問題が発生する場合は当オプションを削除する方法を推奨する。<br> | |||
# SUSE 15.4以降の場合 | |||
sudo vi /lib/modprobe.d/gpu-passthrough.conf | |||
# SUSE 15.3以前の場合 | |||
sudo vi /etc/modprobe.d/gpu-passthrough.conf | |||
<br> | |||
# /lib/modprobe.d/gpu-passthrough.confファイル または /etc/modprobe.d/gpu-passthrough.confファイル | |||
options kvm ignore_msrs=1 | options kvm ignore_msrs=1 | ||
<br> | <br> | ||
次に、/etc/default/ | 自動ロードするモジュールのリストにドライバを追加するため、/etc/modules-load.d/vfio-pci.confファイルを作成して、以下の内容を記述する。<br> | ||
vfio- | sudo vi /etc/modules-load.d/vfio-pci.conf | ||
<br> | |||
# /etc/modules-load.d/vfio-pci.confファイル | |||
# Intel CPUの場合 | |||
pci_stub | |||
vfio | |||
vfio_iommu_type1 | |||
vfio_pci | |||
kvm | |||
kvm_intel | |||
# AMD CPUの場合 | |||
pci_stub | |||
vfio | |||
vfio_iommu_type1 | |||
vfio_pci | |||
kvm | |||
kvm_amd | |||
<br> | |||
次に、/etc/default/grubファイルを開く。<br> | |||
vfio-pciをパススルーするGPUにバインドするため、GRUB_CMDLINE_LINUX_DEFAULTに<code>rd.driver.pre=vfio-pci</code>を追記する。<br> | |||
# /etc/default/grubファイル | # /etc/default/grubファイル | ||
rd.driver.pre=vfio-pci | |||
GRUB_CMDLINE_LINUX_DEFAULT="〜 rd.driver.pre=vfio-pci" | |||
<br><br> | <br><br> | ||
== | == vfio-pciドライバの先読み設定 == | ||
vfio-pciドライバの先読み設定を行う。<br> | |||
/etc/dracut.conf.d/gpu-passthrough. | <br> | ||
SUSEおよびRedHat系は、/etc/sysconfig/kernelファイルを作成して設定する。<br> | |||
Ubuntuでは、/etc/dracut.conf.d/gpu-passthrough.confファイルを作成して設定する。<br> | |||
<u>ただし、SUSEでは、上記のどちらの手順でも正常にvfio-pciドライバの先読み設定を行うことができた。</u><br> | |||
<br> | <br> | ||
<u>'''※調査中'''</u><br> | <u>'''※調査中'''</u><br> | ||
<code>pci_stub</code>オプションは不要の可能性がある。<br> | <code>pci_stub</code>オプションは不要の可能性がある。<br> | ||
# Intel | sudo vi /etc/dracut.conf.d/gpu-passthrough.conf | ||
<br> | |||
# /etc/dracut.conf.d/gpu-passthrough.confファイル | |||
# Intel CPUの場合 | |||
add_drivers+=" pci_stub vfio vfio_iommu_type1 vfio_pci vfio_virqfd kvm kvm_intel " | add_drivers+=" pci_stub vfio vfio_iommu_type1 vfio_pci vfio_virqfd kvm kvm_intel " | ||
# AMD | # AMD CPUの場合 | ||
add_drivers+=" pci_stub vfio vfio_iommu_type1 vfio_pci vfio_virqfd kvm kvm_amd " | add_drivers+=" pci_stub vfio vfio_iommu_type1 vfio_pci vfio_virqfd kvm kvm_amd " | ||
# または | |||
# Intel CPUの場合 | |||
add_drivers+=" vfio vfio_iommu_type1 vfio_pci vfio_virqfd " | |||
# AMD CPUの場合 | |||
add_drivers+=" vfio vfio_iommu_type1 vfio_pci vfio_virqfd " | |||
<br> | <br> | ||
上記の設定を有効化するため、initrdを再構築する。<br> | |||
sudo dracut -f /boot/initrd $(uname -r) | sudo dracut -f /boot/initrd $(uname -r) | ||
<br> | <br> | ||
| 240行目: | 370行目: | ||
<br><br> | <br><br> | ||
== | == QEMUのアクセス権限の付与 == | ||
別のHDD / SSDに仮想マシンを配置する場合、初期設定ではアクセス権限エラーになる。<br> | 別のHDD / SSDに仮想マシンを配置する場合、初期設定ではアクセス権限エラーになる。<br> | ||
そこで、/etc/libvirt/qemu.confファイルに以下の設定を追記する。<br> | そこで、/etc/libvirt/qemu.confファイルに以下の設定を追記する。<br> | ||
| 253行目: | 383行目: | ||
以下では、<仮想マシン名>.qcow2ファイルを最大100[GB]の領域で仮想マシンを作成している。<br> | 以下では、<仮想マシン名>.qcow2ファイルを最大100[GB]の領域で仮想マシンを作成している。<br> | ||
qemu-img create -f qcow2 <仮想マシン名>.qcow2 100G | qemu-img create -f qcow2 <仮想マシン名>.qcow2 100G | ||
<br><br> | |||
== X11の設定 == | |||
上記の設定の状態では、PC起動時においてパススルーしたGPUを先に読み込むため、ホストOSの画面が表示されない。<br> | |||
ホストOS向けのGPUを先に読む込む必要があるため、/etc/X11/xorg.conf.installファイルに以下の設定を追記する。<br> | |||
sudo vi /etc/X11/xorg.conf.install | |||
<br> | |||
# /etc/X11/xorg.conf.installファイル | |||
# ...略 | |||
# 以下の設定を追記 | |||
Section "Device" | |||
Identifier "amdgpu" | |||
Driver "amdgpu" | |||
EndSection | |||
# 以下の設定を追記 | |||
Section "Screen" | |||
Identifier "amdgpu" | |||
Device "amdgpu" | |||
EndSection | |||
# Screen "amdgpu"を追記 | |||
Section "ServerLayout" | |||
# ...略 | |||
Screen "amdgpu" # 追加 | |||
EndSection | |||
<br><br> | <br><br> | ||
== ゲストOSの作成 == | == ゲストOSの作成 == | ||
あらかじめ、[https://www.microsoft.com/en-us/software-download/windows10ISO Microsoftの公式Webサイト]で、Windows10のisoファイルをダウンロードする。<br> | |||
併せて、[https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md virtio-winのGithub]または[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/ Fedoraの公式Webサイト]にアクセスして、virtio-win-<バージョン>.isoファイルもダウンロードする。<br> | |||
<br> | <br> | ||
==== Windows 10 / 11 / Linuxの場合 ==== | |||
# まず、<u>'''SUSE 15.1'''</u>を使用している場合は、<code>/etc/libvirt/qemu.conf</code>ファイルを開いて、nvramセクションを以下のように編集する。 | # まず、<u>'''SUSE 15.1'''</u>を使用している場合は、<code>/etc/libvirt/qemu.conf</code>ファイルを開いて、nvramセクションを以下のように編集する。 | ||
#: <code>nvram = ["/usr/share/qemu/ovmf-x86_64.bin:/usr/share/qemu/ovmf-x86_64-code.bin"]</code> | #: <code>nvram = ["/usr/share/qemu/ovmf-x86_64.bin:/usr/share/qemu/ovmf-x86_64-code.bin"]</code> | ||
| 273行目: | 433行目: | ||
# VM構成画面(以降、メイン画面という)に移動する。<br>メイン画面左の[Overview]を選択して、[Chipset:]プルダウンおよび[Firmware:]プルダウンを以下の値に設定する。 | # VM構成画面(以降、メイン画面という)に移動する。<br>メイン画面左の[Overview]を選択して、[Chipset:]プルダウンおよび[Firmware:]プルダウンを以下の値に設定する。 | ||
#: <br> | #: <br> | ||
#: | #: ホストOSがSUSE 15.1の場合 | ||
#: [Chipset:] : i440FX | #: [Chipset:] : i440FX | ||
#: [Firmware:] : BIOS | #: [Firmware:] : BIOS または UEFI | ||
#: <br> | |||
#: ホストOSがSUSE 15.2以降かつゲストOSがWindows XPの場合 | |||
#: [Chipset:] : i440FX | |||
#: [Firmware:] : BIOS または UEFI | |||
#: <br> | |||
#: ホストOSがSUSE 15.2以降かつゲストOSがWindows 7の場合 | |||
#: [Chipset:] : Q35 | |||
#: [Firmware:]は、以下のいずれかを選択する。 | |||
#: [Firmware:] : UEFI X86_64: ovmf-x86_64-smm-code.bin | |||
#: [Firmware:] : UEFI X86_64: ovmf-x86_64-code.bin | |||
#: [Firmware:] : UEFI X86_64: ovmf-x86_64-4m-code.bin | |||
#: <br> | #: <br> | ||
#: | #: ホストOSがSUSE 15.2以降かつ上記以外のゲストOSの場合 | ||
#: [Chipset:] : Q35 | #: [Chipset:] : Q35 | ||
#: [Firmware:] : ovmf-x86_64-smm-ms-code.bin | #: [Firmware:]は、以下のいずれかを選択する。 | ||
#: [Firmware:] : UEFI X86_64: ovmf-x86_64-smm-ms-code.bin | |||
#: [Firmware:] : UEFI X86_64: ovmf-x86_64-opensuse-code.bin | |||
#: <br> | #: <br> | ||
# メイン画面左の[CPUs]で、[Configuration]項目の[Model: ]プルダウンから、[host-passthrough]を選択する。(プルダウンに存在しない場合は、<code>host-passthrough</code>と入力する) | # メイン画面左の[CPUs]で、[Configuration]項目の[Model: ]プルダウンから、[host-passthrough]を選択する。(プルダウンに存在しない場合は、<code>host-passthrough</code>と入力する) | ||
| 287行目: | 460行目: | ||
# [Add New Virtual Hardware]画面左の[PCI Host Device]を選択して、分離されたGPUとサウンドカード(ここでは、PCIデバイス02:00.0とPCIデバイス02:00.1)を追加する。 | # [Add New Virtual Hardware]画面左の[PCI Host Device]を選択して、分離されたGPUとサウンドカード(ここでは、PCIデバイス02:00.0とPCIデバイス02:00.1)を追加する。 | ||
# [Add New Virtual Hardware]画面左の[USB Host Device]を選択して、キーボードとマウスを追加する。 | # [Add New Virtual Hardware]画面左の[USB Host Device]を選択して、キーボードとマウスを追加する。 | ||
# 同様に、不要なデバイス( | # <u>Windows 10 / 11の場合、[Add New Virtual Hardware]画面左の[TPM]を選択して、</u><br><u>[種類]プルダウンから[Emulated]、[モデル]プルダウンから[TIS]、[バージョン]プルダウンから[2.0]を選択して、追加する。</u> | ||
# 同様に、不要なデバイス(タブレット、ディスプレイスパイス、シリアル、コンソール、チャンネルスパイス等)を全て削除する。<br><u>RHELやSLE等の場合は、Synergy / Barrierの動作に支障があるため、ビデオQXLを有効にして、ディスプレイSpiceおよびビデオは削除しない。</u><br><br>ディスプレイにサウンド出力がない場合またはVGA経由で接続する場合は、サウンドカードが必要である。<br>1000円程度の安価なUSBサウンドカードを購入してPCに取り付けた場合、キーボードとマウスを追加した際と同様にして追加する。 | |||
# VMに割り当てたばかりのグラフィックボードをディスプレイに接続し、[Begin Installation]ボタンを押下する。<br>全て正しく設定されていれば、そのディスプレイにVMが起動していることがわかる。 | # VMに割り当てたばかりのグラフィックボードをディスプレイに接続し、[Begin Installation]ボタンを押下する。<br>全て正しく設定されていれば、そのディスプレイにVMが起動していることがわかる。 | ||
# Windows10をインストール画面の手順に従ってインストールする。<br>インストール完了後、Windows10のデバイスマネージャーを起動して、マウントされているvirtio-win-<バージョン名>.isoファイルから各種ドライバをインストールする。 | # Windows10をインストール画面の手順に従ってインストールする。<br>インストール完了後、Windows10のデバイスマネージャーを起動して、マウントされているvirtio-win-<バージョン名>.isoファイルから各種ドライバをインストールする。 | ||
<br> | |||
== | ==== Windows 7の場合 ==== | ||
# Virtual Machine Managerを起動して、新しいVMを作成する。<br>[Architecture Option]画面では、[Local Install Media]と[x86_64]を選択する。 | |||
# [Use ISO Imege]項目を選択して、Windows 7のISOファイルを選択する。 | |||
<br> | # VMに割り当てるメモリ容量とCPUのコア数を選択する。<br><u>この時、CPUの割り当てを<code>1</code>にする。</u> | ||
# VMのディスクイメージを作成する。(既に定義されている場合は選択する。また、ディスク全体でも構わない。パスをそこに配置して、ホストにマウントされていないことを確認する) | |||
<br> | # VMに名前を付けて、[Customize configuration before install]チェックボックスにチェックが入力されていることを確認して、[Finish]ボタンを押下する。 | ||
==== | # VM構成画面(以降、メイン画面という)に移動する。<br>メイン画面左の[Overview]を選択して、[Chipset:]プルダウンおよび[Firmware:]プルダウンを以下の値に設定する。 | ||
#: <br> | |||
#: ホストOSがSUSE 15.1の場合 | |||
< | #: [Chipset:] : i440FX | ||
#: [Firmware:] : UEFI | |||
#: <br> | |||
< | #: ホストOSがSUSE 15.2以降かつゲストOSがWindows 7の場合 | ||
==== | #: [Chipset:] : Q35 | ||
===== | #: [Firmware:]は、以下のいずれかを選択する。 | ||
#: [Firmware:] : UEFI X86_64: ovmf-x86_64-smm-ms-code.bin | |||
#: [Firmware:] : UEFI X86_64: ovmf-x86_64-smm-code.bin | |||
<br> | #: <br> | ||
# メイン画面左の[CPUs]で、[Configuration]項目の[Model: ]プルダウンから、[host-passthrough]を選択する。(プルダウンに存在しない場合は、<code>host-passthrough</code>と入力する) | |||
# メイン画面左の[NIC 〜]で、[デバイスのモデル]プルダウンから[ハイパーバイザーのデフォルト]を選択する。 | |||
< | # [Add New Virtual Hardware]画面左の[Storage]を選択して、[管理]ボタンを押下して、<br>"KVM / QEMUのインストール"セクションでダウンロードしたvirtio-win-<バージョン名>.isoファイルを選択する。<br>[デバイスの種類]項目には、[CD-ROMデバイス]を選択する。 | ||
# [Add New Virtual Hardware]画面左の[USB Host Device]を選択して、キーボードとマウスを追加する。 | |||
# <u>分離されたGPUとサウンドカード(下図では、PCIデバイス03:00.0とPCIデバイス03:00.1)は追加しないことに注意する。</u> | |||
#: ここまでの設定を行うことにより、下図のようになる。 | |||
< | #: [[ファイル:KVM GPU Passthrough for Windows7 1.png|フレームなし|中央]] | ||
# [Begin Installation]ボタンを押下して、ゲストOSを起動する。 | |||
# UEFIシェル(仮想マシンのブート設定画面)を起動して、[Device Manager] - [Secure Boot Configuration] - [Attempt Secure Boot]チェックボックスのチェックを外して、セキュアブートを無効にする。 | |||
# <u>設定を保存した後、すぐに仮想マシンをシャットダウンする。</u><br><u>※まだ、Windows 7はインストールしないことに注意する。</u> | |||
# 仮想マシンの設定ファイル(XML拡張子)を、以下に示すように編集する。 | |||
<br> | #: <code>sudo virsh edit <仮想マシン名></code> | ||
#: <br> | |||
#: # 最初の行を変更する | |||
#: <code><domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'></code> | |||
#: または | |||
#: <code><domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm"></code> | |||
#: <br> | |||
#: # ファイルの最下行にある<code></devices></code>と<code></domain></code>の間に追記する | |||
#: # (<code>host=03:00.0</code>の箇所は、必要に応じてユーザの環境に合わせること) | |||
#: <br> | |||
#: <code><qemu:commandline></code> | |||
#: <code> <qemu:arg value='-device'/></code> | |||
#: <code> <qemu:arg value='vfio-pci,host=03:00.0,id=hostpci0.0,bus=pcie.0,addr=0x10.0,multifunction=on'/></code> | |||
#: <code> <qemu:arg value='-device'/></code> | |||
#: <code> <qemu:arg value='vfio-pci,host=03:00.1,id=hostpci0.1,bus=pcie.0,addr=0x10.1'/></code> | |||
#: <code> <qemu:arg value='-cpu'/></code> | |||
#: <code> <qemu:arg value='host,kvm=off,hv_vendor_id=null'/></code> | |||
#: <code> <qemu:arg value='-machine'/></code> | |||
#: <code> <qemu:arg value='q35,kernel_irqchip=on'/></code> | |||
#: <code></qemu:commandline></code> | |||
#: <br> | |||
# 次に、libvirtdおよびQEMUの設定ファイル(/etc/libvirt/qemu.confファイル)の最下行に、以下に示す設定を追記する。 | |||
#: <code>sudo vi /etc/libvirt/qemu.conf</code> | |||
#: <br> | |||
#: <code>cgroup_device_acl = [</code> | |||
#: <code> "/dev/null", "/dev/full", "/dev/zero",</code> | |||
#: <code> "/dev/random", "/dev/urandom",</code> | |||
#: <code> "/dev/ptmx", "/dev/kvm",</code> | |||
#: <code> "/dev/vfio/20", "/dev/vfio/vfio"</code> <u># /dev/vfio/20ファイルは、使用している環境により、数値の部分が異なる場合があることに注意する</u> | |||
#: <code> ]</code> | |||
#: <br> | |||
# libvirtdデーモンを再起動する。 | |||
#: <code>sudo systemctl restart libvirtd</code> | |||
#: <br> | |||
# VMに割り当てるGPUをディスプレイに接続し、仮想マシンを起動する。 | |||
# UEFIシェル(仮想マシンのブート設定画面)のブートセレクションからWindows 7インストーラがあるストレージを選択して、Windows 7をインストールする。<br>インストール完了後、Windows 7のデバイスマネージャーを起動して、マウントされているvirtio-win-<バージョン名>.isoファイルから各種ドライバをインストールする。 | |||
# Windowsアップデートを行う。<br><u>Windowsアップデート行う前に、下記の<span style="color:#AA0000">※注意2</span>を参照して、いくつかのパッチをインストールする必要があることに注意する。</u><br> | |||
# NVidiaのGPUドライバをインストールする。<br>NVidiaのGPUドライバは、[https://www.nvidia.co.jp/Download/index.aspx?lang=jp 公式Webサイト]からダウンロードすること。 | |||
# 仮想マシンをシャットダウンして、 [仮想CPU 割り当て]項目から、VMに割り当てるCPUのコア数を設定する。<br><u>ただし、[トポロジー] - [CPUトポロジーの手動設定]は設定しないこと。(UEFIシェル画面でハングするため)</u> | |||
# 不要であれば、使用しないデバイス(タブレット、ディスプレイスパイス、コンソール、チャンネルスパイス、ビデオQXL等)を全て削除する。 | |||
<br> | <br> | ||
<u>※注意 1</u><br> | |||
<u>仮想マシンを実行する時、以下に示すようなエラーが出力される場合がある。</u><br> | |||
audio: Could not init spice' audio driver | |||
<br> | <br> | ||
<u>この問題を解決するには、Virt-Managerを起動して、画面左ペインにある[概要]から[XML]タブを選択して、オーディオの種類をspice以外のものに変更する必要がある。</u><br> | |||
# | <syntaxhighlight lang="xml"> | ||
# 編集前 | |||
<audio id='1' type='spice'/> | |||
# 編集後 | |||
<audio id='1' type='none'/> | |||
# | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
<u>※注意 2</u><br> | |||
<u>2023/03現在、Windows 7を新規インストールした場合は、Windowsアップデートができない。</u><br> | |||
<u>そのため、Microsoftの公式Webサイトから、いくつかのWindows 7の更新プログラムを直接ダウンロードおよびインストールする必要がある。</u><br> | |||
以下のURLでは、Windows 7 x64向けであることに注意する。<br> | |||
<br> | <br> | ||
* Windowsアップデートが動作しない場合 | |||
*: Windows 7 用更新プログラム (KB3138612)をインストールする。 | |||
*: https://www.microsoft.com/ja-jp/download/details.aspx?id=51208 | |||
*: または | |||
*: https://www.catalog.update.microsoft.com/Search.aspx?q=KB3138612 | |||
*: <br> | |||
* Windows7の更新プログラムのインストールがいくつか失敗するものがある場合 | |||
*: 2019-03 x64ベースシステム用Windows 7 サービススタック更新プログラム (KB4490628)をインストールして、サービススタックを更新する。 | |||
*: https://www.catalog.update.microsoft.com/search.aspx?q=kb4490628 | |||
<br> | <br> | ||
必要であれば、以下に示す更新プログラムもインストールする。<br> | |||
* windows6.1-kb2533552-x64_0ba5ac38d4e1c9588a1e53ad390d23c1e4ecd04d.msu | |||
*: https://www.catalog.update.microsoft.com/Search.aspx?q=kb2533552 | |||
* windows6.1-kb3020369-x64_5393066469758e619f21731fc31ff2d109595445.msu | |||
*: https://www.catalog.update.microsoft.com/Search.aspx?q=kb3020369 | |||
* windows6.1-kb3125574-v4-x64_2dafb1d203c8964239af3048b5dd4b1264cd93b9.msu | |||
*: https://www.catalog.update.microsoft.com/Search.aspx?q=kb3125574 | |||
* windows6.1-kb976932-x64_74865ef2562006e51d7f9333b4a8d45b7a749dab.exe<br><u>※ SP1をインストールしていない場合のみ</u> | |||
*: https://www.catalog.update.microsoft.com/Search.aspx?q=kb976932 | |||
<br> | <br> | ||
==== Windows XPの場合 ==== | |||
# Virtual Machine Managerを起動して、新しいVMを作成する。<br>[Architecture Option]画面では、[Local Install Media]と[x86_64]を選択する。 | |||
# [Use ISO Imege]項目を選択して、Windows XPのISOファイルを選択する。 | |||
# VMに割り当てるメモリ容量とCPUのコア数を選択する。<br><u>この時、CPUの割り当てを<code>2</code>にする。</u> | |||
# VMのディスクイメージを作成する。(既に定義されている場合は選択する。また、ディスク全体でも構わない。パスをそこに配置して、ホストにマウントされていないことを確認する) | |||
# VMに名前を付けて、[Customize configuration before install]チェックボックスにチェックが入力されていることを確認して、[Finish]ボタンを押下する。 | |||
# VM構成画面(以降、メイン画面という)に移動する。<br>メイン画面左の[Overview]を選択して、[Chipset:]プルダウンおよび[Firmware:]プルダウンを以下の値に設定する。 | |||
#: <br> | |||
#: [Chipset:] : i440FX | |||
#: [Firmware:] : BIOS | |||
#: <br> | |||
# メイン画面左の[CPUs]で、[Configuration]項目の[Model: ]プルダウンから、[host-passthrough]を選択する。(プルダウンに存在しない場合は、<code>host-passthrough</code>と入力する) | |||
# メイン画面左の[NIC 〜]で、[デバイスのモデル]プルダウンから[ハイパーバイザーのデフォルト]を選択する。 | |||
# [Add New Virtual Hardware]画面左の[Storage]を選択して、[管理]ボタンを押下して、<br>"KVM / QEMUのインストール"セクションでダウンロードしたvirtio-win-<バージョン名>.isoファイルを選択する。<br>[デバイスの種類]項目には、[CD-ROMデバイス]を選択する。 | |||
# [Add New Virtual Hardware]画面左の[PCI Host Device]を選択して、分離されたGPUとサウンドカード(ここでは、PCIデバイス02:00.0とPCIデバイス02:00.1)を追加する。 | |||
# [Add New Virtual Hardware]画面左の[USB Host Device]を選択して、キーボードとマウスを追加する。 | |||
# VMに割り当てたばかりのグラフィックボードをディスプレイに接続し、[Begin Installation]ボタンを押下する。<br>全て正しく設定されていれば、そのディスプレイにVMが起動していることがわかる。 | |||
# Windows XPをインストール画面の手順に従ってインストールする。<br>インストール完了後、Windows XPのデバイスマネージャーを起動して、マウントされているvirtio-win-<バージョン名>.isoファイルから各種ドライバをインストールする。 | |||
<br><br> | <br><br> | ||
== | == 仮想マシンの設定 == | ||
==== ゲストOSがopenSUSEの場合 ==== | ==== ゲストOSがopenSUSEの場合 ==== | ||
ゲストOSがopenSUSEの場合、/etc/default/grubファイルの<code>GRUB_CMDLINE_LINUX_DEFAULT</code>項目に、<code>pci=noaer</code>オプションを追記する。<br> | ゲストOSがopenSUSEの場合、/etc/default/grubファイルの<code>GRUB_CMDLINE_LINUX_DEFAULT</code>項目に、<code>pci=noaer</code>オプションを追記する。<br> | ||
| 394行目: | 612行目: | ||
<u>cache passthroughの設定は、実際のCPUキャッシュ情報を仮想マシンに渡す。</u><br> | <u>cache passthroughの設定は、実際のCPUキャッシュ情報を仮想マシンに渡す。</u><br> | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<!-- | <!-- ゲストOSがWindows 10 / 11またはSUSEの場合 --> | ||
<cpu mode="host-passthrough" check="none"> | <cpu mode="host-passthrough" check="none"> | ||
<topology sockets="1" cores="4" threads="2"/> | <topology sockets="1" cores="4" threads="2"/> | ||
<cache mode="passthrough"/> | <cache mode="passthrough"/> | ||
<feature policy="require" name="topoext"/> | <feature policy="require" name="topoext"/> | ||
</cpu> | |||
<!-- ゲストOSがWindows 7の場合 --> | |||
<cpu mode="host-passthrough" check="none"> | |||
<topology sockets="1" cores="4" threads="2"/> | |||
<cache mode="passthrough"/> | |||
<feature policy='disable' name='hypervisor'/> | |||
</cpu> | |||
<!-- ゲストOSがWindows XPの場合 --> | |||
<cpu mode="host-passthrough" check='none'> | |||
<topology sockets='1' cores='2' threads='2'/> | |||
<feature policy='require' name='topoext'/> <!-- ←この設定は不要の可能性あり --> | |||
</cpu> | </cpu> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
更にパフォーマンスを向上させるため、<code><features></code>タグ内に<code><hyperv></code>タグとそのエレメントを設定する。<br> | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<!-- ゲストOSがWindows | <!-- ゲストOSがWindows 10 / 11の場合 --> | ||
<hyperv> | <hyperv> | ||
<relaxed state="on"/> | <relaxed state="on"/> | ||
| 422行目: | 653行目: | ||
<spinlocks state='on' retries='8191'/> | <spinlocks state='on' retries='8191'/> | ||
<vendor_id state='on' value='0123456789ab'/> | <vendor_id state='on' value='0123456789ab'/> | ||
</hyperv> | |||
<!-- ゲストOSがWindows 7の場合 --> | |||
<hyperv> | |||
<relaxed state='on'/> | |||
<vapic state='on'/> | |||
<spinlocks state='on' retries='8191'/> | |||
<vendor_id state='on' value='0123456789ab'/> | |||
</hyperv> | |||
<!-- ゲストOSがWindows XPの場合 --> | |||
<hyperv> | |||
<relaxed state='on'/> | |||
<vapic state='on'/> | |||
<spinlocks state='on' retries='8191'/> | |||
<vendor_id state='on' value='none'/> | |||
</hyperv> | </hyperv> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== | ==== GPUがNVIDIA Geforceの場合 (error code 43) ==== | ||
仮想マシンのデバイスマネージャでグラフィックボードを確認すると、"エラー43:ドライバーの読み込みに失敗しました"と表示されて、正常に機能しない場合がある。<br> | 仮想マシンのデバイスマネージャでグラフィックボードを確認すると、"エラー43:ドライバーの読み込みに失敗しました"と表示されて、正常に機能しない場合がある。<br> | ||
この問題は、NVidia GeForceシリーズのみ起こり(QuadroやTeslaにはこの問題は無い)、ユーザが仮想マシンでそれらを使用しようとすると、機能を意図的に無効化する。<br> | この問題は、NVidia GeForceシリーズのみ起こり(QuadroやTeslaにはこの問題は無い)、ユーザが仮想マシンでそれらを使用しようとすると、機能を意図的に無効化する。<br> | ||
| 434行目: | 681行目: | ||
具体的な手順は以下の通りである。<br> | 具体的な手順は以下の通りである。<br> | ||
<br> | <br> | ||
===== 手動での設定 ===== | |||
まず、KVMを開始する。<br> | |||
sudo systemctl start libvirtd | |||
<br> | |||
GPUパススルーを行う仮想マシンのxmlファイルを編集する。<br> | |||
sudo EDITOR=nano virsh edit <仮想マシン名> | |||
# | <br> | ||
<code><hyperv></code>タグ内に<code>vendor_id</code>タグを記述する。<br> | |||
この時、<code>value</code>属性はどのような値でもよい。<br> | |||
<span style="color:#C00000"><u>ただし、vendor_idタグの設定は、Quadro 2000以降のQuadroカードでは不要である。</u></span><br> | |||
<syntaxhighlight lang="xml"> | |||
<features> | |||
...略 | |||
<hyperv> | |||
...略 | |||
<vendor_id state="on" value="123456789ab"/> | |||
</hyperv> | |||
...略 | |||
</features> | |||
</syntaxhighlight> | |||
<br> | |||
次に、状態を非表示にするようにKVMに指示するため、<code><hyperv></code>タグ外の直下に、<code>kvm</code>タグと<code>hidden</code>タグを記述する。<br> | |||
<span style="color:#C00000"><u>ただし、hiddenタグの設定も、Quadro 2000以降のQuadroカードでは不要である。</u></span><br> | |||
<syntaxhighlight lang="xml"> | |||
<features> | |||
...略 | |||
<hyperv> | |||
...略 | |||
</hyperv> | |||
...略 | |||
<kvm> | |||
<hidden state='on'/> | |||
</kvm> | |||
</features> | |||
</syntaxhighlight> | |||
<br> | |||
QEMU 4.0以降で仮想マシンにQ35チップセットを使用する場合、<code>features</code>タグ内に<code>ioapic</code>タグを記述する。<br> | |||
<syntaxhighlight lang="xml"> | |||
<features> | |||
...略 | |||
<ioapic driver="kvm"/> | |||
</features> | |||
</syntaxhighlight> | |||
<br> | |||
最後に、KVMを再起動する。 | |||
sudo systemctl restart libvirtd | |||
<br> | <br> | ||
===== 自動での設定 ===== | |||
GitHubにあるvirsh-patcherパッケージは、簡単に上記の方法を行うことができる。<br> | GitHubにあるvirsh-patcherパッケージは、簡単に上記の方法を行うことができる。<br> | ||
git clone https://github.com/PassthroughPOST/virsh-patcher virsh-patcher | git clone https://github.com/PassthroughPOST/virsh-patcher virsh-patcher | ||
| 459行目: | 750行目: | ||
<br><br> | <br><br> | ||
===== ネットワーク | == Synergy または DeskFlow のインストール == | ||
ゲストOSのインストールが完了した後、Synergy (有償ソフトウェア)] または DeskFow、InputLeapをインストールすることを推奨する。<br> | |||
これらは、物理的なKVM (Keyboard-Video-Mouse) スイッチなしで、複数のPCで同じキーボードとマウスを使用できる。<br> | |||
<br> | |||
SynergyおよびDeskFlowの概要およびインストール手順を知りたい場合は、[[インストール - マウス・キーボード共有ソフトウェア]]のページを参照すること。<br> | |||
<br><br> | |||
== エラー時の対処方法 == | |||
==== ネットワーク ==== | |||
VM起動時に下記のエラーが出力されて、VMが起動できないことがある。<br> | VM起動時に下記のエラーが出力されて、VMが起動できないことがある。<br> | ||
ERROR Requested operation is not valid: network 'default' is not active | ERROR Requested operation is not valid: network 'default' is not active | ||
| 481行目: | 780行目: | ||
その時は、/run/libvirt/network/default.xmlファイルを作成して、以下に示す内容を記述する。(デフォルトネットワークを作成する)<br> | その時は、/run/libvirt/network/default.xmlファイルを作成して、以下に示す内容を記述する。(デフォルトネットワークを作成する)<br> | ||
<br> | <br> | ||
<syntaxhighlight lang="xml"> | |||
<!-- /run/libvirt/network/default.xmlファイル --> | |||
<networkstatus> | <networkstatus> | ||
| 503行目: | 803行目: | ||
</network> | </network> | ||
</networkstatus> | </networkstatus> | ||
</syntaxhighlight> | |||
<br> | <br> | ||
次に、そのネットワークをKVMホストに永続的に追加するには、以下のコマンドを実行する。<br> | 次に、そのネットワークをKVMホストに永続的に追加するには、以下のコマンドを実行する。<br> | ||
| 508行目: | 809行目: | ||
<br> | <br> | ||
==== ファイアーウォール ==== | |||
VM起動時に下記のエラーが出力されて、VMが起動できないことがある。<br> | VM起動時に下記のエラーが出力されて、VMが起動できないことがある。<br> | ||
error: Failed to start network default | error: Failed to start network default | ||
| 520行目: | 821行目: | ||
sudo systemctl restart libvirtd | sudo systemctl restart libvirtd | ||
<br> | <br> | ||
==== DNSマスカレード ==== | |||
VM起動時に下記のエラーが出力されて、VMが起動できないことがある。<br> | VM起動時に下記のエラーが出力されて、VMが起動できないことがある。<br> | ||
error: Failed to start network default | error: Failed to start network default | ||
| 529行目: | 830行目: | ||
<br><br> | <br><br> | ||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ: | [[カテゴリ:RHEL]][[カテゴリ:SUSE]] | ||