1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# 参考链接
# [[https://www.cnblogs.com/mrlayfolk/p/18231986][QEMU EDU设备模拟PCI设备驱动编写]]
# [[https://www.cnblogs.com/from-zero/p/14327440.html][QEMU源码编译安装【教程】]]
#!/bin/bash
buildroot_version="2022.02.2"
qemu_version="4.1.1"
work_dir_name="qemu-arm-linux";
work_dir="${HOME}/${work_dir_name}";
# if [ -d "${work_dir}" ]; then sudo rm -rf ${work_dir}; fi
mkdir -p ${work_dir}
# 安装依赖文件
sudo apt install -y make gcc g++ libpixman-1-dev gcc-arm-linux-gnueabi python-dev qemu qemu-kvm libvirt-bin bridge-utils virt-manager uml-utilities bridge-utils u-boot-tools ed tftp-hpa tftpd-hpa xinetd nfs-kernel-server device-tree-compiler flex bison libncurses5-dev libelf-dev libssl-dev qemu-system-x86 git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev pkg-config libsdl2-dev libgtk-3-dev ninja-build python3-pyparsing
# buildroot编译
cd ${work_dir};
if [ ! -f "buildroot-"${buildroot_version}".tar.gz" ]; then
wget https://www.buildroot.org/downloads/buildroot-"${buildroot_version}".tar.gz
fi
if [ ! -d "buildroot-\"${buildroot_version}\"" ]; then
tar xf buildroot-"${buildroot_version}".tar.gz
fi
cd buildroot-"${buildroot_version}"
make qemu_aarch64_virt_defconfig
make -j$(nproc)
# QEMU编译和安装
cd ${work_dir};
if [ ! -f "qemu-"${qemu_version}".tar.xz" ]; then
wget https://download.qemu.org/qemu-"${qemu_version}".tar.xz
fi
if [ ! -d "qemu-\"${qemu_version}\"" ]; then
tar xf qemu-"${qemu_version}".tar.xz
fi
cd qemu-"${qemu_version}"
./configure --prefix=$PWD --target-list=aarch64-softmmu --enable-debug --enable-sdl --enable-kvm --enable-tools --disable-curl
sudo make install -j$(nproc)
# 拷贝文件
cd ${work_dir}
# 新建目录
mkdir -p release/qemu-arm64/bin
# 拷贝QEUM编译出的文件到新建目录
cp -a qemu-4.1.1/libexec/ release/qemu-arm64/ -rf
cp -a qemu-4.1.1/share/ release/qemu-arm64/ -rf
# 拷贝buildroot编译的文件到新建目录
cp -a buildroot-2022.02.2/output/images/* release/qemu-arm64/bin -ra
# 修改启动脚本, 然后运行
cd release/qemu-arm64/bin
cp -a start-qemu.sh start-qemu-bak.sh
echo 'qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -smp 1 -kernel Image -append "rootwait root=/dev/vda console=ttyAMA0" -netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -drive file=rootfs.ext4,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -nographic -device edu' > start-qemu.sh
sudo ./start-qemu.sh
|