怎么用QEMU搭建Linux内核开发调试环境

  介绍

本篇内容主要讲解“怎么用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 
安装debian

怎么用QEMU搭建Linux内核开发调试环境