mirror of
https://github.com/systemd/systemd
synced 2025-12-29 04:14:44 +01:00
Compare commits
17 Commits
f1c86dd9ab
...
bf1868c8d7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf1868c8d7 | ||
|
|
061e9fc5f1 | ||
|
|
0a219363bf | ||
|
|
3b41c4dfbc | ||
|
|
5b935a388c | ||
|
|
d2b99ed7c5 | ||
|
|
0c659eb805 | ||
|
|
8b273a478d | ||
|
|
e4d22a9f32 | ||
|
|
98199724cb | ||
|
|
c42b6ec4d7 | ||
|
|
a61d1201c7 | ||
|
|
081c63c99e | ||
|
|
fe04aa94c6 | ||
|
|
f65efddd1c | ||
|
|
c78939d565 | ||
|
|
c4446798fa |
@ -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.
|
# Zmicer Turok <nashtlumach@gmail.com>, 2020, 2021.
|
||||||
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: 2020-10-16 06:30+0000\n"
|
"PO-Revision-Date: 2021-01-10 18:36+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.2.2\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"
|
||||||
@ -308,22 +308,17 @@ 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-09 10:48+0000\n"
|
"PO-Revision-Date: 2021-01-14 06:37+0000\n"
|
||||||
"Last-Translator: Arnaud T. <listes.00@gmail.com>\n"
|
"Last-Translator: Julien Humbert <julroy67@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\n"
|
"X-Generator: Weblate 4.4.1\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,24 +324,18 @@ 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 d’alimentation du "
|
"Permet aux applications d’empêcher la gestion du bouton de redémarrage 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 d’alimentation du système."
|
"gestion du bouton de redémarrage 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.
|
# Vlad <milovlad@outlook.com>, 2020, 2021.
|
||||||
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: 2020-12-26 08:36+0000\n"
|
"PO-Revision-Date: 2021-01-12 17: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.3.2\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"
|
||||||
@ -333,24 +333,18 @@ 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 pornire a "
|
"Permite aplicațiilor să împiedice administrarea butonului de repornire 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 pornire a sistemului."
|
"administrarea butonului de repornire 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,6 +85,11 @@ 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,8 +22,6 @@
|
|||||||
"_"
|
"_"
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
@ -41,7 +39,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 (p = e; p < e + n; p++)
|
for (const char *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;
|
||||||
|
|
||||||
@ -189,14 +187,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, i;
|
size_t n = 0;
|
||||||
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 (i = 0; i < n_lists; i++) {
|
for (size_t i = 0; i < n_lists; i++) {
|
||||||
l = va_arg(ap, char**);
|
l = va_arg(ap, char**);
|
||||||
n += strv_length(l);
|
n += strv_length(l);
|
||||||
}
|
}
|
||||||
@ -210,7 +208,7 @@ char **strv_env_merge(size_t n_lists, ...) {
|
|||||||
k = ret;
|
k = ret;
|
||||||
|
|
||||||
va_start(ap, n_lists);
|
va_start(ap, n_lists);
|
||||||
for (i = 0; i < n_lists; i++) {
|
for (size_t 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);
|
||||||
@ -276,10 +274,8 @@ 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 (v = 0; v < n_lists; v++) {
|
for (size_t v = 0; v < n_lists; v++) {
|
||||||
char **l, **j;
|
char **l, **j;
|
||||||
|
|
||||||
l = va_arg(ap, char**);
|
l = va_arg(ap, char**);
|
||||||
@ -310,7 +306,6 @@ 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,9 +48,7 @@ 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) {
|
||||||
size_t i;
|
for (size_t i = 0; i < n; i++) {
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
|
||||||
CustomMount *m = l + i;
|
CustomMount *m = l + i;
|
||||||
|
|
||||||
free(m->source);
|
free(m->source);
|
||||||
@ -94,7 +92,6 @@ 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;
|
||||||
|
|
||||||
@ -129,7 +126,6 @@ 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
|
||||||
@ -141,7 +137,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 (i = 0; i < n; i++) {
|
for (size_t 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
|
||||||
@ -588,10 +584,9 @@ 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 (k = 0; k < ELEMENTSOF(mount_table); k++) {
|
for (size_t 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;
|
||||||
@ -688,7 +683,6 @@ 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;
|
||||||
@ -698,7 +692,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(&p, &word, ",", 0);
|
r = extract_first_word(&options, &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)
|
||||||
@ -708,11 +702,9 @@ 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",
|
"Invalid bind mount option: %s", word);
|
||||||
word);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*mount_flags = flags;
|
*mount_flags = flags;
|
||||||
@ -789,7 +781,6 @@ 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;
|
||||||
@ -927,13 +918,11 @@ 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 (i = 0; i < n; i++) {
|
for (size_t 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)
|
||||||
@ -979,20 +968,14 @@ 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) {
|
||||||
size_t i;
|
for (size_t i = 0; i < n; 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;
|
||||||
@ -1021,7 +1004,6 @@ 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;
|
||||||
@ -1109,7 +1091,6 @@ 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,16 +398,14 @@ 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, NULL);
|
r = unit_find_paths(bus, *name, &lp, true, &cached_name_map, &cached_id_map, &path, &unit_paths);
|
||||||
}
|
}
|
||||||
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 (r == 0) {
|
if (!path) {
|
||||||
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" :
|
||||||
@ -422,8 +420,6 @@ 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,15 +15,14 @@
|
|||||||
# 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 that 16 coredumps are dispatched in parallel by the kernel. We want to
|
# Allow 16 coredumps to be dispatched in parallel by the kernel.
|
||||||
# be able to collect process metadata from /proc/%P/ while processing
|
# We collect metadata from /proc/%P/, and thus need to make sure the crashed
|
||||||
# coredumps, and thus need to make sure the crashed processes are not reaped
|
# processes are not reaped until we have finished collecting what we need. The
|
||||||
# until we finished collecting what we need. The kernel default for this sysctl
|
# kernel default for this sysctl is "0" which means the kernel doesn't wait for
|
||||||
# is "0" which means the kernel doesn't wait for userspace processes to finish
|
# userspace to finish processing before reaping the crashed processes. With a
|
||||||
# processing before reaping the crashed processes — by setting this higher the
|
# higher setting the kernel will delay reaping until we are done, but only for
|
||||||
# kernel will delay reaping until we are done, but only for the specified
|
# the specified number of crashes in parallel. The value of 16 is chosen to
|
||||||
# number of crashes in parallel. The value of 16 is chosen to match
|
# match systemd-coredump.socket's MaxConnections= value.
|
||||||
# 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,3 +15,5 @@ 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