📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
(同じ利用者による、間の10版が非表示)
39行目: 39行目:


==== ソースコードからインストール ====
==== ソースコードからインストール ====
===== GNU TLS 3.6.14以降のインストール =====
===== GNU TLSのインストール =====
パッケージ管理システムのGNU TLSのバージョンが3.6.14未満の場合は、GNU TLSのソースコードをビルドしてインストールする。<br>
パッケージ管理システムのGNU TLSのバージョンが3.6.14未満の場合は、GNU TLSのソースコードをビルドしてインストールする。<br>
<u>また、GNU TLS 3.6.14(2022/4現在の最新)のビルドでは、Nettle 3.4.1が必要となることに注意する。</u><br>
<u>GNU TLS 3.6.14 (2022/4 現在の最新) のビルドでは、Nettle 3.4.1が必要となることに注意する。</u><br>
<br>
<br>
GNU TLSのビルドに必要なライブラリをインストールする。<br>
GNU TLSのビルドに必要なライブラリをインストールする。<br>
  sudo zypper install libtasn1-devel libunistring-devel unbound-devel p11-kit-devel gmp-devel libnettle-devel
  sudo zypper install libtasn1-devel libunistring-devel unbound-devel p11-kit-devel libidn2-devel trousers-devel \
                    gmp-devel libnettle-devel # GMP, Nettleをパッケージ管理システムからインストールする場合
<br>
<br>
GNU TLSのソースコードをダウンロードする。<br>
GNU TLSのソースコードをダウンロードする。<br>
55行目: 56行目:
*: https://gnutls.org/download.html
*: https://gnutls.org/download.html
<br>
<br>
ビルドディレクトリを作成して、GMP、Nettle、GNU TLSをビルドおよびインストールする。<br>
GMP、Nettle、GNU TLSをビルドおよびインストールする。<br>
  # GMP (パッケージ管理システムにあるGMPが古い場合)
  # GMPのインストール (パッケージ管理システムにあるGMPのバージョンが古い場合)
  ../configure --prefix=<Nettle、GMP、GNU TLSのインストールディレクトリ>
  ../configure --prefix=<GMP、Nettle、GNU TLSのインストールディレクトリ>
  make -j $(nproc)
  make -j $(nproc)
  make install
  make install
   
   
  # Nettle (パッケージ管理システムにあるNettleが古い場合)
  # Nettleのインストール (パッケージ管理システムにあるNettleのバージョンが古い場合)
  ../configure --prefix=<Nettle、GMP、GNU TLSのインストールディレクトリ> --enable-openssl --enable-x86-aesni --enable-x86-sha-ni --enable-x86-pclmul
  ../configure --prefix=<GMP、Nettle、GNU TLSのインストールディレクトリ> \
              --enable-openssl   \
              --enable-x86-aesni \
              --enable-x86-sha-ni \
              --enable-x86-pclmul
  make -j $(nproc)
  make -j $(nproc)
  make install
  make install
   
   
  # GNU TLS
  # GNU TLSのインストール
  ../configure --prefix=<Nettle、GMP、GNU TLSのインストールディレクトリ> --enable-shared
  ../configure --prefix=<GMP、Nettle、GNU TLSのインストールディレクトリ> \
              --enable-shared
  make -j $(nproc)
  make -j $(nproc)
  make install
  make install
74行目: 80行目:
  vi ~/.profile
  vi ~/.profile
<br>
<br>
<syntaxhighlight lang="sh">
  # ~/.profileファイル
  # ~/.profileファイル
   
   
  export PATH="<Nettle、GMP、GNU TLSのインストールディレクトリ>/bin:$PATH"
  export PATH="<GMP、Nettle、GNU TLSのインストールディレクトリ>/bin:$PATH"
  export LD_LIBRARY_PATH="<Nettle、GMP、GNU TLSのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
  export LD_LIBRARY_PATH="<GMP、Nettle、GNU TLSのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
  export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"
  export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"
  export PKG_CONFIG_PATH="<Nettle、GMP、GNU TLSのインストールディレクトリ>/lib64/pkgconfig:$PKG_CONFIG_PATH"
  export PKG_CONFIG_PATH="<GMP、Nettle、GNU TLSのインストールディレクトリ>/lib64/pkgconfig:$PKG_CONFIG_PATH"
</syntaxhighlight>
<br>
<br>
PCを再起動する。<br>
PCを再起動する。<br>
<br>
<br>
===== QEMUのインストール =====
===== QEMUのインストール =====
QEMUのビルドに必要なライブラリをインストールする。<br>
QEMUのビルドに必要なライブラリをインストールする。<br>
96行目: 103行目:
                     librbd-devel rdma-core-devel libnet-devel libfvde-devel libdmmp-devel multipath-tools-devel libssh-devel libssh2-devel \
                     librbd-devel rdma-core-devel libnet-devel libfvde-devel libdmmp-devel multipath-tools-devel libssh-devel libssh2-devel \
                     pipewire-devel sndio-devel libjson-c-devel libcmocka-devel python3-pytest python3-flake8 python3-restructuredtext_lint vte-devel libdw-devel \
                     pipewire-devel sndio-devel libjson-c-devel libcmocka-devel python3-pytest python3-flake8 python3-restructuredtext_lint vte-devel libdw-devel \
                     sysprof-devel sysprof-ui-devel gtk-vnc-devel
                     sysprof-devel gtk-vnc-devel
                     systemd-devel # SUSE 15.4以降の場合
                    libcbor-devel qatzip-devel # QEMU 10.0以降
                     libudev-devel # SUSE 15.3以前の場合
                     systemd-devel               # SUSE 15.4以降の場合
                    sysprof-ui-devel            # SUSE 15.5以前の場合
                     libudev-devel               # SUSE 15.3以前の場合
<br>
<br>
* QEMUの公式Webサイトから、ソースコードをダウンロードする場合
* QEMUの公式Webサイトから、ソースコードをダウンロードする場合
*: [https://www.qemu.org/download/ QEMUの公式Webサイト]にアクセスして、ソースコードをダウンロードする。
*: [https://www.qemu.org/download/ QEMUの公式Webサイト]にアクセスして、ソースコードをダウンロードする。
*: ダウンロードしたファイルを解凍する。
*: ダウンロードしたファイルを解凍する。
*: <code>tar xf qemu-<バージョン>.tar.xz</code>
*: <syntaxhighlight lang="text">
*: <code>cd qemu-<バージョン></code>
tar xf qemu-<バージョン>.tar.xz
cd qemu-<バージョン>
</syntaxhighlight>
*: <br>
*: <br>
* Gitからソースコードをダウンロードする場合
* Gitからソースコードをダウンロードする場合
*: <code>git clone git://git.qemu.org/qemu.git</code>
*: <syntaxhighlight lang="text">
*: <code>cd qemu</code>
git clone git://git.qemu.org/qemu.git
*: <code>git submodule update --init --recursive</code>
cd qemu
git submodule update --init --recursive
</syntaxhighlight>
<br>
<br>
QEMUをビルドおよびインストールする。<br>
QEMUをビルドおよびインストールする。<br>
115行目: 129行目:
   
   
  ../configure --prefix=<QEMUのインストールディレクトリ> \
  ../configure --prefix=<QEMUのインストールディレクトリ> \
               --enable-trace-backends=simple \
               --enable-trace-backends=simple   \ # テキストベースのトレース機能を有効化
               --enable-kvm --enable-spice --enable-spice-protocol --enable-usb-redir     \
               --enable-kvm                     \  # KVMによるハードウェア仮想化支援を有効化
               --enable-opengl --enable-tpm --enable-xkbcommon --enable-bzip2 --enable-sdl \
              --enable-spice                   \  # SPICEプロトコルによるリモートデスクトップ機能を有効化
               --enable-gtk --enable-vdi --enable-qcow1 --enable-tools --enable-fdt       \
              --enable-spice-protocol         \  # SPICEプロトコルのライブラリサポートを有効化
               --audio-drv-list=oss,alsa,sdl,pa                                           \
              --enable-usb-redir               \ # ホストUSBデバイスのゲストへの転送機能を有効化 (SPICE経由でリモートからもリダイレクト可能な方式)
               --enable-vfio-user-server # 任意 : VFIO (Virtual Function I/O) ユーザサーバー機能を有効にする場合
               --enable-opengl                 \  # OpenGLによるGPUアクセラレーションを有効化
               --enable-libusb           # 不要の可能性あり
              --enable-tpm                     \  # TPM (Trusted Platform Module) エミュレーションを有効化
               --enable-hax               # QEMU 8.2以降は、このオプションは削除された
              --enable-xkbcommon               \  # XKBキーボードマッピングライブラリを有効化
               --target-list=i386-softmmu,i386-linux-user,x86_64-softmmu,x86_64-linux-user     # ターゲットをx86およびx86_64限定する場合
              --enable-bzip2                   \  # bzip2圧縮ライブラリを有効化
               # ターゲットにARMおよびAArch64を追加する場合は、<code>arm-softmmu,arm-linux-user,aarch64-softmmu,aarch64-linux-user</code>を指定する
              --enable-sdl                     \ # SDLによるグラフィック・オーディオ出力を有効化
               --enable-gtk                     \  # GTKツールキットによるGUIウィンドウ表示を有効化
              --enable-vdi                     \  # VirtualBoxのVDI形式ディスクイメージ対応を有効化
              --enable-qcow1                   \  # 旧形式qcow1ディスクイメージのサポートを有効化
              --enable-tools                   \  # qemu-img等の補助ツール群のビルドを有効化
              --enable-fdt                     \ # FDT (Flattened Device Tree) サポートを有効化
               --audio-drv-list=oss,alsa,sdl,pa   # オーディオドライバとしてOSS, ALSA, SDL, PulseAudioを指定
              # 下記のオプションは任意 または 指定不可
               --enable-vfio-user-server           # 任意 : VFIO (Virtual Function I/O) ユーザサーバ機能を有効にする場合
                                                  # 仮想マシンへの直接パススルーをユーザスペースで実現するプロトコル
                                                  # 主にリモートPC上のデバイスを仮想マシンにアタッチしたり、ソフトウェアでエミュレートしたデバイスをVFIOデバイスとして公開する場合に使用
               --enable-libusb                     # ローカルでUSBを直接パススルーする方式
                                                  # <code>--enable-usb-redir</code> オプションを指定している場合は不要
               --enable-hax                       # QEMU 8.2以降は、このオプションは指定不可
               --target-list=i386-softmmu,i386-linux-user,x86_64-softmmu,x86_64-linux-user # ターゲットをx86およびx86_64に限定する場合
               # ターゲットにARM EABIHFおよびAArch64を追加する場合は、<code>arm-softmmu,arm-linux-user,aarch64-softmmu,aarch64-linux-user</code> を指定する
   
   
  make -j $(nproc)  または  ninja -j $(nproc)
  make -j $(nproc)  または  ninja -j $(nproc)
130行目: 160行目:
<br>
<br>
<u>※注意</u><br>
<u>※注意</u><br>
<u><code>--enable-vfio-user-server</code> オプションは、QEMUのコンフィギュレーションにおいて、VFIOをユーザ空間で使用するためのサーバ機能を有効にする。<br></u>
<br>
<u>VFIO-userは、QEMUの比較的新しい機能であり、以下に示すような目的がある。</u><br>
<u>VFIO-userは、QEMUの比較的新しい機能であり、以下に示すような目的がある。</u><br>
* リモートデバイスエミュレーション
* リモートデバイスエミュレーション
153行目: 185行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
<u>もし、QEMUを/usrディレクトリ以外の場所にインストールした場合、パーミッションの問題が発生する可能性がある。</u><br>
===== セキュリティ設定 : AppArmorを使用している場合 =====
<u>この時、AppArmorの設定を、以下に示すように編集する。</u><br>
QEMUを/usrディレクトリ以外の場所にインストールする場合、パーミッションの問題が発生する可能性がある。<br>
そのため、libVirtにQEMUを実行するためのAppArmorパーミッションを追加する必要がある。<br>
<br>
<br>
AppArmorを使用している場合、libvirtにQEMUを実行するためのAppArmorパーミッションを追加する必要がある。<br>
まず、/etc/apparmor.d/usr.sbin.libvirtdファイルにある最後の <code>}</code> スコープの直前に、以下に示す設定を追記する。<br>
まず、/etc/apparmor.d/usr.sbin.libvirtdファイルにある最後<code>"}"</code>記号の直前に、以下に示す設定を追記する。<br>
以下の例では、QEMUを /home/<ユーザ名>/QEMU/ディレクトリ にインストールしているものとする。<br>
(以下の例では、QEMUを/home/user/QEMUディレクトリにインストールしているものとする)<br>
  sudo vi /etc/apparmor.d/usr.sbin.libvirtd
  sudo vi /etc/apparmor.d/usr.sbin.libvirtd
<br>
<br>
165行目: 197行目:
  # ...略
  # ...略
   
   
   # User Add
   # 例 :
   /usr/bin/kvm rmix,
   /usr/bin/kvm rmix,
   /home/user/QEMU/bin/qemu-i386 rmix,
   /home/<ユーザ名>/QEMU/bin/qemu-i386 rmix,
   /home/user/QEMU/bin/qemu-system-i386 rmix,
   /home/<ユーザ名>/QEMU/bin/qemu-system-i386 rmix,
   /home/user/QEMU/bin/qemu-x86_64 rmix,
   /home/<ユーザ名>/QEMU/bin/qemu-x86_64 rmix,
   /home/user/QEMU/bin/qemu-system-x86_64 rmix,
   /home/<ユーザ名>/QEMU/bin/qemu-system-x86_64 rmix,
  }
  }
<br>
<br>
178行目: 210行目:
  # /etc/apparmor.d/abstractions/libvirt-qemuファイル
  # /etc/apparmor.d/abstractions/libvirt-qemuファイル
   
   
# User Add
  /usr/bin/kvm rmix,
  /usr/bin/kvm rmix,
  /home/user/QEMU/bin/qemu-i386 rmix,
  /home/<ユーザ名>/QEMU/bin/qemu-i386 rmix,
  /home/user/QEMU/bin/qemu-system-i386 rmix,
  /home/<ユーザ名>/QEMU/bin/qemu-system-i386 rmix,
  /home/user/QEMU/bin/qemu-x86_64 rmix,
  /home/<ユーザ名>/QEMU/bin/qemu-x86_64 rmix,
  /home/user/QEMU/bin/qemu-system-x86_64 rmix,
  /home/<ユーザ名>/QEMU/bin/qemu-system-x86_64 rmix,
<br>
<br>
最後に、AppArmorのルールセットを再読み込みする。<br>
AppArmorの設定を反映させるため、ルールセットを再読み込みする。<br>
  sudo systemctl reload apparmor
  sudo systemctl reload apparmor
<br>
===== セキュリティ設定 : SELinuxを使用している場合 =====
QEMUを/usrディレクトリ以外の場所にインストールする場合、SELinuxによるアクセス拒否が発生する可能性がある。<br>
そのため、QEMUバイナリに適切なセキュリティコンテキスト(ラベル)を付与する必要がある。<br>
<br>
まず、現在のSELinuxモードを確認する。<br>
getenforce
<br>
<u>Permissive</u> または <u>Disabled</u> と表示された場合は、設定は不要である。<br>
<u>Enforcing</u> と表示された場合は、以下に示す設定が必要となる。<br>
<br>
====== ファイルコンテキストの設定 ======
QEMUバイナリに適切なコンテキストを設定する。<br>
以下の例では、QEMUを /home/<ユーザ名>/QEMU/ディレクトリにインストールしているものとする。<br>
<br>
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/bin/qemu-system-.*"
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/bin/qemu-i386"
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/bin/qemu-x86_64"
<br>
関連ライブラリやデータファイルにも必要に応じて設定する。<br>
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/libexec(/.*)?"
sudo semanage fcontext -a -t virt_image_t "/home/<ユーザ名>/QEMU/share(/.*)?"
<br>
====== コンテキストの適用 ======
設定したコンテキストを実際のファイルに適用 (再ラベル付け) する。<br>
sudo restorecon -Rv /home/<ユーザ名>/QEMU/
<br>
====== 設定の確認 ======
コンテキストが正しく設定されたかどうかを確認する。<br>
ls -Z /home/<ユーザ名>/QEMU/bin/
<br>
正しく設定されていれば、<u>qemu_exec_t</u> ラベルが表示される。<br>
<br>
====== ブール値の調整(必要に応じて) ======
状況によっては、SELinuxのブール値を変更する必要がある。<br>
<br>
仮想化関連のブール値を確認する。<br>
getsebool -a | grep virt
<br>
必要に応じて有効化する。<br>
sudo setsebool -P virt_use_nfs on              # NFSを使用する場合
sudo setsebool -P virt_use_samba on            # Sambaを使用する場合
sudo setsebool -P virt_sandbox_use_all_caps on  # 特権が必要な場合
<br>
====== 上記で解決しない場合 : カスタムポリシーモジュールの作成 ======
上記の設定でもアクセス拒否が発生する場合は、カスタムポリシーを作成する。<br>
<br>
拒否ログを確認する。<br>
sudo ausearch -m avc -ts recent
<br>
ログからポリシーモジュールを自動生成する。<br>
sudo ausearch -m avc -ts recent | audit2allow -M qemu_custom
<br>
モジュールをインストールする。<br>
sudo semodule -i qemu_custom.pp
<br>
<br>


286行目: 372行目:
<br>
<br>
Virt-Managerをビルドおよびインストールする。<br>
Virt-Managerをビルドおよびインストールする。<br>
  ./setup.py configure --prefix=<Virt-Managerのインストールディレクトリ>
  meson build -Dprefix=<Virt-Managerのインストールディレクトリ>
  ./setup.py build
  ninja -C build -j $(nproc)
  ./setup.py install
  ninja -C build install
<br><br>
<br><br>


813行目: 899行目:
シャットダウンを実行する時、ホストOSがロックアップすることが知られている。<br>
シャットダウンを実行する時、ホストOSがロックアップすることが知られている。<br>
<br>
<br>
===== 方法 1 =====
これを回避する方法は、libvirtフックスクリプトとsystemdユニットを使用して、<br>
これを回避する方法は、libvirtフックスクリプトとsystemdユニットを使用して、<br>
ゲストOSの実行中にホストOSがスリープ状態になることを防ぐ。<br>
ゲストOSの実行中にホストOSがスリープ状態になることを防ぐ。<br>
862行目: 949行目:
上記で作成したデーモンを停止する。<br>
上記で作成したデーモンを停止する。<br>
  sudo systemctl stop libvirt-nosleep.service
  sudo systemctl stop libvirt-nosleep.service
<br>
ゲストOSを起動して、スリープが抑制されているかどうかを確認する。<br>
systemd-inhibit --list
<br>
===== 方法 2 =====
同様に、libvirtフックスクリプトとシェルスクリプトを使用して、ゲストOSの実行中にホストOSがスリープ状態になることを防ぐ方法もある。<br>
<br>
libvirtフックから呼び出す場合、仮想マシンが起動する瞬間に呼び出されるため、確実に仮想マシンが起動し終わるまで待機することが可能である。<br>
sudo vi /usr/local/bin/libvirt-inhibit-sleep.sh
<br>
<syntaxhighlight lang="sh">
# /usr/local/bin/libvirt-inhibit-sleep.shファイル
#!/bin/bash
# KVMドメインの実行中にスリープを抑制するスクリプト(フック用)
# 引数として仮想マシン名を受け取る
DOMAIN="$1"
# 引数が指定されていない場合はエラー
if [ -z "$DOMAIN" ]; then
    echo "Error: No domain name specified" >&2
    exit 1
fi
# ログファイルの設定(デバッグ用)
LOG_FILE="/var/log/libvirt/hooks/nosleep-${DOMAIN}.log"
mkdir -p /var/log/libvirt/hooks
# ログ関数
log_message() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
log_message "Sleep inhibit started for domain: $DOMAIN"
# 仮想マシンが完全に起動するまで少し待機
# フックはVMの起動処理の初期段階で呼ばれるため
sleep 5
# 指定されたドメインが存在するか確認
if ! virsh dominfo "$DOMAIN" &>/dev/null; then
    log_message "Error: Domain '$DOMAIN' does not exist"
    exit 1
fi
# スリープを抑制しながら、ドメインの状態を監視
# ドメインが停止したら、このコマンド全体が終了する
log_message "Starting systemd-inhibit for domain: $DOMAIN"
systemd-inhibit --what=sleep \
                --why="Libvirt domain $DOMAIN is running" \
                --who="libvirt-hook" \
                --mode=block \
                /bin/bash -c "
                    while virsh domstate '$DOMAIN' 2>/dev/null | grep -q 'running'; do
                      sleep 60
                    done
                "
log_message "Domain '$DOMAIN' has stopped, releasing sleep inhibit"
exit 0
</syntaxhighlight>
<br>
このシェルスクリプトに実行権限を付加する。<br>
sudo chmod u+x /usr/local/bin/libvirt-inhibit-sleep.sh
<br>
次に、libvirtフックスクリプトを作成する。<br>
libvirtフックスクリプトは、libvirtは仮想マシンの状態が変わるたびに、このスクリプトを呼び出す。<br>
その時、仮想マシンの名前、何が起きたか (start, stopped等)、それがbegin (開始) なのか end (終了) なのかという情報を引数として渡す。<br>
libvirtフックスクリプトは、「仮想マシンが起動を開始した」というイベント (started / begin) を検知すると、libvirt-inhibit-sleep.shをバックグラウンドで起動する。<br>
<br>
フックスクリプト自体は短時間で終了する必要があるため、nohupコマンドを使用する。<br>
スリープ抑制は長時間実行され続ける必要があるため、バックグラウンドプロセスとして独立させる。<br>
<br>
sudo vi /etc/libvirt/hooks/qemu
<br>
<syntaxhighlight lang="sh">
# /etc/libvirt/hooks/qemuファイル
#!/bin/bash
# Libvirt QEMU hook script
# 仮想マシンの起動・停止時にスリープ抑制を制御する
# このスクリプトは以下の引数で呼ばれます:
# $1 = 仮想マシン名(guest name)
# $2 = 動作(operation): start, stopped, など
# $3 = サブ動作(sub-operation): begin, end
# $4 = 追加引数(あれば)
GUEST_NAME="$1"
OPERATION="$2"
SUB_OPERATION="$3"
# ログファイルの設定
HOOK_LOG="/var/log/libvirt/hooks/qemu-hook.log"
mkdir -p /var/log/libvirt/hooks
# ログ関数
log_message() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $GUEST_NAME - $OPERATION/$SUB_OPERATION - $1" >> "$HOOK_LOG"
}
log_message "Hook called"
# 仮想マシンが起動した時
if [ "$OPERATION" = "started" ] && [ "$SUB_OPERATION" = "begin" ]; then
    log_message "VM starting, launching sleep inhibit script"
    # スリープ抑制スクリプトをバックグラウンドで実行
    # nohupを使用して、このフックスクリプトが終了しても継続実行させる
    nohup /usr/local/bin/libvirt-inhibit-sleep.sh "$GUEST_NAME" >> /var/log/libvirt/hooks/nosleep-${GUEST_NAME}.log 2>&1 &
    # プロセスIDをファイルに保存(将来的な管理用)
    echo $! > "/var/run/libvirt-nosleep-${GUEST_NAME}.pid"
    log_message "Sleep inhibit script launched with PID: $!"
fi
# 仮想マシンが停止した時
# スリープ抑制スクリプトは自動的に終了するはずだが、念のため確認
if [ "$OPERATION" = "stopped" ] && [ "$SUB_OPERATION" = "end" ]; then
    log_message "VM stopped"
    # PIDファイルが存在すれば削除
    if [ -f "/var/run/libvirt-nosleep-${GUEST_NAME}.pid" ]; then
      rm -f "/var/run/libvirt-nosleep-${GUEST_NAME}.pid"
      log_message "Cleaned up PID file"
    fi
fi
exit 0
</syntaxhighlight>
<br>
ログファイルを配置するディレクトリを作成する。<br>
sudo mkdir -p /var/log/libvirt/hooks
<br>
ゲストOSを起動して、スリープが抑制されているかどうかを確認する。<br>
systemd-inhibit --list
<br><br>
<br><br>


934行目: 1,160行目:
*# もし、ブートローダの設定において、<code>nomodeset</code>の記述が削除されている場合、<code>nomodeset</code>を追記する。
*# もし、ブートローダの設定において、<code>nomodeset</code>の記述が削除されている場合、<code>nomodeset</code>を追記する。
<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]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]]