<div dir="ltr"><p class="MsoNormal"><br></p><p class="MsoNormal">豊田工業高等専門学校情報科学専攻<span lang="EN-US">1</span>年の高直我と申します。<span lang="EN-US"><span></span></span></p>
<p class="MsoNormal">現在、<span lang="EN-US">BitVisor</span>を用いたシステムの開発を行っております。<span lang="EN-US"><span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal">お聞きしたいことが<span lang="EN-US">2</span>点ございます。<span lang="EN-US"><span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">1</span>つは<span lang="EN-US">MacOS(Sierra
10.12.6) </span>上で<span lang="EN-US">BitVisor</span>を動作させたいと考えております。<span lang="EN-US">BitVisor Advent Calendar 2015</span>の<span lang="EN-US">4</span>日目に掲載されている<span lang="EN-US">Mac</span>で<span lang="EN-US">BitVisor<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">(<a href="https://qiita.com/hdk_2/items/6c73aac9df758dc896c1">https://qiita.com/hdk_2/items/6c73aac9df758dc896c1</a>)</span>というページを参考にして、<span lang="EN-US">EFIShell</span>から<span lang="EN-US">USB</span>ブートによって<span lang="EN-US">BitVisor</span>を起動し、<span lang="EN-US">MacOS</span>を起動することはできました。ですが起動後<span lang="EN-US">BitVisor</span>、ゲスト<span lang="EN-US">OS</span>共にネットワークに繋がりません。上記した参照ページに記載されている、ネットワークドライバのアンロードは行っています。<span lang="EN-US"><span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">NIC</span>は<span lang="EN-US">Broadcom</span>社のものを使っているため、<span lang="EN-US">config.vmm.driver.pci="class_code=020000, id=14e4:1686,
number=0, driver=bnx, net=ippass, virtio=1"</span>と指定しています。また<span lang="EN-US">bitvisor</span>の<span lang="EN-US">ip</span>を<span lang="EN-US">192.168.1.235</span>と静的に与えており、<span lang="EN-US">BitVisor</span>の<span lang="EN-US">IP</span>が正常に割り当てられていることを<span lang="EN-US">dbgsh</span>から確認しました。また、<span lang="EN-US">MacOS</span>上で<span lang="EN-US">ethernet</span>カードが<span lang="EN-US">virtio</span>デバイスとして認識されていることも確認しています。ゲスト<span lang="EN-US">OS</span>に組み込んだ<span lang="EN-US">virtio-net</span>モジュールは<span lang="EN-US">GitHub</span>上で公開されていた<span lang="EN-US">virtio-net-osx(<a href="https://github.com/pmj/virtio-net-osx">https://github.com/pmj/virtio-net-osx</a>)</span>を用いています。<span lang="EN-US"><span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">2</span>つ目として、私は研究で<span lang="EN-US">BitVisor1</span>上の<span lang="EN-US">ahci</span>ドライバにストレージ<span lang="EN-US">IO</span>の監視システムを組み込む、ということを行っています。そしてそのシステムを<span lang="EN-US">MacOS(</span>バージョンは前述のとおりです<span lang="EN-US">)</span>で動作させたいと考えております。そこで<span lang="EN-US">defconfig</span>に<span lang="EN-US">ahci</span>を捕捉するように記述をして、<span lang="EN-US">EFIShell</span>から<span lang="EN-US">USB</span>ブートの形で<span lang="EN-US">BitVisor</span>を起動したあとにゲスト<span lang="EN-US">OS</span>を起動<span lang="EN-US">(/System/Libray/CoreServices/boot.efi</span>を実行<span lang="EN-US">)</span>しようとすると、<span lang="EN-US">/System</span>以下のディレクトリへアクセスできなくなってしまいます。<span lang="EN-US">ahci</span>をパススルーさせると<span lang="EN-US">/System</span>以下のディレクトリへ<span lang="EN-US">cd</span>でき、<span lang="EN-US">boot.efi</span>を実行することで<span lang="EN-US">OS</span>の起動ができます。<span lang="EN-US">MacOS</span>の環境下では<span lang="EN-US">ahci</span>を捕捉できないのでしょうか。<span lang="EN-US"><span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal">よろしくお願いします。以下に環境やスペック等を記載しておきます。<span lang="EN-US"><span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">iMac</span>:<span lang="EN-US">2015</span>年製、<span lang="EN-US">MK142J/A<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">BitVisor</span>:<span lang="EN-US">2017</span>年夏ごろのものを使用<span lang="EN-US"><span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal">・<span lang="EN-US">defconfig<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">struct config_data config = {<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .vmm
= {<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .f11panic
= 1,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .f12msg
= 1,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .auto_reboot
= 1,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .panic_reboot
= 0,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .shell
= 1,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .dbgsh
= 1,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .no_intr_intercept
= 0,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .ignore_tsc_invariant
= 0,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .unsafe_nested_virtualization
= 0,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> (</span>中略<span lang="EN-US">)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> //.pci
= "device=bnx, number=0, driver=bnx, net=ippass, virtio=1, and,
device=ahci, number=0, driver=ahci"<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .pci
= "class_code=020000, id=14e4:1686, number=0, driver=bnx, net=ippass,
virtio=1"<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> (</span>中略<span lang="EN-US">)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> },<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> },<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .ip = {<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">
.use_dhcp = 0,<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .ipaddr
= {192, 168, 1, 235},<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .netmask
= {255, 255, 255, 0},<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> .gateway
= {192, 168, 1, 1},<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> },<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">};<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal">・<span lang="EN-US">.config<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_64=1#64bit VMM<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_DEBUG_GDB=0#gdb remote debug support
(32bit only)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_TTY_SERIAL=0#VMM uses a serial port
(COM1) for output<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_TTY_X540=1#VMM output to LAN<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_CPU_MMU_SPT_1=0#Shadow type 1 (very
slow and stable)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_CPU_MMU_SPT_2=0#Shadow type 2
(faster and unstable)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_CPU_MMU_SPT_3=1#Shadow type 3
(faster and unstable)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_CPU_MMU_SPT_DISABLE=0#Disable SPT
(fast, insecure and no MMIO)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_CPU_MMU_SPT_USE_PAE=1#Shadow page
table uses PAE<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_PS2KBD_F11PANIC=0#Panic when F11 is
pressed (PS/2 only)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_PS2KBD_F12MSG=1#Print when F12 is
pressed (PS/2 only)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_DBGSH=1#Debug shell access from
guest<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_STATUS=0#Provide VMM status for
guest<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_LOG_TO_GUEST=0#Log to guest memory<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_LOG_TO_IEEE1394=1#Log to IEEE 1394
host<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_ATA_DRIVER=1#Enable ATA driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_STORAGE=1#Enable storage encryption<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_CRYPTO=1#Crypto library<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_VPN=1#Enable IPsec VPN Client<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_USB_DRIVER=1#Enable USB driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_SHADOW_UHCI=1#Shadow UHCI(USB1)
transfers<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_SHADOW_EHCI=1#Shadow EHCI(USB2)
transfers<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_HANDLE_USBMSC=1#Handle USB mass
storage class devices<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_HANDLE_USBHUB=1#Handle USB hub class
devices<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_CONCEAL_USBCCID=1#Conceal USB ccid
class device<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_PS2KBD_F10USB=0#Run a test for USB
ICCD when F10 pressed<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_PS2KBD_F12USB=0#Dump EHCI async.
list when F12 pressed<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_IEEE1394_CONCEALER=1#Conceal OHCI
IEEE 1394 host controllers<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_ACPI_DSDT=1#Parse ACPI DSDT<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_DISABLE_SLEEP=0#Disable ACPI S2 and
S3<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_ENABLE_ASSERT=1#Enable checking
assertion failure<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_DEBUG_ATA=0#Enable debugging ATA
driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_SELECT_AES_GLADMAN=0#Select Dr.
Gladmans AES assembler code<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_CARDSTATUS=1#Panic if an IC card is
ejected (IDMAN)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_IDMAN=1#IDMAN (CRYPTO must be
enabled)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_NET_DRIVER=1#Enable NIC drivers<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_NET_PRO100=1#Intel PRO/100 driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_NET_PRO1000=1#Intel PRO/1000 driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_NET_RTL8169=0#Realtek RTL8169 driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_NET_BNX=1#Broadcom NetXtreme GbE
driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_NET_VIRTIO_NET=1#Enable virtio-net
for PRO1000/BNX<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_VPN_VE=0#Enable ve (Virtual
Ethernet) driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_VTD_TRANS=0#Enable VT-d translation<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_STORAGE_PD=0#Storage encrypting in
protection domain<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_IDMAN_PD=0#IDMan in protection
domain<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_VPN_PD=0#VPN in protection domain<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_DISABLE_TCG_BIOS=0#Disable TCG BIOS
(TPM related)<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_ACPI_TIME_SOURCE=1#Use ACPI PM Timer
as time source<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_TCG_BIOS=1#TCG BIOS support<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_BACKTRACE=0#Enable backtrace in
panic<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_VGA_INTEL_DRIVER=0#Enable vga_intel
driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_TTY_VGA=0#VMM output using VGA
driver<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_SHIFT_KEY_DEBUG=0#Debug shell with
shift key while booting<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_DUMP_PCI_DEV_LIST=1#Dump list of PCI
devices<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_IP=1#Enable TCP/IP stack<span></span></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG_PCI_MONITOR=1#PCI I/O monitor driver<span></span></span></p>
</div>