diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index b8d81d913..d47021bed 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -100,13 +100,13 @@ swapSuggestion( const qint64 availableSpaceB ) void doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPassphrase ) { + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + bool isEfi = false; if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) isEfi = true; - QString defaultFsType = Calamares::JobQueue::instance()-> - globalStorage()-> - value( "defaultFileSystemType" ).toString(); + QString defaultFsType = gs->value( "defaultFileSystemType" ).toString(); if ( FileSystem::typeForName( defaultFsType ) == FileSystem::Unknown ) defaultFsType = "ext4"; @@ -144,9 +144,7 @@ doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPass PartitionTable::FlagEsp ); PartitionInfo::setFormat( efiPartition, true ); - PartitionInfo::setMountPoint( efiPartition, Calamares::JobQueue::instance() - ->globalStorage() - ->value( "efiSystemPartition" ) + PartitionInfo::setMountPoint( efiPartition, gs->value( "efiSystemPartition" ) .toString() ); core->createPartition( dev, efiPartition, PartitionTable::FlagEsp | PartitionTable::FlagBoot ); firstFreeSector = lastSector + 1; @@ -156,17 +154,21 @@ doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPass core->createPartitionTable( dev, PartitionTable::msdos ); } + const bool mayCreateSwap = !gs->value( "neverCreateSwap" ).toBool(); bool shouldCreateSwap = false; - qint64 availableSpaceB = ( dev->totalLogical() - firstFreeSector ) * dev->logicalSize(); - qint64 suggestedSwapSizeB = swapSuggestion( availableSpaceB ); - qint64 requiredSpaceB = - ( Calamares::JobQueue::instance()-> - globalStorage()-> - value( "requiredStorageGB" ).toDouble() + 0.1 + 2.0 ) GiB + - suggestedSwapSizeB; - - // If there is enough room for ESP + root + swap, create swap, otherwise don't. - shouldCreateSwap = availableSpaceB > requiredSpaceB; + qint64 suggestedSwapSizeB = 0; + + if ( mayCreateSwap ) + { + qint64 availableSpaceB = ( dev->totalLogical() - firstFreeSector ) * dev->logicalSize(); + suggestedSwapSizeB = swapSuggestion( availableSpaceB ); + qint64 requiredSpaceB = + ( gs->value( "requiredStorageGB" ).toDouble() + 0.1 + 2.0 ) GiB + + suggestedSwapSizeB; + + // If there is enough room for ESP + root + swap, create swap, otherwise don't. + shouldCreateSwap = availableSpaceB > requiredSpaceB; + } qint64 lastSectorForRoot = dev->totalLogical() - 1; //last sector of the device if ( shouldCreateSwap ) diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index 5fa51e5f4..44bed5e14 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -503,6 +503,16 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap ) gs->insert( "ensureSuspendToDisk", true ); } + if ( configurationMap.contains( "neverCreateSwap" ) && + configurationMap.value( "neverCreateSwap" ).type() == QVariant::Bool ) + { + gs->insert( "neverCreateSwap", configurationMap.value( "neverCreateSwap" ).toBool() ); + } + else + { + gs->insert( "neverCreateSwap", false ); + } + if ( configurationMap.contains( "drawNestedPartitions" ) && configurationMap.value( "drawNestedPartitions" ).type() == QVariant::Bool ) { diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index 7420aaf54..88d7fee98 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -3,9 +3,16 @@ # etc.) use just /boot. efiSystemPartition: "/boot/efi" -# Make sure an autogenerated swap partition is big enough for hibernation +# Make sure an autogenerated swap partition is big enough for hibernation in +# automated partitioning modes. +# Default is true. ensureSuspendToDisk: true +# Never create swap partitions in automated partitioning modes. +# If this is true, ensureSuspendToDisk is ignored. +# Default is false. +neverCreateSwap: false + # Correctly draw nested (e.g. logical) partitions as such. drawNestedPartitions: false