0. 커널 컴파일
https://nautiluslee.blogspot.com/2018/12/blog-post_88.html
1. qemu 가상 컴퓨터 커널 부팅
$ sudo qemu-system-x86_64 -kernel /boot/vmlinuz-`uname -r`
2. 루트파일 시스템 추가
debootstrap을 사용하면 데비안 배포판을 디렉토리에 설치할 수 있다.
파일 시스템이 nodev 옵션으로 마운트되면 장치 노드를 만들 수 없다.
대신, 디렉토리에 qemu 이미지 파일을 마운트하고 다음과 같이 마운트 지점에서 debootstrap를 사용 한다:
IMG=qemu-image.img
DIR=mount-point.dir
qemu-img create $IMG 1g
mkfs.ext2 $IMG
mkdir $DIR
sudo mount -o loop $IMG $DIR
sudo debootstrap --arch amd64 jessie $DIR
sudo umount $DIR
rmdir $DIR
개발시 필요한 파일의 rootfs 사용 하거나, busybox 루트파일 시스템을 사용할 수 다.
$ sudo qemu-system-x86_64 -kernel /boot/vmlinuz-`uname -r`\
-hda qemu-image.img\
-append "root=/dev/sda single"
경고 파일 옵션 처리
“-hda qemu-image.img” 옵션 대신 “-drive file=qemu-image.img,index=0,media=disk,format=raw” 옵션을 사용한다.
3. 커널 빌드 및 부팅
기존 커널 구성 make kvmconfig 한 다음, 자신만의 qemu 커널을 만든다.
처음부터 .config 파일을 만들지 않고, 일반 설정 구성을 위해 kvmify 한다.
빌드 시간 단축 할 수 있는 전용 config 파일을 만들 수도 있지만 반복 작업 필요.
git clone --depth=1 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
make x86_64_defconfig
make kvmconfig
make -j 8
3.1 생성된 커널 이미지로 부팅
$ qemu-system-x86_64 -kernel arch/x86/boot/bzImage
-hda qemu-image.img
-append "root=/dev/sda"
3.2 kvm 부팅 시간 단축
kvm 옵션을 추가해 가속화 기능 활성화.
$ qemu-system-x86_64 -kernel bzImage
-hda qemu-image.img
-append "root=/dev/sda"
--enable-kvm
ebootstrap 이미지로 2초 이내 부팅.
부팅 시간 확인 dmesg 확인.
enable-kvm 옵션 추가 전 systemd의 부팅은 5.9초, 옵션 추가 시 1.7초 후 systemd 동작.
3배 단축.
3.3 qemu 연결
qemu 모니터 화면 표시, 터미널을 사용하려면 ALT + TAB 목록에 들어간다.
키보드 마우스 캡처 용도 적합하지 않음.
복사 붙여 넣기 문제, 그래서 그래픽 기반의 인터페이스 제거하고 ttyS0에로 qemu 통신, 리다이렉션 모드 사용.
$ qemu-system-x86_64 -kernel bzImage
-append "root=/dev/sda console=ttyS0"
-hda qemu-image.img
--enable-kvm
--nographic
커널 정지
$ halt qemu
시스템 다운.
$ shutdown -h now
댓글 없음:
댓글 쓰기