전체 글
-
1. Xen Project 소개개발/가상화 2016. 11. 5. 19:38
반가상화(Para-virtualization) 소프트웨어로 가장 대표적인 Xen에 대한 포스트를 앞으로 써보려고 한다. 이번 포스트에서는 Xen에 대한 소개와 역사 및 앞으로의 포스트 순서에 대해서 소개해보려 한다. 1. 소개 Xen은 Para-virtualization 형태로 여러 개의 Guest OS를 실행 할 수 있는 Hypervisor이다. 현재 Xen community에서 오픈소스의 형태로 개발중(www.xenproject.org)이며 작업에 따라서 여러가지 브랜치로 나눠져 있다. 크게 다음과 같이 세가지 Feature를 지원하는 것을 목표로 작업이 나눠져 있다. Feature Value Hypervisor 개발 여러개의 반가상화 Guest OS를 동시에 실행 할 수 있는 플랫폼을 개발한다. 확..
-
모놀리식(Monolithic) kernel과 마이크로(Micro) 커널개발/컴퓨터사이언스 2016. 10. 8. 17:12
커널은 크게 커널 내에 넣는 feature의 양에 따라 모놀리식(Monolithic) 커널과 마이크로(Micro) 커널로 나눌 수 있다. 위 구조를 이해 할 때 통념을 좀 깨야 할 필요가 있었다. 나는 너무도 당연히 kernel이 device driver나 File system을 관리 한다고 생각했는데 꼭 그런 것 만은 아니었다. 모놀리식 커널은 리눅스로 OS를 배운 학부생에게 가장 익숙한 OS이다. Application을 제외한 모든 system 관련 기능들(VFS, IPC, Filesystem 등등)을 커널이 관리하며 각 영역들은 단계적으로 나뉘어 있다. 생각해보면 리눅스 프로세스 하나를 만들 때 VFS에서 제공하는 fopen 라이브러리를 이용해 다른 파일 시스템에 쉽게 접근이 가능했고, IPC를 이..
-
init 프로세스 그리고 systemd개발/컴퓨터사이언스 2016. 10. 8. 16:31
리눅스 pc를 부팅 할 때 커널 메모리에 로드되고 여러가지 초기화 과정(하드웨어, 페이지 테이블)이 정상적으로 이뤄지면 커널은 프로세스들을 만들어 사용자가 컴퓨터가 사용 할 수 있는 환경을 만드는데 이때 가장 먼저 만들어 지는 프로세스가 init 프로세스이다 (첫번째로 만들어지기 때문에 pid를 1을 가진다. 프로세스 이름은 init이다) init프로세스는 가장 먼저 생성되어 부팅시 자동으로 실행해놓은 프로그램들(네트워크 서비스나 usb driver 등록 등등)을 실행시켜준다. 실행시켜주는 방법은 간단히 fork 해서 프로세스를 생성하는 것이다. 정상 부팅후 pstree로 프로세스간 관계를 살펴보면 다음과 같다. (init 프로세스를 시작으로 여러 프로세스들이 얽혀서 생성되었다. 모든 프로세스들의 조상인..
-
Linux OS 부팅 과정개발/컴퓨터사이언스 2016. 10. 2. 17:18
이번 글을 리눅스 OS가 설치된 컴퓨터가 부팅 되는 과정을 설명하는 포스트다. 부트로더가 하는 역할과 초기 부팅시 커널 이미지가 어떤 작업을 하는지 파악하는것에 초점을 두고 작성했으며 중간중간 이들의 정의도 포함되있다. http://www.tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html 페이지를 참고해서 글을 작성했다. 1. 컴퓨터 전원 On 사용자가 컴퓨터 전원을 키면 메인보드에서는 전원이 켜진것을 확인하고 특정 저장위치에 심어둔 부트로더를 실행시킨다. 2. 부트로더(Boot loader) 부트로더의 기능은 말그래도 부팅할 때(Boot) 로드(Load)하는 역할을 한다. 무엇을 로드하는지가 중요한데 OS에 따라 다르지만 리눅스를 기준으로 설명하면, 부트로더는 리눅스..
-
Yocto 내부 파일 분석개발/기술 2016. 10. 2. 15:50
Yocto 프로젝트를 다운 받고 나면 c 코드는 하나도 없고 대부분 .bb, .inc로 이뤄진 스크립트 파일들이 대부분인 것을 확인 할 수 있다. 소스코드 하나 없이 위 파일들만 있으면 설정한 보드에서 동작하는 이미지가 나온다는 것이 신기하기도 하다. 눈치를 챈 사람들도 있겠지만 이 .bb, .inc 파일들은 스크립트이다. 이미지를 만들 때 필요한 소스 코드들을, 어디서 읽어올 것인지 (do_fetch)어떤 설정을 줄 것인지 (do_configure)어떤 컴파일 명령을 줄 것인지 (do_compile)어디에 설치 할 것인지(do_install)에 대한 정보들을 담고 있다. 잘 생각해보면 위의 작업들은 우리가 특정 파일들을 다운받고 빌드 할 때까지 이뤄지는 작업들과 굉장히 유사하다. 예를 들면 linux ..
-
Yocto 작동방식개발/기술 2016. 10. 1. 13:51
Yocto 공식 홈페이지에 있는 yocto 아키텍쳐에 따르면 yocto는 다음과 같은 방식으로 구동된다. 위의 그림은 개발자가 하는 일과 yocto가 하는 일이 뒤섞여 있다. 각각을 나눠서 설명해보면 다음과 같다. 개발자 1. 개발자가 빌드 스크립트를 작성한다. Metadata(.bb + patches) 파일들을 작성한다. Yocto로 개발시 개발자가 주로 하는 일이다. 2. 환경설정, Machine 등을 설정한다 Machine(BSP) configuration, Policy Configuration, User Configuration. 주로 build 환경 설정 후 conf폴더 내의 .conf 파일들을 수정하는 작업을 말한다. 개발자가 작성/다운 받은 레시피들 중에서 어떤 machine 환경에서 빌드할..
-
Yocto 튜토리얼개발/기술 2016. 10. 1. 13:00
Yocto 공식 매뉴얼 사이트(http://www.yoctoproject.org/docs/2.0/yocto-project-qs/yocto-project-qs.html)를 참고해서 yocto를 한번도 다뤄보지 않은 사람이 qemux86(가상머신)로 구동 할 수 있는 이미지를 만드는 방법을 소개한다 1. 먼저 PC OS 버전에 따라서 yocto 빌드에 필요한 기본 라이브러리들을 설치해야 한다. Ubuntu를 사용하는 경우는 다음과 같다. $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essential chrpath socat libsdl1.2-dev xterm2. 최신 yocto 릴리즈 프로젝트를 받는..
-
Yocto란?개발/기술 2016. 9. 16. 21:08
임베디드 개발자라면 개발보다 환경세팅이 더 힘들다는 말에 공감할 것이다. 가장 먼저 개발하는 보드의 아키텍처(ARM인지 x86인지)를 확인해야하고, 어떤 OS(대부분 Linux)를 사용하며 버전은 무엇인지 그리고 OS 이미지를 램에 올려줄 부트로더는 어떤걸 쓸건지 등등 선택해야 할 것들이 많다. 또한 정한 것들을 빌드할 수 있는 환경을 구축하는데도 엄청난 시간이 소요된다. 사용할 컴파일러를 선정하고 다운 받는 것 뿐만 아니라 컴파일러가 사용하는 라이브러리까지 미리 설치해둬야 하는데 자료조사도 어려운데 중간에 뻑나면 개발 하기도 전에 벌써 지친다. 누군가 빌드스크립트로 딱 정리를 해두지 않은 한 정말 피곤한 일이다. 여기서 더 나아가 한 프로젝트에서 여러 종류의 보드를 사용하고 다양한 리눅스 버전들을 올리..