문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류: 가상화]] [[분류: 오픈소스 프로젝트]] == 개요 == Qemu는 [[오픈소스]]기반의 Hardware Virtualization 가상머신이다. Qemu는 가상머신을 구현하기 위해서 많이 사용되며, 대표적인 [[ARM]], [[X86]]과 같은 시스템을 포함하여 대다수의 머신을 가상화 할 수 있다. * Multiple host, Multiple target을 지원한다. * Full Virtualization, Process Virtualization을 지원한다. * [[KVM]]과 함꼐 사용하여 최대한의 성능을 끌어 낼 수 있다. * Just in time code compilation기법을 사용하여 [[Bochs]]와 비교하여 불 안정하지만 더욱 빠르다. * GDB기능을 제공한다. == 사용법 == <nowiki> qemu-system-i386 \ -accel tcg,thread=single \ -cpu core2duo \ -m 128 \ -no-reboot \ -drive format=raw,media=cdrom,file=myos.iso \ -serial stdio \ -smp 1 \ -usb \ -vga std </nowiki> * Accel: 가속화 기법 * cpu: CPU모델명 * M: 메모리 크기 * drive: 어떤 드라이브를 사용할지 (device 로 디바이스를 정할 수도 있음) * smp: CPU코어 개수 === 우분투 실행 bash script === <nowiki> #/bin/bash INSTALL_PATH=$PWD/"ubuntu-kvm" UBUNTU_IMG_URL="https://releases.ubuntu.com/20.04.2/ubuntu-20.04.2-live-server-amd64.iso?_ga=2.267594445.2145028703.1615186104-1743255792.1615186104" QEMU_ARGS="-enable-kvm -vnc localhost:1 -m 64G -smp 16 -drive format=raw,file=$INSTALL_PATH/disk.img,if=virtio,cache=none -drive format=raw,file=./disk.img,if=virtio,cache=none -net nic -net user,hostfwd=tcp::2222-:22" mkdir -p $INSTALL_PATH if ! test -f $INSTALL_PATH/"ubuntu.img"; then wget -O $INSTALL_PATH/ubuntu.img $UBUNTU_IMG_URL -P $INSTALL_PATH fi; if ! test -f $INSTALL_PATH/"disk.img"; then sudo apt install qemu-utils qemu-img create -f raw -o size=30G $INSTALL_PATH/disk.img QEMU_ARGS+=" -cdrom $INSTALL_PATH/ubuntu.img" fi; echo $QEMU_ARGS qemu-system-x86_64 $QEMU_ARGS </nowiki> == 캐쉬 모드 == 시스템 분석을 위해서 qemu가상머신을 돌리는 경우, cache모드에 의하여 가상머신의 I/O속도가 달라질 수 있다. 다음의 캐쉬 모드는 QEMU가 어떻게 physical disk와 연동되는지를 결정한다. Default는 writethrough를 사용하게 된다. [[RamDisk]]는 O_DIRECT모드를 허용하지 않음으로, 다음 중 O_DIRECT가 있는 경우는 사용할 수 없다. * cache=writethrough: O_DYNSC * cache=writeback: nor O_DYNSC nor O_DIRECT * cache=none: O_DIRECT * cache=unsafe: nor O_DYNSC nor O_DIRECT ignore flush * cache=directsync: both O_DYNSC, O_DIRECT == 디버깅 == * -s -S: -s는 [[GDB]]에 Attach 함을 의미하고, -S는 GDB시작을 우선 halt함을 의미한다. 즉 -s -S는 GDB가 target remote localhost:1234와 같이 Attach되기 전까지 기다리라는 것을 의미한다. * -d: d option은 원래 GDB 디버깅 모드이지만, 이 모드에서 cpu_reset혹은 interrupt정보와 같은 커널의 활동내역을 얻을 수 있다. 보다 자세한 내용은 https://wiki.osdev.org/Qemu 참고. == 참고 == # https://documentation.suse.com/sles/11-SP4/html/SLES-kvm4zseries/cha-qemu-cachemodes.html # https://wiki.osdev.org/Qemu Qemu 문서로 돌아갑니다.