Emulation requires disk images to be provided and used for the main hard drive of emulated computers. These disk images can be captured from old hard drives as discussed here. In order to automate aspects of running these disk images in an emulator a tool is needed that tells us which emulators would be compatible with the image and how to configure them. In this post I identify some of the requirements of such a tool and seek feedback from the community about them and the concept in general.
A tool for identifying and configuring emulators that are compatible with captured hard drive images would need to do the following:
It would also be good to be able to identify other software installed on the operating system environment stored on the disk image in order to identify whether any hardware it relied on could be supplied by emulated hardware but couldn't be identified in step 4.
This information could then be mapped to emulators and the hardware available in them. This would enable the automatic configuration and execution of the appropriate emulator to load the disk image on emulated hardware.
Disk images could theoretically be assigned identifiers to be mapped to emulators and emulated hardware configurations/profiles based on either:
There is huge potential complexity in this approach. Every variant of installed hardware could require a new "format", every variant of installed software profile could require a new "format" and every combination of installed software profile and hardware/driver configuration could require a new format.
In order to simply the process it may be possible in many cases to just identify which OS is installed on the disk image. This may often be enough to configure an emulated environment to successfully execute the software installed on the disk image. This could be achieved by using a generic configuration that is known to work with that OS.
In other cases the environment may require a specialised hardware configuration that would require more extensive information to identify. Identifying generic emulated hardware profiles that are compatible with the hardware configured on the disk image will require identifying that previously configured hardware (i.e. 3. above). The concept of this approach would be to first identify the hardware components previously used to run the software installed on the disk image. These hardware components could then be compared against the set of available emulated hardware and the previously used components could be matched with compatible emulated components.
Developing a tool to identify 2. the installed operating system, seems like a quick-win piece of work. Developing a tool to identifying 4. generic emulated hardware profiles that the disk images are compatible with, seems like a much harder piece of work that may require a lot of documentation, but would potentially be much more useful. The work to develop a schema for documenting hardware and software environments (and to document them) being carried out by the Totem Project may be able to be utilized to help realise such a tool.
There are analogies between this approach and the approaches used by file format identification tools. It is interesting to consider hard drive images as files that require applications (i.e. emulators) to execute them. As such there is potential to repurpose format identification or characterisation tools for the purposes outlined above.
The purpose for this post was threefold:
Any comments or feedback would be greatly appreciated.