Спонсор: Microsoft
Опубликован: 13.11.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Самостоятельная работа 7:

Практическое изучение Windows Research Kernel

Ознакомление с базовой структурой исходных кодов ядра

Директория base\ntos\ содержит исходные коды ядра NTOS.

Структура этой директории изображена на рис. 39.3 .

 Структура директории NTOS – базовой директории с исходными кодами ядра Windows

увеличить изображение
Рис. 39.3. Структура директории NTOS – базовой директории с исходными кодами ядра Windows

Первичные компоненты исходных кодов NTOS, включенные в пакет WRK, организованы следующим образом:

  • cache\ - менеджер управления кэш-памятью
  • config\ - реализация рестра
  • dbgk\ - поддержка отладки в пользолвательском режиме
  • ex\ - функции executive (куча ядра, синхронизация, установка времени)
  • fsrtl\ - поддержка времени выполнения для файловой системы
  • io\ - планировщик, управление центральным процессором, низкоуровневая синхронизация
  • lpc\ - реализация локальных вызовов процедур (рассмотрены в "Обзор архитектуры и возможностей систем Windows 2000/XP/2003/Vista/2008/7" , "Системные механизмы Windows" )
  • mm\ - менеджер виртуальной памяти
  • ob\ - менеджер объектов ядра
  • ps\ - поддержка процессов и потоков
  • se\ - функции безопасности
  • wmi\ - инструментирование для управления Windows
  • inc\ - заголовочные файлы, используемые в NTOS
  • rtl\ - поддержка ядра времени выполнения
  • init\ - инициализация ядра

Например, файл ob\obinit.c содержит исходный код инициализации компоненты OB (управление внутренними объектами) ядра Windows.

Ознакомьтесь с его содержимым.

Мы закончили краткое ознакомление со структурой WRK.

Задание повышенной сложности: Экспериментальная сборка Windows из исходных кодов

Для тех, кто уже имеет опыт сборки больших проектов и использования утилиты make, а также хорошо владеет техническим английским языком, предлагаем более сложное задание – сборку ядра Windows из исходных кодов.

Подробная инструкция по сборке дана в файле README базовой директории.

Приводим ее ниже:

Инструкция по сборке Windows

Building/deploying a WRK kernel for x86 [or amd64]
     
    0. Copy the WRK into a directory, say %wrk%.  
    1. set arch=x86 [or amd64]
    2. path %wrk%\tools\%arch%;%path%
    3. cd %wrk%\base\ntos
    4. nmake -nologo %arch%=
        will produce kernel files in BUILD\EXE\%arch%
        [wrkx86.* or wrkx64.*]
    5. copy the kernel to %SystemRoot%\system32\
    6. if x86, find the Multi-processor version of hal.dll [see below]
    7. add a line to C:\boot.ini of the target system
        to boot this kernel and the MP hal [see below]
    8. reboot and select the boot option for the new kernel
    9. you will boot up on a kernel you built/linked yourself!
        [always keep the original boot.ini line and kernel/hal available so you
         can still boot your system if something fails with your WRK kernel modifications]
    10. set up a debugger [see below]
     
Multi-processor hal (x86 only, amd64 hals are all MP)
    All hals are renamed hal.dll, so you have to use the link command to
    see what type of hal hal.dll really is:
        link -dump -all hal.dll | findstr pdb
    The MP hals have an 'm' in the native name of the hal, e.g. halmacpi.dll
    You may already have an MP hal installed on UP systems, due to hyperthreading.
    If the hal isn't MP, you need to find the MP hal that corresponds to the current hal
    the target system does have, i.e. 
        halacpi.dll  -> halacpim.dll    ; ACPI PIC-based PC  [used by VirtualPC]
        halaacpi.dll -> halmacpi.dll    ; ACPI APIC-based PC
        halapic.dll  -> halmps.dll      ; MPS
    Look in the WRK WS03SP1HALS\x86 directory for the MP hal you need.
     
Boot.ini
    Edit boot.ini (you may have to use attrib -h -s -r first)
    Copy the line for the first operating system listed to the end of the file and edit it.
        [boot loader]
        timeout=30
        default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
        [operating systems]
        multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Standard"
        multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="test" /kernel=wrkx86.exe /hal=halmacpi.dll
    Note that the filenames must be short (8.3) names.
    You can add additional options for debugging (as specified in the WinDbg/KD help).
     
Debugging WRK
    The WinDBG/KD debuggers will work with the WRK.  The documentation is pretty thorough, and
    includes information about how to debug across a serial port, locally (examining kernel 
    data from user-mode), and debugging kernels running on VirtualPC.
     
    Version 6.6.3.5 of the WinDBG/KD debuggers is available with the Curriculum Resource Kit
    Tools ("CurriculumResourceKit-CRK\CRKTools\Debugging Tools" directory on the CD).  
    The latest version of the Windows Debugging Tools can be downloaded from
    http://www.microsoft.com/whdc/devtools/debugging.

Пояснения к инструкции по сборке Windows

HAL (Hardware Abstraction Layer) – компонента ядра Windows, реализующая уровень абстрагирования от аппаратуры. Использование подобной компоненты – многолетняя традиция Microsoft. Данный метод применен также в Microsoft Office и в академической версии .NET (Rotor).

Curriculum Resource Kit (CRK) – еще одна обучающая компонента для изучения ядра Windows, также предоставляемая фирмой Microsoft свободно для целей изучения и исследований. Ее структура и ссылка на ее дистрибутив описаны в "Академическая программа Microsoft Shared Source Initiative. Открытое ядро Windows для изучения и исследований (Windows Research Kernel)" . CRK содержит набор утилит, позволяющих иследовать различные особенности работы ОС. Необходимые пояснения даны также в книге [ 7 ] .

CD (компакт-диск), упоминаемый в инструкции, распространялся в 2006 – 2007 гг. фирмой Microsoft среди преподавателей университетов.

В частности, такой диск имеется и у автора курса.

Структура академического диска приведена на рис. 39.4 .

 Структура академического диска Microsoft с материалами для изучения Windows

увеличить изображение
Рис. 39.4. Структура академического диска Microsoft с материалами для изучения Windows

Желаем успеха в изучении архитектуры Windows на основе пакетов WRK и CRK!

Предупреждаем, что это очень интересно, но очень непросто, требует значительного времени, специальных знаний и некоторого опыта в разработке и сопровождении больших программных проектов. Однако трудные задачи решать интереснее, чем легкие – на этом пути Вас ждет успех!

Дальнейшая информация – в источниках [ 7 ] , [ 21 ] .

Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков
Константин Леденев
Константин Леденев
Россия
Олег Равков
Олег Равков
Россия