当前位置:首页 > 编程笔记 > 正文
已解决

01. Linux kernel 编译,qemu仿真

来自网友在路上 171871提问 提问时间:2023-11-20 08:26:11阅读次数: 71

最佳答案 问答题库718位专家为你答疑解惑

01. Linux kernel 编译,qemu仿真

    • 主要步骤回顾
    • 参考文章链接

主要步骤回顾

  1. 下载编译linux内核5.10
wget https://mirror.bjtu.edu.cn/kernel/linux/kernel/v5.x/linux-5.10.tar.xz
  1. 下载交叉编译工具链
http://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/
  1. 下载支持qemu的u-boot内核
wget https://ftp.denx.de/pub/u-boot/u-boot-2020.10.tar.bz2
  1. 编译linux kernel,编译u-boot
# 编译kernel32位
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm vexpress_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm
# 如果需要编译64位
make ARCH=arm64 defconfig CROSS_COMPILE=aarch64-linux-gnu-
#生成的内核镱像位于arch/arm/boot/zImage
#设备树 arch/arm/boot/dts/vexpress-v2p-ca9.dtb#编译u-boot
make vexpress_ca9x4_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- all
#生成的文件为 uboot,uboot.bin
  1. 安装qemu-system-arm
sudo apt install qemu-system-arm
  1. 下载busybox交叉编译生成bin工具
wget http://www.busybox.net/downloads/busybox-1.36.0.tar.bz2make defconfig
make CROSS_COMPILE=arm-linux-gnueabi-
make install CROSS_COMPILE=arm-linux-gnueabi-
  1. 制作根文件系统(rootfs)
# 生成目录结构
mkdir -p rootfs/{dev,etc/init.d,lib}
sudo cp busybox-1.20.2/_install/* -r rootfs/
sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/
#生成四个tty终端镜像
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
mkfs.ext3 a9rootfs.ext3
# 挂载拷贝数据
sudo mkdir tmpfs
sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
sudo cp -r rootfs/*  tmpfs/
sudo umount tmpfs
  1. 使用qemu制定参数启动程序
qemu-system-arm -M vexpress-a9 -m 512M -kernel /path/to/kernel/dir/arch/arm/boot/zImage -dtb  /path/to/kernel/dir/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0  console=ttyAMA0" -sd a9rootfs.ext3

参考文章链接

从零开始使用qemu模拟linux内核

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"01. Linux kernel 编译,qemu仿真":http://eshow365.cn/6-40180-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!