mirror of
https://github.com/systemd/systemd
synced 2025-12-30 04:44:45 +01:00
Compare commits
No commits in common. "bf1868c8d7abaadaad4df00aafb9c183c8d6480b" and "f1c86dd9abec1707b4a024f8bb6ade9630d9b5a9" have entirely different histories.
bf1868c8d7
...
f1c86dd9ab
@ -94,7 +94,7 @@
|
|||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><varname>powervm</varname></entry>
|
<entry><varname>powervm</varname></entry>
|
||||||
<entry>IBM PowerVM hypervisor — comes as firmware with some IBM POWER servers</entry>
|
<entry>IBM PowerVM hypervisor - comes as firmware with some IBM POWER servers</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
|
|||||||
17
po/be.po
17
po/be.po
@ -4,13 +4,13 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Viktar Vaŭčkievič <victorenator@gmail.com>, 2015, 2016.
|
# Viktar Vaŭčkievič <victorenator@gmail.com>, 2015, 2016.
|
||||||
# Zmicer Turok <nashtlumach@gmail.com>, 2020, 2021.
|
# Zmicer Turok <nashtlumach@gmail.com>, 2020.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: systemd master\n"
|
"Project-Id-Version: systemd master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
||||||
"PO-Revision-Date: 2021-01-10 18:36+0000\n"
|
"PO-Revision-Date: 2020-10-16 06:30+0000\n"
|
||||||
"Last-Translator: Zmicer Turok <nashtlumach@gmail.com>\n"
|
"Last-Translator: Zmicer Turok <nashtlumach@gmail.com>\n"
|
||||||
"Language-Team: Belarusian <https://translate.fedoraproject.org/projects/"
|
"Language-Team: Belarusian <https://translate.fedoraproject.org/projects/"
|
||||||
"systemd/master/be/>\n"
|
"systemd/master/be/>\n"
|
||||||
@ -20,7 +20,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 4.4\n"
|
"X-Generator: Weblate 4.2.2\n"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:22
|
#: src/core/org.freedesktop.systemd1.policy.in:22
|
||||||
msgid "Send passphrase back to system"
|
msgid "Send passphrase back to system"
|
||||||
@ -308,17 +308,22 @@ msgstr ""
|
|||||||
"ноўтбука, патрабуецца аўтэнтыфікацыя."
|
"ноўтбука, патрабуецца аўтэнтыфікацыя."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:117
|
#: src/login/org.freedesktop.login1.policy:117
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Allow applications to inhibit system handling of the power key"
|
||||||
msgid "Allow applications to inhibit system handling of the reboot key"
|
msgid "Allow applications to inhibit system handling of the reboot key"
|
||||||
msgstr ""
|
msgstr "Дазволіць праграмам перашкаджаць сістэме апрацоўваць кнопку выключэння"
|
||||||
"Дазволіць праграмам перашкаджаць сістэме апрацоўваць кнопку перазапуску"
|
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:118
|
#: src/login/org.freedesktop.login1.policy:118
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "Authentication is required for an application to inhibit system handling "
|
||||||
|
#| "of the power key."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the reboot key."
|
"the reboot key."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Для таго, каб дазволіць праграмам перашкаджаць сістэме апрацоўваць кнопку "
|
"Для таго, каб дазволіць праграмам перашкаджаць сістэме апрацоўваць кнопку "
|
||||||
"перазапуску, патрабуецца аўтэнтыфікацыя."
|
"выключэння, патрабуецца аўтэнтыфікацыя."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:128
|
#: src/login/org.freedesktop.login1.policy:128
|
||||||
msgid "Allow non-logged-in user to run programs"
|
msgid "Allow non-logged-in user to run programs"
|
||||||
|
|||||||
16
po/fr.po
16
po/fr.po
@ -10,8 +10,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: systemd\n"
|
"Project-Id-Version: systemd\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
||||||
"PO-Revision-Date: 2021-01-14 06:37+0000\n"
|
"PO-Revision-Date: 2021-01-09 10:48+0000\n"
|
||||||
"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
|
"Last-Translator: Arnaud T. <listes.00@gmail.com>\n"
|
||||||
"Language-Team: French <https://translate.fedoraproject.org/projects/systemd/"
|
"Language-Team: French <https://translate.fedoraproject.org/projects/systemd/"
|
||||||
"master/fr/>\n"
|
"master/fr/>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
@ -19,7 +19,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 4.4.1\n"
|
"X-Generator: Weblate 4.4\n"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:22
|
#: src/core/org.freedesktop.systemd1.policy.in:22
|
||||||
msgid "Send passphrase back to system"
|
msgid "Send passphrase back to system"
|
||||||
@ -324,18 +324,24 @@ msgstr ""
|
|||||||
"gestion par le système du rabat de l’écran."
|
"gestion par le système du rabat de l’écran."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:117
|
#: src/login/org.freedesktop.login1.policy:117
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Allow applications to inhibit system handling of the power key"
|
||||||
msgid "Allow applications to inhibit system handling of the reboot key"
|
msgid "Allow applications to inhibit system handling of the reboot key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Permet aux applications d’empêcher la gestion du bouton de redémarrage du "
|
"Permet aux applications d’empêcher la gestion du bouton d’alimentation du "
|
||||||
"système"
|
"système"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:118
|
#: src/login/org.freedesktop.login1.policy:118
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "Authentication is required for an application to inhibit system handling "
|
||||||
|
#| "of the power key."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the reboot key."
|
"the reboot key."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour permettre à une application d’empêcher la "
|
"Authentification requise pour permettre à une application d’empêcher la "
|
||||||
"gestion du bouton de redémarrage du système."
|
"gestion du bouton d’alimentation du système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:128
|
#: src/login/org.freedesktop.login1.policy:128
|
||||||
msgid "Allow non-logged-in user to run programs"
|
msgid "Allow non-logged-in user to run programs"
|
||||||
|
|||||||
16
po/ro.po
16
po/ro.po
@ -3,13 +3,13 @@
|
|||||||
# Romanian translation for systemd.
|
# Romanian translation for systemd.
|
||||||
# va511e <va511e@yahoo.com>, 2015.
|
# va511e <va511e@yahoo.com>, 2015.
|
||||||
# Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>, 2015, 2017.
|
# Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>, 2015, 2017.
|
||||||
# Vlad <milovlad@outlook.com>, 2020, 2021.
|
# Vlad <milovlad@outlook.com>, 2020.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: systemd master\n"
|
"Project-Id-Version: systemd master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
||||||
"PO-Revision-Date: 2021-01-12 17:36+0000\n"
|
"PO-Revision-Date: 2020-12-26 08:36+0000\n"
|
||||||
"Last-Translator: Vlad <milovlad@outlook.com>\n"
|
"Last-Translator: Vlad <milovlad@outlook.com>\n"
|
||||||
"Language-Team: Romanian <https://translate.fedoraproject.org/projects/"
|
"Language-Team: Romanian <https://translate.fedoraproject.org/projects/"
|
||||||
"systemd/master/ro/>\n"
|
"systemd/master/ro/>\n"
|
||||||
@ -19,7 +19,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
||||||
"20)) ? 1 : 2;\n"
|
"20)) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 4.4\n"
|
"X-Generator: Weblate 4.3.2\n"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:22
|
#: src/core/org.freedesktop.systemd1.policy.in:22
|
||||||
msgid "Send passphrase back to system"
|
msgid "Send passphrase back to system"
|
||||||
@ -333,18 +333,24 @@ msgstr ""
|
|||||||
"comutatorului din capacul sistemului."
|
"comutatorului din capacul sistemului."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:117
|
#: src/login/org.freedesktop.login1.policy:117
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Allow applications to inhibit system handling of the power key"
|
||||||
msgid "Allow applications to inhibit system handling of the reboot key"
|
msgid "Allow applications to inhibit system handling of the reboot key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Permite aplicațiilor să împiedice administrarea butonului de repornire a "
|
"Permite aplicațiilor să împiedice administrarea butonului de pornire a "
|
||||||
"sistemului"
|
"sistemului"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:118
|
#: src/login/org.freedesktop.login1.policy:118
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "Authentication is required for an application to inhibit system handling "
|
||||||
|
#| "of the power key."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the reboot key."
|
"the reboot key."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Autentificarea este necesară pentru ca o aplicație să împiedice "
|
"Autentificarea este necesară pentru ca o aplicație să împiedice "
|
||||||
"administrarea butonului de repornire a sistemului."
|
"administrarea butonului de pornire a sistemului."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:128
|
#: src/login/org.freedesktop.login1.policy:128
|
||||||
msgid "Allow non-logged-in user to run programs"
|
msgid "Allow non-logged-in user to run programs"
|
||||||
|
|||||||
@ -85,11 +85,6 @@ KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse"
|
|||||||
# The static_node is required on s390x and ppc (they are using MODULE_ALIAS)
|
# The static_node is required on s390x and ppc (they are using MODULE_ALIAS)
|
||||||
KERNEL=="kvm", GROUP="kvm", MODE="@DEV_KVM_MODE@", OPTIONS+="static_node=kvm"
|
KERNEL=="kvm", GROUP="kvm", MODE="@DEV_KVM_MODE@", OPTIONS+="static_node=kvm"
|
||||||
|
|
||||||
KERNEL=="vsock", MODE="0666"
|
|
||||||
KERNEL=="vhost-vsock", GROUP="kvm", MODE="@DEV_KVM_MODE@", OPTIONS+="static_node=vhost-vsock"
|
|
||||||
|
|
||||||
KERNEL=="vhost-net", GROUP="kvm", MODE="@DEV_KVM_MODE@", OPTIONS+="static_node=vhost-net"
|
|
||||||
|
|
||||||
KERNEL=="udmabuf", GROUP="kvm"
|
KERNEL=="udmabuf", GROUP="kvm"
|
||||||
|
|
||||||
SUBSYSTEM=="ptp", ATTR{clock_name}=="KVM virtual PTP", SYMLINK += "ptp_kvm"
|
SUBSYSTEM=="ptp", ATTR{clock_name}=="KVM virtual PTP", SYMLINK += "ptp_kvm"
|
||||||
|
|||||||
@ -22,6 +22,8 @@
|
|||||||
"_"
|
"_"
|
||||||
|
|
||||||
static bool env_name_is_valid_n(const char *e, size_t n) {
|
static bool env_name_is_valid_n(const char *e, size_t n) {
|
||||||
|
const char *p;
|
||||||
|
|
||||||
if (!e)
|
if (!e)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -39,7 +41,7 @@ static bool env_name_is_valid_n(const char *e, size_t n) {
|
|||||||
if (n > (size_t) sysconf(_SC_ARG_MAX) - 2)
|
if (n > (size_t) sysconf(_SC_ARG_MAX) - 2)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (const char *p = e; p < e + n; p++)
|
for (p = e; p < e + n; p++)
|
||||||
if (!strchr(VALID_BASH_ENV_NAME_CHARS, *p))
|
if (!strchr(VALID_BASH_ENV_NAME_CHARS, *p))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -187,14 +189,14 @@ static int env_append(char **r, char ***k, char **a) {
|
|||||||
|
|
||||||
char **strv_env_merge(size_t n_lists, ...) {
|
char **strv_env_merge(size_t n_lists, ...) {
|
||||||
_cleanup_strv_free_ char **ret = NULL;
|
_cleanup_strv_free_ char **ret = NULL;
|
||||||
size_t n = 0;
|
size_t n = 0, i;
|
||||||
char **l, **k;
|
char **l, **k;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
/* Merges an arbitrary number of environment sets */
|
/* Merges an arbitrary number of environment sets */
|
||||||
|
|
||||||
va_start(ap, n_lists);
|
va_start(ap, n_lists);
|
||||||
for (size_t i = 0; i < n_lists; i++) {
|
for (i = 0; i < n_lists; i++) {
|
||||||
l = va_arg(ap, char**);
|
l = va_arg(ap, char**);
|
||||||
n += strv_length(l);
|
n += strv_length(l);
|
||||||
}
|
}
|
||||||
@ -208,7 +210,7 @@ char **strv_env_merge(size_t n_lists, ...) {
|
|||||||
k = ret;
|
k = ret;
|
||||||
|
|
||||||
va_start(ap, n_lists);
|
va_start(ap, n_lists);
|
||||||
for (size_t i = 0; i < n_lists; i++) {
|
for (i = 0; i < n_lists; i++) {
|
||||||
l = va_arg(ap, char**);
|
l = va_arg(ap, char**);
|
||||||
if (env_append(ret, &k, l) < 0) {
|
if (env_append(ret, &k, l) < 0) {
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
@ -274,8 +276,10 @@ char **strv_env_delete(char **x, size_t n_lists, ...) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
STRV_FOREACH(k, x) {
|
STRV_FOREACH(k, x) {
|
||||||
|
size_t v;
|
||||||
|
|
||||||
va_start(ap, n_lists);
|
va_start(ap, n_lists);
|
||||||
for (size_t v = 0; v < n_lists; v++) {
|
for (v = 0; v < n_lists; v++) {
|
||||||
char **l, **j;
|
char **l, **j;
|
||||||
|
|
||||||
l = va_arg(ap, char**);
|
l = va_arg(ap, char**);
|
||||||
@ -306,6 +310,7 @@ char **strv_env_delete(char **x, size_t n_lists, ...) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char **strv_env_unset(char **l, const char *p) {
|
char **strv_env_unset(char **l, const char *p) {
|
||||||
|
|
||||||
char **f, **t;
|
char **f, **t;
|
||||||
|
|
||||||
if (!l)
|
if (!l)
|
||||||
|
|||||||
@ -48,7 +48,9 @@ CustomMount* custom_mount_add(CustomMount **l, size_t *n, CustomMountType t) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void custom_mount_free_all(CustomMount *l, size_t n) {
|
void custom_mount_free_all(CustomMount *l, size_t n) {
|
||||||
for (size_t i = 0; i < n; i++) {
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
CustomMount *m = l + i;
|
CustomMount *m = l + i;
|
||||||
|
|
||||||
free(m->source);
|
free(m->source);
|
||||||
@ -92,6 +94,7 @@ static bool source_path_is_valid(const char *p) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static char *resolve_source_path(const char *dest, const char *source) {
|
static char *resolve_source_path(const char *dest, const char *source) {
|
||||||
|
|
||||||
if (!source)
|
if (!source)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -126,6 +129,7 @@ static int allocate_temporary_source(CustomMount *m) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int custom_mount_prepare_all(const char *dest, CustomMount *l, size_t n) {
|
int custom_mount_prepare_all(const char *dest, CustomMount *l, size_t n) {
|
||||||
|
size_t i;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
/* Prepare all custom mounts. This will make source we know all temporary directories. This is called in the
|
/* Prepare all custom mounts. This will make source we know all temporary directories. This is called in the
|
||||||
@ -137,7 +141,7 @@ int custom_mount_prepare_all(const char *dest, CustomMount *l, size_t n) {
|
|||||||
/* Order the custom mounts, and make sure we have a working directory */
|
/* Order the custom mounts, and make sure we have a working directory */
|
||||||
typesafe_qsort(l, n, custom_mount_compare);
|
typesafe_qsort(l, n, custom_mount_compare);
|
||||||
|
|
||||||
for (size_t i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
CustomMount *m = l + i;
|
CustomMount *m = l + i;
|
||||||
|
|
||||||
/* /proc we mount in the inner child, i.e. when we acquired CLONE_NEWPID. All other mounts we mount
|
/* /proc we mount in the inner child, i.e. when we acquired CLONE_NEWPID. All other mounts we mount
|
||||||
@ -584,9 +588,10 @@ int mount_all(const char *dest,
|
|||||||
bool ro = FLAGS_SET(mount_settings, MOUNT_APPLY_APIVFS_RO);
|
bool ro = FLAGS_SET(mount_settings, MOUNT_APPLY_APIVFS_RO);
|
||||||
bool in_userns = FLAGS_SET(mount_settings, MOUNT_IN_USERNS);
|
bool in_userns = FLAGS_SET(mount_settings, MOUNT_IN_USERNS);
|
||||||
bool tmpfs_tmp = FLAGS_SET(mount_settings, MOUNT_APPLY_TMPFS_TMP);
|
bool tmpfs_tmp = FLAGS_SET(mount_settings, MOUNT_APPLY_TMPFS_TMP);
|
||||||
|
size_t k;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
for (size_t k = 0; k < ELEMENTSOF(mount_table); k++) {
|
for (k = 0; k < ELEMENTSOF(mount_table); k++) {
|
||||||
_cleanup_free_ char *where = NULL, *options = NULL, *prefixed = NULL;
|
_cleanup_free_ char *where = NULL, *options = NULL, *prefixed = NULL;
|
||||||
bool fatal = FLAGS_SET(mount_table[k].mount_settings, MOUNT_FATAL);
|
bool fatal = FLAGS_SET(mount_table[k].mount_settings, MOUNT_FATAL);
|
||||||
const char *o;
|
const char *o;
|
||||||
@ -683,6 +688,7 @@ int mount_all(const char *dest,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int parse_mount_bind_options(const char *options, unsigned long *mount_flags, char **mount_opts) {
|
static int parse_mount_bind_options(const char *options, unsigned long *mount_flags, char **mount_opts) {
|
||||||
|
const char *p = options;
|
||||||
unsigned long flags = *mount_flags;
|
unsigned long flags = *mount_flags;
|
||||||
char *opts = NULL;
|
char *opts = NULL;
|
||||||
int r;
|
int r;
|
||||||
@ -692,7 +698,7 @@ static int parse_mount_bind_options(const char *options, unsigned long *mount_fl
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
_cleanup_free_ char *word = NULL;
|
_cleanup_free_ char *word = NULL;
|
||||||
|
|
||||||
r = extract_first_word(&options, &word, ",", 0);
|
r = extract_first_word(&p, &word, ",", 0);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to extract mount option: %m");
|
return log_error_errno(r, "Failed to extract mount option: %m");
|
||||||
if (r == 0)
|
if (r == 0)
|
||||||
@ -702,9 +708,11 @@ static int parse_mount_bind_options(const char *options, unsigned long *mount_fl
|
|||||||
flags |= MS_REC;
|
flags |= MS_REC;
|
||||||
else if (streq(word, "norbind"))
|
else if (streq(word, "norbind"))
|
||||||
flags &= ~MS_REC;
|
flags &= ~MS_REC;
|
||||||
else
|
else {
|
||||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
"Invalid bind mount option: %s", word);
|
"Invalid bind mount option: %s",
|
||||||
|
word);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*mount_flags = flags;
|
*mount_flags = flags;
|
||||||
@ -781,6 +789,7 @@ static int mount_bind(const char *dest, CustomMount *m) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int mount_tmpfs(const char *dest, CustomMount *m, uid_t uid_shift, const char *selinux_apifs_context) {
|
static int mount_tmpfs(const char *dest, CustomMount *m, uid_t uid_shift, const char *selinux_apifs_context) {
|
||||||
|
|
||||||
const char *options;
|
const char *options;
|
||||||
_cleanup_free_ char *buf = NULL, *where = NULL;
|
_cleanup_free_ char *buf = NULL, *where = NULL;
|
||||||
int r;
|
int r;
|
||||||
@ -918,11 +927,13 @@ int mount_custom(
|
|||||||
uid_t uid_shift,
|
uid_t uid_shift,
|
||||||
const char *selinux_apifs_context,
|
const char *selinux_apifs_context,
|
||||||
MountSettingsMask mount_settings) {
|
MountSettingsMask mount_settings) {
|
||||||
|
|
||||||
|
size_t i;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(dest);
|
assert(dest);
|
||||||
|
|
||||||
for (size_t i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
CustomMount *m = mounts + i;
|
CustomMount *m = mounts + i;
|
||||||
|
|
||||||
if (FLAGS_SET(mount_settings, MOUNT_IN_USERNS) != m->in_userns)
|
if (FLAGS_SET(mount_settings, MOUNT_IN_USERNS) != m->in_userns)
|
||||||
@ -968,14 +979,20 @@ int mount_custom(
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool has_custom_root_mount(const CustomMount *mounts, size_t n) {
|
bool has_custom_root_mount(const CustomMount *mounts, size_t n) {
|
||||||
for (size_t i = 0; i < n; i++)
|
size_t i;
|
||||||
if (path_equal(mounts[i].destination, "/"))
|
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
const CustomMount *m = mounts + i;
|
||||||
|
|
||||||
|
if (path_equal(m->destination, "/"))
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int setup_volatile_state(const char *directory, uid_t uid_shift, const char *selinux_apifs_context) {
|
static int setup_volatile_state(const char *directory, uid_t uid_shift, const char *selinux_apifs_context) {
|
||||||
|
|
||||||
_cleanup_free_ char *buf = NULL;
|
_cleanup_free_ char *buf = NULL;
|
||||||
const char *p, *options;
|
const char *p, *options;
|
||||||
int r;
|
int r;
|
||||||
@ -1004,6 +1021,7 @@ static int setup_volatile_state(const char *directory, uid_t uid_shift, const ch
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int setup_volatile_yes(const char *directory, uid_t uid_shift, const char *selinux_apifs_context) {
|
static int setup_volatile_yes(const char *directory, uid_t uid_shift, const char *selinux_apifs_context) {
|
||||||
|
|
||||||
bool tmpfs_mounted = false, bind_mounted = false;
|
bool tmpfs_mounted = false, bind_mounted = false;
|
||||||
char template[] = "/tmp/nspawn-volatile-XXXXXX";
|
char template[] = "/tmp/nspawn-volatile-XXXXXX";
|
||||||
_cleanup_free_ char *buf = NULL, *bindir = NULL;
|
_cleanup_free_ char *buf = NULL, *bindir = NULL;
|
||||||
@ -1091,6 +1109,7 @@ fail:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int setup_volatile_overlay(const char *directory, uid_t uid_shift, const char *selinux_apifs_context) {
|
static int setup_volatile_overlay(const char *directory, uid_t uid_shift, const char *selinux_apifs_context) {
|
||||||
|
|
||||||
_cleanup_free_ char *buf = NULL, *escaped_directory = NULL, *escaped_upper = NULL, *escaped_work = NULL;
|
_cleanup_free_ char *buf = NULL, *escaped_directory = NULL, *escaped_upper = NULL, *escaped_work = NULL;
|
||||||
char template[] = "/tmp/nspawn-volatile-XXXXXX";
|
char template[] = "/tmp/nspawn-volatile-XXXXXX";
|
||||||
const char *upper, *work, *options;
|
const char *upper, *work, *options;
|
||||||
|
|||||||
@ -398,14 +398,16 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) {
|
|||||||
/* If loading of the unit failed server side complete, then the server won't tell us
|
/* If loading of the unit failed server side complete, then the server won't tell us
|
||||||
* the unit file path. In that case, find the file client side. */
|
* the unit file path. In that case, find the file client side. */
|
||||||
log_debug_errno(r, "Unit '%s' was not loaded correctly, retrying client-side.", *name);
|
log_debug_errno(r, "Unit '%s' was not loaded correctly, retrying client-side.", *name);
|
||||||
r = unit_find_paths(bus, *name, &lp, true, &cached_name_map, &cached_id_map, &path, &unit_paths);
|
r = unit_find_paths(bus, *name, &lp, true, &cached_name_map, &cached_id_map, &path, NULL);
|
||||||
}
|
}
|
||||||
if (r == -ERFKILL)
|
if (r == -ERFKILL)
|
||||||
return log_error_errno(r, "Unit '%s' masked, cannot edit.", *name);
|
return log_error_errno(r, "Unit '%s' masked, cannot edit.", *name);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
if (!path) {
|
if (r == 0) {
|
||||||
|
assert(!path);
|
||||||
|
|
||||||
if (!arg_force) {
|
if (!arg_force) {
|
||||||
log_info("Run 'systemctl edit%s --force --full %s' to create a new unit.",
|
log_info("Run 'systemctl edit%s --force --full %s' to create a new unit.",
|
||||||
arg_scope == UNIT_FILE_GLOBAL ? " --global" :
|
arg_scope == UNIT_FILE_GLOBAL ? " --global" :
|
||||||
@ -420,6 +422,8 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) {
|
|||||||
arg_full ? NULL : ".d/override.conf",
|
arg_full ? NULL : ".d/override.conf",
|
||||||
NULL, &new_path, &tmp_path);
|
NULL, &new_path, &tmp_path);
|
||||||
} else {
|
} else {
|
||||||
|
assert(path);
|
||||||
|
|
||||||
unit_name = basename(path);
|
unit_name = basename(path);
|
||||||
/* We follow unit aliases, but we need to propagate the instance */
|
/* We follow unit aliases, but we need to propagate the instance */
|
||||||
if (unit_name_is_valid(*name, UNIT_NAME_INSTANCE) &&
|
if (unit_name_is_valid(*name, UNIT_NAME_INSTANCE) &&
|
||||||
|
|||||||
@ -15,14 +15,15 @@
|
|||||||
# See systemd-coredump(8) and core(5).
|
# See systemd-coredump(8) and core(5).
|
||||||
kernel.core_pattern=|@rootlibexecdir@/systemd-coredump %P %u %g %s %t %c %h
|
kernel.core_pattern=|@rootlibexecdir@/systemd-coredump %P %u %g %s %t %c %h
|
||||||
|
|
||||||
# Allow 16 coredumps to be dispatched in parallel by the kernel.
|
# Allow that 16 coredumps are dispatched in parallel by the kernel. We want to
|
||||||
# We collect metadata from /proc/%P/, and thus need to make sure the crashed
|
# be able to collect process metadata from /proc/%P/ while processing
|
||||||
# processes are not reaped until we have finished collecting what we need. The
|
# coredumps, and thus need to make sure the crashed processes are not reaped
|
||||||
# kernel default for this sysctl is "0" which means the kernel doesn't wait for
|
# until we finished collecting what we need. The kernel default for this sysctl
|
||||||
# userspace to finish processing before reaping the crashed processes. With a
|
# is "0" which means the kernel doesn't wait for userspace processes to finish
|
||||||
# higher setting the kernel will delay reaping until we are done, but only for
|
# processing before reaping the crashed processes — by setting this higher the
|
||||||
# the specified number of crashes in parallel. The value of 16 is chosen to
|
# kernel will delay reaping until we are done, but only for the specified
|
||||||
# match systemd-coredump.socket's MaxConnections= value.
|
# number of crashes in parallel. The value of 16 is chosen to match
|
||||||
|
# systemd-coredump.socket's MaxConnections= value.
|
||||||
kernel.core_pipe_limit=16
|
kernel.core_pipe_limit=16
|
||||||
|
|
||||||
# Also dump processes executing a set-user-ID/set-group-ID program that is
|
# Also dump processes executing a set-user-ID/set-group-ID program that is
|
||||||
|
|||||||
@ -15,5 +15,3 @@ z /dev/loop-control 0660 - disk -
|
|||||||
z /dev/net/tun 0666 - - -
|
z /dev/net/tun 0666 - - -
|
||||||
z /dev/fuse 0666 - - -
|
z /dev/fuse 0666 - - -
|
||||||
z /dev/kvm @DEV_KVM_MODE@ - kvm -
|
z /dev/kvm @DEV_KVM_MODE@ - kvm -
|
||||||
z /dev/vhost-net @DEV_KVM_MODE@ - kvm -
|
|
||||||
z /dev/vhost-vsock @DEV_KVM_MODE@ - kvm -
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user