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

Chimera (собрание 1.09.09). План Цель нашей работы Состояние на сегодня Функционирование branded зоны Планы на

  • View
    250

  • Download
    1

Embed Size (px)

Citation preview

Chimera

(собрание 1.09.09)

План

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

разработки Заключение

Цель

Создание win32 branded зоны для OpenSolaris (на базе Windows 2003 SP1)

Zone Container BrandZ infrastructure brand

Состояние на сегодня

Умеем собирать WRK и ON Тестовые машины:

– Windows 2k3 sp1 (справа от ws17)– OpenSolaris onnv_b117 (ws17.swsoft.nsu.ru)

Документация WRK (две – написанная и сгенерированная)

Изучена работа технологии BrandZ

Состояние на сегодня (продолжение)

Набор тестовых программ Создана базовая win зона:

– win brand kernel module– win brand userspace support library– zone configs

Начата разработка загрузчика исполняемых файлов формата PE (Portable Executable)

Сборка 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/

Документация WRK

http://parallels.nsu.ru/WackoWiki/Chimera/SpisokFunkcijj– [+] можно редактировать– [-] это очень не удобно (проблемы с правами)

ws17.swsoft.nsu.ru:~/WRK/documentation/home– [+] сгенерирована по исходному коду– [-] для удобства использования стоит более

точно настроить генератор и разместить на веб-сервере

Набор тестовых программ

Тестируем работу win зоны Каждая тестовая программа – аналог

процесса init (на первых этапах разработки) Программы:

– create* - создание файла (открыть, закрыть, завершить работу)

– writefile* - пишет в существующий файл в юникоде (открыть, записать строку, закрыть, завершить работу)

Набор тестовых программ (продолжение)

Вариации программ:– A: вызов функций ядра напрямую– B: вызов функций ядра через ntdll.dll– C: вызов функций ядра напрямую, исполняемый

файл в формате ELF– D: вызов функций ядра напрямую, исполняемый

файл в формате ELF, использование гибридного интерфейса ядра (Windows + Solaris)

Набор тестовых программ (продолжение 2)

Оригинальные тестовые программы (create*, writefile*; вариации A, B, C)– http://parallels.nsu.ru/WackoWiki/DmitryKolbin– http://parallels.nsu.ru/~dkolbin/testPrograms/

Вариация D для create*– на ws17.swsoft.nsu.ru

Что почитать по 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

Базовая win зона

Созданные компоненты:– win brand kernel module– win brand userspace support library– win zone configuration files

Функциональность успешно протестирована на тестовой программе create*, вариация D

Исходный код можно найти в среде сборки (~/testws), но лучше отдельно спросить у меня

Базовая win зона (продолжение)

Точка входа в ядро – только через sysenter Нет поддержки загрузки файлов PE Тестовая программа создает файл и уходит в

pause(2) Разделение пространств номеров системных

вызовов:– до 1024 – Windows 2k3 sp1– 1024 и более – OpenSolaris– об этом знают только kernel module и support library

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

[?]

Функционирование branded зоны

Зона – набор из:– конфигурационных файлов– модуля ядра (основная задача в принятии

запросов на системные вызовы и передаче их в библиотеку поддержки)

– библиотеки поддержки (большая часть эмуляции проходит здесь)

– возможно, других библиотек и файлов Остальное предоставляет ОС

Системные вызовы: глобальная зона

userland

kernel

Global zone (native)

Solaris process{ … open() …}

Solaris kernel

Syscall handlerif (p->p_brand) p->p_brand->b_syscall();else rval = do_native_syscall();return to userspace

open() { … return (fd);}

Эмуляция системных вызовов: win зона

userland

kernel

Windows zone

Windows process{ … NtCreateFile() …}

Solaris kernel

Syscall handlerif (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 librarywin_NtCreateFile(args) { fd = open(win2sol(args)) if (fd < 0) return (sol2win(errno)) else return (fd)}

Эмуляция системных вызовов: на самом деле всё несколько сложнее

Точек входа в ядро может быть несколько Для каждой точки входа своя ‘win_syscall()’ См. struct brand_ops и struct brand_mach_ops Для заданной точки входа Syscall handler

осуществляет демультиплексирование запросов системных вызовов (Windows/OpenSolaris)

Сейчас в support library нельзя использовать open(2) и аналогичные функции из libc

Планы на будущее

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

вызовов Создание минимальной Windows-среды

внутри зоны Обзор и анализ аналогов и заменителей

Планы на ближайшее будущее

Определиться с организацией совместной работы

Определить приоритетные задачи Перевод проекта под управление SCM

системы

(об этом – чуть позже сегодня)

Планы на ближайшее будущее (продолжение)

Адаптация libc и других библиотек для возможности использования в support library

Реализация загрузчика PE файлов Обзор и анализ аналогов и заменителей

Остальное – в зависимости от предыдущих пунктов

Ваши вопросы?

(это еще не конец)

Ваши ответы?

Сколько часов в неделю вы можете уделять проекту?

На какой курс вы перешли? Есть ли у вас доступ к сети университета из

всех/большинства мест, где вы будете работать над проектом?

Если нет, то к какой сети есть доступ у всех? У кого есть сервер в этой сети?

Ваши ответы?(продолжение)

Какие скриптовые языки вы знаете? На каком уровне? (например, Perl, Python, Ruby, awk)

С какими VCS, bugtracking, SCM системами вы знакомы?

Считаете ли вы полезной возможность тестировать Химеру на виртуальной машине?

Ваши ответы?(продолжение 2)

Что вы думаете о лицензировании продукта и возможных ограничениях на процесс разработки в связи с этим?

Есть ли у вас какие-либо пожелания по организации процесса разработки и взаимодействия в команде?

Есть ли у вас какие-либо предложения по направлениям развития?

Организация совместной разработки

Установка SCM системы и сбор всей информации по проекту в одном месте– Trac + Mercurial plugin (?)– Перенести документы по проекту из WackoWiki в

Trac Wiki

Создание и использование списка рассылки– swsoft.nsu.ru / groups.google.com / …

Распределение задач

Кто чем хотел бы заняться? ;)

Следующая встреча

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