installer: Pass partition sizes to parted in bytes.

This commit is contained in:
Michael Tremer
2014-07-27 17:59:02 +02:00
parent 5fca8d27d8
commit 802a123bcf

View File

@@ -359,6 +359,13 @@ static int hw_calculate_partition_table(struct hw_destination* dest) {
dest->size = dest->disk1->size; dest->size = dest->disk1->size;
} }
// As we add some extra space before the beginning of the first
// partition, we need to substract that here.
dest->size -= MB2BYTES(1);
// Add some more space for partition tables, etc.
dest->size -= MB2BYTES(1);
// Determine partition table // Determine partition table
dest->part_table = HW_PART_TABLE_MSDOS; dest->part_table = HW_PART_TABLE_MSDOS;
@@ -493,44 +500,44 @@ int hw_create_partitions(struct hw_destination* dest) {
else if (dest->part_table == HW_PART_TABLE_GPT) else if (dest->part_table == HW_PART_TABLE_GPT)
asprintf(&cmd, "%s mklabel gpt", cmd); asprintf(&cmd, "%s mklabel gpt", cmd);
unsigned long long part_start = 1 * 1024 * 1024; // 1MB unsigned long long part_start = MB2BYTES(1);
if (*dest->part_bootldr) { if (*dest->part_bootldr) {
asprintf(&cmd, "%s mkpart %s ext2 %lluMB %lluMB", cmd, asprintf(&cmd, "%s mkpart %s ext2 %lluB %lluB", cmd,
(dest->part_table == HW_PART_TABLE_GPT) ? "BOOTLDR" : "primary", (dest->part_table == HW_PART_TABLE_GPT) ? "BOOTLDR" : "primary",
BYTES2MB(part_start), BYTES2MB(part_start + dest->size_bootldr)); part_start, part_start + dest->size_bootldr - 1);
part_start += dest->size_bootldr; part_start += dest->size_bootldr;
} }
if (*dest->part_boot) { if (*dest->part_boot) {
asprintf(&cmd, "%s mkpart %s ext2 %lluMB %lluMB", cmd, asprintf(&cmd, "%s mkpart %s ext2 %lluB %lluB", cmd,
(dest->part_table == HW_PART_TABLE_GPT) ? "BOOT" : "primary", (dest->part_table == HW_PART_TABLE_GPT) ? "BOOT" : "primary",
BYTES2MB(part_start), BYTES2MB(part_start + dest->size_boot)); part_start, part_start + dest->size_boot - 1);
part_start += dest->size_boot; part_start += dest->size_boot;
} }
if (*dest->part_swap) { if (*dest->part_swap) {
asprintf(&cmd, "%s mkpart %s linux-swap %lluMB %lluMB", cmd, asprintf(&cmd, "%s mkpart %s linux-swap %lluB %lluB", cmd,
(dest->part_table == HW_PART_TABLE_GPT) ? "SWAP" : "primary", (dest->part_table == HW_PART_TABLE_GPT) ? "SWAP" : "primary",
BYTES2MB(part_start), BYTES2MB(part_start + dest->size_swap)); part_start, part_start + dest->size_swap - 1);
part_start += dest->size_swap; part_start += dest->size_swap;
} }
if (*dest->part_root) { if (*dest->part_root) {
asprintf(&cmd, "%s mkpart %s ext2 %lluMB %lluMB", cmd, asprintf(&cmd, "%s mkpart %s ext2 %lluB %lluB", cmd,
(dest->part_table == HW_PART_TABLE_GPT) ? "ROOT" : "primary", (dest->part_table == HW_PART_TABLE_GPT) ? "ROOT" : "primary",
BYTES2MB(part_start), BYTES2MB(part_start + dest->size_root)); part_start, part_start + dest->size_root - 1);
part_start += dest->size_root; part_start += dest->size_root;
} }
if (*dest->part_data) { if (*dest->part_data) {
asprintf(&cmd, "%s mkpart %s ext2 %lluMB %lluMB", cmd, asprintf(&cmd, "%s mkpart %s ext2 %lluB %lluB", cmd,
(dest->part_table == HW_PART_TABLE_GPT) ? "DATA" : "primary", (dest->part_table == HW_PART_TABLE_GPT) ? "DATA" : "primary",
BYTES2MB(part_start), BYTES2MB(part_start + dest->size_data)); part_start, part_start + dest->size_data - 1);
part_start += dest->size_data; part_start += dest->size_data;
} }