SHA256
1
0
forked from pool/systemd

Accepting request 286310 from home:jengelh:systemd

- Reinstate and improve (remove huge indents from)
  tty-ask-password-agent-on-console.patch,
  0014-journald-with-journaling-FS.patch, rootsymlink_generator.

OBS-URL: https://build.opensuse.org/request/show/286310
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=847
This commit is contained in:
Dr. Werner Fink 2015-02-16 11:36:25 +00:00 committed by Git OBS Bridge
parent 2a176fe605
commit 8b6afdd7bf
26 changed files with 736 additions and 569 deletions

View File

@ -1,15 +1,15 @@
---
rules/99-systemd.rules.in | 2
src/core/manager.c | 24 ++++++++--
src/shared/util.c | 101 ++++++++++++++++++++++++++++++++++++++++++++--
src/core/manager.c | 24 ++++++++---
src/shared/util.c | 99 ++++++++++++++++++++++++++++++++++++++++++++--
src/shared/util.h | 1
4 files changed, 118 insertions(+), 10 deletions(-)
4 files changed, 116 insertions(+), 10 deletions(-)
Index: systemd-218/rules/99-systemd.rules.in
Index: systemd/rules/99-systemd.rules.in
===================================================================
--- systemd-218.orig/rules/99-systemd.rules.in
+++ systemd-218/rules/99-systemd.rules.in
--- systemd.orig/rules/99-systemd.rules.in
+++ systemd/rules/99-systemd.rules.in
@@ -7,7 +7,7 @@
ACTION=="remove", GOTO="systemd_end"
@ -19,11 +19,11 @@ Index: systemd-218/rules/99-systemd.rules.in
KERNEL=="vport*", TAG+="systemd"
Index: systemd-218/src/core/manager.c
Index: systemd/src/core/manager.c
===================================================================
--- systemd-218.orig/src/core/manager.c
+++ systemd-218/src/core/manager.c
@@ -110,7 +110,7 @@ static int manager_watch_jobs_in_progres
--- systemd.orig/src/core/manager.c
+++ systemd/src/core/manager.c
@@ -113,7 +113,7 @@ static int manager_watch_jobs_in_progres
#define CYLON_BUFFER_EXTRA (2*(sizeof(ANSI_RED_ON)-1) + sizeof(ANSI_HIGHLIGHT_RED_ON)-1 + 2*(sizeof(ANSI_HIGHLIGHT_OFF)-1))
@ -32,7 +32,7 @@ Index: systemd-218/src/core/manager.c
char *p = buffer;
assert(buflen >= CYLON_BUFFER_EXTRA + width + 1);
@@ -119,12 +119,14 @@ static void draw_cylon(char buffer[], si
@@ -122,12 +122,14 @@ static void draw_cylon(char buffer[], si
if (pos > 1) {
if (pos > 2)
p = mempset(p, ' ', pos-2);
@ -49,7 +49,7 @@ Index: systemd-218/src/core/manager.c
*p++ = '*';
}
@@ -135,7 +137,8 @@ static void draw_cylon(char buffer[], si
@@ -138,7 +140,8 @@ static void draw_cylon(char buffer[], si
*p++ = '*';
if (pos < width-1)
p = mempset(p, ' ', width-1-pos);
@ -59,7 +59,7 @@ Index: systemd-218/src/core/manager.c
}
}
@@ -152,6 +155,7 @@ void manager_flip_auto_status(Manager *m
@@ -155,6 +158,7 @@ void manager_flip_auto_status(Manager *m
}
static void manager_print_jobs_in_progress(Manager *m) {
@ -67,7 +67,7 @@ Index: systemd-218/src/core/manager.c
_cleanup_free_ char *job_of_n = NULL;
Iterator i;
Job *j;
@@ -176,10 +180,20 @@ static void manager_print_jobs_in_progre
@@ -180,10 +184,20 @@ static void manager_print_jobs_in_progre
assert(counter == print_nr + 1);
assert(j);
@ -89,11 +89,11 @@ Index: systemd-218/src/core/manager.c
m->jobs_in_progress_iteration++;
Index: systemd-218/src/shared/util.c
Index: systemd/src/shared/util.c
===================================================================
--- systemd-218.orig/src/shared/util.c
+++ systemd-218/src/shared/util.c
@@ -3182,6 +3182,7 @@ int status_vprintf(const char *status, b
--- systemd.orig/src/shared/util.c
+++ systemd/src/shared/util.c
@@ -3212,6 +3212,7 @@ int status_vprintf(const char *status, b
struct iovec iovec[6] = {};
int n = 0;
static bool prev_ephemeral;
@ -101,7 +101,7 @@ Index: systemd-218/src/shared/util.c
assert(format);
@@ -3195,6 +3196,41 @@ int status_vprintf(const char *status, b
@@ -3225,6 +3226,41 @@ int status_vprintf(const char *status, b
if (fd < 0)
return fd;
@ -143,7 +143,7 @@ Index: systemd-218/src/shared/util.c
if (ellipse) {
char *e;
size_t emax, sl;
@@ -3217,8 +3253,12 @@ int status_vprintf(const char *status, b
@@ -3247,8 +3283,12 @@ int status_vprintf(const char *status, b
}
}
@ -158,7 +158,7 @@ Index: systemd-218/src/shared/util.c
prev_ephemeral = ephemeral;
if (status) {
@@ -3474,8 +3514,22 @@ void columns_lines_cache_reset(int signu
@@ -3504,8 +3544,22 @@ void columns_lines_cache_reset(int signu
bool on_tty(void) {
static int cached_on_tty = -1;
@ -182,7 +182,7 @@ Index: systemd-218/src/shared/util.c
return cached_on_tty;
}
@@ -3493,6 +3547,27 @@ int files_same(const char *filea, const
@@ -3523,6 +3577,27 @@ int files_same(const char *filea, const
a.st_ino == b.st_ino;
}
@ -210,11 +210,11 @@ Index: systemd-218/src/shared/util.c
int running_in_chroot(void) {
int ret;
@@ -3976,7 +4051,25 @@ bool tty_is_vc_resolve(const char *tty)
@@ -4006,7 +4081,23 @@ bool tty_is_vc_resolve(const char *tty)
const char *default_term_for_tty(const char *tty) {
assert(tty);
- return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt102";
- return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt220";
+ if (tty_is_vc_resolve(tty))
+ return "TERM=linux";
+
@ -230,18 +230,16 @@ Index: systemd-218/src/shared/util.c
+ if (streq(mode, "3270"))
+ return "TERM=ibm327x";
+ }
+ if (streq(tty, "ttyS1"))
+ return "TERM=vt220";
+#endif
+ return "TERM=vt102";
+ return "TERM=vt220";
}
bool dirent_is_file(const struct dirent *de) {
Index: systemd-218/src/shared/util.h
Index: systemd/src/shared/util.h
===================================================================
--- systemd-218.orig/src/shared/util.h
+++ systemd-218/src/shared/util.h
@@ -474,6 +474,7 @@ unsigned lines(void);
--- systemd.orig/src/shared/util.h
+++ systemd/src/shared/util.h
@@ -475,6 +475,7 @@ unsigned lines(void);
void columns_lines_cache_reset(int _unused_ signum);
bool on_tty(void);

View File

@ -1,11 +1,22 @@
---
src/journal/journald-server.c | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
From: werner@suse.de
Upstream: marked as openSUSE-specific fix originally, but may well
worth be to be sent upstream.
Index: systemd-218/src/journal/journald-server.c
Original description:
(none)
Augmented description [jengelh@inai.de]:
Disable COW on journal files, as that is naturally leading to a lot
of unwanted fragmentation on btrfs.
No word on compression…
---
src/journal/journald-server.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
Index: systemd/src/journal/journald-server.c
===================================================================
--- systemd-218.orig/src/journal/journald-server.c
+++ systemd-218/src/journal/journald-server.c
--- systemd.orig/src/journal/journald-server.c
+++ systemd/src/journal/journald-server.c
@@ -21,6 +21,7 @@
#include <sys/signalfd.h>
@ -14,45 +25,50 @@ Index: systemd-218/src/journal/journald-server.c
#include <linux/sockios.h>
#include <sys/statvfs.h>
#include <sys/mman.h>
@@ -921,7 +922,7 @@ finish:
@@ -917,6 +918,38 @@ finish:
dispatch_message_real(s, iovec, n, m, ucred, tv, label, label_len, unit_id, priority, object_pid);
}
+/*
+ * On journaling and/or compressing file systems, avoid doubling the efforts
+ * for the system, that is, set NOCOW and NOCOMP inode flags. Check for every
+ * single flag, as otherwise, some of the file systems may return EOPNOTSUPP on
+ * a single unkown flag (like BtrFS does).
+ *
+ * …but src/journal/journal-file.c already sets NOCOW too…⸘
+ */
+static void disable_cow(const char *dir, const Server *serv)
+{
+ unsigned long flags;
+ int fd = open(dir, O_DIRECTORY);
+
+ if (fd < 0)
+ return;
+ if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == 0) {
+ unsigned long old = flags;
+ if (!(flags & FS_NOATIME_FL) &&
+ ioctl(fd, FS_IOC_SETFLAGS, flags | FS_NOATIME_FL) == 0)
+ flags |= FS_NOATIME_FL;
+ if (!(flags & FS_NOCOW_FL) &&
+ ioctl(fd, FS_IOC_SETFLAGS, flags | FS_NOCOW_FL) == 0)
+ flags |= FS_NOCOW_FL;
+ if (!(flags & FS_NOCOMP_FL) && serv->compress) {
+ flags &= ~FS_COMPR_FL;
+ flags |= FS_NOCOMP_FL;
+ }
+ if (old != flags)
+ ioctl(fd, FS_IOC_SETFLAGS, flags);
+ }
+ close(fd);
+}
static int system_journal_open(Server *s, bool flush_requested) {
- int r;
+ int r, fd;
char *fn;
sd_id128_t machine;
char ids[33];
@@ -947,7 +948,31 @@ static int system_journal_open(Server *s
(void) mkdir("/var/log/journal/", 0755);
int r;
@@ -946,6 +979,7 @@ static int system_journal_open(Server *s
fn = strappenda("/var/log/journal/", ids);
- (void) mkdir(fn, 0755);
+ (void)mkdir(fn, 0755);
+
+ /*
+ * On journaling and/or compressing file systems avoid doubling the
+ * efforts for the system, that is set NOCOW and NOCOMP inode flags.
+ * Check for every single flag as otherwise some of the file systems
+ * may return EOPNOTSUPP on one unkown flag (like BtrFS does).
+ */
+ if ((fd = open(fn, O_DIRECTORY)) >= 0) {
+ long flags;
+ if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == 0) {
+ int old = flags;
+ if (!(flags&FS_NOATIME_FL) && ioctl(fd, FS_IOC_SETFLAGS, flags|FS_NOATIME_FL) == 0)
+ flags |= FS_NOATIME_FL;
+ if (!(flags&FS_NOCOW_FL) && ioctl(fd, FS_IOC_SETFLAGS, flags|FS_NOCOW_FL) == 0)
+ flags |= FS_NOCOW_FL;
+ if (!(flags&FS_NOCOMP_FL) && s->compress) {
+ flags &= ~FS_COMPR_FL;
+ flags |= FS_NOCOMP_FL;
+ }
+ if (old != flags)
+ ioctl(fd, FS_IOC_SETFLAGS, flags);
+ }
+ close(fd);
+ }
fn = strjoina("/var/log/journal/", ids);
(void) mkdir(fn, 0755);
+ disable_cow(fn, s);
fn = strappenda(fn, "/system.journal");
fn = strjoina(fn, "/system.journal");
r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, s->compress, s->seal, &s->system_metrics, s->mmap, NULL, &s->system_journal);

View File

@ -12,10 +12,10 @@
shell-completion/bash/udevadm | 6 +++++-
11 files changed, 70 insertions(+), 11 deletions(-)
Index: systemd-218/shell-completion/bash/coredumpctl
Index: systemd/shell-completion/bash/coredumpctl
===================================================================
--- systemd-218.orig/shell-completion/bash/coredumpctl
+++ systemd-218/shell-completion/bash/coredumpctl
--- systemd.orig/shell-completion/bash/coredumpctl
+++ systemd/shell-completion/bash/coredumpctl
@@ -44,6 +44,10 @@ _coredumpctl() {
[DUMP]='dump gdb'
)
@ -33,13 +33,13 @@ Index: systemd-218/shell-completion/bash/coredumpctl
-complete -F _coredumpctl coredumpctl
+complete -o default -o bashdefault -F _coredumpctl coredumpctl
Index: systemd-218/shell-completion/bash/hostnamectl
Index: systemd/shell-completion/bash/hostnamectl
===================================================================
--- systemd-218.orig/shell-completion/bash/hostnamectl
+++ systemd-218/shell-completion/bash/hostnamectl
--- systemd.orig/shell-completion/bash/hostnamectl
+++ systemd/shell-completion/bash/hostnamectl
@@ -30,6 +30,10 @@ _hostnamectl() {
local OPTS='-h --help --version --transient --static --pretty
--no-ask-password -H --host'
--no-ask-password -H --host --machine'
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
@ -54,12 +54,12 @@ Index: systemd-218/shell-completion/bash/hostnamectl
-complete -F _hostnamectl hostnamectl
+complete -o default -o bashdefault -F _hostnamectl hostnamectl
Index: systemd-218/shell-completion/bash/journalctl
Index: systemd/shell-completion/bash/journalctl
===================================================================
--- systemd-218.orig/shell-completion/bash/journalctl
+++ systemd-218/shell-completion/bash/journalctl
@@ -51,6 +51,10 @@ _journalctl() {
--verify-key'
--- systemd.orig/shell-completion/bash/journalctl
+++ systemd/shell-completion/bash/journalctl
@@ -55,6 +55,10 @@ _journalctl() {
--root --machine'
)
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
@ -69,16 +69,16 @@ Index: systemd-218/shell-completion/bash/journalctl
if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then
case $prev in
--boot|--this-boot|-b)
@@ -116,4 +120,4 @@ _journalctl() {
@@ -120,4 +124,4 @@ _journalctl() {
fi
}
-complete -F _journalctl journalctl
+complete -o default -o bashdefault -F _journalctl journalctl
Index: systemd-218/shell-completion/bash/kernel-install
Index: systemd/shell-completion/bash/kernel-install
===================================================================
--- systemd-218.orig/shell-completion/bash/kernel-install
+++ systemd-218/shell-completion/bash/kernel-install
--- systemd.orig/shell-completion/bash/kernel-install
+++ systemd/shell-completion/bash/kernel-install
@@ -18,11 +18,22 @@
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
@ -108,13 +108,13 @@ Index: systemd-218/shell-completion/bash/kernel-install
-complete -F _kernel_install kernel-install
+complete -o default -o bashdefault -F _kernel_install kernel-install
Index: systemd-218/shell-completion/bash/localectl
Index: systemd/shell-completion/bash/localectl
===================================================================
--- systemd-218.orig/shell-completion/bash/localectl
+++ systemd-218/shell-completion/bash/localectl
--- systemd.orig/shell-completion/bash/localectl
+++ systemd/shell-completion/bash/localectl
@@ -36,6 +36,10 @@ _localectl() {
local OPTS='-h --help --version --no-convert --no-pager --no-ask-password
-H --host'
-H --host --machine'
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
@ -129,13 +129,13 @@ Index: systemd-218/shell-completion/bash/localectl
-complete -F _localectl localectl
+complete -o default -o bashdefault -F _localectl localectl
Index: systemd-218/shell-completion/bash/loginctl
Index: systemd/shell-completion/bash/loginctl
===================================================================
--- systemd-218.orig/shell-completion/bash/loginctl
+++ systemd-218/shell-completion/bash/loginctl
@@ -37,6 +37,10 @@ _loginctl () {
[ARG]='--host -H --kill-who --property -p --signal -s'
)
--- systemd.orig/shell-completion/bash/loginctl
+++ systemd/shell-completion/bash/loginctl
@@ -38,6 +38,10 @@ _loginctl () {
[ARG]='--host -H --kill-who --property -p --signal -s --machine'
)
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
@ -144,16 +144,16 @@ Index: systemd-218/shell-completion/bash/loginctl
if __contains_word "$prev" ${OPTS[ARG]}; then
case $prev in
--signal|-s)
@@ -106,4 +110,4 @@ _loginctl () {
@@ -107,4 +111,4 @@ _loginctl () {
return 0
}
-complete -F _loginctl loginctl
+complete -o default -o bashdefault -F _loginctl loginctl
Index: systemd-218/shell-completion/bash/systemctl.in
Index: systemd/shell-completion/bash/systemctl.in
===================================================================
--- systemd-218.orig/shell-completion/bash/systemctl.in
+++ systemd-218/shell-completion/bash/systemctl.in
--- systemd.orig/shell-completion/bash/systemctl.in
+++ systemd/shell-completion/bash/systemctl.in
@@ -96,6 +96,10 @@ _systemctl () {
[ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root'
)
@ -171,10 +171,10 @@ Index: systemd-218/shell-completion/bash/systemctl.in
-complete -F _systemctl systemctl
+complete -o default -o bashdefault -F _systemctl systemctl
Index: systemd-218/shell-completion/bash/systemd-analyze
Index: systemd/shell-completion/bash/systemd-analyze
===================================================================
--- systemd-218.orig/shell-completion/bash/systemd-analyze
+++ systemd-218/shell-completion/bash/systemd-analyze
--- systemd.orig/shell-completion/bash/systemd-analyze
+++ systemd/shell-completion/bash/systemd-analyze
@@ -47,6 +47,10 @@ _systemd_analyze() {
[VERIFY]='verify'
)
@ -192,10 +192,10 @@ Index: systemd-218/shell-completion/bash/systemd-analyze
-complete -F _systemd_analyze systemd-analyze
+complete -o default -o bashdefault -F _systemd_analyze systemd-analyze
Index: systemd-218/shell-completion/bash/systemd-run
Index: systemd/shell-completion/bash/systemd-run
===================================================================
--- systemd-218.orig/shell-completion/bash/systemd-run
+++ systemd-218/shell-completion/bash/systemd-run
--- systemd.orig/shell-completion/bash/systemd-run
+++ systemd/shell-completion/bash/systemd-run
@@ -17,6 +17,13 @@
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
@ -228,13 +228,13 @@ Index: systemd-218/shell-completion/bash/systemd-run
-complete -F _systemd_run systemd-run
+complete -o default -o bashdefault -F _systemd_run systemd-run
Index: systemd-218/shell-completion/bash/timedatectl
Index: systemd/shell-completion/bash/timedatectl
===================================================================
--- systemd-218.orig/shell-completion/bash/timedatectl
+++ systemd-218/shell-completion/bash/timedatectl
--- systemd.orig/shell-completion/bash/timedatectl
+++ systemd/shell-completion/bash/timedatectl
@@ -30,6 +30,10 @@ _timedatectl() {
local OPTS='-h --help --version --adjust-system-clock --no-pager
--no-ask-password -H --host'
--no-ask-password -H --host --machine'
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
@ -249,10 +249,10 @@ Index: systemd-218/shell-completion/bash/timedatectl
-complete -F _timedatectl timedatectl
+complete -o default -o bashdefault -F _timedatectl timedatectl
Index: systemd-218/shell-completion/bash/udevadm
Index: systemd/shell-completion/bash/udevadm
===================================================================
--- systemd-218.orig/shell-completion/bash/udevadm
+++ systemd-218/shell-completion/bash/udevadm
--- systemd.orig/shell-completion/bash/udevadm
+++ systemd/shell-completion/bash/udevadm
@@ -36,6 +36,10 @@ _udevadm() {
local verbs=(info trigger settle control monitor hwdb test-builtin test)

View File

@ -4,14 +4,16 @@ Subject: create default links for primary cd_dvd drive
cdrom_id: created links for the default cd/dvd drive (bnc#783054).
---
rules/60-cdrom_id.rules | 5 ++++-
rules/60-cdrom_id.rules | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- systemd-206.orig/rules/60-cdrom_id.rules
+++ systemd-206/rules/60-cdrom_id.rules
@@ -15,6 +15,9 @@ ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdr
# enable the receiving of media eject button events
IMPORT{program}="cdrom_id --lock-media $devnode"
Index: systemd/rules/60-cdrom_id.rules
===================================================================
--- systemd.orig/rules/60-cdrom_id.rules
+++ systemd/rules/60-cdrom_id.rules
@@ -20,6 +20,9 @@ IMPORT{program}="cdrom_id --lock-media $
# stale mounts after ejecting
ENV{DISK_MEDIA_CHANGE}=="?*", ENV{ID_CDROM_MEDIA}!="?*", ENV{SYSTEMD_READY}="0"
-KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
+KERNEL=="sr0", ENV{ID_CDROM}=="1", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"

View File

@ -18,10 +18,10 @@ Signed-off-by: Jeff Mahoney <jeffm@suse.com>
src/udev/scsi_id/scsi_serial.c | 19 +++++++++++++------
4 files changed, 32 insertions(+), 7 deletions(-)
Index: systemd-218/rules/60-persistent-storage.rules
Index: systemd/rules/60-persistent-storage.rules
===================================================================
--- systemd-218.orig/rules/60-persistent-storage.rules
+++ systemd-218/rules/60-persistent-storage.rules
--- systemd.orig/rules/60-persistent-storage.rules
+++ systemd/rules/60-persistent-storage.rules
@@ -46,6 +46,10 @@ KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="par
KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}"
KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n"
@ -33,10 +33,10 @@ Index: systemd-218/rules/60-persistent-storage.rules
# firewire
KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}"
KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n"
Index: systemd-218/src/udev/scsi_id/scsi_id.c
Index: systemd/src/udev/scsi_id/scsi_id.c
===================================================================
--- systemd-218.orig/src/udev/scsi_id/scsi_id.c
+++ systemd-218/src/udev/scsi_id/scsi_id.c
--- systemd.orig/src/udev/scsi_id/scsi_id.c
+++ systemd/src/udev/scsi_id/scsi_id.c
@@ -43,6 +43,7 @@ static const struct option options[] = {
{ "replace-whitespace", no_argument, NULL, 'u' },
{ "sg-version", required_argument, NULL, 's' },
@ -53,15 +53,15 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
static bool reformat_serial = false;
static bool export = false;
static char vendor_str[64];
@@ -313,6 +315,7 @@ static void help(void) {
" -g,--whitelisted treat device as whitelisted\n"
" -u,--replace-whitespace replace all whitespace by underscores\n"
" -v,--verbose verbose logging\n"
@@ -316,6 +318,7 @@ static void help(void) {
" -g --whitelisted Treat device as whitelisted\n"
" -u --replace-whitespace Replace all whitespace by underscores\n"
" -v --verbose Verbose logging\n"
+ " --truncated-serial truncated serial for compatibility with systems configured with by-id links created by udev < 184\n"
" --version print version\n"
" -x,--export print values as environment keys\n"
" -h,--help print this help text\n\n");
@@ -385,6 +388,10 @@ static int set_options(struct udev *udev
" -x --export Print values as environment keys\n"
, program_invocation_short_name);
@@ -387,6 +390,10 @@ static int set_options(struct udev *udev
log_open();
break;
@ -72,7 +72,7 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
case 'V':
printf("%s\n", VERSION);
exit(0);
@@ -526,6 +533,9 @@ static int scsi_id(struct udev *udev, ch
@@ -528,6 +535,9 @@ static int scsi_id(struct udev *udev, ch
util_replace_whitespace(dev_scsi.serial, serial_str, sizeof(serial_str));
util_replace_chars(serial_str, NULL);
printf("ID_SERIAL=%s\n", serial_str);
@ -82,7 +82,7 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
util_replace_whitespace(dev_scsi.serial_short, serial_str, sizeof(serial_str));
util_replace_chars(serial_str, NULL);
printf("ID_SERIAL_SHORT=%s\n", serial_str);
@@ -556,7 +566,10 @@ static int scsi_id(struct udev *udev, ch
@@ -558,7 +568,10 @@ static int scsi_id(struct udev *udev, ch
if (reformat_serial) {
char serial_str[MAX_SERIAL_LEN];
@ -94,10 +94,10 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
util_replace_chars(serial_str, NULL);
printf("%s\n", serial_str);
goto out;
Index: systemd-218/src/udev/scsi_id/scsi_id.h
Index: systemd/src/udev/scsi_id/scsi_id.h
===================================================================
--- systemd-218.orig/src/udev/scsi_id/scsi_id.h
+++ systemd-218/src/udev/scsi_id/scsi_id.h
--- systemd.orig/src/udev/scsi_id/scsi_id.h
+++ systemd/src/udev/scsi_id/scsi_id.h
@@ -43,6 +43,7 @@ struct scsi_id_device {
char kernel[64];
char serial[MAX_SERIAL_LEN];
@ -106,10 +106,10 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.h
int use_sg;
/* Always from page 0x80 e.g. 'B3G1P8500RWT' - may not be unique */
Index: systemd-218/src/udev/scsi_id/scsi_serial.c
Index: systemd/src/udev/scsi_id/scsi_serial.c
===================================================================
--- systemd-218.orig/src/udev/scsi_id/scsi_serial.c
+++ systemd-218/src/udev/scsi_id/scsi_serial.c
--- systemd.orig/src/udev/scsi_id/scsi_serial.c
+++ systemd/src/udev/scsi_id/scsi_serial.c
@@ -96,7 +96,8 @@ static const char hex_str[]="0123456789a
static int do_scsi_page80_inquiry(struct udev *udev,

View File

@ -1,19 +1,24 @@
Index: systemd-210/Makefile.am
---
Makefile.am | 1 +
rules/60-ssd-scheduler.rules | 11 +++++++++++
2 files changed, 12 insertions(+)
Index: systemd/Makefile.am
===================================================================
--- systemd-210.orig/Makefile.am
+++ systemd-210/Makefile.am
@@ -2546,6 +2546,7 @@ dist_udevrules_DATA += \
--- systemd.orig/Makefile.am
+++ systemd/Makefile.am
@@ -3576,6 +3576,7 @@ dist_udevrules_DATA += \
rules/60-persistent-input.rules \
rules/60-persistent-alsa.rules \
rules/60-persistent-storage.rules \
+ rules/60-ssd-scheduler.rules \
rules/64-btrfs.rules \
rules/75-net-description.rules \
rules/75-tty-description.rules \
Index: systemd-210/rules/60-ssd-scheduler.rules
rules/70-mouse.rules \
rules/70-touchpad.rules \
Index: systemd/rules/60-ssd-scheduler.rules
===================================================================
--- /dev/null
+++ systemd-210/rules/60-ssd-scheduler.rules
+++ systemd/rules/60-ssd-scheduler.rules
@@ -0,0 +1,11 @@
+# do not edit this file, it will be overwritten on update
+

View File

@ -1,16 +1,16 @@
---
Makefile.am | 19 ++++
src/udev/rootsymlink_generator/rootsymlink_generator.c | 65 +++++++++++++++++
Makefile.am | 19 +++++
src/udev/rootsymlink_generator/rootsymlink_generator.c | 57 +++++++++++++++++
units/systemd-udev-root-symlink.service | 10 ++
units/systemd-udev-root-symlink.service.in | 10 ++
4 files changed, 104 insertions(+)
4 files changed, 96 insertions(+)
Index: systemd-218/Makefile.am
Index: systemd/Makefile.am
===================================================================
--- systemd-218.orig/Makefile.am
+++ systemd-218/Makefile.am
@@ -3660,6 +3660,25 @@ EXTRA_DIST += \
test/rule-syntax-check.py
--- systemd.orig/Makefile.am
+++ systemd/Makefile.am
@@ -3862,6 +3862,25 @@ EXTRA_DIST += \
# ------------------------------------------------------------------------------
+rootsymlink_generator_SOURCES = \
@ -35,11 +35,11 @@ Index: systemd-218/Makefile.am
ata_id_SOURCES = \
src/udev/ata_id/ata_id.c
Index: systemd-218/src/udev/rootsymlink_generator/rootsymlink_generator.c
Index: systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c
===================================================================
--- /dev/null
+++ systemd-218/src/udev/rootsymlink_generator/rootsymlink_generator.c
@@ -0,0 +1,65 @@
+++ systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2014-2015 Robert Milasan <rmilasan@suse.com>
+ *
@ -73,42 +73,34 @@ Index: systemd-218/src/udev/rootsymlink_generator/rootsymlink_generator.c
+
+int main(void)
+{
+ char filename[BUFFER_SIZE], buf[BUFFER_SIZE];
+ struct stat statbuf;
+ int fd;
+
+ if (stat(_ROOTDEV_, &statbuf) != 0)
+ if (stat(_ROOTDEV_, &statbuf) < 0)
+ return 1;
+
+ if (major(statbuf.st_dev) > 0) {
+ int fd = -1;
+ char filename[BUFFER_SIZE];
+
+ if (mkdir(_PATH_, 0755) != 0 && errno != EEXIST)
+ return errno;
+
+ snprintf(filename, BUFFER_SIZE, "%s/%s", _PATH_, _FILE_);
+
+ if ((fd = open(filename, O_CREAT|O_WRONLY|O_TRUNC, 0644)) == -1)
+ return errno;
+ else {
+ char buf[BUFFER_SIZE];
+
+ snprintf(buf, BUFFER_SIZE, "ACTION==\"add|change\", SUBSYSTEM==\"block\", ENV{MAJOR}==\"%d\", ENV{MINOR}==\"%d\", SYMLINK+=\"root\"\n",
+ major(statbuf.st_dev), minor(statbuf.st_dev));
+
+ if (write(fd, buf, strlen(buf)) == -1)
+ return errno;
+
+ if (close(fd) == -1)
+ return errno;
+ }
+ }
+
+ if (major(statbuf.st_dev) <= 0)
+ return 0;
+ if (mkdir(_PATH_, 0755) < 0 && errno != EEXIST)
+ return errno;
+ snprintf(filename, BUFFER_SIZE, "%s/%s", _PATH_, _FILE_);
+ fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0644);
+ if (fd < 0)
+ return errno;
+ snprintf(buf, BUFFER_SIZE,
+ "ACTION==\"add|change\", SUBSYSTEM==\"block\", "
+ "ENV{MAJOR}==\"%d\", ENV{MINOR}==\"%d\", SYMLINK+=\"root\"\n",
+ major(statbuf.st_dev), minor(statbuf.st_dev));
+ if (write(fd, buf, strlen(buf)) < 0)
+ return errno;
+ if (close(fd) < 0)
+ return errno;
+ return 0;
+}
Index: systemd-218/units/systemd-udev-root-symlink.service
Index: systemd/units/systemd-udev-root-symlink.service
===================================================================
--- /dev/null
+++ systemd-218/units/systemd-udev-root-symlink.service
+++ systemd/units/systemd-udev-root-symlink.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Rule generator for /dev/root symlink
@ -120,10 +112,10 @@ Index: systemd-218/units/systemd-udev-root-symlink.service
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/lib/udev/rootsymlink-generator
Index: systemd-218/units/systemd-udev-root-symlink.service.in
Index: systemd/units/systemd-udev-root-symlink.service.in
===================================================================
--- /dev/null
+++ systemd-218/units/systemd-udev-root-symlink.service.in
+++ systemd/units/systemd-udev-root-symlink.service.in
@@ -0,0 +1,10 @@
+[Unit]
+Description=Rule generator for /dev/root symlink

View File

@ -7,10 +7,10 @@ forward suspend/hibernation calls to pm-utils, if installed (bnc#790157)
src/sleep/sleep.c | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
Index: systemd-218/src/sleep/sleep.c
Index: systemd/src/sleep/sleep.c
===================================================================
--- systemd-218.orig/src/sleep/sleep.c
+++ systemd-218/src/sleep/sleep.c
--- systemd.orig/src/sleep/sleep.c
+++ systemd/src/sleep/sleep.c
@@ -24,6 +24,7 @@
#include <errno.h>
#include <string.h>
@ -39,7 +39,7 @@ Index: systemd-218/src/sleep/sleep.c
return r;
}
@@ -96,6 +95,8 @@ static int execute(char **modes, char **
@@ -97,6 +96,8 @@ static int execute(char **modes, char **
int r;
_cleanup_fclose_ FILE *f = NULL;
@ -48,15 +48,15 @@ Index: systemd-218/src/sleep/sleep.c
/* This file is opened first, so that if we hit an error,
* we can abort before modifying any state. */
f = fopen("/sys/power/state", "we");
@@ -106,6 +107,7 @@ static int execute(char **modes, char **
@@ -107,6 +108,7 @@ static int execute(char **modes, char **
r = write_mode(modes);
if (r < 0)
return r;
+ }
execute_directory(SYSTEM_SLEEP_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments);
execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments);
@@ -114,8 +116,10 @@ static int execute(char **modes, char **
@@ -115,8 +117,10 @@ static int execute(char **modes, char **
LOG_MESSAGE("Suspending system..."),
"SLEEP=%s", arg_verb,
NULL);
@ -68,7 +68,7 @@ Index: systemd-218/src/sleep/sleep.c
if (r < 0)
return r;
@@ -155,6 +159,7 @@ static int parse_argv(int argc, char *ar
@@ -156,6 +160,7 @@ static int parse_argv(int argc, char *ar
};
int c;
@ -76,7 +76,7 @@ Index: systemd-218/src/sleep/sleep.c
assert(argc >= 0);
assert(argv);
@@ -192,6 +197,18 @@ static int parse_argv(int argc, char *ar
@@ -193,6 +198,18 @@ static int parse_argv(int argc, char *ar
return -EINVAL;
}

View File

@ -13,10 +13,10 @@ systemd unit drop-in files to add dependencies
create mode 100644 src/insserv-generator/Makefile
create mode 100644 src/insserv-generator/insserv-generator.c
Index: systemd-218/Makefile.am
Index: systemd/Makefile.am
===================================================================
--- systemd-218.orig/Makefile.am
+++ systemd-218/Makefile.am
--- systemd.orig/Makefile.am
+++ systemd/Makefile.am
@@ -399,6 +399,7 @@ rootlibexec_PROGRAMS += \
endif
@ -25,7 +25,7 @@ Index: systemd-218/Makefile.am
systemd-getty-generator \
systemd-fstab-generator \
systemd-system-update-generator \
@@ -2286,6 +2287,14 @@ systemd_delta_LDADD = \
@@ -2328,6 +2329,14 @@ systemd_delta_LDADD = \
libsystemd-shared.la
# ------------------------------------------------------------------------------
@ -40,10 +40,10 @@ Index: systemd-218/Makefile.am
systemd_getty_generator_SOURCES = \
src/getty-generator/getty-generator.c
Index: systemd-218/src/insserv-generator/Makefile
Index: systemd/src/insserv-generator/Makefile
===================================================================
--- /dev/null
+++ systemd-218/src/insserv-generator/Makefile
+++ systemd/src/insserv-generator/Makefile
@@ -0,0 +1,28 @@
+# This file is part of systemd.
+#
@ -73,10 +73,10 @@ Index: systemd-218/src/insserv-generator/Makefile
+ $(MAKE) -C .. clean
+
+.PHONY: all clean
Index: systemd-218/src/insserv-generator/insserv-generator.c
Index: systemd/src/insserv-generator/insserv-generator.c
===================================================================
--- /dev/null
+++ systemd-218/src/insserv-generator/insserv-generator.c
+++ systemd/src/insserv-generator/insserv-generator.c
@@ -0,0 +1,312 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
@ -354,7 +354,7 @@ Index: systemd-218/src/insserv-generator/insserv-generator.c
+
+ while ((de = readdir(d))) {
+ char *path = NULL;
+ if (ignore_file(de->d_name))
+ if (hidden_file(de->d_name))
+ continue;
+
+ path = strjoin("/etc/insserv.conf.d/", de->d_name, NULL);

View File

@ -1,143 +1,135 @@
---
src/journal/catalog.c | 18 +++++++++++++++++-
src/journal/journal-authenticate.c | 4 ++--
src/journal/journal-file.c | 2 +-
src/journal/journald-kmsg.c | 2 +-
src/journal/mmap-cache.c | 22 +++++++++++++++++++++-
5 files changed, 42 insertions(+), 6 deletions(-)
From: werner@suse.de
Upstream: marked as openSUSE-specific fix originally, but may well
worth be to be sent upstream.
Index: systemd-218/src/journal/catalog.c
Original description:
(none)
Notes [jengelh@inai.de]:
MAP_NONBLOCK is documented (mmap(2) in man-pages-3.69+) to render
MAP_POPULATE ineffective. Why do we have it?
What is the rationale for MAP_STACK?
---
src/journal/catalog.c | 12 +++++++++++-
src/journal/journal-authenticate.c | 7 +++++--
src/journal/journald-kmsg.c | 3 ++-
src/journal/mmap-cache.c | 16 +++++++++++++++-
4 files changed, 33 insertions(+), 5 deletions(-)
Index: systemd/src/journal/catalog.c
===================================================================
--- systemd-218.orig/src/journal/catalog.c
+++ systemd-218/src/journal/catalog.c
@@ -471,9 +471,19 @@ finish:
--- systemd.orig/src/journal/catalog.c
+++ systemd/src/journal/catalog.c
@@ -470,6 +470,10 @@ finish:
static int open_mmap(const char *database, int *_fd, struct stat *_st, void **_p) {
const CatalogHeader *h;
+ static const struct {
+ const int index;
+ int advise;
+ } advises[] = {
+ {0,MADV_WILLNEED},
+ {1,MADV_SEQUENTIAL},
+ {2,MADV_DONTDUMP},
+ {3,MADV_DONTFORK}
+ };
+ static const unsigned int advice[] =
+ {MADV_WILLNEED, MADV_SEQUENTIAL, MADV_DONTDUMP, MADV_DONTFORK};
+ unsigned int n;
+ size_t psize;
int fd;
void *p;
struct stat st;
+ size_t psize;
assert(_fd);
assert(_st);
@@ -493,11 +503,17 @@ static int open_mmap(const char *databas
@@ -492,12 +496,18 @@ static int open_mmap(const char *databas
return -EINVAL;
}
- p = mmap(NULL, PAGE_ALIGN(st.st_size), PROT_READ, MAP_SHARED, fd, 0);
+ psize = PAGE_ALIGN(st.st_size);
+ p = mmap(NULL, psize, PROT_READ, MAP_SHARED|MAP_POPULATE|MAP_NONBLOCK, fd, 0);
+ p = mmap(NULL, psize, PROT_READ, MAP_SHARED | MAP_POPULATE |
+ MAP_NONBLOCK, fd, 0);
if (p == MAP_FAILED) {
safe_close(fd);
return -errno;
}
+ for (size_t n = 0; n < sizeof(advises) / sizeof(*advises); ++n) {
+ int r = madvise(p, psize, advises[n].advise);
+ if (r < 0)
+ log_warning("Failed to give advice about use of memory: %m");
+ }
+ for (n = 0; n < sizeof(advice) / sizeof(*advice); ++n)
+ if (madvise(p, psize, advice[n]) < 0)
+ log_warning("Failed to give advice about use of memory: %m");
+
h = p;
if (memcmp(h->signature, CATALOG_SIGNATURE, sizeof(h->signature)) != 0 ||
Index: systemd-218/src/journal/journal-authenticate.c
le64toh(h->header_size) < sizeof(CatalogHeader) ||
Index: systemd/src/journal/journal-authenticate.c
===================================================================
--- systemd-218.orig/src/journal/journal-authenticate.c
+++ systemd-218/src/journal/journal-authenticate.c
@@ -355,7 +355,7 @@ int journal_file_fss_load(JournalFile *f
--- systemd.orig/src/journal/journal-authenticate.c
+++ systemd/src/journal/journal-authenticate.c
@@ -355,7 +355,8 @@ int journal_file_fss_load(JournalFile *f
goto finish;
}
- m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ, MAP_SHARED, fd, 0);
+ m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ, MAP_SHARED|MAP_STACK, fd, 0);
+ m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ,
+ MAP_SHARED | MAP_STACK, fd, 0);
if (m == MAP_FAILED) {
m = NULL;
r = -errno;
@@ -399,7 +399,7 @@ int journal_file_fss_load(JournalFile *f
@@ -399,7 +400,9 @@ int journal_file_fss_load(JournalFile *f
goto finish;
}
- f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_STACK, fd, 0);
+ f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size),
+ PROT_READ | PROT_WRITE, MAP_SHARED | MAP_STACK,
+ fd, 0);
if (f->fss_file == MAP_FAILED) {
f->fss_file = NULL;
r = -errno;
Index: systemd-218/src/journal/journal-file.c
Index: systemd/src/journal/journald-kmsg.c
===================================================================
--- systemd-218.orig/src/journal/journal-file.c
+++ systemd-218/src/journal/journal-file.c
@@ -2559,7 +2559,7 @@ int journal_file_open(
goto fail;
}
- f->header = mmap(NULL, PAGE_ALIGN(sizeof(Header)), prot_from_flags(flags), MAP_SHARED, f->fd, 0);
+ f->header = mmap(NULL, PAGE_ALIGN(sizeof(Header)), prot_from_flags(flags), MAP_SHARED|MAP_STACK, f->fd, 0);
if (f->header == MAP_FAILED) {
f->header = NULL;
r = -errno;
Index: systemd-218/src/journal/journald-kmsg.c
===================================================================
--- systemd-218.orig/src/journal/journald-kmsg.c
+++ systemd-218/src/journal/journald-kmsg.c
@@ -455,7 +455,7 @@ int server_open_kernel_seqnum(Server *s)
--- systemd.orig/src/journal/journald-kmsg.c
+++ systemd/src/journal/journald-kmsg.c
@@ -454,7 +454,8 @@ int server_open_kernel_seqnum(Server *s)
return 0;
}
- p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_STACK, fd, 0);
+ p = mmap(NULL, sizeof(uint64_t), PROT_READ | PROT_WRITE,
+ MAP_SHARED | MAP_STACK, fd, 0);
if (p == MAP_FAILED) {
log_error_errno(errno, "Failed to map sequential number file, ignoring: %m");
return 0;
Index: systemd-218/src/journal/mmap-cache.c
Index: systemd/src/journal/mmap-cache.c
===================================================================
--- systemd-218.orig/src/journal/mmap-cache.c
+++ systemd-218/src/journal/mmap-cache.c
@@ -446,6 +446,15 @@ static int add_mmap(
void **ret,
void **release_cookie) {
--- systemd.orig/src/journal/mmap-cache.c
+++ systemd/src/journal/mmap-cache.c
@@ -467,11 +467,14 @@ static int add_mmap(
struct stat *st,
void **ret) {
+ static const struct {
+ const int index;
+ int vise;
+ } ad[] = {
+ {0, MADV_WILLNEED},
+ {1, MADV_SEQUENTIAL},
+ {2, MADV_DONTDUMP},
+ {3, MADV_DONTFORK}
+ };
+ static const unsigned int advice[] =
+ {MADV_WILLNEED, MADV_SEQUENTIAL, MADV_DONTDUMP, MADV_DONTFORK};
uint64_t woffset, wsize;
Context *c;
FileDescriptor *f;
@@ -488,7 +497,7 @@ static int add_mmap(
Window *w;
void *d;
+ unsigned int n;
int r;
assert(m);
@@ -510,7 +513,8 @@ static int add_mmap(
}
for (;;) {
- d = mmap(NULL, wsize, prot, MAP_SHARED, fd, woffset);
+ d = mmap(NULL, wsize, prot, MAP_SHARED|MAP_POPULATE|MAP_NONBLOCK, fd, woffset);
+ d = mmap(NULL, wsize, prot, MAP_SHARED | MAP_POPULATE |
+ MAP_NONBLOCK, fd, woffset);
if (d != MAP_FAILED)
break;
if (errno != ENOMEM)
@@ -501,6 +510,17 @@ static int add_mmap(
@@ -523,6 +527,16 @@ static int add_mmap(
return -ENOMEM;
}
+ for (size_t n = 0; n < sizeof(ad) / sizeof(*ad); ++n) {
+ if (ad[n].vise == MADV_DONTFORK) {
+ for (n = 0; n < sizeof(advice) / sizeof(*advice); ++n) {
+ if (advice[n] == MADV_DONTFORK) {
+ int flags = fcntl(fd, F_GETFD);
+ if (flags < 0 || !(flags & FD_CLOEXEC))
+ continue;
+ }
+ r = madvise(d, wsize, ad[n].vise);
+ if (r < 0)
+ if (madvise(d, wsize, advice[n]) < 0)
+ log_warning("Failed to give advice about use of memory: %m");
+ }
+

View File

@ -1,13 +1,18 @@
From: werner@suse.de
Date: Tue Jan 20 11:33:59 UTC 2015
---
src/locale/kbd-model-map | 13 +++++++++++++
1 file changed, 13 insertions(+)
--- src/locale/kbd-model-map
+++ src/locale/kbd-model-map 2015-01-20 11:31:38.357518811 +0000
@@ -63,3 +63,16 @@ by by,us pc105 - terminate:ctrl_alt_
il il pc105 - terminate:ctrl_alt_bksp
kazakh kz,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
Index: systemd/src/locale/kbd-model-map
===================================================================
--- systemd.orig/src/locale/kbd-model-map
+++ systemd/src/locale/kbd-model-map
@@ -66,3 +66,16 @@ lt.baltic lt pc105 - terminate:ctrl_a
lt.l4 lt pc105 - terminate:ctrl_alt_bksp
lt lt pc105 - terminate:ctrl_alt_bksp
khmer kh,us pc105 - terminate:ctrl_alt_bksp
+# Additional layouts offered by YaST
+Pl02 pl pc105 - terminate:ctrl_alt_bksp
+arabic ara,us pc105 - terminate:ctrl_alt_bksp,grp:shift_toggle

View File

@ -1,14 +1,13 @@
---
Makefile.am | 4 ++++
Makefile.in | 2 +-
configure.ac | 4 ----
3 files changed, 5 insertions(+), 5 deletions(-)
2 files changed, 4 insertions(+), 4 deletions(-)
Index: systemd-218/Makefile.am
Index: systemd/Makefile.am
===================================================================
--- systemd-218.orig/Makefile.am
+++ systemd-218/Makefile.am
@@ -4695,6 +4695,10 @@ systemd_cryptsetup_CFLAGS = \
--- systemd.orig/Makefile.am
+++ systemd/Makefile.am
@@ -4789,6 +4789,10 @@ systemd_cryptsetup_CFLAGS = \
$(AM_CFLAGS) \
$(LIBCRYPTSETUP_CFLAGS)
@ -19,23 +18,10 @@ Index: systemd-218/Makefile.am
systemd_cryptsetup_LDADD = \
libsystemd-label.la \
libudev-internal.la \
Index: systemd-218/Makefile.in
Index: systemd/configure.ac
===================================================================
--- systemd-218.orig/Makefile.in
+++ systemd-218/Makefile.in
@@ -11109,7 +11109,7 @@ src/cryptsetup/systemd_cryptsetup-crypts
systemd-cryptsetup$(EXEEXT): $(systemd_cryptsetup_OBJECTS) $(systemd_cryptsetup_DEPENDENCIES) $(EXTRA_systemd_cryptsetup_DEPENDENCIES)
@rm -f systemd-cryptsetup$(EXEEXT)
- $(AM_V_CCLD)$(systemd_cryptsetup_LINK) $(systemd_cryptsetup_OBJECTS) $(systemd_cryptsetup_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(systemd_cryptsetup_LINK) $(systemd_cryptsetup_OBJECTS) $(systemd_cryptsetup_LDFLAGS) $(systemd_cryptsetup_LDADD) $(LIBS)
src/cryptsetup/cryptsetup-generator.$(OBJEXT): \
src/cryptsetup/$(am__dirstamp) \
src/cryptsetup/$(DEPDIR)/$(am__dirstamp)
Index: systemd-218/configure.ac
===================================================================
--- systemd-218.orig/configure.ac
+++ systemd-218/configure.ac
--- systemd.orig/configure.ac
+++ systemd/configure.ac
@@ -206,10 +206,6 @@ AS_CASE([$CC], [*clang*],
-Wno-gnu-variable-sized-type-not-at-end \
])])

View File

@ -1,12 +1,12 @@
---
src/fstab-generator/fstab-generator.c | 46 +++++++++++++++++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-)
src/fstab-generator/fstab-generator.c | 45 +++++++++++++++++++++++++++++++++-
1 file changed, 44 insertions(+), 1 deletion(-)
Index: systemd-218/src/fstab-generator/fstab-generator.c
Index: systemd/src/fstab-generator/fstab-generator.c
===================================================================
--- systemd-218.orig/src/fstab-generator/fstab-generator.c
+++ systemd-218/src/fstab-generator/fstab-generator.c
@@ -47,6 +47,50 @@ static char *arg_usr_what = NULL;
--- systemd.orig/src/fstab-generator/fstab-generator.c
+++ systemd/src/fstab-generator/fstab-generator.c
@@ -48,6 +48,49 @@ static char *arg_usr_what = NULL;
static char *arg_usr_fstype = NULL;
static char *arg_usr_options = NULL;
@ -53,11 +53,10 @@ Index: systemd-218/src/fstab-generator/fstab-generator.c
+ return 1;
+}
+
+
static int mount_find_pri(struct mntent *me, int *ret) {
char *end, *opt;
unsigned long r;
@@ -141,7 +185,7 @@ static int add_swap(
static int add_swap(
const char *what,
struct mntent *me,
@@ -118,7 +161,7 @@ static int add_swap(
if (r < 0)
return r;

View File

@ -4,23 +4,23 @@
units/rescue.service.in | 3 ++-
3 files changed, 6 insertions(+), 2 deletions(-)
Index: systemd-218/units/console-shell.service.m4.in
Index: systemd/units/console-shell.service.m4.in
===================================================================
--- systemd-218.orig/units/console-shell.service.m4.in
+++ systemd-218/units/console-shell.service.m4.in
--- systemd.orig/units/console-shell.service.m4.in
+++ systemd/units/console-shell.service.m4.in
@@ -17,6 +17,8 @@ Before=getty.target
[Service]
Environment=HOME=/root
WorkingDirectory=/root
+ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth --wait
ExecStart=-/usr/sbin/sulogin
ExecStart=-@SULOGIN@
ExecStopPost=-@SYSTEMCTL@ poweroff
Type=idle
Index: systemd-218/units/emergency.service.in
Index: systemd/units/emergency.service.in
===================================================================
--- systemd-218.orig/units/emergency.service.in
+++ systemd-218/units/emergency.service.in
--- systemd.orig/units/emergency.service.in
+++ systemd/units/emergency.service.in
@@ -17,7 +17,8 @@ Before=shutdown.target
[Service]
Environment=HOME=/root
@ -29,12 +29,12 @@ Index: systemd-218/units/emergency.service.in
+ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth --wait
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\ntry again to boot into default mode.'
ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default"
Type=idle
Index: systemd-218/units/rescue.service.in
Index: systemd/units/rescue.service.in
===================================================================
--- systemd-218.orig/units/rescue.service.in
+++ systemd-218/units/rescue.service.in
--- systemd.orig/units/rescue.service.in
+++ systemd/units/rescue.service.in
@@ -16,7 +16,8 @@ Before=shutdown.target
[Service]
Environment=HOME=/root
@ -43,5 +43,5 @@ Index: systemd-218/units/rescue.service.in
+ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth --wait
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.'
ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default"
Type=idle

View File

@ -6,11 +6,11 @@ This solves the bug bnc#868439
man/systemctl.xml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Index: systemd-218/man/systemctl.xml
Index: systemd/man/systemctl.xml
===================================================================
--- systemd-218.orig/man/systemctl.xml
+++ systemd-218/man/systemctl.xml
@@ -446,7 +446,7 @@ along with systemd; If not, see <http://
--- systemd.orig/man/systemctl.xml
+++ systemd/man/systemctl.xml
@@ -445,7 +445,7 @@ along with systemd; If not, see <http://
<term><option>--force</option></term>
<listitem>
@ -19,10 +19,10 @@ Index: systemd-218/man/systemctl.xml
any existing conflicting symlinks.</para>
<para>When used with <command>halt</command>,
@@ -1187,6 +1187,8 @@ kobject-uevent 1 systemd-udevd-kernel.so
<listitem>
<para>Set the default target to boot into. Command links
<filename>default.target</filename> to the given unit.</para>
@@ -1215,6 +1215,8 @@ kobject-uevent 1 systemd-udevd-kernel.so
<para>Return the default target to boot into. This returns
the target unit name <filename>default.target</filename>
is aliased (symlinked) to.</para>
+ <para>If combined with <option>--force</option>, override
+ an already existing symlink for the default target.</para>
</listitem>

3
systemd-218.g1050.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b1bccbdd9b6832dafaed409ad0c8c076a7aaaf706615ecbb905d9def291b1cb0
size 3358908

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1b0768b53b6c6d813a93a4b8fe1f80cf53561b09075010a97c7aa08eee3fd59b
size 3782276

View File

@ -1,29 +1,27 @@
---
man/tmpfiles.d.xml | 5 +++++
src/tmpfiles/tmpfiles.c | 42 ++++++++++++++++++++++++++++++++++++++----
2 files changed, 43 insertions(+), 4 deletions(-)
man/tmpfiles.d.xml | 3 +++
src/tmpfiles/tmpfiles.c | 48 ++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 43 insertions(+), 8 deletions(-)
Index: systemd-218/man/tmpfiles.d.xml
Index: systemd/man/tmpfiles.d.xml
===================================================================
--- systemd-218.orig/man/tmpfiles.d.xml
+++ systemd-218/man/tmpfiles.d.xml
@@ -545,6 +545,11 @@ r! /tmp/.X[0-9]*-lock</programlisting>
and <varname>w</varname> may be used to
specify a short string that is written to the
file, suffixed by a newline. For
+ <varname>x</varname>, <varname>X</varname>,
+ a comma separated list of usernames. If given,
+ only paths belonging to these users will be
+ excluded during directory cleanup.
+ Ignored for all other lines. For
<varname>C</varname>, specifies the source file
or directory. For <varname>t</varname> determines
extended attributes to be set. Ignored for all other lines.</para>
Index: systemd-218/src/tmpfiles/tmpfiles.c
--- systemd.orig/man/tmpfiles.d.xml
+++ systemd/man/tmpfiles.d.xml
@@ -489,6 +489,9 @@
<varname>f</varname>, <varname>F</varname>, and
<varname>w</varname> may be used to specify a short string that
is written to the file, suffixed by a newline. For
+ <varname>x</varname>, <varname>X</varname>, a comma separated list of
+ usernames. If given, only paths belonging to these users will be excluded
+ during directory cleanup. Ignored for all other lines. For
<varname>C</varname>, specifies the source file or
directory. For <varname>t</varname> determines extended
attributes to be set. For <varname>a</varname> determines
Index: systemd/src/tmpfiles/tmpfiles.c
===================================================================
--- systemd-218.orig/src/tmpfiles/tmpfiles.c
+++ systemd-218/src/tmpfiles/tmpfiles.c
@@ -278,6 +278,7 @@ static int dir_cleanup(
--- systemd.orig/src/tmpfiles/tmpfiles.c
+++ systemd/src/tmpfiles/tmpfiles.c
@@ -345,6 +345,7 @@ static int dir_cleanup(
struct timespec times[2];
bool deleted = false;
int r = 0;
@ -31,52 +29,57 @@ Index: systemd-218/src/tmpfiles/tmpfiles.c
while ((dent = readdir(d))) {
struct stat s;
@@ -322,11 +323,44 @@ static int dir_cleanup(
@@ -395,14 +396,45 @@ static int dir_cleanup(
}
/* Is there an item configured for this path? */
- if (hashmap_get(items, sub_path))
- if (hashmap_get(items, sub_path)) {
- log_debug("Ignoring \"%s\": a separate entry exists.", sub_path);
- continue;
- }
-
- if (find_glob(globs, sub_path)) {
- log_debug("Ignoring \"%s\": a separate glob exists.", sub_path);
- continue;
+ bool found_glob = false;
+ found = hashmap_get(items, sub_path);
- if (find_glob(globs, sub_path))
- continue;
+ if (!found)
+ found = find_glob(globs, sub_path);
+
+ if (found) {
+ /* evaluate username arguments in ignore statements */
+ if (found->type == IGNORE_PATH || found->type == IGNORE_DIRECTORY_PATH) {
+ if (!found->argument) {
+ continue;
+ } else {
+ struct passwd *pw;
+ char *userfound = NULL, *args = strdup(found->argument);
+ bool match = false;
+ uid_t uid = -1;
+
+ while ((userfound = strsep(&args, ","))) {
+ pw = getpwnam(userfound);
+
+ if (!pw)
+ log_error("Unknown user '%s' in ignore statement.", userfound);
+ else {
+ uid = pw->pw_uid;
+ if (s.st_uid == uid) {
+ match = true;
+ break;
+ }
+ }
+ }
+ if (match) {
+ found = NULL;
+ continue;
+ }
+ }
+ } else {
+ continue;
+ }
+ if (!found) {
+ found_glob = true;
+ found = find_glob(globs, sub_path);
+ }
+ if (found) {
+ struct passwd *pw;
+ char *userfound = NULL, *args;
+ bool match = false;
+ uid_t uid = -1;
+
+ /* evaluate username arguments in ignore statements */
+ if ((found->type != IGNORE_PATH && found->type != IGNORE_DIRECTORY_PATH) ||
+ !found->argument) {
+ if (found_glob)
+ log_debug("Ignoring \"%s\": a separate glob exists.", sub_path);
+ else
+ log_debug("Ignoring \"%s\": a separate entry exists.", sub_path);
+ continue;
+ }
+ args = strdup(found->argument);
+ assert_se(args != NULL);
+ while ((userfound = strsep(&args, ",")) != NULL) {
+ pw = getpwnam(userfound);
+ if (pw == NULL) {
+ log_error("Unknown user '%s' in ignore statement.", userfound);
+ continue;
+ }
+ uid = pw->pw_uid;
+ if (s.st_uid == uid) {
+ match = true;
+ break;
+ }
+ }
+ if (match) {
+ found = NULL;
+ continue;
+ }
}
if (S_ISDIR(s.st_mode)) {

View File

@ -3,12 +3,12 @@
src/shared/def.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
Index: systemd-218/src/libsystemd/sd-bus/sd-bus.c
Index: systemd/src/libsystemd/sd-bus/sd-bus.c
===================================================================
--- systemd-218.orig/src/libsystemd/sd-bus/sd-bus.c
+++ systemd-218/src/libsystemd/sd-bus/sd-bus.c
@@ -791,8 +791,8 @@ static int parse_container_unix_address(
machine = NULL;
--- systemd.orig/src/libsystemd/sd-bus/sd-bus.c
+++ systemd/src/libsystemd/sd-bus/sd-bus.c
@@ -809,8 +809,8 @@ static int parse_container_unix_address(
b->nspid = 0;
b->sockaddr.un.sun_family = AF_UNIX;
- strncpy(b->sockaddr.un.sun_path, "/var/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path));
@ -18,10 +18,10 @@ Index: systemd-218/src/libsystemd/sd-bus/sd-bus.c
return 0;
}
Index: systemd-218/src/shared/def.h
Index: systemd/src/shared/def.h
===================================================================
--- systemd-218.orig/src/shared/def.h
+++ systemd-218/src/shared/def.h
--- systemd.orig/src/shared/def.h
+++ systemd/src/shared/def.h
@@ -61,7 +61,7 @@
"/usr/lib/kbd/keymaps/\0"
#endif

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Mon Feb 16 10:18:18 UTC 2015 - jengelh@inai.de
- Update to systemd v218-1050-g38ab096
- Remove patches
use-usr-sbin-sulogin-for-emergency-service.patch (upstream fixed it)
- Reinstate and improve (remove huge indents from)
tty-ask-password-agent-on-console.patch,
0014-journald-with-journaling-FS.patch, rootsymlink_generator.
-------------------------------------------------------------------
Mon Feb 16 09:42:48 UTC 2015 - meissner@suse.com
@ -27,8 +37,6 @@ Fri Jan 9 18:48:28 UTC 2015 - jengelh@inai.de
N=no longer applies to source nor is it deemed needed;
K=killed: no longer applicable and too complex to resolve:
----
G 0002-rfkill-rework-how-we-generate-file-names-from-rfkill.patch
G avoid-assertion-if-invalid-address-familily-is-passed-to-g.patch
K service-flags-sysv-service-with-detected-pid-as-RemainAfte.patch
K remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch
K handle-SYSTEMCTL_OPTIONS-environment-variable.patch

View File

@ -1,7 +1,7 @@
#
# spec file for package systemd-mini
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -44,7 +44,7 @@
Name: systemd-mini
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 218
Version: 218.g1050
Release: 0
Summary: A System and Session Manager
License: LGPL-2.1+
@ -55,14 +55,18 @@ Provides: %{real} = %{version}-%{release}
BuildRequires: acl
BuildRequires: audit-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: fdupes
BuildRequires: gperf
BuildRequires: gtk-doc
BuildRequires: intltool
BuildRequires: libacl-devel
BuildRequires: libcap-devel
BuildRequires: libkmod-devel
BuildRequires: libsepol-devel
BuildRequires: libtool
BuildRequires: libtool
BuildRequires: pam-devel
BuildRequires: config(suse-module-tools)
%if 0%{?suse_version} > 1310
@ -139,7 +143,10 @@ Conflicts: filesystem < 11.5
Conflicts: mkinitrd < 2.7.0
Obsoletes: systemd-analyze < 201
Provides: systemd-analyze = %{version}
Source0: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz
#Git-Clone: git://anongit.freedesktop.org/systemd/systemd
#Snapshot: v218-1050-g38ab096
Source0: systemd-%{version}.tar.xz
%if ! 0%{?bootstrap}
Source1: systemd-rpmlintrc
%else
@ -196,8 +203,6 @@ Patch24: handle-etc-HOSTNAME.patch
Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
# PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
@ -252,6 +257,7 @@ Patch338: vhangup-on-all-consoles.patch
Patch345: shut-up-rpmlint-on-var-log-journal.patch
# PATCH-FIX-SUSE
Patch352: set-and-use-default-logconsole.patch
Patch362: tty-ask-password-agent-on-console.patch
# PATCH-FIX-SUSE Provide the /var/lock/subsys at start (bnc#889357)
Patch366: tomcat6-var-lock-subsys-legacy.patch
# PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162)
@ -260,7 +266,6 @@ Patch368: 0001-let-systemctl-completion-ignore-at-names.patch
Patch386: use-rndaddentropy-ioctl-to-load-random-seed.patch
# PATCH-FIX-SUSE AUDIT-0: Power button press at gdm login should not prompt for credentials (bnc#888612)
Patch430: 0001-bnc888612-logind-polkit-acpi.patch
# PATCH-FIX-SUSE added at 2014/10/24
Patch475: journald-advice-about-use-of-memory.patch
# PATCH-FIX-SUSE added at 2014/11/05
Patch490: watch_resolv.conf_for_become_changed.patch
@ -569,7 +574,7 @@ Requires(postun): systemd
systemd-journal-gatewayd serves journal events over the network using HTTP.
%prep
%setup -q -n systemd-%{version}
%setup -q -n systemd
echo "Checking whether upstream rpm macros changed..."
diff -au "%{S:10}" src/core/macros.systemd.in
@ -599,7 +604,6 @@ cp %{SOURCE7} m4/
%patch40 -p1
%patch41 -p1
%patch42 -p1
%patch46 -p1
%patch84 -p1
%patch86 -p1
%patch90 -p1
@ -627,17 +631,18 @@ cp %{SOURCE7} m4/
%patch338 -p1
%patch345 -p1
%patch352 -p1
%patch362 -p1
%patch366 -p1
%patch368 -p1
%patch386 -p1
%patch430 -p1
%patch475 -p1
%ifarch %arm
%patch38 -p1
%endif
%patch475 -p1
%patch490 -p1
%patch520 -p1
%patch521 -p0
%patch521 -p1
# udev patches
%patch1001 -p1
@ -744,7 +749,7 @@ cflags ()
esac
set +o noclobber
}
autoreconf -fiv
./autogen.sh
# prevent pre-generated and distributed files from re-building
find . -name "*.[1-8]" -exec touch '{}' '+';
export V=e
@ -810,19 +815,9 @@ make %{?_smp_mflags} update-man-list man
%endif
%install
# Use refreshed manual pages
for man in man/*.[0-9]
do
section=${man##*.}
test -d man/man${section} || continue
new=man/man${section}/${man##*/}
if test -s $new -a $new -nt $man
then
cp -p $new $man
else
sed -ri 's@"(systemd) 209"@"\1 %{version}"@' $man
fi
done
%if !0%{?bootstrap}
cp man/man[0-9]/*.[0-9] man/
%endif
make install DESTDIR="%buildroot"
# move to %{_lib}
@ -963,15 +958,6 @@ EOF
install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/
ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/
%if ! 0%{?bootstrap}
%if %{without python}
for man in systemd.directives.7 systemd.index.7
do
install -m 0644 man/$man %{buildroot}%{_mandir}/man7/
done
%endif
%endif
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed
@ -1295,6 +1281,7 @@ exit 0
%{_bindir}/systemd-path
%{_bindir}/systemd-sysusers
%{_bindir}/systemd-notify
%{_bindir}/systemd-hwdb
%{_bindir}/systemd-run
%{_bindir}/systemd-journalctl
%{_bindir}/journalctl
@ -1388,7 +1375,6 @@ exit 0
%{_prefix}/lib/sysusers.d/
/%{_lib}/security/pam_systemd.so
%config /etc/pam.d/systemd-user
%_libdir/libnss_resolve.so.2
%dir %{_libexecdir}/modules-load.d
%dir %{_sysconfdir}/modules-load.d
@ -1419,7 +1405,6 @@ exit 0
%if !0%{?bootstrap}
%config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf
%endif
%config(noreplace) %{_sysconfdir}/systemd/resolved.conf
%config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf
%config(noreplace) %{_sysconfdir}/systemd/system.conf
%config(noreplace) %{_sysconfdir}/systemd/logind.conf
@ -1428,7 +1413,7 @@ exit 0
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.network1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf
@ -1447,7 +1432,7 @@ exit 0
%{_datadir}/factory/
%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.network1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
@ -1456,6 +1441,7 @@ exit 0
%{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
%dir %{_datadir}/polkit-1
%dir %{_datadir}/polkit-1/actions
%{_datadir}/polkit-1/actions/org.freedesktop.machine1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
@ -1505,9 +1491,6 @@ exit 0
%{_datadir}/zsh/site-functions/*
%ghost %{_localstatedir}/lib/systemd/backlight
%ghost %{_localstatedir}/lib/systemd/random-seed
%if 0%{?suse_version} > 1310
%{_datadir}/pkgconfig/systemd.pc
%endif
%if ! 0%{?bootstrap}
%files bash-completion -f files.completion
@ -1531,9 +1514,7 @@ exit 0
%{_includedir}/systemd/sd-journal.h
%{_includedir}/systemd/sd-messages.h
%{_includedir}/systemd/_sd-common.h
%if 0%{?suse_version} <= 1310
%{_datadir}/pkgconfig/systemd.pc
%endif
%{_libdir}/pkgconfig/systemd.pc
%{_libdir}/pkgconfig/libsystemd.pc
%{_libdir}/pkgconfig/libsystemd-daemon.pc
%{_libdir}/pkgconfig/libsystemd-login.pc

View File

@ -5,20 +5,22 @@ Subject: systemd tmp safe defaults
Fix regression in the default for tmp auto-deletion (FATE#314974).
SUSE policy is to not clean /tmp by default.
---
tmpfiles.d/tmp.conf | 5 +++--
tmpfiles.d/tmp.conf | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--- systemd-206.orig/tmpfiles.d/tmp.conf
+++ systemd-206/tmpfiles.d/tmp.conf
Index: systemd/tmpfiles.d/tmp.conf
===================================================================
--- systemd.orig/tmpfiles.d/tmp.conf
+++ systemd/tmpfiles.d/tmp.conf
@@ -8,8 +8,9 @@
# See tmpfiles.d(5) for details
# Clear tmp directories separately, to make them easier to override
-d /tmp 1777 root root 10d
-d /var/tmp 1777 root root 30d
-v /tmp 1777 root root 10d
-v /var/tmp 1777 root root 30d
+# SUSE policy: we don't clean those directories
+d /tmp 1777 root root -
+d /var/tmp 1777 root root -
+v /tmp 1777 root root -
+v /var/tmp 1777 root root -
# Exclude namespace mountpoints created with PrivateTmp=yes
x /tmp/systemd-private-%b-*

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Mon Feb 16 10:18:18 UTC 2015 - jengelh@inai.de
- Update to systemd v218-1050-g38ab096
- Remove patches
use-usr-sbin-sulogin-for-emergency-service.patch (upstream fixed it)
- Reinstate and improve (remove huge indents from)
tty-ask-password-agent-on-console.patch,
0014-journald-with-journaling-FS.patch, rootsymlink_generator.
-------------------------------------------------------------------
Mon Feb 16 09:42:48 UTC 2015 - meissner@suse.com
@ -27,8 +37,6 @@ Fri Jan 9 18:48:28 UTC 2015 - jengelh@inai.de
N=no longer applies to source nor is it deemed needed;
K=killed: no longer applicable and too complex to resolve:
----
G 0002-rfkill-rework-how-we-generate-file-names-from-rfkill.patch
G avoid-assertion-if-invalid-address-familily-is-passed-to-g.patch
K service-flags-sysv-service-with-detected-pid-as-RemainAfte.patch
K remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch
K handle-SYSTEMCTL_OPTIONS-environment-variable.patch

View File

@ -1,7 +1,7 @@
#
# spec file for package systemd
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -42,7 +42,7 @@
Name: systemd
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 218
Version: 218.g1050
Release: 0
Summary: A System and Session Manager
License: LGPL-2.1+
@ -50,14 +50,18 @@ Group: System/Base
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: acl
BuildRequires: audit-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: fdupes
BuildRequires: gperf
BuildRequires: gtk-doc
BuildRequires: intltool
BuildRequires: libacl-devel
BuildRequires: libcap-devel
BuildRequires: libkmod-devel
BuildRequires: libsepol-devel
BuildRequires: libtool
BuildRequires: libtool
BuildRequires: pam-devel
BuildRequires: config(suse-module-tools)
%if 0%{?suse_version} > 1310
@ -134,7 +138,10 @@ Conflicts: filesystem < 11.5
Conflicts: mkinitrd < 2.7.0
Obsoletes: systemd-analyze < 201
Provides: systemd-analyze = %{version}
Source0: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz
#Git-Clone: git://anongit.freedesktop.org/systemd/systemd
#Snapshot: v218-1050-g38ab096
Source0: systemd-%{version}.tar.xz
%if ! 0%{?bootstrap}
Source1: systemd-rpmlintrc
%else
@ -191,8 +198,6 @@ Patch24: handle-etc-HOSTNAME.patch
Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
# PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
@ -247,6 +252,7 @@ Patch338: vhangup-on-all-consoles.patch
Patch345: shut-up-rpmlint-on-var-log-journal.patch
# PATCH-FIX-SUSE
Patch352: set-and-use-default-logconsole.patch
Patch362: tty-ask-password-agent-on-console.patch
# PATCH-FIX-SUSE Provide the /var/lock/subsys at start (bnc#889357)
Patch366: tomcat6-var-lock-subsys-legacy.patch
# PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162)
@ -255,7 +261,6 @@ Patch368: 0001-let-systemctl-completion-ignore-at-names.patch
Patch386: use-rndaddentropy-ioctl-to-load-random-seed.patch
# PATCH-FIX-SUSE AUDIT-0: Power button press at gdm login should not prompt for credentials (bnc#888612)
Patch430: 0001-bnc888612-logind-polkit-acpi.patch
# PATCH-FIX-SUSE added at 2014/10/24
Patch475: journald-advice-about-use-of-memory.patch
# PATCH-FIX-SUSE added at 2014/11/05
Patch490: watch_resolv.conf_for_become_changed.patch
@ -564,7 +569,7 @@ Requires(postun): systemd
systemd-journal-gatewayd serves journal events over the network using HTTP.
%prep
%setup -q -n systemd-%{version}
%setup -q -n systemd
echo "Checking whether upstream rpm macros changed..."
diff -au "%{S:10}" src/core/macros.systemd.in
@ -594,7 +599,6 @@ cp %{SOURCE7} m4/
%patch40 -p1
%patch41 -p1
%patch42 -p1
%patch46 -p1
%patch84 -p1
%patch86 -p1
%patch90 -p1
@ -622,17 +626,18 @@ cp %{SOURCE7} m4/
%patch338 -p1
%patch345 -p1
%patch352 -p1
%patch362 -p1
%patch366 -p1
%patch368 -p1
%patch386 -p1
%patch430 -p1
%patch475 -p1
%ifarch %arm
%patch38 -p1
%endif
%patch475 -p1
%patch490 -p1
%patch520 -p1
%patch521 -p0
%patch521 -p1
# udev patches
%patch1001 -p1
@ -739,7 +744,7 @@ cflags ()
esac
set +o noclobber
}
autoreconf -fiv
./autogen.sh
# prevent pre-generated and distributed files from re-building
find . -name "*.[1-8]" -exec touch '{}' '+';
export V=e
@ -805,19 +810,9 @@ make %{?_smp_mflags} update-man-list man
%endif
%install
# Use refreshed manual pages
for man in man/*.[0-9]
do
section=${man##*.}
test -d man/man${section} || continue
new=man/man${section}/${man##*/}
if test -s $new -a $new -nt $man
then
cp -p $new $man
else
sed -ri 's@"(systemd) 209"@"\1 %{version}"@' $man
fi
done
%if !0%{?bootstrap}
cp man/man[0-9]/*.[0-9] man/
%endif
make install DESTDIR="%buildroot"
# move to %{_lib}
@ -958,15 +953,6 @@ EOF
install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/
ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/
%if ! 0%{?bootstrap}
%if %{without python}
for man in systemd.directives.7 systemd.index.7
do
install -m 0644 man/$man %{buildroot}%{_mandir}/man7/
done
%endif
%endif
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed
@ -1290,6 +1276,7 @@ exit 0
%{_bindir}/systemd-path
%{_bindir}/systemd-sysusers
%{_bindir}/systemd-notify
%{_bindir}/systemd-hwdb
%{_bindir}/systemd-run
%{_bindir}/systemd-journalctl
%{_bindir}/journalctl
@ -1383,7 +1370,6 @@ exit 0
%{_prefix}/lib/sysusers.d/
/%{_lib}/security/pam_systemd.so
%config /etc/pam.d/systemd-user
%_libdir/libnss_resolve.so.2
%dir %{_libexecdir}/modules-load.d
%dir %{_sysconfdir}/modules-load.d
@ -1414,7 +1400,6 @@ exit 0
%if !0%{?bootstrap}
%config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf
%endif
%config(noreplace) %{_sysconfdir}/systemd/resolved.conf
%config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf
%config(noreplace) %{_sysconfdir}/systemd/system.conf
%config(noreplace) %{_sysconfdir}/systemd/logind.conf
@ -1423,7 +1408,7 @@ exit 0
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.network1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf
@ -1442,7 +1427,7 @@ exit 0
%{_datadir}/factory/
%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.network1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
@ -1451,6 +1436,7 @@ exit 0
%{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
%dir %{_datadir}/polkit-1
%dir %{_datadir}/polkit-1/actions
%{_datadir}/polkit-1/actions/org.freedesktop.machine1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
@ -1500,9 +1486,6 @@ exit 0
%{_datadir}/zsh/site-functions/*
%ghost %{_localstatedir}/lib/systemd/backlight
%ghost %{_localstatedir}/lib/systemd/random-seed
%if 0%{?suse_version} > 1310
%{_datadir}/pkgconfig/systemd.pc
%endif
%if ! 0%{?bootstrap}
%files bash-completion -f files.completion
@ -1526,9 +1509,7 @@ exit 0
%{_includedir}/systemd/sd-journal.h
%{_includedir}/systemd/sd-messages.h
%{_includedir}/systemd/_sd-common.h
%if 0%{?suse_version} <= 1310
%{_datadir}/pkgconfig/systemd.pc
%endif
%{_libdir}/pkgconfig/systemd.pc
%{_libdir}/pkgconfig/libsystemd.pc
%{_libdir}/pkgconfig/libsystemd-daemon.pc
%{_libdir}/pkgconfig/libsystemd-login.pc

View File

@ -0,0 +1,239 @@
---
src/tty-ask-password-agent/tty-ask-password-agent.c | 171 +++++++++++++++++++-
1 file changed, 166 insertions(+), 5 deletions(-)
Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
===================================================================
--- systemd.orig/src/tty-ask-password-agent/tty-ask-password-agent.c
+++ systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
@@ -31,6 +31,10 @@
#include <getopt.h>
#include <sys/signalfd.h>
#include <fcntl.h>
+#include <sys/prctl.h>
+#include <signal.h>
+#include <sys/wait.h>
+#include <sys/mman.h>
#include "util.h"
#include "mkdir.h"
@@ -42,6 +46,9 @@
#include "strv.h"
#include "build.h"
#include "def.h"
+#include "fileio.h"
+#include "macro.h"
+#include "list.h"
static enum {
ACTION_LIST,
@@ -50,6 +57,22 @@ static enum {
ACTION_WALL
} arg_action = ACTION_QUERY;
+struct console {
+ LIST_FIELDS(struct console, handle);
+ const char *tty;
+ pid_t pid;
+ int id;
+ char dev[];
+};
+
+static volatile unsigned long *usemask;
+static volatile sig_atomic_t sigchild;
+static void chld_handler(int sig)
+{
+ (void)sig;
+ ++sigchild;
+}
+
static bool arg_plymouth = false;
static bool arg_console = false;
@@ -208,6 +231,58 @@ static int ask_password_plymouth(
return 0;
}
+static const char *current_dev = "/dev/console";
+static LIST_HEAD(struct console, consoles);
+static int collect_consoles(void) {
+ _cleanup_free_ char *active = NULL;
+ const char *word, *state;
+ struct console *con;
+ size_t len;
+ int ret, id = 0;
+
+ ret = read_one_line_file("/sys/class/tty/console/active", &active);
+ if (ret < 0)
+ return ret;
+ FOREACH_WORD(word, len, active, state) {
+ _cleanup_free_ char *tty = NULL;
+
+ if (strneq(word, "tty0", len) &&
+ read_one_line_file("/sys/class/tty/tty0/active", &tty) >= 0) {
+ word = tty;
+ len = strlen(tty);
+ }
+ con = malloc0(sizeof(*con) + strlen("/dev/") + len + 1);
+ if (con == NULL) {
+ log_oom();
+ continue;
+ }
+ sprintf(con->dev, "/dev/%.*s", (int)len, word);
+ con->tty = con->dev;
+ con->id = id++;
+ LIST_PREPEND(handle, consoles, con);
+ }
+ if (consoles == NULL) {
+ con = malloc0(sizeof(*con));
+ if (con == NULL) {
+ log_oom();
+ return -ENOMEM;
+ }
+ con->tty = current_dev;
+ con->id = id++;
+ LIST_PREPEND(handle, consoles, con);
+ }
+ return 0;
+}
+
+static void free_consoles(void) {
+ struct console *c;
+ LIST_FOREACH(handle, c, consoles) {
+ LIST_REMOVE(handle, consoles, c);
+ free(c);
+ }
+ LIST_HEAD_INIT(consoles);
+}
+
static int parse_password(const char *filename, char **wall) {
_cleanup_free_ char *socket_name = NULL, *message = NULL, *packet = NULL;
uint64_t not_after = 0;
@@ -308,7 +383,7 @@ static int parse_password(const char *fi
_cleanup_free_ char *password = NULL;
if (arg_console) {
- tty_fd = acquire_terminal("/dev/console", false, false, false, USEC_INFINITY);
+ tty_fd = acquire_terminal(current_dev, false, false, false, USEC_INFINITY);
if (tty_fd < 0)
return tty_fd;
}
@@ -612,9 +687,85 @@ static int parse_argv(int argc, char *ar
return 1;
}
+static int zzz(void)
+{
+ struct console *con;
+ struct sigaction sig = {
+ .sa_handler = chld_handler,
+ .sa_flags = SA_NOCLDSTOP | SA_RESTART,
+ };
+ struct sigaction oldsig;
+ sigset_t set, oldset;
+ int status = 0, ret;
+ pid_t job;
+
+ collect_consoles();
+ if (!consoles->handle_next) {
+ consoles->pid = 0;
+ con = consoles;
+ goto nofork;
+ }
+
+ assert_se(sigemptyset(&set) == 0);
+ assert_se(sigaddset(&set, SIGHUP) == 0);
+ assert_se(sigaddset(&set, SIGCHLD) == 0);
+ assert_se(sigemptyset(&sig.sa_mask) == 0);
+ assert_se(sigprocmask(SIG_UNBLOCK, &set, &oldset) == 0);
+ assert_se(sigaction(SIGCHLD, &sig, &oldsig) == 0);
+ sig.sa_handler = SIG_DFL;
+ assert_se(sigaction(SIGHUP, &sig, NULL) == 0);
+
+ LIST_FOREACH(handle, con, consoles) {
+ switch ((con->pid = fork())) {
+ case 0:
+ if (prctl(PR_SET_PDEATHSIG, SIGHUP) < 0)
+ _exit(EXIT_FAILURE);
+ zero(sig);
+ assert_se(sigprocmask(SIG_UNBLOCK, &oldset, NULL) == 0);
+ assert_se(sigaction(SIGCHLD, &oldsig, NULL) == 0);
+ nofork:
+ setsid();
+ release_terminal();
+ *usemask |= 1 << con->id;
+ current_dev = con->tty;
+ return con->id; /* child */
+ case -1:
+ log_error("Failed to query password: %s", strerror(errno));
+ exit(EXIT_FAILURE);
+ default:
+ break;
+ }
+ }
+
+ ret = 0;
+ while ((job = wait(&status)) != 0) {
+ if (job < 0) {
+ if (errno != EINTR)
+ break;
+ continue;
+ }
+ LIST_FOREACH(handle, con, consoles) {
+ if (con->pid == job || kill(con->pid, 0) < 0) {
+ *usemask &= ~(1 << con->id);
+ continue;
+ }
+ if (*usemask & (1 << con->id))
+ continue;
+ kill(con->pid, SIGHUP);
+ usleep(50000);
+ kill(con->pid, SIGKILL);
+ }
+ if (WIFEXITED(status) && ret == 0)
+ ret = WEXITSTATUS(status);
+ }
+ free_consoles();
+ exit(ret != 0 ? EXIT_FAILURE : EXIT_SUCCESS); /* parent */
+}
+
int main(int argc, char *argv[]) {
- int r;
+ int r, id = 0;
+ LIST_HEAD_INIT(consoles);
log_set_target(LOG_TARGET_AUTO);
log_parse_environment();
log_open();
@@ -625,11 +776,19 @@ int main(int argc, char *argv[]) {
if (r <= 0)
goto finish;
+ usemask = mmap(NULL, sizeof(*usemask), PROT_READ | PROT_WRITE,
+ MAP_ANONYMOUS | MAP_SHARED, -1, 0);
+ assert_se(usemask != NULL);
+
if (arg_console) {
- setsid();
- release_terminal();
+ if (!arg_plymouth && arg_action != ACTION_WALL &&
+ arg_action != ACTION_LIST) {
+ id = zzz();
+ } else {
+ setsid();
+ release_terminal();
+ }
}
-
if (IN_SET(arg_action, ACTION_WATCH, ACTION_WALL))
r = watch_passwords();
else
@@ -638,6 +797,8 @@ int main(int argc, char *argv[]) {
if (r < 0)
log_error_errno(r, "Error: %m");
+ free_consoles();
+ *usemask &= ~(1 << id);
finish:
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
}

View File

@ -1,50 +0,0 @@
From: Andrey Borzenkov <arvidjaar@gmail.com>
Subject: use /usr/sbin/sulogin in emergency service
In current Factory sulogin is in /usr/sbin which makes it impossible
to enter emergency service.
---
units/console-shell.service.m4.in | 2 +-
units/emergency.service.in | 2 +-
units/rescue.service.in | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
Index: systemd-218/units/console-shell.service.m4.in
===================================================================
--- systemd-218.orig/units/console-shell.service.m4.in
+++ systemd-218/units/console-shell.service.m4.in
@@ -17,7 +17,7 @@ Before=getty.target
[Service]
Environment=HOME=/root
WorkingDirectory=/root
-ExecStart=-/sbin/sulogin
+ExecStart=-/usr/sbin/sulogin
ExecStopPost=-@SYSTEMCTL@ poweroff
Type=idle
StandardInput=tty-force
Index: systemd-218/units/emergency.service.in
===================================================================
--- systemd-218.orig/units/emergency.service.in
+++ systemd-218/units/emergency.service.in
@@ -18,7 +18,7 @@ Environment=HOME=/root
WorkingDirectory=/root
ExecStartPre=-/bin/plymouth quit
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\ntry again to boot into default mode.'
-ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
+ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
Type=idle
StandardInput=tty-force
StandardOutput=inherit
Index: systemd-218/units/rescue.service.in
===================================================================
--- systemd-218.orig/units/rescue.service.in
+++ systemd-218/units/rescue.service.in
@@ -18,7 +18,7 @@ Environment=HOME=/root
WorkingDirectory=/root
ExecStartPre=-/bin/plymouth quit
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.'
-ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
+ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
Type=idle
StandardInput=tty-force
StandardOutput=inherit