Now I’ve written the second tool of virt-bmap which lets you boot a guest and observe what files it is reading from disk. (NB if you want to try this out you will need a patched libguestfs)
The second tool is an nbdkit plugin, so to use the tool you just do:
$ nbdkit -r bmaplogger file=/tmp/win7.img bmap=/tmp/win7.bmap \ --run ' qemu-kvm -cpu host -m 2048 -hda $nbd '
and watch the output as the guest boots. Note that the bmap
file must have been prepared previously by the virt-bmap tool (see part 1).
The results are interesting. Here is Windows 7 booting (edited down for brevity):
read v /dev/sda read p /dev/sda1 read f /dev/sda1 /Boot/cs-CZ/bootmgr.exe.mui read f /dev/sda1 /Boot/BCD read f /dev/sda1 /Boot/cs-CZ/bootmgr.exe.mui read f /dev/sda1 /Boot/da-DK/bootmgr.exe.mui read f /dev/sda1 /Boot/tr-TR/bootmgr.exe.mui read f /dev/sda1 /Boot/zh-HK/bootmgr.exe.mui read f /dev/sda1 /Boot/zh-TW/bootmgr.exe.mui read f /dev/sda1 /bootmgr read v /dev/sda read p /dev/sda1 read f /dev/sda1 /Boot/cs-CZ/bootmgr.exe.mui read f /dev/sda1 /Boot/BCD read f /dev/sda1 /Boot/da-DK/bootmgr.exe.mui read f /dev/sda1 /Boot/cs-CZ/bootmgr.exe.mui read f /dev/sda1 /Boot/da-DK/bootmgr.exe.mui read f /dev/sda1 /Boot/Fonts/kor_boot.ttf read p /dev/sda1 read f /dev/sda1 /Boot/cs-CZ/bootmgr.exe.mui read f /dev/sda1 /Boot/BCD read f /dev/sda1 /Boot/da-DK/bootmgr.exe.mui read f /dev/sda1 /Boot/cs-CZ/bootmgr.exe.mui read f /dev/sda1 /Boot/da-DK/bootmgr.exe.mui read f /dev/sda1 /Boot/BCD read f /dev/sda1 /Boot/da-DK/bootmgr.exe.mui read f /dev/sda1 /Boot/de-DE/bootmgr.exe.mui read p /dev/sda1 read f /dev/sda1 /Boot/cs-CZ/bootmgr.exe.mui read f /dev/sda1 /Boot/BCD read f /dev/sda1 /Boot/da-DK/bootmgr.exe.mui read f /dev/sda1 /Boot/cs-CZ/bootmgr.exe.mui read f /dev/sda1 /Boot/da-DK/bootmgr.exe.mui read f /dev/sda1 /Boot/BOOTSTAT.DAT read f /dev/sda1 /bootmgr read f /dev/sda1 /Boot/BOOTSTAT.DAT read v /dev/sda read p /dev/sda2 read d /dev/sda2 / read f /dev/sda2 /Windows/System32/Msdtc/MSDTC.LOG read d /dev/sda2 / read f /dev/sda2 /ProgramData/Microsoft/Search/Data/Applications/Windows/MSSres00001.jrs read d /dev/sda2 / read d /dev/sda2 /Users read p /dev/sda2 read d /dev/sda2 /Windows/assembly/NativeImages_v2.0.50727_64 read d /dev/sda2 /Windows read p /dev/sda2 read d /dev/sda2 /Windows/servicing read d /dev/sda2 /Windows read f /dev/sda2 /Windows/System32/config/SAM.LOG1 read p /dev/sda2 read d /dev/sda2 /Windows/System32 read p /dev/sda2 read d /dev/sda2 /Windows/System32/en-US/Licenses/_Default read d /dev/sda2 /Windows/System32 read p /dev/sda2 read d /dev/sda2 /Windows/System32 read d /dev/sda2 /Windows/System32/Tasks/Microsoft/Windows read d /dev/sda2 /Windows/System32 read p /dev/sda2 read f /dev/sda2 /Windows/System32/CIRCoInst.dll read d /dev/sda2 /Windows/System32 read f /dev/sda2 /Windows/System32/clb.dll read d /dev/sda2 /Windows/System32 read f /dev/sda2 /Windows/System32/cmmon32.exe read d /dev/sda2 /Windows/System32 read f /dev/sda2 /Windows/System32/cryptnet.dll read d /dev/sda2 /Windows/System32 [...] read f /dev/sda2 /Windows/System32/iscsilog.dll read f /dev/sda2 /Windows/System32/ksetup.exe read d /dev/sda2 /Windows/System32 read f /dev/sda2 /Windows/System32/ksproxy.ax read f /dev/sda2 /Windows/System32/NcdProp.dll read d /dev/sda2 /Windows/System32 read f /dev/sda2 /Windows/System32/nci.dll read f /dev/sda2 /Windows/System32/profsvc.dll read d /dev/sda2 /Windows/System32 read f /dev/sda2 /Windows/System32/propsys.dll read d /dev/sda2 /Windows/System32 read p /dev/sda2 read f /dev/sda2 /Windows/System32/winload.exe [...]
Here is a Windows server that had McAfee (a “virus scanner”) installed:
read v /dev/sda read f /dev/sda1 /Boot/BCD read f /dev/sda1 /bootmgr read v /dev/sda read f /dev/sda2 /Program Files (x86)/McAfee/Real Time/log0.txt read v /dev/sda read p /dev/sda1 read f /dev/sda1 /Boot/BCD read f /dev/sda1 /Boot/nl-NL/bootmgr.exe.mui read f /dev/sda1 /Boot/pl-PL/bootmgr.exe.mui read f /dev/sda1 /Boot/ru-RU/bootmgr.exe.mui read f /dev/sda1 /Boot/zh-TW/bootmgr.exe.mui read f /dev/sda1 /bootmgr read f /dev/sda1 /Boot/BOOTSTAT.DAT read f /dev/sda1 /Boot/BCD read f /dev/sda1 /Boot/Fonts/kor_boot.ttf read f /dev/sda1 /BOOTSECT.BAK read f /dev/sda1 /Boot/BCD read f /dev/sda1 /BOOTSECT.BAK read f /dev/sda1 /Boot/BCD read f /dev/sda1 /Boot/BOOTSTAT.DAT read f /dev/sda1 /Boot/BCD read f /dev/sda2 /Program Files (x86)/McAfee/Real Time/log4.txt read f /dev/sda1 /Boot/BCD read p /dev/sda2 read f /dev/sda2 /Program Files (x86)/Common Files/microsoft shared/DAO/dao360.dll read f /dev/sda1 /Boot/cs-CZ/bootmgr.exe.mui read f /dev/sda2 /Program Files (x86)/Common Files/System/msadc/adcjavas.inc read f /dev/sda2 /ProgramData/McAfee/Common Framework/Mesh/SvcMgr_WPLCLDWA170.log read f /dev/sda2 /Program Files (x86)/McAfee/Policy Auditor Agent/auditmanager.log read f /dev/sda2 /Program Files (x86)/Common Files/microsoft shared/DAO/dao360.dll read f /dev/sda2 /Program Files (x86)/McAfee/Real Time/log7.txt read f /dev/sda2 /Program Files (x86)/MSBuild/Microsoft/Windows Workflow Foundation/v3.0/Workflow.Targets read f /dev/sda2 /Windows/ServerEnterprise.xml read f /dev/sda2 /Windows/inf/setupapi.dev.log read f /dev/sda2 /Program Files (x86)/McAfee/Real Time/log7.txt read f /dev/sda2 /Program Files (x86)/Internet Explorer/en-US/jsprofilerui.dll.mui read f /dev/sda2 /Users/tempadmin/AppData/Local/Microsoft/Internet Explorer/Recovery/High/Last Active/{7101D2F0-982F-11E0-A584-005056A7000F}.dat read f /dev/sda2 /Program Files (x86)/McAfee/Policy Auditor Agent/Plugins/AuEngineUpdater.dll read f /dev/sda2 /Windows/System32/clusapi.dll read f /dev/sda2 /Windows/System32/cmcfg32.dll read f /dev/sda2 /Windows/winsxs/Backup/amd64_microsoft-windows-com-base_31bf3856ad364e35_6.1.7600.16385_none_69e3281e403684ea_comcat.dll_8571d1d1 read f /dev/sda2 /Windows/System32/comdlg32.dll read f /dev/sda2 /Windows/SysWOW64/comexp.msc read f /dev/sda2 /Program Files (x86)/McAfee/Policy Auditor Agent/Schema/linux-definitions-schema.xsd read f /dev/sda2 /ProgramData/McAfee/Common Framework/Mesh/SvcMgr_WPLCLDWA170.log read f /dev/sda2 /Windows/SysWOW64/C_10003.NLS read f /dev/sda2 /Windows/SysWOW64/C_10004.NLS read f /dev/sda2 /Windows/SysWOW64/C_20005.NLS read f /dev/sda2 /Windows/SysWOW64/C_21025.NLS read f /dev/sda2 /Windows/CMAgent/Installer/Providers/ExecutionEngine/providers.catalog read f /dev/sda2 /Windows/SysWOW64/dfsrHealthReport.xsl read f /dev/sda2 /ProgramData/McAfee/Common Framework/Mesh/SvcMgr_WPLCLDWA170.log read f /dev/sda2 /Windows/SysWOW64/C_10003.NLS read f /dev/sda2 /Windows/SysWOW64/C_10004.NLS read f /dev/sda2 /Windows/SysWOW64/C_20005.NLS read f /dev/sda2 /Windows/SysWOW64/C_21025.NLS read f /dev/sda2 /Windows/CMAgent/Installer/Providers/ExecutionEngine/providers.catalog read f /dev/sda2 /Windows/SysWOW64/dfsrHealthReport.xsl read f /dev/sda2 /ProgramData/McAfee/Common Framework/Mesh/SvcMgr_WPLCLDWA170.log read f /dev/sda2 /Windows/System32/hhctrl.ocx read f /dev/sda2 /Program Files (x86)/McAfee/Real Time/log2.txt read f /dev/sda2 /Windows/System32/KBDA1.DLL read f /dev/sda2 /ProgramData/McAfee/Common Framework/Mesh/SvcMgr_WPLCLDWA170.log read f /dev/sda2 /Windows/System32/Kswdmcap.ax read f /dev/sda2 /Windows/SysWOW64/NOISE.CHS read f /dev/sda2 /Windows/System32/NlsData0003.dll read f /dev/sda2 /Windows/SysWOW64/RacRules.xml read f /dev/sda2 /Windows/System32/ROUTE.EXE read f /dev/sda2 /Windows/SysWOW64/en-US/tapimgmt.msc read f /dev/sda2 /Windows/SysWOW64/en-US/tpm.msc read f /dev/sda2 /Windows/System32/TpmInit.exe read f /dev/sda2 /Program Files (x86)/McAfee/Policy Auditor Agent/oval.db read f /dev/sda2 /Windows/Microsoft.NET/Framework64/v4.0.30319/ngen.log read f /dev/sda2 /Program Files (x86)/McAfee/Policy Auditor Agent/Audit.db read f /dev/sda2 /Windows/System32/winload.exe
I wouldn’t take any of these traces very literally right now. Our method of mapping files to disk blocks is a bit shaky, especially for ntfs-3g. However I did check the major points of the McAfee trace against the raw log and block map and it seems plausible.