QEMU-在UBUNTU20上安装(1)

本文档详细介绍了如何在没有硬件板子的情况下,通过QEMU模拟ARM环境来构建Linux系统。首先,安装必要的QEMU及相关依赖包,然后下载Linux内核和Buildroot源码。接着,配置并编译Linux内核,创建镜像文件。之后,构建 BusyBox 文件系统,包括安装、配置、编译以及将文件复制到镜像中。最后,启动QEMU并调整参数以正确运行构建的Linux系统。
摘要由CSDN通过智能技术生成

上面是我的微信和QQ群,欢迎新朋友的加入。

这两天需要调调驱动

但是手头没板子,想到装一个qemu跑一下虚拟算了

安装

sudo apt-get update
sudo apt-get install qemu
sudo apt-get install qemu-kvm
sudo apt-get install qemu-system-x86
sudo apt-get install qemu-system-arm
sudo apt install qemu-user
sudo apt install make
sudo apt install gcc
sudo apt install git
sudo apt install flex
sudo apt install bison
sudo apt-get install libncurses5-dev
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install zlib1g-dev
sudo apt-get install libglib2.0-0
sudo apt-get install libglib2.0-dev
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
sudo apt-get install gettext

目前GCC版本是

下载linux源码和buildroot源码

https://buildroot.org/download.html 
http://www.kernel.org

编译LINUX

用vexpress_defconfig,这个网上用的人多一点

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

修改顶层makefile

ARCH ?= arm
CROSS_COMPILE ?= arm-linux-gnueabi-

编译

make
make modules
make dtbs
ls arch/arm/boot/dts/vexpress*
ls arch/arm/boot/

生成镜像文件

在上层目录,创建一个文件夹叫image,用于存放编译出来的镜像文件

 

写一个脚本用于自动拷贝镜像

#!/bin/bash
cp ../linux-5.12.9/arch/arm/boot/zImage ./
cp ../linux-5.12.9/arch/arm/boot/dts/vexpress-v2p-ca9.dtb ./

再创建一个脚本文件用于启动qemu

qemu-system-arm -M vexpress-a9 -m 512M -kernel zImage -dtb vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0"

运行,显示启动失败,这是正确的结果,因为文件系统还没做

编译buildroot

下载地址:https://busybox.net/

进入文件系统目录

make list-defconfigs
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- qemu_arm_vexpress_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

直接用现成的配置

编译busybox

buildroot比较大,也可以用一个小点的文件系统

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

配置

make defconfig
make CROSS_COMPILE=arm-linux-gnueabi-
make install CROSS_COMPILE=arm-linux-gnueabi-

编译完成


编译完成后,会在_install目录下生成需要的文件 
接下来就开始制作根文件系统  -创建根目录rootfs 
sudo mkdir rootfs1 
-复制busybox命令到根目录下 
sudo cp -r busybox-1.27.2/_install/* rootfs/1 
-从工具链中复制运行库到lib目录下 
sudo mkdir rootfs/lib
sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib12 
-创建4个tty终端设备(c代表字符设备,4是主设备号,1~4分别是次设备号) 
sudo mkdir -p rootfs/dev
sudo mknod rootfs/dev/tty1 c 4 1
sudo mknod rootfs/dev/tty2 c 4 2
sudo mknod rootfs/dev/tty3 c 4 3
sudo mknod rootfs/dev/tty4 c 4 412345 
-生成镜像 
dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=321 
-格式化生成ext3文件系统 
mkfs.ext3 a9rootfs.ext31 
成功后显示如下   


-将文件复制到镜像中

sudo mkdir tmpfs
sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
sudo cp -r rootfs/* tmpfs/
sudo umount tmpfs
可以制作成脚本

#!/bin/bash

sudo rm -rf rootfs
sudo rm -rf tmpfs
sudo rm -f a9rootfs.ext3

#创建根目录rootfs
sudo mkdir rootfs
#复制busybox命令到根目录下,注意busybox路径!划重点!
sudo cp -r ../busybox-1.33.1/_install/* rootfs/
#从工具链中复制运行库到lib目录下
sudo mkdir rootfs/lib
sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib
#创建4个tty终端设备(c代表字符设备,4是主设备号,1 2 3 4分别是次设备号
sudo mkdir -p rootfs/dev
sudo mknod rootfs/dev/tty1 c 4 1
sudo mknod rootfs/dev/tty2 c 4 2
sudo mknod rootfs/dev/tty3 c 4 3
sudo mknod rootfs/dev/tty4 c 4 4
#生成镜像
dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32
#格式化生成ext3文件系统
mkfs.ext3 a9rootfs.ext3

#将文件复制到镜像中
sudo mkdir tmpfs
sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
sudo cp -r rootfs/* tmpfs/
sudo umount tmpfs

启动

修改一下启动QEMU的脚本

#!/bin/bash

qemu-system-arm \
-M vexpress-a9 \
-m 512M \
-kernel zImage \
-dtb vexpress-v2p-ca9.dtb \
-nographic \
-append "root=/dev/mmcblk0 console=ttyAMA0 rw init=/linuxrc" \
-sd a9rootfs.ext3

正常启动

退出的方法是CTRL+A,然后按X

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值