Chimera


Презентация изнутри:

Слайд 0

Chimera (собрание 1.09.09)


Слайд 1

План Цель нашей работы Состояние на сегодня Функционирование branded зоны Планы на будущее Вопросы Предложения по организации совместной разработки Заключение


Слайд 2

Цель Создание win32 branded зоны для OpenSolaris (на базе Windows 2003 SP1) Zone Container BrandZ infrastructure brand


Слайд 3

Состояние на сегодня Умеем собирать WRK и ON Тестовые машины: Windows 2k3 sp1 (справа от ws17) OpenSolaris onnv_b117 (ws17.swsoft.nsu.ru) Документация WRK (две – написанная и сгенерированная) Изучена работа технологии BrandZ


Слайд 4

Состояние на сегодня (продолжение) Набор тестовых программ Создана базовая win зона: win brand kernel module win brand userspace support library zone configs Начата разработка загрузчика исполняемых файлов формата PE (Portable Executable)


Слайд 5

Сборка WRK и ON WRK /WindowsResearchKernel-WRK/README.txt ON (OS/Net consolidation) http://parallels.nsu.ru/WackoWiki/Chimera/BuildingOpenSolaris http://www.opensolaris.org/os/community/on/devref_toc/


Слайд 6

Документация WRK http://parallels.nsu.ru/WackoWiki/Chimera/SpisokFunkcijj [+] можно редактировать [-] это очень не удобно (проблемы с правами) ws17.swsoft.nsu.ru:~/WRK/documentation/home [+] сгенерирована по исходному коду [-] для удобства использования стоит более точно настроить генератор и разместить на веб-сервере


Слайд 7

Набор тестовых программ Тестируем работу win зоны Каждая тестовая программа – аналог процесса init (на первых этапах разработки) Программы: create* - создание файла (открыть, закрыть, завершить работу) writefile* - пишет в существующий файл в юникоде (открыть, записать строку, закрыть, завершить работу)


Слайд 8

Набор тестовых программ (продолжение) Вариации программ: A: вызов функций ядра напрямую B: вызов функций ядра через ntdll.dll C: вызов функций ядра напрямую, исполняемый файл в формате ELF D: вызов функций ядра напрямую, исполняемый файл в формате ELF, использование гибридного интерфейса ядра (Windows + Solaris)


Слайд 9

Набор тестовых программ (продолжение 2) Оригинальные тестовые программы (create*, writefile*; вариации A, B, C) http://parallels.nsu.ru/WackoWiki/DmitryKolbin http://parallels.nsu.ru/~dkolbin/testPrograms/ Вариация D для create* на ws17.swsoft.nsu.ru


Слайд 10

Что почитать по BrandZ? OpenSolaris BrandZ design document http://www.opensolaris.org/os/community/brandz/design/ OpenSolaris ON Developer's Reference Guide http://www.opensolaris.org/os/community/on/devref_toc/ Brand Source Layout http://parallels.nsu.ru/WackoWiki/Chimera/BrandSourceLayout


Слайд 11

Базовая win зона Созданные компоненты: win brand kernel module win brand userspace support library win zone configuration files Функциональность успешно протестирована на тестовой программе create*, вариация D Исходный код можно найти в среде сборки (~/testws), но лучше отдельно спросить у меня


Слайд 12

Базовая win зона (продолжение) Точка входа в ядро – только через sysenter Нет поддержки загрузки файлов PE Тестовая программа создает файл и уходит в pause(2) Разделение пространств номеров системных вызовов: до 1024 – Windows 2k3 sp1 1024 и более – OpenSolaris об этом знают только kernel module и support library


Слайд 13

Загрузчик файлов формата PE [?]


Слайд 14

Функционирование branded зоны Зона – набор из: конфигурационных файлов модуля ядра (основная задача в принятии запросов на системные вызовы и передаче их в библиотеку поддержки) библиотеки поддержки (большая часть эмуляции проходит здесь) возможно, других библиотек и файлов Остальное предоставляет ОС


Слайд 15

Системные вызовы: глобальная зона userland kernel Global zone (native) Solaris process { … open() … } Solaris kernel Syscall handler if (p->p_brand) p->p_brand->b_syscall(); else rval = do_native_syscall(); return to userspace open() { … return (fd); }


Слайд 16

Эмуляция системных вызовов: win зона userland kernel Windows zone Windows process { … NtCreateFile() … } Solaris kernel Syscall handler if (p->p_brand) p->p_brand->b_syscall(); else rval = do_native_syscall(); return to userspace open() { … return (fd); } Windows brand module struct win_brand_ops { win_syscall() win_proc_exit() win_initlwp() … } win_syscall() { trampoline to userland } Win brand support library win_NtCreateFile(args) { fd = open(win2sol(args)) if (fd < 0) return (sol2win(errno)) else return (fd) }


Слайд 17

Эмуляция системных вызовов: на самом деле всё несколько сложнее Точек входа в ядро может быть несколько Для каждой точки входа своя ‘win_syscall()’ См. struct brand_ops и struct brand_mach_ops Для заданной точки входа Syscall handler осуществляет демультиплексирование запросов системных вызовов (Windows/OpenSolaris) Сейчас в support library нельзя использовать open(2) и аналогичные функции из libc


Слайд 18

Планы на будущее Реализация загрузчика PE файлов Реализация других точек входа в ядро Развитие библиотеки поддержки Код эмуляции для базовых системных вызовов Создание минимальной Windows-среды внутри зоны Обзор и анализ аналогов и заменителей


Слайд 19

Планы на ближайшее будущее Определиться с организацией совместной работы Определить приоритетные задачи Перевод проекта под управление SCM системы (об этом – чуть позже сегодня)


Слайд 20

Планы на ближайшее будущее (продолжение) Адаптация libc и других библиотек для возможности использования в support library Реализация загрузчика PE файлов Обзор и анализ аналогов и заменителей Остальное – в зависимости от предыдущих пунктов


Слайд 21

Ваши вопросы? (это еще не конец)


Слайд 22

Ваши ответы? Сколько часов в неделю вы можете уделять проекту? На какой курс вы перешли? Есть ли у вас доступ к сети университета из всех/большинства мест, где вы будете работать над проектом? Если нет, то к какой сети есть доступ у всех? У кого есть сервер в этой сети?


Слайд 23

Ваши ответы? (продолжение) Какие скриптовые языки вы знаете? На каком уровне? (например, Perl, Python, Ruby, awk) С какими VCS, bugtracking, SCM системами вы знакомы? Считаете ли вы полезной возможность тестировать Химеру на виртуальной машине?


Слайд 24

Ваши ответы? (продолжение 2) Что вы думаете о лицензировании продукта и возможных ограничениях на процесс разработки в связи с этим? Есть ли у вас какие-либо пожелания по организации процесса разработки и взаимодействия в команде? Есть ли у вас какие-либо предложения по направлениям развития?


Слайд 25

Организация совместной разработки Установка SCM системы и сбор всей информации по проекту в одном месте Trac + Mercurial plugin (?) Перенести документы по проекту из WackoWiki в Trac Wiki Создание и использование списка рассылки swsoft.nsu.ru / groups.google.com / …


Слайд 26

Распределение задач Кто чем хотел бы заняться? ;)


Слайд 27

Следующая встреча О чем? Что бы вы хотели услышать? Когда?


×

HTML:





Ссылка: