您的位置:68399皇家赌场 > 域名注册 > QEMU搭建Kernel调节和测验开采条件

QEMU搭建Kernel调节和测验开采条件

发布时间:2019-08-31 14:08编辑:域名注册浏览(197)

    写在前边的话

    经过地点的步调,搭建出来贰个纤维的qemu arm开荒情况,你能够上边的功底上修改内核,恐怕扩展一些测验程序在单板上运转,以至选取单板的flash设备。 在此,你能够做纯arm架构的基石开辟,只怕与架构非亲非故的木本开垦,也能够做单板相关的驱动开垦。

    Linux入门求学课程:虚构机体验之QEMU篇 

    Ubuntu 12.04之找不到Qemu命令

    Arch Linux上安装QEMU EFI BIOS

    QEMU的翻译框架及调节和测量试验工具

    QEMU 代码剖判:BIOS 的加载进度

    QEMU 的详尽介绍:请点这里
    QEMU 的下载地址:请点这里

    本文永远更新链接地址:

    为何会有那篇小说早在2013年的时候,跟当时同事一齐谈谈,做Linux系统开辟正处在整个Linux开辟中间...

    ubuntu apt-get格局安装

      root-># apt-get install qemu-system-arm
    

    运用此命令会活动消除注重关系完毕安装进程,安装完结能够由此qemu-system-arm -version
    测验安装是还是不是中标。

    制作根文件系统

    到此地是还是不是水到渠成了啊? 其实在地点的测量检验中,你会发觉基本报panic,因为根本找不到根文件系统,不可能启init进程。

    根文件系统要牵记多个地点:

    系统运营运转

    成功上述全数手续之后,就足以运转qemu来效仿vexpress开垦板了,命令参数如下:

    qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/ivan/qemu/linux/arch/arm/boot/zImage -nographic -append "root=/dev/mmcblk0  console=ttyAMA0" -sd a9rootfs.ext3 

    从基本运行打字与印刷,到命令行提醒符出现,动人心弦的随时出现了……

    制作根文件系统

    安装arm的穿插编写翻译工具链

     想必做嵌入式开垦的相恋的人,对交叉编写翻译工具链不生分。假如你订制三个断断续续编写翻译工具链,提出您利用crosstool-ng开源软件来创设。但在此地建议直接安装arm的交叉编写翻译工具链:

    sudo apt-get install gcc-arm-linux-gnueabi
    

    搭建情况

    68399皇家赌场,本身任何搭建进度都以在记录本上开展的,Ubuntu 12.04系统;如若是Fodera情状,搭建进程可能略有分裂,但关键步骤是不改变的。 

    qemu模拟得最佳的arm微芯片,要数ARM公司的vexpress A9开辟板了,本文的搭建进度都以围绕那一个开拓板实行的。当然,倘诺你想搭另外开采板,也轻便,只要qemu和基本对它有成熟的辅助就够了。 

    上边是step by step的搭建进度,提出未尝非常须要的朋友,遵照下在面包车型大巴步调操作。大概先依照下边包车型客车步子成功搭建vexpress运营条件之后,再遵照本身的须要开展退换。 

    下载编译内核

    测验qemu和基本能或不能够运营成功

    qemu已经设置好了,内核也编写翻译成功了,到那边最棒是测量检验一下,编写翻译出来的基础是或不是OK,恐怕qemu对vexpress单板协助是或不是够自个儿。

    运营命令很简短:

    qemu-system-arm 
        -M vexpress-a9 
        -m 512M 
        -kernel /root/tq2440_work/kernel/linux-stable/out_vexpress_3_16/arch/arm/boot/zImage 
        -nographic 
        -append "console=ttyAMA0"
    
    可以把上面的命令放到一个脚本中执行。
    

      纵然看到内核运维进程中的打印,表明前的搭建是打响的。

    Booting Linux on physical CPU 0x0
    Initializing cgroup subsys cpuset
    Linux version 3.16.7 (root@ubuntu) (gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #5 SMP Sat Dec 5 21:17:17 PST 2015
    CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7), cr=10c53c7d
    CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
    Machine: ARM-Versatile Express
    Memory policy: Data cache writeback
    CPU: All CPU(s) started in SVC mode.
    sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns
    PERCPU: Embedded 7 pages/cpu @9fbed000 s7552 r8192 d12928 u32768
    Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
    Kernel command line: console=ttyAMA0
    PID hash table entries: 2048 (order: 1, 8192 bytes)
    Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    Memory: 513272K/524288K available (4563K kernel code, 190K rwdata, 1292K rodata, 239K init, 149K bss, 11016K reserved)
    Virtual kernel memory layout:
    ......
    
    VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
    Please append a correct "root=" boot option; here are the available partitions:
    1f00          131072 mtdblock0  (driver?)
    Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.16.7 #5
    [<8001507c>] (unwind_backtrace) from [<800115d4>] (show_stack 0x10/0x14)
    [<800115d4>] (show_stack) from [<8044f9c8>] (dump_stack 0x74/0x90)
    [<8044f9c8>] (dump_stack) from [<8044ce08>] (panic 0x90/0x1fc)
    [<8044ce08>] (panic) from [<805c210c>] (mount_block_root 0x1a0/0x254)
    [<805c210c>] (mount_block_root) from [<805c22b4>] (mount_root 0xf4/0x114)
    [<805c22b4>] (mount_root) from [<805c2400>] (prepare_namespace 0x12c/0x190)
    [<805c2400>] (prepare_namespace) from [<805c1d8c>] (kernel_init_freeable 0x1f4/0x240)
    [<805c1d8c>] (kernel_init_freeable) from [<8044adb8>] (kernel_init 0x8/0xec)
    [<8044adb8>] (kernel_init) from [<8000e4b8>] (ret_from_fork 0x14/0x3c)
    ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
    

     

    那边大概介绍下qemu命令的参数:

    -M vexpress-a9 模拟vexpress-a9单板,你能够选取-M ?参数来收获该qemu版本协理的具备单板

    -m 512M 单板运维物理内部存款和储蓄器512M

    -kernel /root/tq2440_work/kernel/linux-stable/out_vexpress_3_16/arch/arm/boot/zImage  告诉qemu单板运行内核镜像路线

    -nographic 不使用图形化分界面,只利用串口

    -append "console=ttyAMA0" 内核运转参数,这里告诉内核vexpress单板运营,串口设施是哪位tty。

     

    注意:

    自个儿老是搭建,都忘了根本运营参数中的console=参数应该填上哪些tty,因为不一样单板串口驱动类型不尽同样,成立的tty设备名当然也是不均等的。那vexpress单板的tty设备名是哪些吧? 其实这几个值能够从调换的.config文件CONFIG_CONSOLE宏找到。

    要是搭建另外单板,要求留神内核运转参数的console=参数值,同样地,可从转换的.config文件中找到。

     

    那时候只能通过杀死qemu-system-arm这些历程来退出,小编大约写了叁个脚本来实现那一个职务kill_qemu.sh

    #!/bin/bash
    
    ps -A | grep qemu-system-arm | awk '{print $1}' | xargs sudo kill -9
    

    干什么会有那篇文章

    早在二零一一年的时候,跟当时同事一同谈谈,做Linux系统开采正处在整个Linux开荒中间层,未有上层的C/C 业务和数据库的费用经历,也未有底层的内核和驱动开垦经历,到底路该怎么样走……基于对Linux系统开拓的了然和基础的志趣,认为选取Linux内核开垦更契合本人。于是到Tmall上买了块三星(Samsung)s3c2440(arm 9)开荒板,学起内核开采。未有过多长期,机会巧合,正式步入了商家的根本开拓部。就那样跟基础和arm打上交道了。 

    未曾想到这一做就是3年了,arm晶片独有在小卖部技能接纳,回到家里就不可能访谈了。二〇一八年(二零一五)初始认为做内核久了,应该向基础社区提交patch,提高名气和影响力。但在市肆提交patch不方便人民群众,于是在家里通过qemu格局搭建于ARM A9的运维意况,实行支付和测量检验注脚,一口气提交了有些个patch并被社区接受了:

    9c986661638c69772f5479c4715061239ec61b29

    c2459d35f5b8de077fde859b8c96a23f309b9ab2

    20cb6abfe0062693183eb2a85f7c73792e96407f

    207a6cb06990c298d0eac982e053d370e216d93d

    279f487e0b471577e2b3c134e2ff9af939129d0f 

    多年来在梳理Linux内部存款和储蓄器机制,无论是《长远理解Linux内核》依旧《深刻领悟内核框架结构》这两本红宝书都力不可能及告诉您各类细节的时候,就须要查阅代码细节,修改代码,甚致做行为深入分析。此时亟待修改代码输出调节和测量试验音信,以帮扶更加深远体会代码的逻辑。那该是qemu派上场的时候。

    深深通晓Linux内核(第三版)(拉脱维亚语版 中文版)  下载见

    事实上作者前前后后搭建qemu arm的运行碰着已超越5次了,每便都要花上众多时日。碰巧昨日有同事见状自个儿重新搭建,他如搭珍宝,告诉笔者自然要将搭建qemu的法子告诉她。 

    为此,如果您想买个开拓板来做arm linux嵌入式开采,完全能够使用qemu实行开垦。大概您像本人同样,对基础机制关注,而不关心于现实的外设器件,最多是关怀arm架构相关的作用,也能够动用qemu进行付出。 

    一句话:搭建qemu arm遇到,用于做基础开垦和功效解析调节和测验。 

    QEMU简介

    先看看维基百科的解说,什么是QEMU

        QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由KVM(早期为kqemu加速器,现在kqemu已被KVM替换)这个开源的加速器,QEMU能模拟至接近真实电脑的速度。QEMU有两种主要运作模式:
    
    User mode模拟模式,亦即是用户模式。QEMU能引导那些为不同中央处理器编译的Linux程序。而Wine及Dosemu是其主要目标。
    System mode模拟模式,亦即是系统模式。QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上虚拟数部不同虚拟电脑。
    

    简短,qemu正是七个设想机软件,大家得以在其间跑本人创设的操作系统,那对于学习基础只怕驱动开垦以来的确是优良有益,能够遗弃开垦板,单拿一台台式机计算机就足以学学基础测量检验模块代码,以致直接做开荒。真的是老大有助于,废话比很少说,开工。

    编译Linux内核

    生成vexpress开荒板子的config文件:

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

    编译:

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

    更换的基石镱像位于arch/arm/boot/zImage, 后续qemu运转时须要选择该镜像。 

    编译busybox

    wget http://www.busybox.net/downloads/busybox-1.20.2.tar.bz2 
    make defconfig
    make CROSS_COMPILE=arm-linux-gnueabi-
    make install 
    

    设置到位后,会在busybox目录下转移_install目录,该目录下的次序正是单板运行所急需的指令。

    下载和安装qemu模拟器

    下载qemu,作者用的版本是2.4版本,能够用如下格局下载,然后checkout到2.4分支上就可以

    git clone git://git.qemu-project.org/qemu.git
    cd qemu
    git checkout remotes/origin/stable-2.4 -b stable-2.4
    

    配备qemu前,需求安装多少个软件包:

    sudo apt-get install zlib1g-dev
    
    sudo apt-get install libglib2.0-0
    
    sudo apt-get install libglib2.0-dev
    
    sudo apt-get install libtool
    
    sudo apt-get install libsdl1.2-dev 
    
    sudo apt-get install autoconf
    

     

     

    陈设qemu,支持模拟arm架构下的全数单板,笔者为了使qemu的代码干净一些,采纳如下格局编写翻译,最一生成的中间文件都在build下

    mkdir build
    cd build
    ../qemu/configure --target-list=arm-softmmu --audio-drv-list=
    

     

    编写翻译和装置:

    make
    make install
    

    查看qemu帮助什么板子

    qemu-system-arm -M help

    下载Linux内核

    下载内核有三种情势,一种是用git直接下载内核代码树,方便前面包车型地铁根本开采。另一种是一贯到基础社区下载对应版本的源码包。小编使用第一种艺术,但后面开采主线上3.18本子和前面版本的代码,使用这种搭建方法运维不起来。前段时间未考察难题的根因。倘使读者想神速搭建成功,建议选拔3.16版本的水源进行搭建。 

    方法一:使用git

    git clonegit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 

    措施二:直接下载3.16源代码包

    wget  

    多变根文件系统

    1. 创办rootfs目录(根目录),根文件系统内的文书全体停放这里
      sudo mkdir rootfs
    2. 拷贝busybox命令到根目录下
      sudo cp busybox-1.20.2/_install/* -r rootfs/

    2. 根文件系统放在哪儿

         其实注重于各样开辟板协助的存款和储蓄设备,能够松手Nor Flash上,也可以放置miniSD存款和储蓄卡,以致外界磁盘上。最重大的有个别是您要知道明了开垦板有哪些存储设备。

         本文直接动用CF存款和储蓄卡做为存款和储蓄空间,文件格式为ext3格式

    本文由68399皇家赌场发布于域名注册,转载请注明出处:QEMU搭建Kernel调节和测验开采条件

    关键词: 68399皇家赌场 Linux 虚拟化 Qemu

上一篇:Kafka入门杰出教程

下一篇:没有了