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