diff --git a/Makefile b/Makefile
index ab56e5bc70861e9826d6560135460b2ad6ed7b33..528dd6c795c1d7ba33856f6c8138c4c6ad91d4e7 100644
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,19 @@ help:
 	@echo "    clean_vmm    delete VMM"
 	@echo "    clean_guest  delete guest"
 
-guest:
+run_pv: guest_pv vmm
+	./vmm/vmm guest/guest.bin
+
+run_pv: guest_pv vmm
+	./vmm/vmm guest/guest.bin
+
+vmm:
+	$(MAKE) -C vmm OUT=vmm
+
+guest_phys:
+	$(MAKE) -C guest PV=0 OUT=guest.bin
+
+guest_pv:
 	$(MAKE) -C guest PV=1 OUT=guest.bin
 
-.PHONY: guest
\ No newline at end of file
+.PHONY: guest
diff --git a/vmm/Makefile b/vmm/Makefile
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3dd56c37c51cc53bb8e7f8f71122fe6b66b11006 100644
--- a/vmm/Makefile
+++ b/vmm/Makefile
@@ -0,0 +1,18 @@
+CC=gcc -std=gnu17 $(BAREMETAL_FLAGS) -Wall -Wextra -MMD -Ishared -I../.. -I..
+
+C_SRCS=$(shell find . -name "*.c")
+C_OBJS=$(C_SRCS:.c=.o)
+C_DEPS=$(C_OBJS:%.o=%.d)
+
+$(OUT): $(C_OBJS)
+	$(CC) $^ -o $@
+
+%.o: %.c
+	$(CC) -c $< -o $@
+
+clean:
+	rm -f $(C_OBJS) $(C_DEPS) *.o *.d $(OUT)
+
+.PHONY: clean
+
+-include $(C_DEPS)