1 / 11

Chimera project

Chimera project. Vizovitin Nicolay Khlebnikov Sergey Kolbin Dmitry Sizov Mikhail. Scientific adviser: Irtegov D.V. The parts. Idea: mix OpenSolaris and Windows OpenSolaris sources (ON) Windows Research Kernel (WRK) – some kernel parts of Windows 2003 SP1

allie
Download Presentation

Chimera project

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chimera project Vizovitin Nicolay Khlebnikov Sergey Kolbin Dmitry Sizov Mikhail Scientific adviser: Irtegov D.V.

  2. The parts Idea: mix OpenSolaris and Windows • OpenSolaris sources (ON) • Windows Research Kernel (WRK) – some kernel parts of Windows 2003 SP1 • Other open-source projects like Wine and ReactOS

  3. Building OpenSolaris personality Terms: • Zone • Container • BrandZ infrastructure; brands Brands: • native • lx (Linux kernel 2.4) • sn1 (Solaris N-1 testing brand)

  4. Our goal Create new win brand, that supports execution of Windows applications on top of OpenSolaris kernel

  5. System call emulation: global zone Global zone (native) Solaris process { … open() … } userland kernel Solaris kernel Syscall handler if (p->p_brand) p->p_brand->b_syscall(); else rval = do_native_syscall(); return to userspace open() { … return (fd); }

  6. System call emulation: win zone Windows zone Win brand support library win_NtCreateFile(args) { fd = open(win2sol(args)) if (fd < 0) return (sol2win(errno)) else return (fd) } Windows process { … NtCreateFile() … } userland kernel Windows brand module Solaris kernel win_syscall() { trampoline to userland } Syscall handler if (p->p_brand) p->p_brand->b_syscall(); else rval = do_native_syscall(); return to userspace struct win_brand_ops { win_syscall() win_proc_exit() win_initlwp() … } open() { … return (fd); }

  7. Previously on the project • Learned to build Windows kernel • Extensive documentation of WRK sources • Attempts to build ON (OpenSolaris)

  8. During this summer • Almost entirely new project team • Learned to build ON (OpenSolaris) • Studied BrandZ operation • Created basic win zone • win brand kernel module • win brand support library • zone configuration files • support for syscalls via sysenter • Created number of test programs

  9. Plans on project development • Finish PE loader implementation • Emulation code for Windows system calls • Create minimal Windows environment in the zone • Allowing other technics for entering the kernel (int 2e, syscall) • Improve brand support library

  10. Q&A

More Related