本篇内容主要讲解“怎么用QEMU搭建Linux内核开发调试环境”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习”怎么用QEMU搭建Linux内核开发调试环境”吧!
1。编译内核
内核需要事先编译出来,这里展示的是通用的内核编译方法。
内核目录下选择通用配置文件:
<>之前,cp 拱/x86/配置/x86_64_defconfig . config调整内核配置文件适配当前内核版本:
make menuconfig
编译内核文件:
make bzImage
2。生成根文件系统
这一步是最重要的,生成一个调试环境的文件系统。这里介绍四种方法。
2.1制作busybox根文件系统(方法一)
busybox是一个轻量级的工具集合,包含了init和大部分常用的Linux工具。官网:https://busybox.net。
这个方法编译出来的根文件系统是最小的,起动速度也是最快的。就是自带工具可能比较少,有些东西需要自己编译。
2.1.1创建镜像文件
创建生格式的镜像文件:
qemu-img create -f raw disk.raw 512米 mkfs -t ext4 。/disk.raw
把原始文件挂载到临时目录:
sudo mount -o loop 。/disk.raw 。/img
2.1.2安装模块
进入内核目录,把内核里的模块安装进文件系统:
sudo make modules_install \, #,安装内核模块 INSTALL_MOD_PATH=?img #,指定安装路径
2.1.3 busybox
下载busybox的源码,编译之前需要配置.busybox的配置方式和内核类似:
cd busybox make defconfig make menuconfig
调整其中以下选项,编译包含静态库:
Busybox Settings ——→ ——女人,Build 选项 [*],Build BusyBox  as a static binary (no shared 填词)
然后编译busybox,这里的path_to_disk_img_mount_point就是刚才生文件挂载的临时目录:
make CONFIG_PREFIX=& lt; path_to_disk_img_mount_point>,安装
2.1.4创建系统文件
配置init环境:
根目录下手工创建等/init。proc, d, dev系统这三个目录。
/etc/inittab:
:: sysinit:/etc/摆在rcS ::askfirst:/bin/灰 ::ctrlaltdel:/sbin/重新启动 ::关闭:/sbin/swapoff a ::关闭:/bin/umount -a - r ::重启:/sbin/init
/etc/摆在/rcS:
# !/bin/sh mount -t  proc proc /proc mount -t  sysfs sysfs /sys
并把/etc/摆在/rcS改为可执行文件。
2.1.5内核启动脚本
正常启动内核:
qemu-system-x86_64 \ -m 512 \ -kernel 内核/. ./arch/x86_64/boot/bzImage \ -drive 格式=,=文件。/disk.raw \ -append “init=/linuxrc 根=/dev/sda rw"
查看内核串口输出:
qemu-system-x86_64 \ -m 512 \ -kernel 内核/. ./arch/x86_64/boot/bzImage \ -drive 格式=,=文件。/disk.raw \ -append “init=/linuxrc 根=/dev/sda rw 控制台=ttyS0" \ -serial 文件:。/serial.out
2.2用ISO文件制作debian文件系统(方法二)
这个方法类似于虚拟机安装系统,利用系统自带的安装引导程序生成文件系统。这样安装出来的是一个完整的debian,可以用恰当的安装工具。
2.2.1生成镜像文件
生成生镜像文件:
qemu-img create -f raw debiam-10G.img 10 g
安装debian:
qemu-system-x86_64 -m 512年,-boot d -hda 。/debiam-10G.img -cdrom ISO/debian-9.4.0-amd64-netinst.iso 2.2.2
内核启动脚本
qemu-system-x86_64 -m 512年,-boot c -kernel 内核/. ./arch/x86_64/boot/bzImage -append 根=/dev/sda1 -hda 。/debiam-10G.img -hdb 。/fat.img -net nic -net 用户,hostfwd=tcp:: 10022: 22
2.3用debootstrap制作debian根文件系统(方法三)
这方法是利用debian官方的debootstrap,把debian装在本机的一个目录里。这个系统也是完整的debian。
2.3.1生成镜像文件
生成生镜像文件:
qemu-img create -f raw debiam-10G.img 10 g
挂载文件系统:
sudo mount -o loop 。/debiam-10G.img 。/img 2.3.2