第零步:源码安装qemu
tar xvJf qemu-7.0.0.tar.xz
cd qemu-7.0.0
./configure
make
make install
注:configure过程中可能会报错,安装相应的工具和库就行了。
apt install ninja-build
apt install libglib2.0-dev
apt install libpixman-1-dev
ninja:一个工程配置构建工具,类似于make,Google人开发Chrome时开发的。
Qemu出现VNC server running on 127.0.0.1:5900
这是因为在安装QEMU过程中
./configure --prefix=/usr/local/qemu
执行后出现了 SDL support no
解决方法
sudo apt install libsdl2-dev -y
./configure --prefix=/usr/local/qemu
SDL support yes (2.0.8)
重新配置QEMU,显示SDL support yes即为成功
,然后重新编译安装
也可以不用安装 直接使用VNC Viewer去连接远程桌面
第一步:下载源码
第二步:编译busybox
tar -xvf busybox-1.35.0.tar.bz2
cd busybox-1.35.0
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make menuconfig 配置成静态编译
make install 完成编译
在busybox根目录下有个_install目录,讲此目录复制到linux内核源码根目录
在把_install拷贝到kernel目录前做如下操作:
mkdir etc
mkdir dev
mkdir mnt
mkdir -p etc/init.d/
在etc/init.d/目录下创建rcS文件,并写入如下内容:
mkdir -p /proc
mkdir -p /tmp
mkdir -p /sys
mkdir -p /mnt
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
给rcS文件加上可执行权限:
chmod +x rcS
在etc目录下创建fstab文件,并写入如下内容:
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0
在etc目录下创建inittab文件,并写入如下内容:
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
在dev目录下创建设备节点,需要root权限:
cd _install/dev/
sudo mknod console c 5 1
sudo mknod null c 1 3
注:安装arm交叉编译器
apt install gcc-arm-linux-gnueabi build-essential
第三步:编译
linuxkernel
(注意:kernel用了gcc专有特性,所以编译kernel源码需要相应的gcc版本)
tar -xvf linux-5.15.35.tar.gz
cd linux-5.15.35
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make vexpress_defconfig
make menuconfig
配置initramfs,在initramfs source file中填入_install,如下图:
修改一下user和kernel内存空间,如下图:
make bzImage -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make dtbs # 编译设备树,ARM架构特有的,x86架构用ACPI,因为x86架构PC用的多,除了Linux还有Windows
QEMU模拟4核Cortex-A9的Versatile Express开发平台:
qemu-system-arm -M vexpress-a9 -smp 4 -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic
在Ubuntu另外一个中段中输入killall qemu-system-arm即可关闭QEMU平台。