{suffix!s}"
+"code> for unit {name!s}."
msgstr ""
-"Unknown systemd commands {command!s}
and "
-"{suffix!s}
for unit {name!s}."
-
-#: src/modules/mkinitfs/main.py:27
-msgid "Creating initramfs with mkinitfs."
-msgstr "Creating initramfs with mkinitfs."
-
-#: src/modules/mkinitfs/main.py:49
-msgid "Failed to run mkinitfs on the target"
-msgstr "Failed to run mkinitfs on the target"
#: src/modules/unpackfs/main.py:34
msgid "Filling up filesystems."
-msgstr "Filling up filesystems."
+msgstr ""
#: src/modules/unpackfs/main.py:254
msgid "rsync failed with error code {}."
-msgstr "rsync failed with error code {}."
+msgstr ""
#: src/modules/unpackfs/main.py:299
msgid "Unpacking image {}/{}, file {}/{}"
-msgstr "Unpacking image {}/{}, file {}/{}"
+msgstr ""
#: src/modules/unpackfs/main.py:314
msgid "Starting to unpack {}"
-msgstr "Starting to unpack {}"
+msgstr ""
#: src/modules/unpackfs/main.py:323 src/modules/unpackfs/main.py:467
msgid "Failed to unpack image \"{}\""
-msgstr "Failed to unpack image \"{}\""
+msgstr ""
#: src/modules/unpackfs/main.py:430
msgid "No mount point for root partition"
-msgstr "No mount point for root partition"
+msgstr ""
#: src/modules/unpackfs/main.py:431
msgid "globalstorage does not contain a \"rootMountPoint\" key."
-msgstr "globalstorage does not contain a \"rootMountPoint\" key."
+msgstr ""
#: src/modules/unpackfs/main.py:434
msgid "Bad mount point for root partition"
-msgstr "Bad mount point for root partition"
+msgstr ""
#: src/modules/unpackfs/main.py:435
msgid "rootMountPoint is \"{}\", which does not exist."
-msgstr "rootMountPoint is \"{}\", which does not exist."
+msgstr ""
#: src/modules/unpackfs/main.py:439 src/modules/unpackfs/main.py:455
#: src/modules/unpackfs/main.py:459 src/modules/unpackfs/main.py:465
#: src/modules/unpackfs/main.py:480
msgid "Bad unpackfs configuration"
-msgstr "Bad unpackfs configuration"
+msgstr ""
#: src/modules/unpackfs/main.py:440
msgid "There is no configuration information."
-msgstr "There is no configuration information."
+msgstr ""
#: src/modules/unpackfs/main.py:456
msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel"
-msgstr "The filesystem for \"{}\" ({}) is not supported by your current kernel"
+msgstr ""
#: src/modules/unpackfs/main.py:460
msgid "The source filesystem \"{}\" does not exist"
-msgstr "The source filesystem \"{}\" does not exist"
+msgstr ""
#: src/modules/unpackfs/main.py:466
msgid ""
"Failed to find unsquashfs, make sure you have the squashfs-tools package "
"installed."
msgstr ""
-"Failed to find unsquashfs, make sure you have the squashfs-tools package "
-"installed."
#: src/modules/unpackfs/main.py:481
msgid "The destination \"{}\" in the target system is not a directory"
-msgstr "The destination \"{}\" in the target system is not a directory"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:524
+msgid "Cannot write KDM configuration file"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:525
+msgid "KDM config file {!s} does not exist"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:586
+msgid "Cannot write LXDM configuration file"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:587
+msgid "LXDM config file {!s} does not exist"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:670
+msgid "Cannot write LightDM configuration file"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:671
+msgid "LightDM config file {!s} does not exist"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:745
+msgid "Cannot configure LightDM"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:746
+msgid "No LightDM greeter installed."
+msgstr ""
+
+#: src/modules/displaymanager/main.py:777
+msgid "Cannot write SLIM configuration file"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:778
+msgid "SLIM config file {!s} does not exist"
+msgstr ""
+
+#: src/modules/displaymanager/main.py:991
+msgid "No display managers selected for the displaymanager module."
+msgstr ""
+
+#: src/modules/displaymanager/main.py:992
+msgid ""
+"The displaymanagers list is empty or undefined in both globalstorage and "
+"displaymanager.conf."
+msgstr ""
+
+#: src/modules/displaymanager/main.py:1074
+msgid "Display manager configuration was incomplete"
+msgstr ""
+
+#: src/modules/initcpiocfg/main.py:28
+msgid "Configuring mkinitcpio."
+msgstr ""
+
+#: src/modules/initcpiocfg/main.py:240 src/modules/initramfscfg/main.py:90
+#: src/modules/openrcdmcryptcfg/main.py:77 src/modules/fstab/main.py:368
+#: src/modules/localecfg/main.py:141 src/modules/networkcfg/main.py:106
+msgid "No root mount point is given for {!s}
to use."
+msgstr ""
+
+#: src/modules/rawfs/main.py:26
+msgid "Installing data."
+msgstr ""
+
+#: src/modules/services-openrc/main.py:29
+msgid "Configure OpenRC services"
+msgstr ""
+
+#: src/modules/services-openrc/main.py:57
+msgid "Cannot add service {name!s} to run-level {level!s}."
+msgstr ""
+
+#: src/modules/services-openrc/main.py:59
+msgid "Cannot remove service {name!s} from run-level {level!s}."
+msgstr ""
+
+#: src/modules/services-openrc/main.py:61
+msgid ""
+"Unknown service-action {arg!s}
for service {name!s} in run-"
+"level {level!s}."
+msgstr ""
+
+#: src/modules/services-openrc/main.py:94
+msgid ""
+"rc-update {arg!s}
call in chroot returned error code {num!s}."
+msgstr ""
+
+#: src/modules/services-openrc/main.py:101
+msgid "Target runlevel does not exist"
+msgstr ""
+
+#: src/modules/services-openrc/main.py:102
+msgid ""
+"The path for runlevel {level!s} is {path!s}
, which does not "
+"exist."
+msgstr ""
+
+#: src/modules/services-openrc/main.py:110
+msgid "Target service does not exist"
+msgstr ""
+
+#: src/modules/services-openrc/main.py:111
+msgid ""
+"The path for service {name!s} is {path!s}
, which does not exist."
+msgstr ""
+
+#: src/modules/plymouthcfg/main.py:27
+msgid "Configure Plymouth theme"
+msgstr ""
+
+#: src/modules/packages/main.py:54 src/modules/packages/main.py:65
+#: src/modules/packages/main.py:75
+msgid "Install packages."
+msgstr ""
+
+#: src/modules/packages/main.py:63
+#, python-format
+msgid "Processing packages (%(count)d / %(total)d)"
+msgstr ""
+
+#: src/modules/packages/main.py:68
+#, python-format
+msgid "Installing one package."
+msgid_plural "Installing %(num)d packages."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/modules/packages/main.py:71
+#, python-format
+msgid "Removing one package."
+msgid_plural "Removing %(num)d packages."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/modules/packages/main.py:725 src/modules/packages/main.py:737
+#: src/modules/packages/main.py:765
+msgid "Package Manager error"
+msgstr ""
+
+#: src/modules/packages/main.py:726
+msgid ""
+"The package manager could not prepare updates. The command {!s}
"
+"returned error code {!s}."
+msgstr ""
+
+#: src/modules/packages/main.py:738
+msgid ""
+"The package manager could not update the system. The command {!s}
"
+"returned error code {!s}."
+msgstr ""
+
+#: src/modules/packages/main.py:766
+msgid ""
+"The package manager could not make changes to the installed system. The "
+"command {!s}
returned error code {!s}."
+msgstr ""
+
+#: src/modules/bootloader/main.py:43
+msgid "Install bootloader."
+msgstr ""
+
+#: src/modules/bootloader/main.py:614
+msgid "Failed to install grub, no partitions defined in global storage"
+msgstr ""
+
+#: src/modules/bootloader/main.py:782
+msgid "Bootloader installation error"
+msgstr ""
+
+#: src/modules/bootloader/main.py:783
+msgid ""
+"The bootloader could not be installed. The installation command {!s}"
+"pre> returned error code {!s}."
+msgstr ""
+
+#: src/modules/hwclock/main.py:26
+msgid "Setting hardware clock."
+msgstr ""
+
+#: src/modules/mkinitfs/main.py:27
+msgid "Creating initramfs with mkinitfs."
+msgstr ""
+
+#: src/modules/mkinitfs/main.py:49
+msgid "Failed to run mkinitfs on the target"
+msgstr ""
+
+#: src/modules/mkinitfs/main.py:50 src/modules/dracut/main.py:50
+msgid "The exit code was {}"
+msgstr ""
+
+#: src/modules/dracut/main.py:27
+msgid "Creating initramfs with dracut."
+msgstr ""
+
+#: src/modules/dracut/main.py:49
+msgid "Failed to run dracut on the target"
+msgstr ""
+
+#: src/modules/initramfscfg/main.py:32
+msgid "Configuring initramfs."
+msgstr ""
+
+#: src/modules/openrcdmcryptcfg/main.py:26
+msgid "Configuring OpenRC dmcrypt service."
+msgstr ""
+
+#: src/modules/fstab/main.py:29
+msgid "Writing fstab."
+msgstr ""
+
+#: src/modules/fstab/main.py:395
+msgid "No {!s}
configuration is given for {!s}
to use."
+msgstr ""
+
+#: src/modules/dummypython/main.py:35
+msgid "Dummy python job."
+msgstr ""
+
+#: src/modules/dummypython/main.py:37 src/modules/dummypython/main.py:93
+#: src/modules/dummypython/main.py:94
+msgid "Dummy python step {}"
+msgstr ""
+
+#: src/modules/localecfg/main.py:31
+msgid "Configuring locales."
+msgstr ""
+
+#: src/modules/networkcfg/main.py:29
+msgid "Saving network configuration."
+msgstr ""
diff --git a/lang/python/ko/LC_MESSAGES/python.po b/lang/python/ko/LC_MESSAGES/python.po
index d5bb1fa76..e8e751c9c 100644
--- a/lang/python/ko/LC_MESSAGES/python.po
+++ b/lang/python/ko/LC_MESSAGES/python.po
@@ -5,7 +5,7 @@
#
# Translators:
# Ji-Hyeon Gim , 2018
-# Junghee Lee , 2022
+# JungHee Lee , 2022
#
#, fuzzy
msgid ""
@@ -14,7 +14,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-21 17:21+0100\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
-"Last-Translator: Junghee Lee , 2022\n"
+"Last-Translator: JungHee Lee , 2022\n"
"Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -58,7 +58,7 @@ msgstr "부트로더 설치."
#: src/modules/bootloader/main.py:614
msgid "Failed to install grub, no partitions defined in global storage"
-msgstr "grub을 설치하지 못했습니다. 전역 저장소에 파티션이 정의되어 있지 않습니다"
+msgstr "grub을 설치하지 못했습니다. 파티션 없음이 전역 저장소에 정의되었습니다"
#: src/modules/bootloader/main.py:782
msgid "Bootloader installation error"
diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py
old mode 100644
new mode 100755
index 9bc427b13..1cfb5e660
--- a/src/modules/fstab/main.py
+++ b/src/modules/fstab/main.py
@@ -158,11 +158,23 @@ class FstabGenerator(object):
if not mapper_name or not luks_uuid:
return None
+ password = "/crypto_keyfile.bin"
+ crypttab_options = self.crypttab_options
+
+ # Set crypttab password for partition to none and remove crypttab options
+ # on root partition when /boot is unencrypted
+ if partition["mountPoint"] == "/":
+ if any([p["mountPoint"] == "/boot"
+ and "luksMapperName" not in p
+ for p in self.partitions]):
+ password = "none"
+ crypttab_options = ""
+
return dict(
name=mapper_name,
device="UUID=" + luks_uuid,
- password="/crypto_keyfile.bin",
- options=self.crypttab_options,
+ password=password,
+ options=crypttab_options,
)
def print_crypttab_line(self, dct, file=None):
@@ -220,7 +232,7 @@ class FstabGenerator(object):
# Some "fs" names need special handling in /etc/fstab, so remap them.
filesystem = partition["fs"].lower()
filesystem = FS_MAP.get(filesystem, filesystem)
- has_luks = "luksMapperName" in partition
+ luks_mapper_name = partition.get("luksMapperName", None)
mount_point = partition["mountPoint"]
disk_name = disk_name_for_partition(partition)
is_ssd = disk_name in self.ssd_disks
@@ -263,13 +275,19 @@ class FstabGenerator(object):
if filesystem == "btrfs" and partition.get("subvol",None):
options = "subvol={},".format(partition["subvol"]) + options
- if has_luks:
- device = "/dev/mapper/" + partition["luksMapperName"]
+ device = None
+ if luks_mapper_name:
+ device = "/dev/mapper/" + luks_mapper_name
elif partition["uuid"]:
device = "UUID=" + partition["uuid"]
else:
device = partition["device"]
+ if not device:
+ # TODO: we get here when the user mounted a previously encrypted partition
+ # This should be catched early in the process
+ return None
+
return dict(device=device,
mount_point=mount_point,
fs=filesystem,
diff --git a/src/modules/locale/images/timezone_5.5.png b/src/modules/locale/images/timezone_5.5.png
index 78c972fab..172ad8127 100644
Binary files a/src/modules/locale/images/timezone_5.5.png and b/src/modules/locale/images/timezone_5.5.png differ
diff --git a/src/modules/locale/images/timezone_8.0.png b/src/modules/locale/images/timezone_8.0.png
index ee5095a26..6db98f18f 100644
Binary files a/src/modules/locale/images/timezone_8.0.png and b/src/modules/locale/images/timezone_8.0.png differ
diff --git a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp
old mode 100644
new mode 100755
index 137cb750d..d4a718acf
--- a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp
+++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp
@@ -172,6 +172,22 @@ hasUnencryptedSeparateBoot()
return false;
}
+static bool
+hasEncryptedRoot()
+{
+ const QVariantList partitions = ::partitions();
+ for ( const QVariant& partition : partitions )
+ {
+ QVariantMap partitionMap = partition.toMap();
+ QString mountPoint = partitionMap.value( QStringLiteral( "mountPoint" ) ).toString();
+ if ( QDir::cleanPath( mountPoint ) == QStringLiteral( "/" ) )
+ {
+ return partitionMap.contains( QStringLiteral( "luksMapperName" ) );
+ }
+ }
+ return false;
+}
+
Calamares::JobResult
LuksBootKeyFileJob::exec()
{
@@ -218,7 +234,8 @@ LuksBootKeyFileJob::exec()
}
// /boot partition is not encrypted, keyfile must not be used
- if ( hasUnencryptedSeparateBoot() )
+ // But only if root partition is not encrypted
+ if ( hasUnencryptedSeparateBoot() && !hasEncryptedRoot() )
{
cDebug() << Logger::SubEntry << "/boot partition is not encrypted, skipping keyfile creation.";
return Calamares::JobResult::ok();
@@ -241,6 +258,10 @@ LuksBootKeyFileJob::exec()
for ( const auto& d : s.devices )
{
+ // Skip setupLuks for root partition if system has an unencrypted /boot
+ if ( d.isRoot && hasUnencryptedSeparateBoot() )
+ continue;
+
if ( !setupLuks( d ) )
return Calamares::JobResult::error(
tr( "Encrypted rootfs setup error" ),