Download presentation
Presentation is loading. Please wait.
1
Chimera (собрание 1.09.09)
2
План Цель нашей работы Состояние на сегодня Функционирование branded зоны Планы на будущее Вопросы Предложения по организации совместной разработки Заключение
3
Цель Создание win32 branded зоны для OpenSolaris (на базе Windows 2003 SP1) Zone Container BrandZ infrastructure brand
4
Состояние на сегодня Умеем собирать WRK и ON Тестовые машины: – Windows 2k3 sp1(справа от ws17) – OpenSolaris onnv_b117(ws17.swsoft.nsu.ru) Документация WRK (две – написанная и сгенерированная) Изучена работа технологии BrandZ
5
Состояние на сегодня (продолжение) Набор тестовых программ Создана базовая win зона: – win brand kernel module – win brand userspace support library – zone configs Начата разработка загрузчика исполняемых файлов формата PE (Portable Executable)
6
Сборка 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/
7
Документация WRK http://parallels.nsu.ru/WackoWiki /Chimera/SpisokFunkcijj – [+] можно редактировать – [-] это очень не удобно (проблемы с правами) ws17.swsoft.nsu.ru: ~/WRK/documentation/home – [+] сгенерирована по исходному коду – [-] для удобства использования стоит более точно настроить генератор и разместить на веб- сервере
8
Набор тестовых программ Тестируем работу win зоны Каждая тестовая программа – аналог процесса init (на первых этапах разработки) Программы: – create* - создание файла (открыть, закрыть, завершить работу) – writefile* - пишет в существующий файл в юникоде (открыть, записать строку, закрыть, завершить работу)
9
Набор тестовых программ (продолжение) Вариации программ: – A: вызов функций ядра напрямую – B: вызов функций ядра через ntdll.dll – C: вызов функций ядра напрямую, исполняемый файл в формате ELF – D: вызов функций ядра напрямую, исполняемый файл в формате ELF, использование гибридного интерфейса ядра (Windows + Solaris)
10
Набор тестовых программ (продолжение 2) Оригинальные тестовые программы (create*, writefile*; вариации A, B, C) – http://parallels.nsu.ru/WackoWiki /DmitryKolbin – http://parallels.nsu.ru /~dkolbin/testPrograms/ Вариация D для create* – на ws17.swsoft.nsu.ru
11
Что почитать по 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
12
Базовая win зона Созданные компоненты: – win brand kernel module – win brand userspace support library – win zone configuration files Функциональность успешно протестирована на тестовой программе create*, вариация D Исходный код можно найти в среде сборки (~/testws), но лучше отдельно спросить у меня
13
Базовая win зона (продолжение) Точка входа в ядро – только через sysenter Нет поддержки загрузки файлов PE Тестовая программа создает файл и уходит в pause(2) Разделение пространств номеров системных вызовов: – до 1024 – Windows 2k3 sp1 – 1024 и более – OpenSolaris – об этом знают только kernel module и support library
14
Загрузчик файлов формата PE [?]
15
Функционирование branded зоны Зона – набор из: – конфигурационных файлов – модуля ядра (основная задача в принятии запросов на системные вызовы и передаче их в библиотеку поддержки) – библиотеки поддержки (большая часть эмуляции проходит здесь) – возможно, других библиотек и файлов Остальное предоставляет ОС
16
Системные вызовы: глобальная зона 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); }
17
Эмуляция системных вызовов: 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) }
18
Эмуляция системных вызовов: на самом деле всё несколько сложнее Точек входа в ядро может быть несколько Для каждой точки входа своя ‘win_syscall()’ См. struct brand_ops и struct brand_mach_ops Для заданной точки входа Syscall handler осуществляет демультиплексирование запросов системных вызовов (Windows/OpenSolaris) Сейчас в support library нельзя использовать open(2) и аналогичные функции из libc
19
Планы на будущее Реализация загрузчика PE файлов Реализация других точек входа в ядро Развитие библиотеки поддержки Код эмуляции для базовых системных вызовов Создание минимальной Windows-среды внутри зоны Обзор и анализ аналогов и заменителей
20
Планы на ближайшее будущее Определиться с организацией совместной работы Определить приоритетные задачи Перевод проекта под управление SCM системы (об этом – чуть позже сегодня)
21
Планы на ближайшее будущее (продолжение) Адаптация libc и других библиотек для возможности использования в support library Реализация загрузчика PE файлов Обзор и анализ аналогов и заменителей Остальное – в зависимости от предыдущих пунктов
22
Ваши вопросы? (это еще не конец)
23
Ваши ответы? Сколько часов в неделю вы можете уделять проекту? На какой курс вы перешли? Есть ли у вас доступ к сети университета из всех/большинства мест, где вы будете работать над проектом? Если нет, то к какой сети есть доступ у всех? У кого есть сервер в этой сети?
24
Ваши ответы? (продолжение) Какие скриптовые языки вы знаете? На каком уровне? (например, Perl, Python, Ruby, awk) С какими VCS, bugtracking, SCM системами вы знакомы? Считаете ли вы полезной возможность тестировать Химеру на виртуальной машине?
25
Ваши ответы? (продолжение 2) Что вы думаете о лицензировании продукта и возможных ограничениях на процесс разработки в связи с этим? Есть ли у вас какие-либо пожелания по организации процесса разработки и взаимодействия в команде? Есть ли у вас какие-либо предложения по направлениям развития?
26
Организация совместной разработки Установка SCM системы и сбор всей информации по проекту в одном месте – Trac + Mercurial plugin (?) – Перенести документы по проекту из WackoWiki в Trac Wiki Создание и использование списка рассылки – swsoft.nsu.ru / groups.google.com / …
27
Распределение задач Кто чем хотел бы заняться? ;)
28
Следующая встреча О чем? Что бы вы хотели услышать? Когда?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.