# smallsys
## 下載qemu並且編譯
```bash=
git clone git@github.com:qemu/qemu.git
cd qemu
./configure --target-list=i386-softmmu,x86_64-softmmu,aarch64-softmmu,arm-softmmu,riscv32-softmmu,riscv64-softmmu --disable-libssh --enable-debug --enable-kvm
# 編譯
make
# 製造軟連結
ln -s /qemu_source_code/aarch64-softmmu/qemu-system-aarch64 /usr/bin/qemu-system-aarch64
```
發生錯誤-> make: aarch64-linux-gnu-gcc: Command not found
可能原因為32和64位元相容問題
解法:sudo apt-get install binutils-multiarch-dev binutils-multiarch lib32ncurses5-dev lib32z1
---
## 下載並且編譯buildroot產生根檔案系統
```bash=
git clone git@github.com:buildroot/buildroot.git
cd buildroot
make menuconfig
# 調整buildroot選單內容
Target options
Target Architecture (AArch64 (little endian))
Toolchain
Toolchain type (External toolchain)
Linaro AArch64 2018.05
System configuration
Run a getty (login prompt) after boot
(ttyAMA0) TTY port
Target packages
Show packages that are also provided by busybox
Filesystem images
cpio the root filesystem (for use as an initial RAM filesystem)
# 開始編譯
make
```
## 下載並且編譯linux
```bash=
git clone git@github.com:torvalds/linux.git
cd linux
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig
General setup
Initial RAM filesystem and RAM disk (initramfs/initrd) support
(/home/liangyu/Desktop/opnsrc/buildroot/output/images/rootfs.cpio) Initramfs source file(s)
Networking support
Plan 9 Resource Sharing Support (9P2000)
File systems
Network File Systems
9P POSIX Access Control Lists
#編譯核心
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64
```
---
使用qemu執行
```bash=
qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 2048 -kernel /path to linux source code//arch/arm64/boot/Image --append "console=ttyAMA0"
```
成功畫面

---
[Running Linux in QEMU’s aarch64 system emulation mode](https://www.bennee.com/~alex/blog/2014/05/09/running-linux-in-qemus-aarch64-system-emulation-mode/)
###### tags: `linux`