これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。
HTML ファイル生成日時: 2024/11/02 17:34:23.235 (台灣標準時)
Linux 用にコンパイルされた binary ファイルを、何も設定をしていない NetBSD 上で実行しようとすると、以下のように失敗してしまうでござる。
% file ./ls ./ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6461a544c35b9dc1d172d1a1c09043e487326966, for GNU/Linux 3.2.0, stripped % ./ls ./ls: Exec format error. Binary file not executable.
Linux binary の実行には、準備が必要でござる。
pkgsrc を使って suse15_base をインストールするでござる。
# cd /usr/pkgsrc/emulators/suse15_base # make install ..... ===> Installing binary package of suse_base-15.5nb1 suse_base-15.5nb1: rebuilding run-time library search paths database suse_base-15.5nb1: populating /usr/pkg/emul/linux/dev suse_base-15.5nb1: creating symlink /usr/pkg/emul/linux -> /emul/linux =========================================================================== $NetBSD: MESSAGE.NetBSD,v 1.1 2022/10/02 17:17:17 wiz Exp $ Do not forget to modload the compat_linux or compat_linux32 modules. Linux binaries require these in order to work. In older NetBSD versions these will be autoloaded. Edit /etc/modules.conf to load the modules automatically on boot. Some Linux binaries also require tmpfs to be mounted on /dev/shm. This can be automated by adding the following to your /etc/fstab: tmpfs /emul/linux/dev/shm tmpfs rw,-m1777 ===========================================================================
|
---|
suse15_base のインストールが終わったので、 Linux binary を実行してみる でござる。
% file ./ls ./ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6461a544c35b9dc1d172d1a1c09043e487326966, for GNU/Linux 3.2.0, stripped % ./ls ./ls: Exec format error. Binary file not executable.
やはり、カーネルモジュールの compat_linux をロードする必要があるようで ござる。
以下のようにして、カーネルモジュール compat_linux をロードするでござる。
# modload compat_linux # modstat | grep compat_linux compat_linux exec filesys - 0 55547 compat_ossaudio,sysv_ipc,compat_util,compat_50,compat_43,exec_elf64
|
---|
再度、 Linux binary の実行をしてみるでござる。
% file ./ls ./ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6461a544c35b9dc1d172d1a1c09043e487326966, for GNU/Linux 3.2.0, stripped % ./ls dbus-034CG4s95m ls ssh-pE1Ejc2k1qsL dbus-ZMVqRSmO4H man.pP9xzz xterm_suse15_00.png ds9 packages xterm_suse15_01.png ds9.opensuse15.8.4.1.tar.gz runtime-daisuke
今度は、期待通りに動作したでござる。
次に、 SAOimage DS9 の Linux binary を実行してみるでござる。
% file ./ds9 ./ds9: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=dccdae1f4044218178bfbc8a18331b691bd36e34, stripped % ./ds9 ./ds9: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory
X11 関連のライブラリーがないので、インストールする必要があるようでござ る。 pkgsrc を使ってインストールすればよいでござる。
# cd /usr/pkgsrc/emulators/suse15_x11 # make install ..... ===> Building binary package for suse_x11-15.5 => Creating binary package /tmp/packages/All/suse_x11-15.5.tgz ===> Installing binary package of suse_x11-15.5 suse_x11-15.5: rebuilding run-time library search paths database
SAOimage DS9 を実行してみるでござる。
% ./ds9 ./ds9: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory
libfontconfig がないようでござる。
# cd /usr/pkgsrc/emulators/suse15_fontconfig # make install ..... ===> Building binary package for suse_fontconfig-15.5 => Creating binary package /tmp/packages/All/suse_fontconfig-15.5.tgz ===> Installing binary package of suse_fontconfig-15.5 suse_fontconfig-15.5: rebuilding run-time library search paths database
SAOimage DS9 を実行してみるでござる。
% ./ds9 ./ds9: error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such file or directory
libxml2 がないようでござる。
# cd /usr/pkgsrc/emulators/suse15_libxml2 # make install ..... ===> Building binary package for suse_libxml2-15.5 => Creating binary package /tmp/packages/All/suse_libxml2-15.5.tgz ===> Installing binary package of suse_libxml2-15.5 suse_libxml2-15.5: rebuilding run-time library search paths database
SAOimage DS9 を実行してみるでござる。
% ./ds9
SAOimage DS9 がめでたく起動したでござる。
|
---|
FITS ファイルを読み込んで、表示させてみるでござる。
|
---|
|
|
|
問題なく動作するようでござる。
まず、 modules.conf についてのマニュアルを読んでみるでござる。
% man modules.conf
|
---|
/etc/modules.conf ファイルに、 OS 起動時にロードしたいカーネルモジュー ルの名前を一行に一つずつ書いておけばよいようでござる。
# cat /etc/modules.conf cat: /etc/modules.conf: No such file or directory # echo "compat_linux" > /etc/modules.conf # ls -lF /etc/modules.conf -rw-r--r-- 1 root wheel 13 May 7 19:05 /etc/modules.conf # cat /etc/modules.conf compat_linux