vbox_x86: have separate system and data disks

The boot, recovery, and system partitions are now mounted from /dev/sda, while
userdata and cache are mounted from /dev/sdb.  To this end, we have two new
build targets, in addition to android_disk_vdi:

    make android_system_disk_vdi will build /dev/sda
    make android_user_disk_vdi will build /dev/sdb

android_disk_vdi will build both disks.

Change-Id: I7389194429d42eca4800c5bb41d32099b7eeafa1
Signed-off-by: Iliyan Malchev <malchev@google.com>
diff --git a/CleanSpec.mk b/CleanSpec.mk
index b84e1b6..27ccfc2 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -44,6 +44,8 @@
 #$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
 #$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
 
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/android_disk.*)
+
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
diff --git a/android_img_layout.conf b/android_img_data_layout.conf
similarity index 90%
rename from android_img_layout.conf
rename to android_img_data_layout.conf
index 0b81d83..a02d374 100644
--- a/android_img_layout.conf
+++ b/android_img_data_layout.conf
@@ -28,9 +28,10 @@
         }
 
         # /dev/sdX3
-        inst_boot {
+        boot {
             active y
             type linux
+            len 8064
         }
 
         # /dev/sdX4
@@ -43,11 +44,6 @@
         }
 
         # /dev/sdX6
-        inst_system {
-            type linux
-        }
-
-        # /dev/sdX7
         inst_data {
             type linux
         }
diff --git a/android_img_layout.conf b/android_img_system_layout.conf
similarity index 84%
copy from android_img_layout.conf
copy to android_img_system_layout.conf
index 0b81d83..4030a60 100644
--- a/android_img_layout.conf
+++ b/android_img_system_layout.conf
@@ -46,17 +46,5 @@
         inst_system {
             type linux
         }
-
-        # /dev/sdX7
-        inst_data {
-            type linux
-        }
-
-        # /dev/sdX7
-        cache {
-            type linux
-            len 8064
-        }
-
     }
 }
diff --git a/config.mk b/config.mk
index 1a697e6..0f72542 100644
--- a/config.mk
+++ b/config.mk
@@ -179,8 +179,8 @@
 installer_layout := $(diskinstaller_root)/installer_img_layout.conf
 edit_mbr := $(HOST_OUT_EXECUTABLES)/editdisklbl
 
-INSTALLED_DISKINSTALLERIMAGE_TARGET := $(PRODUCT_OUT)/installer.img
-$(INSTALLED_DISKINSTALLERIMAGE_TARGET): \
+INSTALLED_DISK_INSTALLER_IMAGE_TARGET := $(PRODUCT_OUT)/installer.img
+$(INSTALLED_DISK_INSTALLER_IMAGE_TARGET): \
 					$(installer_tmp_img) \
 					$(installer_data_img) \
 					$(grub_bin) \
@@ -194,61 +194,88 @@
 		inst_data=$(installer_data_img)
 	@echo "Done with bootable installer image -[ $@ ]-"
 
-# Ditto for the android_disk image
-INSTALLED_ANDROIDIMAGE_TARGET := $(PRODUCT_OUT)/android_disk.img
-android_layout := $(diskinstaller_root)/android_img_layout.conf
-$(INSTALLED_ANDROIDIMAGE_TARGET): \
+#
+# Ditto for the android_system_disk and android_data_disk images
+#
+
+INSTALLED_ANDROID_IMAGE_SYSTEM_TARGET := $(PRODUCT_OUT)/android_system_disk.img
+android_system_layout := $(diskinstaller_root)/android_img_system_layout.conf
+
+INSTALLED_ANDROID_IMAGE_DATA_TARGET := $(PRODUCT_OUT)/android_data_disk.img
+android_data_layout := $(diskinstaller_root)/android_img_data_layout.conf
+
+$(INSTALLED_ANDROID_IMAGE_SYSTEM_TARGET): \
 					$(INSTALLED_SYSTEMIMAGE) \
-					$(INSTALLED_USERDATAIMAGE_TARGET) \
 					$(INSTALLED_BOOTIMAGE_TARGET) \
 					$(grub_bin) \
 					$(edit_mbr) \
-					$(android_layout)
-	@echo "Creating bootable android disk image: $@"
+					$(android_system_layout)
+	@echo "Creating bootable android system-disk image: $@"
 	@rm -f $@
 	$(hide) cat $(grub_bin) > $@
-	$(hide) $(edit_mbr) -l $(android_layout) -i $@ \
+	$(hide) $(edit_mbr) -l $(android_system_layout) -i $@ \
 		inst_boot=$(INSTALLED_BOOTIMAGE_TARGET) \
-		inst_system=$(INSTALLED_SYSTEMIMAGE) \
+		inst_system=$(INSTALLED_SYSTEMIMAGE)
+	@echo "Done with bootable android system-disk image -[ $@ ]-"
+
+$(INSTALLED_ANDROID_IMAGE_DATA_TARGET): \
+					$(INSTALLED_USERDATAIMAGE_TARGET) \
+					$(grub_bin) \
+					$(edit_mbr) \
+					$(android_data_layout)
+	@echo "Creating bootable android data-disk image: $@"
+	@rm -f $@
+	$(hide) cat $(grub_bin) > $@
+	$(hide) $(edit_mbr) -l $(android_data_layout) -i $@ \
 		inst_data=$(INSTALLED_USERDATAIMAGE_TARGET)
-	@echo "Done with bootable android disk image -[ $@ ]-"
+	@echo "Done with bootable android data-disk image -[ $@ ]-"
+
 
 
 ######################################################################
 # now convert the installer_img (disk image) to a VirtualBox image
 
-INSTALLED_VBOXINSTALLERIMAGE_TARGET := $(PRODUCT_OUT)/installer.vdi
+INSTALLED_VBOX_INSTALLER_IMAGE_TARGET := $(PRODUCT_OUT)/installer.vdi
 virtual_box_manager := VBoxManage
-virtual_box_manager_options := convertfromraw
+# hrd-code the UUID so we don't have to release the disk manually in the VirtualBox manager.
+virtual_box_manager_options := convertfromraw --format VDI
 
-$(INSTALLED_VBOXINSTALLERIMAGE_TARGET): $(INSTALLED_DISKINSTALLERIMAGE_TARGET)
-	@rm -f $(INSTALLED_VBOXINSTALLERIMAGE_TARGET)
-	$(hide) $(virtual_box_manager) $(virtual_box_manager_options) $(INSTALLED_DISKINSTALLERIMAGE_TARGET) $(INSTALLED_VBOXINSTALLERIMAGE_TARGET)
+$(INSTALLED_VBOX_INSTALLER_IMAGE_TARGET): $(INSTALLED_DISK_INSTALLER_IMAGE_TARGET)
+	@rm -f $(INSTALLED_VBOX_INSTALLER_IMAGE_TARGET)
+	$(hide) $(virtual_box_manager) $(virtual_box_manager_options) $(INSTALLED_DISK_INSTALLER_IMAGE_TARGET) $(INSTALLED_VBOX_INSTALLER_IMAGE_TARGET)
 	@echo "Done with VirtualBox bootable installer image -[ $@ ]-"
 
-# Ditto for the android_disk image
-INSTALLED_VBOXDISKIMAGE_TARGET := $(PRODUCT_OUT)/android_disk.vdi
-$(INSTALLED_VBOXDISKIMAGE_TARGET): $(INSTALLED_ANDROIDIMAGE_TARGET)
-	@rm -f $(INSTALLED_VBOXDISKIMAGE_TARGET)
-	$(hide) $(virtual_box_manager) $(virtual_box_manager_options) $(INSTALLED_ANDROIDIMAGE_TARGET) $(INSTALLED_VBOXDISKIMAGE_TARGET)
-	@echo "Done with VirtualBox bootable disk image -[ $@ ]-"
+#
+# Ditto for the android_system_disk and android_user_disk images
+#
 
+INSTALLED_VBOX_SYSTEM_DISK_IMAGE_TARGET := $(PRODUCT_OUT)/android_system_disk.vdi
+$(INSTALLED_VBOX_SYSTEM_DISK_IMAGE_TARGET): $(INSTALLED_ANDROID_IMAGE_SYSTEM_TARGET)
+	@rm -f $@
+	$(hide) $(virtual_box_manager) $(virtual_box_manager_options) $^ $@
+	@echo "Done with VirtualBox bootable system-disk image -[ $@ ]-"
+
+INSTALLED_VBOX_DATA_DISK_IMAGE_TARGET := $(PRODUCT_OUT)/android_data_disk.vdi
+$(INSTALLED_VBOX_DATA_DISK_IMAGE_TARGET): $(INSTALLED_ANDROID_IMAGE_DATA_TARGET)
+	@rm -f $@
+	$(hide) $(virtual_box_manager) $(virtual_box_manager_options) $^ $@
+	@echo "Done with VirtualBox bootable data-disk image -[ $@ ]-"
 
 .PHONY: installer_img
-installer_img: $(INSTALLED_DISKINSTALLERIMAGE_TARGET)
+installer_img: $(INSTALLED_DISK_INSTALLER_IMAGE_TARGET)
 
 .PHONY: installer_vdi
-installer_vdi: $(INSTALLED_VBOXINSTALLERIMAGE_TARGET)
+installer_vdi: $(INSTALLED_VBOX_INSTALLER_IMAGE_TARGET)
 
-.PHONY: android_disk_img
-android_disk_img: $(INSTALLED_ANDROIDIMAGE_TARGET)
-
-.PHONY: android_disk_vdi
-android_disk_vdi: $(INSTALLED_VBOXDISKIMAGE_TARGET)
+.PHONY: android_disk_vdi android_system_disk_vdi android_data_disk_vdi
+android_system_disk_vdi: $(INSTALLED_VBOX_SYSTEM_DISK_IMAGE_TARGET)
+android_data_disk_vdi: $(INSTALLED_VBOX_DATA_DISK_IMAGE_TARGET)
+android_disk_vdi: android_system_disk_vdi android_data_disk_vdi
 
 
 else  # ! TARGET_USE_DISKINSTALLER
-INSTALLED_DISKINSTALLERIMAGE_TARGET :=
-INSTALLED_VBOXINSTALLERIMAGE_TARGET :=
+INSTALLED_DISK_INSTALLER_IMAGE_TARGET :=
+INSTALLED_VBOX_SYSTEM_DISK_IMAGE_TARGET :=
+INSTALLED_VBOX_DATA_DISK_IMAGE_TARGET :=
 endif
 endif # TARGET_ARCH == x86