安装ninji
安装依赖re2c
sudo apt install re2c -y
下载ninja
git clone https://github.com/ninja-build/ninja.git
编译ninja
cd ninja
./configure.py --bootstrap
安装
sudo cp ./ninja /usr/bin
ninja --version
- https://blog.csdn.net/u013171226/article/details/120971325
安装qemu
安装依赖
sudo apt update
sudo apt install build-essential
sudo apt install zlib1g-dev
sudo apt install pkg-config
sudo apt install libglib2.0-dev
sudo apt install binutils-dev
sudo apt install libboost-all-dev
sudo apt install autoconf
sudo apt install libtool
sudo apt install libssl-dev
sudo apt install libpixman-1-dev
sudo apt install virtualenv
sudo apt install flex
sudo apt install bison
sudo apt install libgcrypt20-dev
下载源码 & 编译
wget https://download.qemu.org/qemu-7.0.0.tar.xz
tar xvJf qemu-7.0.0.tar.xz
cd qemu-7.0.0
./configure
make
make install
-
https://download.qemu.org/
-
https://blog.csdn.net/fangye945a/article/details/121962409
验证环境
下载内核编译内核
www.kernel.org
下载内核
编译kernel
- 配置, 直接保存退出
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig -j4 O=./object
- 编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 O=./object
下载并制作rootfs
https://www.busybox.net/downloads/
下载最新的版本
制作rootfs
- 解压
tar -xvf busybox-1.31.1.tar.bz2
- 配置, 直接保存退出
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig
- 编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
- 安装
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install
- 开始制作,先拷贝文件
- 将busybox编译生成的_install目录下的文件全部拷贝到根文件系统目标rootfs/目录:
mkdir rootfs
cp /.../busybox-1.29.3/_install/* rootfs/ -rfd
- 添加glibc库
在根文件系统中添加加载器和动态库:
mkdir rootfs/lib
cp /usr/arm-linux-gnueabi/lib/* rootfs/lib/ -rfp
- 静态创建设备文件
mkdir rootfs/dev
cd rootfs/dev
mknod -m 666 tty1 c 4 1
mknod -m 666 tty2 c 4 2
mknod -m 666 tty3 c 4 3
mknod -m 666 tty4 c 4 4
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
至此,简易版根文件系统就制作完成,该根文件系统只含有最基本的功能
- 生成一个空的SD卡镜像:
dd if=/dev/zero of=rootfs.ext3 bs=1M count=32
32+0 records in
32+0 records out
33554432 bytes (34 MB, 32 MiB) copied, 0.0236764 s, 1.4 GB/s
- 将SD卡格式化为exts文件系统:
mkfs.ext4 rootfs.ext4
- 挂载生成的rootfs
sudo mount -t ext3 rootfs.ext3 /mnt -o loop
sudo cp -rf rootfs/* /mnt/
sudo umount /mnt
启动
- 将内核中编译好的文件,
zImage
,vexpress-v2p-ca9.dtb
以及生成的rootfsrootfs.ext4
拷贝到当前目录. - 执行下面的脚本
# boot.sh
#! /bin/sh
qemu-system-arm \
-M vexpress-a9 \
-m 512M \
-kernel zImage \
-dtb vexpress-v2p-ca9.dtb \
-nographic \
-append "root=/dev/mmcblk0 rw console=ttyAMA0" \
-sd rootfs.ext4
退出
执行 Crtl +a
松开,再按 X
- https://www.cnblogs.com/microxiami/p/9746979.html
参考
- 如上每小节提到连接