installer: Allow to disable creation of swap space on command line

This commit is contained in:
Michael Tremer
2014-10-26 16:00:03 +01:00
parent 335c5bd1cd
commit a8fca24560
3 changed files with 27 additions and 13 deletions

View File

@@ -440,7 +440,7 @@ static int hw_device_has_p_suffix(const struct hw_destination* dest) {
return 0;
}
static int hw_calculate_partition_table(struct hw_destination* dest) {
static int hw_calculate_partition_table(struct hw_destination* dest, int disable_swap) {
char path[DEV_SIZE];
int part_idx = 1;
@@ -493,9 +493,14 @@ static int hw_calculate_partition_table(struct hw_destination* dest) {
}
dest->size_boot = hw_boot_size(dest);
dest->size_swap = hw_swap_size(dest);
dest->size_root = hw_root_size(dest);
// Should we use swap?
if (disable_swap)
dest->size_swap = 0;
else
dest->size_swap = hw_swap_size(dest);
// Determine the size of the data partition.
unsigned long long used_space = dest->size_bootldr + dest->size_boot
+ dest->size_swap + dest->size_root;
@@ -540,7 +545,7 @@ static int hw_calculate_partition_table(struct hw_destination* dest) {
return 0;
}
struct hw_destination* hw_make_destination(int part_type, struct hw_disk** disks) {
struct hw_destination* hw_make_destination(int part_type, struct hw_disk** disks, int disable_swap) {
struct hw_destination* dest = malloc(sizeof(*dest));
if (part_type == HW_PART_TYPE_NORMAL) {
@@ -560,7 +565,7 @@ struct hw_destination* hw_make_destination(int part_type, struct hw_disk** disks
// Is this a RAID device?
dest->is_raid = (part_type > HW_PART_TYPE_NORMAL);
int r = hw_calculate_partition_table(dest);
int r = hw_calculate_partition_table(dest, disable_swap);
if (r)
return NULL;

View File

@@ -111,7 +111,8 @@ unsigned int hw_count_disks(const struct hw_disk** disks);
struct hw_disk** hw_select_disks(struct hw_disk** disks, int* selection);
struct hw_disk** hw_select_first_disk(const struct hw_disk** disks);
struct hw_destination* hw_make_destination(int part_type, struct hw_disk** disks);
struct hw_destination* hw_make_destination(int part_type, struct hw_disk** disks,
int disable_swap);
unsigned long long hw_memory();

View File

@@ -231,12 +231,14 @@ static struct config {
int serial_console;
int require_networking;
int perform_download;
int disable_swap;
char download_url[STRING_SIZE];
} config = {
.unattended = 0,
.serial_console = 0,
.require_networking = 0,
.perform_download = 0,
.disable_swap = 0,
.download_url = DOWNLOAD_URL,
};
@@ -269,6 +271,10 @@ static void parse_command_line(struct config* c) {
else if (strcmp(token, "installer.unattended") == 0)
c->unattended = 1;
// disable swap
else if (strcmp(token, "installer.disable-swap") == 0)
c->disable_swap = 1;
// download url
else if (strcmp(key, "installer.download-url") == 0) {
strncpy(c->download_url, val, sizeof(c->download_url));
@@ -601,7 +607,7 @@ int main(int argc, char *argv[]) {
hw_free_disks(disks);
struct hw_destination* destination = hw_make_destination(part_type, selected_disks);
struct hw_destination* destination = hw_make_destination(part_type, selected_disks, config.disable_swap);
if (!destination) {
errorbox(_("Your harddisk is too small."));
@@ -617,19 +623,21 @@ int main(int argc, char *argv[]) {
fprintf(flog, "Memory : %lluMB\n", BYTES2MB(hw_memory()));
// Warn the user if there is not enough space to create a swap partition
if (!config.unattended && !*destination->part_swap) {
rc = newtWinChoice(title, _("OK"), _("Cancel"),
_("Your harddisk is very small, but you can continue without a swap partition."));
if (!config.unattended) {
if (!config.disable_swap && !*destination->part_swap) {
rc = newtWinChoice(title, _("OK"), _("Cancel"),
_("Your harddisk is very small, but you can continue without a swap partition."));
if (rc != 1)
goto EXIT;
if (rc != 1)
goto EXIT;
}
}
// Filesystem selection
if (!config.unattended) {
struct filesystems {
int fstype;
const char* description;
char* description;
} filesystems[] = {
{ HW_FS_EXT4, _("ext4 Filesystem") },
{ HW_FS_EXT4_WO_JOURNAL, _("ext4 Filesystem without journal") },
@@ -645,7 +653,7 @@ int main(int argc, char *argv[]) {
if (HW_FS_DEFAULT == filesystems[i].fstype)
fs_choice = i;
fs_names[i] = &filesystems[i].description;
fs_names[i] = filesystems[i].description;
}
rc = newtWinMenu(_("Filesystem Selection"), _("Please choose your filesystem:"),