카테고리

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)

2018/12/31

Qemu ChromiumOS 구축

1. Qemu ChromiumOS 구축
ChromiumOS 구성하는 것은 쉽다.
하지만 QEMU에서 동작 하려면 추가 작업을 해줘야 함.

ChromiumOS와 ChromeOS의 관계
ChromeOS에서 특정 기능을 제거 한 후 다 시 패키징 해 또 다른 프로젝트 ChromiumOS을 만듬.

Depot tools 설치.
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PATH:$(PWD)/depot_tools

부팅시 적용 하려면 .bashrc 경로 설정.
vi ~/.bashrc
export PATH=$PATH:$(PWD)/depot_tools

2. ChromiumOS 구축
mkdir chromiumos
cd chromiumos
repo init -u https://chromium.googlesource.com/chromiumos/manifest.git --repo-url https://chromium.googlesource.com/external/repo.git [-g minilayout]
repo sync -j75
cros_sdk
export BOARD=amd64-generic
./setup_board --board=${BOARD}
./build_packages --board=${BOARD}
./build_image --board=${BOARD} --boot_args "earlyprintk=serial,keep console=tty0" --noenable_rootfs_verification test
./image_to_vm.sh --board=${BOARD} --test_image

3. ChromiumOS 부팅방법(not)
cros_start_vm 명령을 통해 이미지 파일을 만든다. 그래픽(VNC) 출력에 대한 문제가 남아있다.
VNC 출력 표준을 확인하지 못하는 것으로 보여진다.

cros_sdk
./bin/cros_start_vm --image_path=../build/images/${BOARD}/latest/chromiumos_qemu_image.bin --board=${BOARD}

3.1 qemu 실행
ChromiumOS 부팅

3.2 의존성 패키지 설치(17.10 기반 으로 테스트 함)
sudo apt install autoconf libaio-dev libbluetooth-dev libbrlapi-dev libbz2-dev libcap-dev libcap-ng-dev libcurl4-gnutls-dev libepoxy-dev libfdt-dev libgbm-dev libgles2-mesa-dev libglib2.0-dev libgtk-3-dev libibverbs-dev libjpeg8-dev liblzo2-dev libncurses5-dev libnuma-dev librbd-dev librdmacm-dev libsasl2-dev libsdl1.2-dev libsdl2-dev libseccomp-dev libsnappy-dev libssh2-1-dev libspice-server-dev libspice-server1 libtool libusb-1.0-0 libusb-1.0-0-dev libvde-dev libvdeplug-dev libvte-dev libxen-dev valgrind xfslibs-dev xutils-dev zlib1g-dev libusbredirhost-dev usbredirserver

3.3 비글 렌더러
Virglrenderer는 Qemu의 3D GPU 그래픽 기능 활성화.
OpenGL 지원함. virgl을 사용하지 않을려면 Qemu 구성 단계에서 Qemu 런타임 플래그 제거한다.

git clone git://git.freedesktop.org/git/virglrenderer
cd virglrenderer
./autogen.sh
make -j7
sudo make install

4. QEMU
x86_64 에물레이터 사용.
git clone git://git.qemu-project.org/qemu.git
mkdir -p qemu/build
cd qemu/build
../configure --target-list=x86_64-softmmu --enable-gtk --with-gtkabi=3.0 --enable-kvm --enable-spice --enable-usb-redir --enable-libusb --enable-virglrenderer --enable-opengl
make -j7
sudo make install

5. 이미지 실행
Qemu를 사용해 부팅 가능.

virtio-gpu-pci,virgl 옵션을 사용하기 위해서는 호스트 환경 커널 옵션 체크.
kconfig 파일 열어 다음 설정 값 활성화 확인.
CONFIG_DRM_VIRTIO, CONFIG_VIRT_DRIVERS 및 CONFIG_VIRTIO_XXXX.

cd chromiumos
/usr/local/bin/qemu-system-x86_64 \
    -enable-kvm \
    -m 2G \
    -smp 4 \
    -hda src/build/images/amd64-generic/latest/chromiumos_qemu_image.bin \
    -vga virtio \
    -net nic,model=virtio \
    -net user,hostfwd=tcp:127.0.0.1:9222-:22 \
    -usb -usbdevice keyboard \
    -usbdevice mouse \
    -device virtio-gpu-pci,virgl \
    -display gtk,gl=on

댓글 없음:

댓글 쓰기