01. Linux kernel 编译,qemu仿真

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.bz2

make 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内核

你可能感兴趣的:(linux)