개발
-
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 이미지를 램에 올려줄 부트로더는 어떤걸 쓸건지 등등 선택해야 할 것들이 많다. 또한 정한 것들을 빌드할 수 있는 환경을 구축하는데도 엄청난 시간이 소요된다. 사용할 컴파일러를 선정하고 다운 받는 것 뿐만 아니라 컴파일러가 사용하는 라이브러리까지 미리 설치해둬야 하는데 자료조사도 어려운데 중간에 뻑나면 개발 하기도 전에 벌써 지친다. 누군가 빌드스크립트로 딱 정리를 해두지 않은 한 정말 피곤한 일이다. 여기서 더 나아가 한 프로젝트에서 여러 종류의 보드를 사용하고 다양한 리눅스 버전들을 올리..
-
가상화기술 Type1개발/가상화 2016. 9. 11. 19:59
가상화 기술 Type1은 가상화 소프트웨어가 OS의 형태(OS로 말하기는 좀 부족하고 기능이 추가된 바이오스라 생각하면 좋다)로 구현된 것이다. 대표적인 소프트웨어로는 Xen,과 Window Server로 사용되는 Hyper-V가 있다. Type1은 일반 사용자들에게 익숙하지 않은데 아마 주로 서버 개발에 사용되기 때문일 것이다. 클라우드 컴퓨팅 회사에서 비싼 서버 한 대를 이용해 여러 개의 서버를 돌리듯한 효과를 주기 위해 Type1의 가상 기술을 이용한다. 위 방식은 Hypervisor가 하드웨어 통제권을 가지고 있다는 장점이 있다. Type 2에서 Hypervisor가 하드웨어의 통제권을 가지지 못해 하드웨어를 제어하는데 오버헤드가 많이 걸렸는데 여기선 Hypervisor가 하드웨어를 장악하고 있고..
-
가상화기술 Type2개발/가상화 2016. 9. 11. 19:12
가상화 기술 Type2는 가상화 기술을 애플리케이션의 형태로 구현하는 방식이다.대표적인 예로는 VMware, Virtual Box처럼 윈도우나 리눅스에 설치 할 수 있는 소프트웨어이다. 이러한 형태의 구현 방식은 기존 PC 시장에 쉽게 가상화 기술 소프트웨어를 도입 할 수 있다는 이점이 있다. 또한 Host OS가 제공하는 시스템콜과 하드웨어 제어권을 빌려오는 형태여서 여러가지 요소들을 신경쓰지 않고 구현(실제로는 생각을 많이 써야 하지만 처음부터 다 만들어 가는것은 아니기 때문에)할 수 있다. 애플리케이션 형태이기 때문에 안전성에 문제가 생겨도 Host OS 자체의 안정성은 침해하지 않는다는 장점이 있다. 하지만 위 방식은 느리다. 가상화 소프트웨어가 하드웨어를 직접 통제하는 것이 아니기 때문에 하드웨..
-
가상화 기술의 유형개발/가상화 2016. 9. 6. 19:24
가상화 기술은 어떤 방식으로 구현하느냐에 따라 크게 Type 1& Type 2로 나뉜다. 직관적으로 이해하기 위해 먼저 그림으로 표현하면 다음과 같다. 위 두 그림의 가장 큰 차이점은 Hypervisor(가상머신)의 존재 형태이다, Type1에서는 Hypervisor가 하드웨어를 관리하는 운영체제의 일종으로 보이고, Type2에서는 Host OS의 application과 동등한 형태를 띄는 것으로 보인다. 가상화 기술은 "Hypervisor를 어떠한 형태로 개발할 것이냐"에 따라 두가지로 나눌 수 있다. - Type1 : Hypervisor를 OS의 형태로 개발한다. - Type2 : Hypervisor를 Application의 형태로 개발한다. 아마 대부분의 사람들에게 익숙한 형태는 Type2일 것이다..