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

1行目: 1行目:
== 概要 ==
== 概要 ==


<br><br>
== QEMUのインストール ==
QEMU-User-Staticは、クロスアーキテクチャの開発者にとって重要なツールである。<br>
これにより、ユーザはchroot環境を作成して、クロスコンパイルされたプログラムを実行することができる。<br>
<br>
例えば、ユーザはシステムレベルのエミュレーションのオーバーヘッド無しに、AArch64の実行ファイルを実行することができる。<br>
<br>
==== ソースコードからインストール ====
QEMUのビルドに必要なライブラリをインストールする。<br>
sudo zypper install flex bison automake gcc gcc-c++ make glibc glibc-utils glib2-devel gtk3-devel ncurses-devel libxml2-devel \
                    libgnutls-devel gmp-devel libnettle-devel libseccomp-devel liburing-devel libgbm-devel glusterfs-devel \
                    libjpeg8-devel libpng16-devel libpulse-devel alsa-devel libjack-devel spice-protocol-devel libspice-server-devel \
                    libxkbcommon-devel libcap-devel libcap-ng-devel libpcap-devel libcurl-devel libudev-devel virglrenderer-devel xfsprogs-devel \
                    libiscsi-devel libzstd-devel libnfs-devel libvdeplug-devel brlapi-devel libSDL2-devel libSDL2_image-devel librados-devel \
                    lzfse-devel libmpath0 libcacard-devel lzo-devel snappy-devel libgcrypt-devel libu2f-server-devel libu2f-host-devel \
                    usbredir-devel libusb-1_0-devel libpmem-devel libkeyutils1 keyutils-devel libselinux-devel fuse-devel fuse3-devel libbpf-devel \
                    libbd_swap-devel libcapstone-devel libslirp-devel libfdt-devel sphinx libsphinxclient-devel  numad libnuma1 numactl libnuma-devel \
                    librbd-devel rdma-core-devel libnet-devel libfvde-devel libdmmp-devel multipath-tools-devel libssh-devel libssh2-devel
<br>
QEMUのソースコードをダウンロードする。<br>
* パッケージ管理システムからダウンロードする場合
*: <code>sudo zypper install </code>
*: <br>
* QEMUの公式Webサイトから、ソースコードをダウンロードする場合
*: [https://www.qemu.org/download/ QEMUの公式Webサイト]にアクセスして、ソースコードをダウンロードする。
*: ダウンロードしたファイルを解凍する。
*: <code>tar xf qemu-<バージョン>.tar.xz</code>
*: <code>cd qemu-<バージョン></code>
*: <br>
* Gitからソースコードをダウンロードする場合
*: <code>git clone git://git.qemu.org/qemu.git</code>
*: <code>cd qemu</code>
*: <code>git submodule update --init --recursive</code>
<br>
QEMUをQEMU-User-Staticとして、ビルドおよびインストールする。<br>
mkdir build && cd build
<br>
<code>--disable-system</code>オプションを指定する時、softmmuターゲットが無効になる。<br>
ただし、softmmuターゲットがいくつかの共有ライブラリに依存していることは知られている。<br>
<code>--static</code>オプションを指定した場合、これらのsoftmmuターゲットはリンクエラーを引き起こす。<br>
../configure --prefix=<QEMU-User-Staticのインストールディレクトリ> \
--static \
--disable-bsd-user --disable-guest-agent --disable-strip --disable-spice \
--enable-linux-user (もしかしたら --enable-linux-useかも) \
--disable-tools \
--disable-system (AArch64のみをインストールする場合は、--target-list=aarch64-linux-userオプションを指定する)
make -j $(nproc)
make install
<br>
ファイル名がコンフリクト(衝突)を起こさないように、ファイル名を変更する。<br>
以下の例では、ファイル名に-staticサフィックスを追加している。<br>
cd /<QEMU-User-Staticのインストールディレクトリ>/bin
bash -c "for i in *; do cp $i $i-static; done"
<br><br>
<br><br>