|
by trick14 카테고리
메모장
───────────
★사진첩
───────────
♧ EJ ♧ Jeimian ♧ Titaness ♧ Eclipsia ♧ Lakey ♧ Narana ♧ Repenny's Cy ─────────── ▶ SLR클럽 ▶ 클리앙 ▶ SKI114 ▶ PhotoAbs 다운받기 ──────────── ◇ 하루 한가지 ◇ 한국 100대통계지표 ──────────── 최근 등록된 덧글
안녕하세요. 소스좀 받..
by 강정관 at 11/04 안녕하세요. 소스좀 받.. by 이승재 at 09/29 감사합니다. 제가 사용해.. by 고강훈 at 09/14 좋은 정보 감사합니다~ .. by 학생 at 08/25 C# 폼으로 옴겨서 실행을.. by 대학원생 at 08/25 |
2008년 07월 01일
RAM기반의 Object Store가 구현되어 있는 CE기기에서는 Registry 설정이 Object Store(RAM)에 저장되기 때문에 전원공급이 중단될 경우(cold boot) 모든 설정이 기본값으로 돌아가게 됩니다. 따라서 사용자가 변경한 Registry 설정을 보존해야 할 경우 Hive-based Registry를 사용 하여야 합니다. Hive-Based Registry를 사용하기 위해서는 Hive-based Registry Catalog아이템을 OS에 포함시켜야 하고 Registry가 저장될 장치에 대한 드라이버 컴포넌트와 파일 시스템에 대한 component도 추가합니다. 먼저 Hive-based Registry를 구현하기 위한 세부 설정들에 대해 알아보고, 실제 x86기반 보드의 USB Flash memory에 Registry를 저장시키는 방법을 적용해 보겠습니다. 1. Hive-Based Registry 시작 순서 Registry를 외장 파일 시스템에 저장하는 것은 시스템이 부팅되는 동안 발생되는 이벤트들의 순서를 복잡하게 만듭니다. 예를 들어, Registry 설정이 저장되어 있는 미디어(HDD, Flash등)에서 Registry 설정을 가져오기 위해서는 해당 미디어에 대한 드라이버가 로드 되어야 하는데, 드라이버가 로드 되기 위해서는 반대로 Registry 설정이 필요합니다. 이 문제에 대한 해결 방법으로 Hive-Based Registry환경에서는 미디어에 저장된 시스템 하이브(System.hv)에 접근하기 위해 부트 하이브(Boot.hv)를 이용해 필요한 일부 드라이버들을 먼저 로드 하는 방법을 사용합니다. 부트 하이브는 ROM(OS image: NK.bin)에 저장되어 있고 따라서 boot되는 동안 변경될 수 없습니다. 부팅 과정에서 드라이버가 부트 하이브를 변경시키면, 이 변경은 시스템 하이브에 적용되게 됩니다. 하지만 다음 부팅 때, 부트 Registry는 ROM에 있는 기본값으로 되돌려 질 것입니다. Hive-Based Registry환경에서는 시스템이 드라이버를 로딩하는 것을 두 개의 부트 단계(boot phase)로 나눌 수 있습니다. 첫 번째 부트 단계에서 부트 Registry에 정의된 작은 드라이버들의 묶음이 로드 됩니다. 이 드라이버들이 바로 시스템 Registry가 저장된 파일시스템에 접근하기 위해 필요한 드라이버들 입니다.
이 드라이버들은 ROM에 위치한 부트 Registry를 통해 시작되기 때문에, 드라이버들은 절대 변하지 않는 기본값들로 시작됩니다. 만약 이 드라이버들을 기본값 이외의 값으로 설정하고자 한다면, 이 드라이버들은 두 번째 단계까지 기다려서 Registry 설정을 다시 읽어야 합니다. 파일 시스템 프로세스(Filesys.exe)는 부트 Registry를 가져오고, Device.exe를 시작하고, 시스템 Registry를 가지고 있는 파일시스템이 준비될 때까지 기다립니다. Device Manager(Device.exe)는 부트Registry에 지정된 몇몇 드라이버들을 로드하고 시스템 Registry가 사용 가능해질 때까지 기다리게 됩니다. 시스템 Registry를 포함하고 있는 파일 시스템의 드라이버는 bootable flag가 설정되어 있어야만 하고, 이것으로 Filesys.exe는 어떤 파일 시스템을 기다려야 하는지 알 수 있습니다. 파일 시스템이 준비가 되면 해당 파일 시스템에 있는 시스템 Registry가 로드 됩니다. 시스템 Registry가 다음 단계를 진행할 준비가 되고, Filesys.exe에 의해 어플리케이션들이 시작될 때가 두 번째 부트 단계의 시작입니다. 이 때 System/BootPhase2 이벤트가 두 번째 단계의 드라이버 로딩하도록 설정합니다. 이 이벤트는 Device.exe가 시스템 Registry 설정에 따라 드라이버들을 re-enumerate하도록 합니다. 아래 그림은 시작 순서를 구체적으로 보여줍니다. ![]() ![]() Device.exe는 드라이버들을 re-enumerates하고 시작합니다. Filesys.exe는 나머지 초기화 key에 있는 나머지 어플리케이션들을 시작합니다.
[HKEY_LOCAL_MACHINE\init\BootVars]
"SystemHive"="Documents and Settings\\system.hv" "ProfileDir"="Documents and Settings\\system.hv
예를 들어서 "Flags"=dword:3 은 bit 1과 bit 2의 합이며 "Start DevMgr"=dword:1 설정과 동일한 의미입니다. 만약 Flags값이 설정되어 있지 않은 경우, Device Manager와 Storage Manager는 시작되지 않고 Hive는 Object Store(RAM)에 저장되게 됩니다.
; HIVE BOOT SECTION
예를 들어, 만약 MyFileSystem드라이버를 사용하는 MyProfile 저장 장치에 하이브를 설정하고 싶다면 MountAsBootable 또는 MountFlags를 아래 Registry 키에 설정하면 됩니다.
|