안녕하세요. WH 입니다.
임베디드 리눅스를 활용하여 개발하다보면,
docker로 환경설정이 불가능할 때를 만나게 되는데요.
이번 글에서는 virtualbox를 활용하여 환경설정하는
방법에 대해 정리해보고자 합니다.
virtualbox는 왜 쓰는 것일까요?
쉽게 내 운영체제가 돌리고자하는 소프트웨어와 맞지 않아
새로운 환경을 만들고자 할때 사용하게 됩니다.
전에 설명드렸던 docker는 컨테이너 기반 플랫폼이고,
virtualbox는 가상 머신을 활용한 솔루션인데요.
간단히 공통점과 차이점을 짚고 넘어가고자 합니다.
무엇을 해결하고자 하냐면
내 환경에 맞지 않아 사용할 수 없는 소프트웨어를 사용하게 하는 것이 목적입니다.
차이점에 대해 간단히 말하자면
가상 머신의 경우, 하드웨어 자체를 가상화 하기 때문에 보완성 측면에서 좋지만 무겁고
컨테이너 기반 플랫폼의 경우 운영체제만을 가상화하여 가볍고 리소스 사용률을 높여 비용을 절감할 수있습니다.
자세한 내용은 요청글이 있다면 다루도록 할게요.
여튼 오늘은 virtulbox이 무엇이고 어떻게 설치하느냐에 대해서 다뤄보겠습니다.
자 오늘의 예시입니다. 특정 타겟 보드의 부트 이미지를 빌드하려고합니다.
그런데, 제 환경에서는 부트가 되지 않아요.
방법은 두 가지 입니다. 제 환경을 다 밀어버리고 타겟 보드에 맞는 환경을 설정해주는 겁니다.
더 쉬운 이해를 위해 상황을 설정해보겠습니다.
현재의 환경이 ubuntu 20.04입니다. 그런데 타겟 보드 이미지는 ubuntu 18.04에서만 빌드가 가능합니다.
그런데, 20.04 제 환경에는 보드에 접속하기 위한 여러 패키지와 해당 보드에 올라갈 여러 프로그램 때문에,
초기화가 어려운 상황이라고 가정해봅시다.
해결책은
1. 20.04를 밀고 18.04를 설치하고 해당 필요 프로그램을 새롭게 모두 다 코딩하는 방법
2. virtualbox에서 18.04를 설치하고 해당 이미지를 빌드한 후 scp로 빌드된 이미지를 20.04로 보내는 방법
1은 너무 비효율적이겠죠?? 한 고생이 얼만데 그걸 다 밀겠어요
그래서 2번을 택하는 겁니다. 물론 이렇게 말씀하시는 분들이 있어요. 그냥 docker로 배포하면 되는거 아니냐..
그럼 얼마나 좋겠습니까만.. 그게 가능하지 않은 보드들이 태반인걸요?ㅠㅠ
1. virtualBox 다운로드
https://www.virtualbox.org/wiki/Downloads 에 들어가시면 현재 PC가 리눅스이기때문에 리눅스 버전을 받습니다.
name은 가상머신 이름이라서 원하는데로 지어도 좋지만, 그래도 무슨 환경인지 알수 있도록 설정하길 권합니다.
그다음 나오는 내용이 메모리 크기 설정인데요, 타겟 보드의 reference를 참조하여 setting하시길 권합니다.
이미지 빌드의 경우, 할당되는 메모리가 크기 때문에 작게 설정하면 메모리 초과 에러가 날 수 있거든요.
다음 페이지에서는 새 가상 하드 디스크 만들기(C) 를 클릭하고, 다음을 누른뒤, VDI를 체크하세요.
다음을 누르고 동적할당을 체크한후 다음을 누르면 가상 하드 디스크에 용량을 주는 페이지가 나오며,
해당 용량 역시 타겟 보드의 reference를 참조하여 setting하시길 권합니다.
저장소에 ubuntu-18.04에 해당하는 파일을 올리면 됩니다.
해당 파일은 아래 링크에서 받으실 수 있습니다.
그 다음 바로 만들지 마시고 시스템에서 cpu 개수 등 기타 설정을 원하시는 데로 할당하시면됩니다.
아 참고로 그냥 설정하면 화면이 작아서 보기 불편하실 거에요
클릭하시면 팝업이 뜨는데 해당 팝업에서 Run을 누르고 ubuntu 비밀번호를 입력합니다. 입력이 끝나면
unmount 해주시면 됩니다.
그리고 마지막으로 해당 설정을 해주시고 화면을 늘리면 해상도가 조절됩니다.
이렇게 되면 ubuntu 18.04가 설치되었습니다.
이제 필요한 이미지를 빌드하고 작업후에 scp로 파일을 보내주면 되겠죠?
이렇게 한가지 환경에서 모든것을 하기에는 제약이 많기때문에 알아두시면 좋을 정보라고 생각되네요.
다뤘으면 하는 내용이나 잘못된 부분등을 올려주시면 수정하겠습니다. 댓글은 큰 힘이 됩니다. 즐거운 하루 되셔요
'임베디드 리눅스' 카테고리의 다른 글
MCU? MPU? CPU? 그게 뭔데 (0) | 2022.01.27 |
---|---|
make 는 무엇이며 왜 사용하는 것일까 2 (0) | 2022.01.26 |
make 는 무엇이며 왜 사용하는 것일까1 (0) | 2022.01.25 |
c언어 컴파일 과정 (0) | 2022.01.25 |
docker를 활용한 이미지 배포하기( feat. dockfile ) (0) | 2022.01.25 |