R&D 543

부트로드 만들기 예제

부트로드 예제 만들기 가상화가 보편화 되면서 부트로더, 커널 등을 개발하고 테스트하는 것이 쉬워 졌다. 부트로더는 16bit 로 동작하며, 0x7c00 주소의 instruction을 실행한다. 왜 0x7c00 일까요?컴퓨터가 켜지고 BIOS가 실행되면, BIOS는 디스크가 "bootable" 한지를 체크하게 된다.이 때 boot sector(디스크의 첫번째 sector?)의 511 bytes, 512 bytes를 읽게 된다해당 위치에 0x55, 0xAA (Magic code)가 있으면 부트로드로 간주하고, 해당 sector를 메모리 공간 0x0000:0x7c00(segment 0, address 0x7c00)로 로드한다. 다음 코드는 아무런 동작도 하지 않은 부트로드이다. 예제코드(bootloader.a..

R&D/OS 2013.05.06

리눅스 부팅 프로세스

1.1 리눅스 x86 부팅 과정 시스템에 전원이 들어와서 새롭게 시작되는 것을 부팅(booting)이라고 하며, 이 과정을 부트스트랩(bootstrap)이라고 한다. 이는 운영체제의 최소부분을 주 메모리 공간에 로드하여 프로세서(CPU)가 이를 실행할 수 있도록 하는 것을 의미한다. 이러한 부트스트랩 코드는 어셈블러로 작성되어 있으며, (1)커널 자료구조 초기화, (2)스택/레지스터 초기화를 하고 C코드(start_kernel)함수가 실행할 수 있도록 만들어 준다. 커널 부팅 과정은 크게 3가지로 1단계: BIOS 동작, 2단계:부트로드 실행, 3단계:리눅스커널 부팅 로 이루어져 있다. o 1단계: BIOS 동작 1. 컴퓨터 하드웨어에 대한 테스트를 수행한다(POST) 2. 하드웨어 장치를 초기화한다. ..

R&D/OS 2013.05.06

CentOS 6.3 에서 Xen Build

o CentOS 6.3에서 Xen Hypervisor 빌드 CentOS 6.3 x86_64 버전을 minimal 로 설치함 ¡ Xen 소스 기반 빌드 빌드 툴 설치 #(CentOS5)용 yum groupinstall "Development Libraries" -> CentOS6에서는 "Additional Development"로 변경 yum groupinstall "Additional Development" yum groupinstall "Development Tools" yum install transfig wget tar less texi2html libaio-devel dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel bzip2-devel..

R&D/Hypervisor 2013.04.09

[Xen Interface Manual] 1.1 Virtual Architecture

1. Xen Interface Manual 1.1 Virtual Architecture o CPU state 모든 privileged state 는 Xen에 의해서 처리된다. 따라서 Guest OS는 CR3[1] 나 EFLAGS 에 대한 direct access가 제한된다. 이를 해결하기 위해선 Guest OS는 Hypercall을 통해서 필요한 작업들을 수행할 수 있다. ToDO: CPU ring 값과 의미 o Exception Guest OS는 Exception(Trap)을 처리하기 위해서 virtual IDT[2]를 가지고 있다. Domain는 자신의 Trap handler table을 set_trap_table Hypercall을 이용해서 Hypervisor에게 전달한다. o Interrupts ..

R&D/Hypervisor 2013.03.29
728x90
반응형