qemu debian
本文记录了通过qemu在ubuntu18上运行debian
参考博客
https://www.collabora.com/news-and-blog/blog/2017/01/16/setting-up-qemu-kvm-for-kernel-development/
https://wiki.debian.org/zh_CN/Debootstrap
https://www.codevoila.com/post/26/fix-authentication-token-manipulation-error-when-changing-user-password-in-ubuntu
简介
安装qemu什么的就不赘述了,主要分为以下几个步骤
- 添加根文件系统rootfs
- 构建kernel
- ssh连接
构建rootfs
cd到一个文件夹下
IMG=qemu-image.img
DIR=mount-point.dir
qemu-img create $IMG 1g
mkfs.ext2 $IMG
mkdir $DIR
sudo mount -o loop $IMG $DIR
# jessie是debian的一个发行版,这里我选择当前的稳定版Stretch,ebootstrap可以指定
# 下载源,加快速度,发行版列表见下面的链接
# https://wiki.debian.org/DebianReleases
sudo debootstrap --arch amd64 jessie $DIR #在这里添加源
sudo umount $DIR
rmdir $DIR
qemu-image.img就是root file system
重置root用户密码,添加新用户
由于我选择的版本是stretch,需要像下面这样添加init=/bin/bash
sudo qemu-system-x86_64 -kernel ./bzImage -hda ~/debian_build/qemu-image.img -append "root=/dev/sda console=tty1 single init=/bin/bash"
还可能会出现一些无法修改密码,无法增添用户的问题,很容易找到解决方法
构建linux kernel
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
运行
注意如果是在debug状态下似乎无法重定向输出到终端,搞了好久终于发现
qemu-system-x86_64 -kernel bzImage
-append "root=/dev/sda console=ttyS0"
-hda qemu-image.img
--enable-kvm
--nographic
所以改成如下
#!/bin/bash
sudo kvm \
-nographic \
-kernel ~/linux_kernel/linux-4.1.39/arch/x86_64/boot/bzImage \
-append "root=/dev/sda console=ttyS0" \ #必须是ttyS0
-hda ~/debian_build/qemu-image.img \
-gdb tcp::1234 \ #不能为-gdb tcp::1234 -S因为上面console已经占据了S
网友评论