qemu模拟嵌入式开发板运行linux

单片机的:单片机模拟器 - JeasonBoy - 博客园

 

mini2440

jeason1997/mini2440_qemu: QEMU模拟FriendlyArm的Mini2440开发板

QEMU模拟mini2440开发环境_qemu mini2440-CSDN博客

in linux:
docker pull ubuntu:14.04
docker run -it --rm -v $(pwd):/root ubuntu:14.04 /bin/bash

in docker:
sudo apt update
sudo apt install -y gcc g++ make libc6-dev libncurses5-dev libncursesw5-dev patch wget python unzip rsync bc

注:原作者使用的GCC版本: gcc-3.4.5-glibc-2.3.6,git里也有这个压缩包,但是是32位的,在64位的docker里运行不了

  可以在docker里直接apt install gcc安装一个,默认安装的是,gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.4),虽然版本不同,但接下来的编译也能正常进行

tar -xvf mini2440-buildroot.tar.gz
cp ./kernel/* ./mini2440-buildroot/dl
cp ./tools/* ./mini2440-buildroot/dl
cp ./uboot/* ./mini2440-buildroot/dl

cd mini2440-buildroot
make mini2440_defconfig
make menuconfig
change:
Filesystem images --->
[*] jffs2 root filesystem
Flash Type (NAND flash with 512B Page and 16 kB erasesize) --->

make -j8

cp mini2440-buildroot/output/images/rootfs.jffs2 ./flashimg
cp mini2440-buildroot/output/images/u-boot.bin ./flashimg
cp mini2440-buildroot/output/images/uImage ./flashimg
cd flashimg
./autogen.sh
./configure
make -j8
./flashimg -s 64M -t nand -f nand.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2 -z 512

in linux:
原作者编译的qemu依赖libncurses5
sudo apt install libncurses5
不过在Ubuntu 22.04的apt源里已经没这个了,大概率安装不了,可以自己编译一个,或者简单创建个软连接
# 先确认是否存在 libncurses.so.6
ls /usr/lib/x86_64-linux-gnu/libncurses.so.6
ls /usr/lib/x86_64-linux-gnu/libtinfo.so.6
# 创建软链接
sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5
它还依赖了sdl1.2
sudo apt install libsdl1.2debian
运行:
./qemu/mini2440/bin/qemu-system-arm -M mini2440 -serial stdio -mtdblock flashimg/nand.bin -usbdevice mouse

进入qemu后,会停在uboot,因为没有设置启动参数,不会自动加载内核运行,需要在uboot里执行以下命令:

nboot kernel
setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,115200
saveenv
bootm

登录账号root

devtmpfs: mounted
Freeing init memory: 136K
Starting logging: OK
Initializing random number generator... done.
Starting network...

Welcome to Buildroot
buildroot login: root
JFFS2 notice: (788) check_node_data: wrong data CRC in data node at 0x02e3634c: read 0x76d37c5a, calculated 0xe92d9c85.
# ls
hello

 

如果在make的时候有报文件权限的错误:
chmod: prof_err.h: new permissions are r--rw-rw-, not r--r--r--
我是因为编译一半CodeSpaces关闭了,重新挂载容器进来编译才导致的
解决方法,临时给整个buildroot目录提权
chmod -R 755 mini2440-buildroot
make -j8

 

 

imx6ull

已经编译好qemu,内核以及根文件系统,一键启动,仅支持linux系统运行:zhouyong/ubuntu-18.04_imx6ul_qemu_system

同上,但仅支持在win系统运行:qemu_image_for_imx6ull: IMX6ULL的QEMU映像文件,可以运行Linux、鸿蒙Liteos-A - Gitee.com

qemu源码:jeason1997/qemu_for_imx6ull: 韦东山基于qemu修改的imx6ull版本

qemu版imx6ull内核源码:jeason1997/qemu_imx6ull_kernel: imx6ull内核,用于qemu模拟器

预防被韦东山删库,以上项目已经下载保存在百度网盘:嵌入式/Linux/i.MX6ULL/qemu里

 

 

raspberry

29.mac用qemu模拟ar版树莓派(原生arm版,非其他虚拟机运行的官方X86版树莓派

https://blog.csdn.net/talkxin/article/details/79505826
https://github.com/dhruvvyas90/qemu-rpi-kernel
mac安装qemu,brew install qemu,然后brew info qemu看看缺乏什么依赖,依次安装好
先去树莓派官网下载最新镜像,解压得到img文件
然后去上面的github上下载内核文件跟设备树文件,例如内核5.4.51的就下载这2个文件一起放在目录下:
kernel-qemu-5.4.51-buster   versatile-pb-buster-5.4.51.dtb
然后在该目录下启动终端,输入命令便会启动进入虚拟机了:
    qemu-system-arm \
        -M versatilepb \
        -cpu arm1176 \
        -m 256 \
        -drive "file=镜像文件名.img,if=none,index=0,media=disk,format=raw,id=disk0" \
        -device "virtio-blk-pci,drive=disk0,disable-modern=on,disable-legacy=off" \
        -net "user,hostfwd=tcp::5022-:22" \
        -dtb versatile-pb-buster-5.4.51.dtb \
        -kernel kernel-qemu-5.4.51-buster \
        -append 'root=/dev/vda2 panic=1' \
        -no-reboot
posted @ 2025-10-22 17:25  JeasonBoy  阅读(53)  评论(0)    收藏  举报