ubuntu22上使用qemu-system-arm调试linux

这篇具有很好参考价值的文章主要介绍了ubuntu22上使用qemu-system-arm调试linux。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ubuntu22上使用qemu-system-arm调试linux

背景

qemu是用软件模拟硬件解析指令运行的软件,可以模拟arm、arm64、x86等,对于调试linux 内核机制很方便,不用额外购买开发板。由于linux上有对qemu的加速引擎,支持程度更高,且网络上教程居多,所以这里使用virtualbox+ubuntu22虚拟机,在ubuntu上运行qemu进行模拟。

一、安装ubuntu22虚拟机

virtualbox安装:Oracle VM VirtualBox

ubuntu镜像下载:Ubuntu系统下载(清华大学开源软件镜像站)(ubuntu-20.04.1-desktop-amd64.iso)_ubuntu下载-CSDN博客

这里直接选择最新版本ubuntu22,ubuntu虚拟机安装,本文不再赘述,请大家自行搜索。

二、qemu安装

进入ubuntu,安装qemu,因为我们目标架构是arm,所以这里安装qemu-system-arm

sudo apt install qemu-system-arm -y

三、镜像制作

需要下载编译内核,制作根文件系统。

3.1 内核编译

  1. 下载内核源码

这里使用较新的内核版本,5.5.18

wget  http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.5.18.tar.gz 
  1. 安装交叉编译工具链
sudo apt-get install gcc-arm-linux-gnueabi

交叉编译工具链的前缀:arm-linux-gnueabi-

  1. 编译内核

编译5.x的内核,需要安装工具包flex、bison、apt-get install libncurses5-dev

sudo apt-get install libncurses5-dev flex bison -y

编译命令:vexpress配置专门用于qemu仿真。

make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm

如果想修改配置使用如下命令,注意要带ARCH=arm,否则默认以x86配置。

make menuconfig ARCH=arm

3.2 根文件系统制作

3.2.1 busybox编译

1)下载busybox:

wget https://busybox.net/downloads/busybox-1.36.0.tar.bz2

2)busybox编译

make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm defconfig
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm prefix=${PWD} install

3)copy busybox产物到rootfs临时目录

mkdir -p rootfs/{dev,etc/init.d,lib,proc,sys,/dev/pts,/dev/shm,tmp,run} 
cp busybox-1.36.0/_install/* rootfs/ -rf
sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/

同时copy的工具链中so到rootfs/lib目录。

3.2.2 启动脚本

1)/etc/inittab

值定init进程执行的启动脚本rcS

::sysinit:/etc/rcS
::askfirst:-/bin/sh

2)内核启动要默认挂载一些调试的fs

如proc、sys、tmp等,这些定义在/etc/fstab,

fstab的解析命令mount -a,需要在rcS中显示调用。

/etc/rcS

# <file system> <mount pt>      <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
devpts          /dev/pts        devpts  defaults,gid=5,mode=620,ptmxmode=0666   0       0
tmpfs           /dev/shm        tmpfs   mode=0777       0       0
tmpfs           /tmp            tmpfs   mode=1777       0       0
tmpfs           /run            tmpfs   mode=0755,nosuid,nodev  0       0
sysfs           /sys            sysfs   defaults        0       0

/etc/rcS:

mount -a
3.2.3 制作镜像

1)生成镜像,128MB即可

qemu-img create -f raw disk.img 128M

2)格式化成ext4

mkfs -t ext4 ./disk.img

3)copy文件到镜像中

mkdir tmpfs 
sudo mount -o loop ./disk.img tmpfs/  
sudo cp -r rootfs/* tmpfs/
sudo umount tmpfs

四、启动linux

qemu-system-arm -M vexpress-a9 -m 256M -kernel ./linux-5.5.18/arch/arm/boot/zImage -dtb  ./linux-5.5.18/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd disk.img

参考资料

一步步教你:如何用Qemu来模拟ARM系统 - 知乎 (zhihu.com)

QEMU入门指南-CSDN博客

ARM Linux 调试 -QEMU启动 Uboot/Kernel/Rootfs - 知乎 (zhihu.com)文章来源地址https://www.toymoban.com/news/detail-822407.html

到了这里,关于ubuntu22上使用qemu-system-arm调试linux的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VSCode+GDB+Qemu调试ARM64 linux内核

    俗话说,工欲善其事 必先利其器。linux kernel是一个非常复杂的系统,初学者会很难入门。 如果有一个方便的调试环境,学习效率至少能有5-10倍的提升。 为了学习linux内核,通常有这两个需要 可以摆脱硬件,方便的编译和运行linux 可以使用图形化的工具来调试linux 笔者使用

    2024年02月08日
    浏览(31)
  • Linux 利用 qemu-system-aarch64 实现 x86 机器安装 arm64 的操作系统

    qemu-system-aarch64 启动的虚拟机,无法受到 kvm 的管理,也无法在后台运行 终端一旦断开了,虚拟机就被关掉了,想再次进入目前没找到方法,都会回到安装操作系统的步骤 可能是 centos 有某些特殊性吧,暂时没太多时间研究,后期有时间了再看看有没有解决的方案 qemu-5.2.0 和

    2024年02月06日
    浏览(36)
  • ARM Linux 调试 -QEMU启动 Uboot/Kernel/Rootfs

    懒人方式: 直接去方锐/qemu克隆项目,执行script目录的脚本即可 1. build_env.sh安装环境 2. build_rootfs.sh 生成rootfs 3. build_kernel.sh编译kernel 4. qemu_run.sh开始调试 2.1busybox代码的下载编译 Busybox下载地址:https://busybox.net/downloads/ Download 1.36.0 Busybox 默认会安装到 ./_install 目录下 制作ro

    2024年02月02日
    浏览(38)
  • 在Ubuntu上用Qemu模拟ARM版本的Fedora39

    Fedora Quick Docs Fedora Server Documentation Deploy an ARM64 Fedora VM on your PC: 3 steps Architectures/AArch64/Install with QEMU Virtualization – Getting Started Fedora on Raspberry Pi Architectures/ARM ARM Single Board Computer (SBC) Installation Creating a virtual machine using Fedora Server Edition disk image 8 Linux virsh subcommands for managing VM

    2024年03月27日
    浏览(29)
  • 【问题记录】Ubuntu 22.04 环境下,程序报:段错误(核心已转储)怎么使用 core 文件和GDB调试器 解决?

    目录 环境 问题情况 解决思路 原因分析 解决方法 番外知识 VMware® Workstation 16 Pro (版本:16.1.2 build-17966106) ubuntu-22.04.2-desktop-amd64 本人在运行百万并发的服务端程序时,程序运行报: 段错误(核心已转储) ,导致程序异常退出,如下 首先要确定核心转储文件的生成路径和

    2024年02月06日
    浏览(29)
  • Ubuntu(arm)22.04配置清华源

    地址:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/ ubuntu(arm)要使用清华源中ubuntu-ports源 以上源可以去清华源中获取,或者复制我下面得即可 打开sources.list文件,按dd对文件进行删除或者按i对文件进行修改加上注释,然后在把清华源复制进这个文件即可 完成后即可使用清华源进行软

    2024年02月16日
    浏览(25)
  • windows-x86使用qemu打开x86和arm虚拟机

     下载固件(UEFI固件镜像文件,BIOS的替代方案) ) 使用cmd执行qemu命令,配置好环境变量比较方便 准备好一个x86的镜像或者arm的镜像,格式可以为qcow2 打开cmd,执行命令 x86 arm 注:上面字段含义  -m 8192 : 分配8GB内存  -cpu cortex-a72 : 虚拟CPU为ARM Cortex-A72 -smp 8,sockets=4,cores=2 : 虚

    2024年02月16日
    浏览(30)
  • Ubuntu(x86、arm)22.04配置清华源

    1,清华源地址 地址:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/ 2,获取ubuntu的源 x86使用下面的源即可: 上面有个下拉列表,根据自己的ubuntu版本进行切换。 ubuntu(arm)要使用清华源中ubuntu-ports源:

    2024年03月20日
    浏览(30)
  • Linux设备驱动开发(一) 使用Qemu模拟ARM vexpress-a9开发板

    环境:ubuntu20.04 LTS 参考教材:《Linux设备驱动开发详解——基于最新的Linux4.0内核,宋宝华编著》 1.安装Qemu 安装完成后,在终端输入qemu连按tab键如果出现自动补齐就证明成功安装,如下图所示: 图1 Qemu安装成功示意图 2.安装交叉编译环境 下面验证安装: 图2 交叉编译工具安装

    2024年04月09日
    浏览(35)
  • Ubuntu22.04 交叉编译gcc9.5 for arm

    环境:ubuntu22.04为刚刚安装,未安装gcc等包 vi ~/.bashrc输入 保存,reboot 安装: 将/opt/gmp-6.1.0/install/lib目录下所有库文件拷贝到gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/, 然后执行 删除cc 然后安装一些库,要不然编译不过 然后执行 问题:Oops, mp_limb_t is 64 bits,

    2024年02月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包