summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIliyan Malchev <malchev@google.com>2012-04-05 13:49:45 -0700
committerIliyan Malchev <malchev@google.com>2012-04-05 17:54:44 -0700
commite05d6d16852cbf8b568d2f42000702c7f0e4ffab (patch)
treeaa24eb9810b5058fb5278e127f850fa07677ef1c
parentf4190db208d376fc6dbf3cf2e3506d00eb27e24e (diff)
downloaddiskinstaller-e05d6d16852cbf8b568d2f42000702c7f0e4ffab.tar.gz
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>
-rw-r--r--CleanSpec.mk2
-rw-r--r--android_img_data_layout.conf (renamed from android_img_layout.conf)8
-rw-r--r--android_img_system_layout.conf50
-rw-r--r--config.mk91
4 files changed, 113 insertions, 38 deletions
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
index 0b81d83..a02d374 100644
--- a/android_img_layout.conf
+++ b/android_img_data_layout.conf
@@ -28,9 +28,10 @@ device {
}
# /dev/sdX3
- inst_boot {
+ boot {
active y
type linux
+ len 8064
}
# /dev/sdX4
@@ -43,11 +44,6 @@ device {
}
# /dev/sdX6
- inst_system {
- type linux
- }
-
- # /dev/sdX7
inst_data {
type linux
}
diff --git a/android_img_system_layout.conf b/android_img_system_layout.conf
new file mode 100644
index 0000000..4030a60
--- /dev/null
+++ b/android_img_system_layout.conf
@@ -0,0 +1,50 @@
+device {
+ scheme mbr
+
+ # bytes in a disk "block", must be a power of 2!
+ sector_size 512
+
+ # What LBA should the partitions start at?
+ start_lba 2048
+
+ # Autodetect disk size if == 0
+ num_lba 800000
+
+ partitions {
+ # /dev/sdX1
+ sysloader {
+ active y
+ type linux
+ # 8 cyls in length... about 8M
+ len 8064
+ }
+
+ # /dev/sdX2
+ recovery {
+ active y
+ type linux
+ # 8 cyls in length... about 8M
+ len 8064
+ }
+
+ # /dev/sdX3
+ inst_boot {
+ active y
+ type linux
+ }
+
+ # /dev/sdX4
+ # (extended partion begins)
+
+ # /dev/sdX5
+ third_party {
+ type linux
+ len 8064
+ }
+
+ # /dev/sdX6
+ inst_system {
+ type linux
+ }
+ }
+}
diff --git a/config.mk b/config.mk
index 1a697e6..0f72542 100644
--- a/config.mk
+++ b/config.mk
@@ -179,8 +179,8 @@ grub_bin := $(PRODUCT_OUT)/grub/grub.bin
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 @@ $(INSTALLED_DISKINSTALLERIMAGE_TARGET): \
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)
-
-.PHONY: android_disk_img
-android_disk_img: $(INSTALLED_ANDROIDIMAGE_TARGET)
+installer_vdi: $(INSTALLED_VBOX_INSTALLER_IMAGE_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