|
@@ -1,7 +1,8 @@
|
|
|
target := aarch64-unknown-none
|
|
|
mode := release
|
|
|
kernel := target/$(target)/$(mode)/aarch64
|
|
|
-kernel_bin := target/$(target)/$(mode)/aarch64.bin
|
|
|
+kernel_qemu_bin := target/$(target)/$(mode)/aarch64_qemu.bin
|
|
|
+kernel_crosvm_bin := target/$(target)/$(mode)/aarch64_crosvm.bin
|
|
|
img := target/$(target)/$(mode)/img
|
|
|
|
|
|
sysroot := $(shell rustc --print sysroot)
|
|
@@ -19,11 +20,19 @@ env:
|
|
|
rustup component add llvm-tools-preview rustfmt
|
|
|
rustup target add $(target)
|
|
|
|
|
|
-kernel:
|
|
|
- cargo build $(BUILD_ARGS)
|
|
|
+kernel_qemu:
|
|
|
+ cargo clean
|
|
|
+ cargo build $(BUILD_ARGS) --config 'build.rustflags="--cfg platform=\"qemu\""'
|
|
|
+
|
|
|
+kernel_crosvm:
|
|
|
+ cargo clean
|
|
|
+ cargo build $(BUILD_ARGS) --config 'build.rustflags="--cfg platform=\"crosvm\""'
|
|
|
|
|
|
-$(kernel_bin): kernel
|
|
|
- aarch64-linux-gnu-objcopy -O binary $(kernel) $(kernel_bin)
|
|
|
+$(kernel_qemu_bin): kernel_qemu
|
|
|
+ aarch64-linux-gnu-objcopy -O binary $(kernel) $(kernel_qemu_bin)
|
|
|
+
|
|
|
+$(kernel_crosvm_bin): kernel_crosvm
|
|
|
+ aarch64-linux-gnu-objcopy -O binary $(kernel) $(kernel_crosvm_bin)
|
|
|
|
|
|
asm: kernel
|
|
|
$(objdump) -d $(kernel) | less
|
|
@@ -37,13 +46,13 @@ header: kernel
|
|
|
clean:
|
|
|
cargo clean
|
|
|
|
|
|
-qemu: $(kernel_bin) $(img)
|
|
|
+qemu: $(kernel_qemu_bin) $(img)
|
|
|
qemu-system-aarch64 \
|
|
|
$(QEMU_ARGS) \
|
|
|
-machine virt \
|
|
|
-cpu max \
|
|
|
-serial chardev:char0 \
|
|
|
- -kernel $(kernel_bin) \
|
|
|
+ -kernel $(kernel_qemu_bin) \
|
|
|
-global virtio-mmio.force-legacy=false \
|
|
|
-nic none \
|
|
|
-drive file=$(img),if=none,format=raw,id=x0 \
|
|
@@ -53,12 +62,12 @@ qemu: $(kernel_bin) $(img)
|
|
|
-chardev stdio,id=char0,mux=on \
|
|
|
-device virtconsole,chardev=char0
|
|
|
|
|
|
-qemu-pci: $(kernel_bin) $(img)
|
|
|
+qemu-pci: $(kernel_qemu_bin) $(img)
|
|
|
qemu-system-aarch64 \
|
|
|
-machine virt \
|
|
|
-cpu max \
|
|
|
-serial chardev:char0 \
|
|
|
- -kernel $(kernel_bin) \
|
|
|
+ -kernel $(kernel_qemu_bin) \
|
|
|
-nic none \
|
|
|
-drive file=$(img),if=none,format=raw,id=x0 \
|
|
|
-device virtio-blk-pci,drive=x0 \
|
|
@@ -67,6 +76,12 @@ qemu-pci: $(kernel_bin) $(img)
|
|
|
-chardev stdio,id=char0,mux=on \
|
|
|
-device virtconsole,chardev=char0
|
|
|
|
|
|
+crosvm: $(kernel_crosvm_bin) $(img)
|
|
|
+ adb shell 'mkdir -p /data/local/tmp/virt_raw'
|
|
|
+ adb push $(kernel_crosvm_bin) /data/local/tmp/virt_raw/aarch64_example
|
|
|
+ adb push $(img) /data/local/tmp/virt_raw/disk_img
|
|
|
+ adb shell "/data/local/tmp/crosvm --log-level=trace --extended-status run --disable-sandbox --serial=stdout,hardware=serial,num=1 --rwdisk=/data/local/tmp/virt_raw/disk_img --bios=/data/local/tmp/virt_raw/aarch64_example"
|
|
|
+
|
|
|
$(img):
|
|
|
dd if=/dev/zero of=$@ bs=512 count=32
|
|
|
|