(base) user@user-RF511-RF411-RF711:~$ uname -a
Linux user-RF511-RF411-RF711 5.3.0-61-generic #55~18.04.1-Ubuntu SMP Mon Jun 22 16:40:20 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
1.) install Qemu
a.) apt-get install qemu
- find out the command location
b.) which qemu-system-aarch64
/usr/local/bin/qemu-system-aarch64
2.) download linux kernel source & decompress (from:https://www.kernel.org/)
a.) wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.7.8.tar.xz
b.) tar -xz linux-5.7.8.tar.xz
3.) install aarch64-linux-gnu-gcc
a.) sudo apt-get install gcc-aarch64-linux-gnu
4.) compile kernel as arm64 aarch64
a.) make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
b.) make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image -j8
the image is located @ "./arch/arm64/boot/Image"
5.) download BusyBox : for making a minimal bundle of basic linux applications (i.e. applets) in a single binary. (https://busybox.net/downloads/BusyBox.html)
a.) wget https://busybox.net/downloads/busybox-1.32.0.tar.bz2
b.) tar -jxvf busybox-1.32.0.tar.bz2
6.) configure/install cross compiler toolchain & build statis busybox binarya.) cd busybox-1.32.0
b.) make menuconfig
---- change the followings in "Settings" ----
- - Settings
[*] Build static binary (no shared libs)
(aarch64-linux-gnu-) Cross compiler prefix
c.) make
d.) make install
7.) use file system to create console
cd _install
mkdir dev
cd dev
sudo mknod console c 5 1
sudo mknod null c 1 3
8.) compress and patch a filesystem file
find . | cpio -o -H newc |gzip > ../rootfs.cpio.gz
9.) create qemu.sh bash script for env. startup
$ cat qemu.sh
qemu-system-aarch64 \
-machine virt,virtualization=true,gic-version=3 \
-nographic \
-m size=1024M \
-cpu cortex-a57 \
-smp 2 \
-kernel Image \
-initrd rootfs.cpio.gz \
--append "console=ttyAMA0 rdinit=/linuxrc"
10.) put Image, rootfs.cpio.gz, qemu.sh in the same folder11.) RUN QEMU
sh qemu.sh
DADA!!! FINISH!!