首页 > 其他分享 >QEMU模拟器

QEMU模拟器

时间:2023-01-11 11:59:21浏览次数:36  
标签:4.4 boot 开发板 76 linux QEMU arm 模拟器

QEMU是一个模拟器,可以模拟CPU,例如ARM、x86、MIPS等架构

可以用于仿真ARM处理器:ARM926E、ARM1136、Cortex-A8\A9。用于模拟真实的开发板、外设:串口、LCD、网卡、USB、SD卡等

用途:

1、研究内核虚拟化

2、模拟CPU,芯片公司用于在流片之前在QEME上做验证、驱动开发

3、利用qemu-system-arm学习嵌入式开发、研究Bootloader、Linux内核、驱动开发、应用开发等

 

好处:

1、节省学习成本

2、跳过硬件(开发板)的各种坑

 

QEMU安装:

自动安装:apt install qemu

手动编译安装:

      首先安装QEMU编译依赖包  -apt install zlib1g-dev

                                                   -apt install libglib2.0  libglib2.0-dev

                                                   -apt install libsdl1.2-dev

                                                   -apt install libpixman-1-dev libfdt-dev

       下载QEMU源码,git clone git://git.qemu-project.org/qemu.git

       切换稳定版本:git checkout v2.7.0

        编译配置:./configure  --target-list=arm-softmmu  --audio-drv-list=

        编译安装:make; make install

 

qemu-system-  #显示所支持的CPU架构

qemu-system-arm  --version  #显示版本

qemu-system-arm  -M help  #显示ARM架构的开发板

 

软件远更新下载:

Ubuntu采用集中式的软件仓库机制,将软件包分类存在软件仓库中进行管理。

软件仓库放置在各种镜像服务器中,对于用户来说,但使用apt-get install安装软件时,

会从这些服务器下载软件包,这些镜像服务器就是软件源。

原理:执行apt update, 程序分析/etc/apt/source.list目录,自动连接网络寻找list中对应的Packages/Sources/Release列表文件,如果有更新则重新下载,存入/var/lib/apt/lists/目录

,然后apt install 相应的包,下载到本地进行安装。

 

 

下载Linux内核  

                      -www.kernel.org

                      -git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/

修改Makefile

                  进入内核源码的根目录,修改顶层的Makefile文件

                   ARCH=arm   

                   CROSS_COMPILE=arm-linux-gnueabi-

     cd linux-4.4.76/arch目录可以查看linusx支持的内核

     cd linux-4.4.76/arch/arm查看支持的ARM架构的芯片(开发板),

     cd linux-4.4.76/arch/arm/config针对不同的开发板,的内核配置文件

编译内核、模块、dtb文件,回到Linux-4.4.76内核根目录

                  $make vexpress_defconfig;  ##针对vexpress开发板编译配置文件,生成.config文件

                 $make zImage -j6;   #6多线程编译内核镜像, 在arch/arm/boot/zImage目录

                  $make modules -j4;  #编译内核模块,有时需要使用内核模块的形式配置内核,生成模块.ko文件

                  $make dtbs;   在linux-4.4.76/arch/arm/boot/zImage生成的镜像为ARM架构通用镜像,针对具体的芯片开发板,在linux-4.4.76/arch/arm/boot/dts/vexpress-v2p-ca9.dtb 目录生成具体的配置文件。

 

 1 cat boot.sh
 2 qemu-system-arm \
 3                 -M  vexpress-a9  \  #指定开发板
 4                 -m  512M   \        #指定内存大小
 5                 -kernel   linux-4.4.76/arch/arm/boot/zImage  \   #指定Arm架构镜像
 6                 -dtb  linux-4.4.76/arch/arm/boot/dts/vexpress-v2p-ca9.dtb   \  #指定具体芯片的配置文件
 7                 -nographic   \          #非图形化界面
 8                 -append "console=ttyAMA0"  #指定开发板串口通信端口
 9 
10 ./boot.sh
ps -a #显示当前的进程
kill 12345 #结束指定进程

 

文件系统:

  对存储在设备上的数据进行组织的机制

  文件系统的思想:Linux一切皆文件,用户与操作系统进行交互主要是用文件系统调用,用户和底层存储的接口

   根文件系统:Linux内核启动后的第一个要挂载的文件系统,主要由基本的shell命令、各种库、字符设备、配置脚本组成,提供/根目录,RFS(根文件系统)可以放置在nor/nand flash、SD卡、U盘(启动盘)、磁盘、网络空间等地方。

 

 

使用Busybox制作根文件系统

编译安装Busybox:  Busybox是一个集成100多个Linux常用命令和工具的制作文件系统的软件工具

     -下载源代码:http://www.busybox.net/downloads/

     -修改Makefile: ARCH=arm

                            CROSS_COMPILE=arm-linux-gnueabi-

     -配置: make defconfig;        #对上面修改进行默认配置

                  make menuconfig;    #图形化配置

     -编译:make

     -安装:make install

制作根文件系统

$mkdir rootfs
$mkdir rootfs/lib
$cp -r busybox-1.27.0/_install/* rootfs/   #拷贝各种
$cp -p /usr/arm-linux-gnueabi/lib/* rootfs/lib  ##拷贝动态链接库
$mkdir -p rootfs/dev/  ##创建字符设备,和底层设备进行交互
$cd dev
$mknod -m 666 tty1 c 4 1    ##m权限读写执行,串口设备名  字符设备  主设备号  次设备号
$mknod -m 666 tty2 c 4 2
$mknod -m 666 tty3 c 4 3
$mknod -m 666 tty4 c 4 4
$mknod -m 666 console c 5  1   ##控制台节点
$mknod -m 666 null c 1 3   ##垃圾站
$

 

使用SD卡制作文件系统镜像

    生成镜像:dd if=/dev/zero of=rootfs.ext3 bs=1M count=32

    格式化为exts文件系统:mkfs.ext3  rootfs.ext3

    将文件拷贝到系统镜像中:

                       $mount -t ext3   rootfs.ext3   /mnt/   -o   loop   #挂载SD卡在mnt目录

                       $cp   -r  rootfs/*   /mnt    #把文件系统文件拷贝到mnt中

                       $umount   /mnt   #卸载mnt

启动内核,挂在rootfs

1 qemu-system-arm \
2                 -M  vexpress-a9  \  #指定开发板
3                 -m  512M   \        #指定内存大小
4                 -kernel   linux-4.4.76/arch/arm/boot/zImage  \   #指定Arm架构镜像
5                 -dtb  linux-4.4.76/arch/arm/boot/dts/vexpress-v2p-ca9.dtb   \  #指定具体芯片的配置文件
6                 -nographic   \          #非图形化界面
7                 -append "root=/dev/mmcblk0 rw console=ttyAMA0"  #挂在SD卡,根文件系统,指定开发板串口通信端口 可读可写
8                 -sd rootfs.ext3 

 

 

(https://www.bilibili.com/video/BV1PJ411m7Rs/?spm_id_from=333.788.recommend_more_video.0&vd_source=0415fb7922143138e3687e92fcad0752)

 

图形化启动内核

1 qemu-system-arm \
2                  -M  vexpress-a9  \  #指定开发板
3                  -m  512M   \        #指定内存大小
4                  -kernel   linux-4.4.76/arch/arm/boot/zImage  \   #指定Arm架构镜像
5                  -dtb  linux-4.4.76/arch/arm/boot/dts/vexpress-v2p-ca9.dtb   \  #指定具体芯片的配置文件
6                  -append "root=/dev/mmcblk0 rw console=ttyAMA0"  #挂在SD卡,根文件系统,指定开发板串口通信端口 可读可写
7                  -sd rootfs.ext3 

 

启动之后修改启动界面:

           $cd  /etc/init.d

           $touch rcS

           $chmod  a+x rcS

           $vim rcS

                       echo  "----------------------------------------------------------"

                       echo "                         Hello World                           "

                       echo "-----------------------------------------------------------"

 

 

使用bootload (U-boot)加载Linux内核

 

标签:4.4,boot,开发板,76,linux,QEMU,arm,模拟器
From: https://www.cnblogs.com/ucas123/p/16441656.html

相关文章

  • 在QEMU-KVM环境下部署Oracle 19.16 RAC
    KVM环境和其他虚拟化或真实生产最大差异主要就是在实施前期准备工作上:具体在DB节点和存储环境的准备工作上有差异,本文会详细说明。而剩余基本软件安装和补丁应用部分......
  • qemu使用uboot通过网络加载 linux kernel
    qemu使用uboot通过网络加载linuxkernel。参考文章:https://www.zhaixue.cc/qemu/qemu-u-boot.htmlhttps://zhuanlan.zhihu.com/p/547338158 1#!/bin/sh2......
  • 安装蓝叠安装模拟器在Windows10
      下载地址:https://www.bluestacks.com/download.html     如果想使用模拟器打开tiktok的话可以如下操作 ......
  • qemu搭建和运行起来一个linux内核环境
    1#!/bin/sh23#注意编译的Linux内核版本,如内核版本过低,而工具链和主机Ubuntu过旧,则可能会带来大量编译错误45#1.6#生成vexpress-a9开发板......
  • Genymotion模拟器安装
    如果你符合下述三种情况的话,你可以考虑安装一个GenymotionAndroid模拟器:没有真机调试,只能用模拟器嫌SDK内置的AVD启动速度,运行速度慢电脑配置还可以,最好4G内存以上如果你......
  • 解决adb devices无法连接各种模拟器
    经常使用到模拟器的童鞋,如果在使用adbdevices命令时,发现出现“Listofdevicesattached”,模拟器USB调试都开启的情况下,也没有连接成功。这种情况一般都是模拟器adb的版......
  • adb连接真机或模拟器的方法
    adb命令连接安卓设备的方法adb连接真机或者模拟器一共有以下三种方法1、连接模拟器2、有线连接真机3、无线连接真机1、连接夜神模拟器①启动夜神模拟器②连接模拟器......
  • 初学银河麒麟linux笔记 第九章 QEMU安装arm虚拟机
    arm虚拟机无法用vm进行安装,因此需要安装QEMU虚拟机参考: WIndows下使用Qemu安装Arm版Kylin系统_h1007886499的博客-CSDN博客_windowsqemuarm win10系统下利用QEMU安......
  • Windows上使用QEMU创建银河麒麟ARM64虚拟机完全手册
    “好记性不如烂笔头。”——张溥0x00大纲目录0x00大纲0x01前言0x02物料准备0x03安装QEMU0x04创建虚拟磁盘0x05安装麒麟系统0x06启动和使用虚拟机启动脚本调......
  • 君子不玩物丧志,亦常以借物调心,网站集成二次元网页小组件(widget)石蒜模拟器,聊以赏
    传世经典《菜根谭》中有言曰:“徜徉于山林泉石之间,而尘心渐息;夷犹于诗书图画之内,而俗气潜消。故君子虽不玩物丧志,亦常借物调心。”意思是,徜徉在林泉山石之间,能够摒弃杂念,留......