unix/Step by step/Linux emulationの実現

2018-04-16 (月) 15:53:00 (1287d)

up



準備

  • kernelのオプション確認(GENERIC kernelは以下を満たしている)
    • 以下のオプションがあることを確認
      • option COMPAT_LINUX
      • option EXEC_ELF32
    • 以下のオプションがあることを確認(64-bit ELF)
      • option COMPAT_LINUX
      • option EXEC_ELF64
  • pkgsrc/misc/rpm/
  • pkgsrc/emulators/suse100_base/
  • pkgsrc/emulators/suse100_compat/
  • pkgsrc/emulators/suse100_x11/

インストール

  • 対象パッケージ
    • pkgsrc/misc/rpm/
    • pkgsrc/emulators/suse100_base/
    • pkgsrc/emulators/suse100_compat/
    • pkgsrc/emulators/suse100_x11/
  • 対象パッケージにて
    • make
    • make install

初期設定

  • /emul/linux -> /usr/pkg/emul/linux を確認
    • なっていなかったらシンボリックリンクをはる
      • mkdir /emul
      • ln -s /usr/pkg/emul/linux /emul/linux
    • amd64の場合
      • ln -s /usr/pkg/emul/linux32 /emul/linux32 もリンクを貼っておく
  • /procのエミュレート
    • /etc/fstabにlinux用のprocをマウント
      • procfs /emul/linux/proc procfs ro,linux
      • procfs /emul/linux/proc procfs rw,linuxかも
  • getpwuid_r failed の問題
    • Linux emulationしているソフトウェアがuidを取得できないことから生じる問題
    • 回避方法:Linux emulation上でuidが分かるようにする
      • getent passwd > /emul/linux/etc/passwd
      • vi /emul/linux/etc/passwd
      • rootなどのソフトを使わないユーザを消しておく
    • 参考