카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2019/01/02

virtme QEMU 커널 개발 도구

virtme : 커널 개발의 필수 도구

프로젝트 사이트 : https://github.com/amluto/virtme/
사용방법 : https://github.com/amluto/virtme/blob/master/README.md

리눅스 커널은 QEMU를 통해 테스트 하는게 일반적이다. kernel/core 코드, 가상 드라이버 병합되므로서,  응용프로그램을 사용해 테스트하는데 유용하다.

"Virtme은 가상화 Linux 커널을 실행하는 간단한 도구이다. 전체 루트파일 시스템 이미지 대신 단순한 rootfs를 사용. Virtme의 특징은  작고 사용하기 쉬우며 커널 변경 사항을 간단하게 테스트 할 수 있다."

virtme 설치하기
git clone https://github.com/ezequielgarcia/virtme.git
cd virtme
sudo ./setup.py install

메세지 확인
Installed /usr/local/lib/python3.6/dist-packages/virtme-0.0.3-py3.6.egg

커널 소스 다운로드
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

virtme 설정
커널 설정 생성
cd linux
virtme-configkernel --defconfig

#
# configuration written to .config
#
Configured.  Build with 'make ARCH=x86 -j4'

필요한 드라이버 사용
vim2m 드라이버 활성화는 video4linux memory2memory 가상 드라이버임.
make menuconfig 설정

vi .config
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L2=y
CONFIG_V4L2_MEM2MEM_DEV=y
CONFIG_V4L_TEST_DRIVERS=y
CONFIG_VIDEO_VIM2M=y

커널 빌드
make -j4 또는 make ARCH=x86 -j4

virtme 실행
sudo virtme-run --kimg arch/x86_64/boot/bzImage
또는
sudo virtme-run --kdir .

부팅시 스크립트 실행
-script-dir 옵션은 부팅시 스크립트를 실행할 위치를 지정한다.
sudo virtme-run --kdir . --script-dir test-dir/

-script-dir 매개 변수 사용해 vim2m 드라이버를 테스트 할 수 있는 스크립트 작성
vi v4l2-compliance_test.sh

#!/bin/sh
v4l2-compliance -d /dev/video0

모듈 디렉토리 지정하기
-mdir 옵션을 사용해 virtme 모듈을 추가 할 수 있다.

CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_CAMERA_SUPPORT=m
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_V4L_TEST_DRIVERS=y
CONFIG_VIDEO_VIM2M=m

./tmp 디렉토리 설치 지정
make INSTALL_MOD_PATH=./tmp modules_install
  INSTALL crypto/crypto_engine.ko
  INSTALL drivers/crypto/virtio/virtio_crypto.ko
  INSTALL drivers/media/common/videobuf2/videobuf2-common.ko
  INSTALL drivers/media/common/videobuf2/videobuf2-memops.ko
  INSTALL drivers/media/common/videobuf2/videobuf2-v4l2.ko
  INSTALL drivers/media/common/videobuf2/videobuf2-vmalloc.ko
[..]

모듈 실행
sudo virtme-run --kimg arch/x86_64/boot/bzImage --mdir tmp/lib/modules/4.19.0-rc3
Decompressing Linux... Parsing ELF... Performing relocations... done.
Booting the kernel.
[..]

root@(none):/# modprobe vim2m
[   66.071041] videodev: Linux video capture interface: v2.00
[   66.083405] vim2m vim2m.0: Device registered as /dev/video0

댓글 없음:

댓글 쓰기