So the way sshd installs work, we actually do need to run tmux on s390 - when the user connects to the system, it'll attach them to the existing tmux session.
Relatedly, we also actually need to use tmux when in 'noshell' mode, because anaconda-direct.service doesn't allow any input from stdin, so e.g. you can't answer the VNC question.
So: instead of disabling tmux for noshell or s390x, we should do the following:
1) Start anaconda inside a detached tmux session 2) If "noshell", lock down tmux (close the shell, disallow new windows) 3) If s390x, run anaconda-direct.service like usual
This commit also silences an error message about the missing 'null' in anaconda-direct.service. --- data/systemd/Makefile.am | 1 + data/systemd/anaconda-direct.service | 7 +------ data/systemd/anaconda-noshell.service | 18 ++++++++++++++++++ data/systemd/anaconda-tmux@.service | 4 ++-- data/systemd/anaconda.service | 3 +-- 5 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 data/systemd/anaconda-noshell.service
diff --git a/data/systemd/Makefile.am b/data/systemd/Makefile.am index 2c4e692..d27ba2f 100644 --- a/data/systemd/Makefile.am +++ b/data/systemd/Makefile.am @@ -21,6 +21,7 @@ systemddir = $(prefix)/lib/systemd/system generatordir = $(prefix)/lib/systemd/system-generators
dist_systemd_DATA = anaconda.service \ + anaconda-noshell.service \ anaconda-direct.service \ anaconda.target \ anaconda-tmux@.service \ diff --git a/data/systemd/anaconda-direct.service b/data/systemd/anaconda-direct.service index b4c1f2f..9bf172a 100644 --- a/data/systemd/anaconda-direct.service +++ b/data/systemd/anaconda-direct.service @@ -1,6 +1,3 @@ -[Install] -WantedBy=anaconda.target - [Unit] Description=the anaconda installation program Wants=instperf.service rsyslog.service systemd-udev-settle.service NetworkManager.service @@ -8,15 +5,13 @@ After=instperf.service rsyslog.service systemd-udev-settle.service NetworkManage Requires=anaconda.service # TODO: use ConditionArchitecture in systemd v210 or later ConditionPathIsDirectory=|/sys/hypervisor/s390 -ConditionKernelCommandLine=|noshell -ConditionKernelCommandLine=|inst.noshell
[Service] Environment=HOME=/root MALLOC_CHECK_=2 MALLOC_PERTURB_=204 PATH=/usr/bin:/bin:/sbin:/usr Type=oneshot WorkingDirectory=/root ExecStart=/usr/sbin/anaconda -StandardInput= +StandardInput=null StandardOutput=journal+console StandardError=journal+console TimeoutSec=0 diff --git a/data/systemd/anaconda-noshell.service b/data/systemd/anaconda-noshell.service new file mode 100644 index 0000000..a57af39 --- /dev/null +++ b/data/systemd/anaconda-noshell.service @@ -0,0 +1,18 @@ +[Unit] +Description=Restrict Anaconda Text Console +After=anaconda.service +Before=anaconda-tmux@.service anaconda-sshd.service +ConditionKernelCommandLine=|inst.noshell +ConditionKernelCommandLine=|noshell + +[Service] +Type=oneshot +WorkingDirectory=/root +ExecStart=/usr/bin/tmux unbind-key -a; \ + kill-window -t anaconda:shell; \ + bind-key 1 select-window -t :1; \ + bind-key 2 select-window -t :2; \ + bind-key 3 select-window -t :3; \ + bind-key 4 select-window -t :4; \ + bind-key 5 select-window -t :5; \ + bind-key ? list-keys diff --git a/data/systemd/anaconda-tmux@.service b/data/systemd/anaconda-tmux@.service index 6a3f58d..e2fd1b8 100644 --- a/data/systemd/anaconda-tmux@.service +++ b/data/systemd/anaconda-tmux@.service @@ -2,8 +2,8 @@ Description=Anaconda Text Console Requires=anaconda.service After=anaconda.target anaconda.service -ConditionKernelCommandLine=!noshell -ConditionKernelCommandLine=!inst.noshell +# TODO: use ConditionArchitecture in systemd v210 or later +ConditionPathIsDirectory=!/sys/hypervisor/s390
[Service] Type=idle diff --git a/data/systemd/anaconda.service b/data/systemd/anaconda.service index e6104b0..a70528b 100644 --- a/data/systemd/anaconda.service +++ b/data/systemd/anaconda.service @@ -1,8 +1,7 @@ [Unit] Description=Anaconda After=anaconda.target -ConditionKernelCommandLine=!noshell -ConditionKernelCommandLine=!inst.noshell +Wants=anaconda-noshell.service
[Service] Type=forking
Tested on s390x; vnc and text mode work. Text doesn't dump to the x3270 console as described in the bug report either.
So, ack. Just remember to add the Resolves: line. :)
On Thu, Feb 27, 2014 at 05:50:05PM -0500, Will Woods wrote:
So the way sshd installs work, we actually do need to run tmux on s390 - when the user connects to the system, it'll attach them to the existing tmux session.
Relatedly, we also actually need to use tmux when in 'noshell' mode, because anaconda-direct.service doesn't allow any input from stdin, so e.g. you can't answer the VNC question.
So: instead of disabling tmux for noshell or s390x, we should do the following:
- Start anaconda inside a detached tmux session
- If "noshell", lock down tmux (close the shell, disallow new windows)
- If s390x, run anaconda-direct.service like usual
This commit also silences an error message about the missing 'null' in anaconda-direct.service.
data/systemd/Makefile.am | 1 + data/systemd/anaconda-direct.service | 7 +------ data/systemd/anaconda-noshell.service | 18 ++++++++++++++++++ data/systemd/anaconda-tmux@.service | 4 ++-- data/systemd/anaconda.service | 3 +-- 5 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 data/systemd/anaconda-noshell.service
diff --git a/data/systemd/Makefile.am b/data/systemd/Makefile.am index 2c4e692..d27ba2f 100644 --- a/data/systemd/Makefile.am +++ b/data/systemd/Makefile.am @@ -21,6 +21,7 @@ systemddir = $(prefix)/lib/systemd/system generatordir = $(prefix)/lib/systemd/system-generators
dist_systemd_DATA = anaconda.service \
anaconda-direct.service \ anaconda.target \ anaconda-tmux@.service \anaconda-noshell.service \
diff --git a/data/systemd/anaconda-direct.service b/data/systemd/anaconda-direct.service index b4c1f2f..9bf172a 100644 --- a/data/systemd/anaconda-direct.service +++ b/data/systemd/anaconda-direct.service @@ -1,6 +1,3 @@ -[Install] -WantedBy=anaconda.target
[Unit] Description=the anaconda installation program Wants=instperf.service rsyslog.service systemd-udev-settle.service NetworkManager.service @@ -8,15 +5,13 @@ After=instperf.service rsyslog.service systemd-udev-settle.service NetworkManage Requires=anaconda.service # TODO: use ConditionArchitecture in systemd v210 or later ConditionPathIsDirectory=|/sys/hypervisor/s390 -ConditionKernelCommandLine=|noshell -ConditionKernelCommandLine=|inst.noshell
[Service] Environment=HOME=/root MALLOC_CHECK_=2 MALLOC_PERTURB_=204 PATH=/usr/bin:/bin:/sbin:/usr Type=oneshot WorkingDirectory=/root ExecStart=/usr/sbin/anaconda -StandardInput= +StandardInput=null StandardOutput=journal+console StandardError=journal+console TimeoutSec=0 diff --git a/data/systemd/anaconda-noshell.service b/data/systemd/anaconda-noshell.service new file mode 100644 index 0000000..a57af39 --- /dev/null +++ b/data/systemd/anaconda-noshell.service @@ -0,0 +1,18 @@ +[Unit] +Description=Restrict Anaconda Text Console +After=anaconda.service +Before=anaconda-tmux@.service anaconda-sshd.service +ConditionKernelCommandLine=|inst.noshell +ConditionKernelCommandLine=|noshell
+[Service] +Type=oneshot +WorkingDirectory=/root +ExecStart=/usr/bin/tmux unbind-key -a; \
kill-window -t anaconda:shell; \
bind-key 1 select-window -t :1; \
bind-key 2 select-window -t :2; \
bind-key 3 select-window -t :3; \
bind-key 4 select-window -t :4; \
bind-key 5 select-window -t :5; \
bind-key ? list-keys
diff --git a/data/systemd/anaconda-tmux@.service b/data/systemd/anaconda-tmux@.service index 6a3f58d..e2fd1b8 100644 --- a/data/systemd/anaconda-tmux@.service +++ b/data/systemd/anaconda-tmux@.service @@ -2,8 +2,8 @@ Description=Anaconda Text Console Requires=anaconda.service After=anaconda.target anaconda.service -ConditionKernelCommandLine=!noshell -ConditionKernelCommandLine=!inst.noshell +# TODO: use ConditionArchitecture in systemd v210 or later +ConditionPathIsDirectory=!/sys/hypervisor/s390
[Service] Type=idle diff --git a/data/systemd/anaconda.service b/data/systemd/anaconda.service index e6104b0..a70528b 100644 --- a/data/systemd/anaconda.service +++ b/data/systemd/anaconda.service @@ -1,8 +1,7 @@ [Unit] Description=Anaconda After=anaconda.target -ConditionKernelCommandLine=!noshell -ConditionKernelCommandLine=!inst.noshell +Wants=anaconda-noshell.service
[Service] Type=forking -- 1.8.5.3
anaconda-patches mailing list anaconda-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches
We agonized over this in irc, but so it's noted somewhere.... comments inline.
On Thu, Feb 27, 2014 at 05:50:05PM -0500, Will Woods wrote:
So the way sshd installs work, we actually do need to run tmux on s390 - when the user connects to the system, it'll attach them to the existing tmux session.
Relatedly, we also actually need to use tmux when in 'noshell' mode, because anaconda-direct.service doesn't allow any input from stdin, so e.g. you can't answer the VNC question.
So: instead of disabling tmux for noshell or s390x, we should do the following:
- Start anaconda inside a detached tmux session
- If "noshell", lock down tmux (close the shell, disallow new windows)
- If s390x, run anaconda-direct.service like usual
This commit also silences an error message about the missing 'null' in anaconda-direct.service.
data/systemd/Makefile.am | 1 + data/systemd/anaconda-direct.service | 7 +------ data/systemd/anaconda-noshell.service | 18 ++++++++++++++++++ data/systemd/anaconda-tmux@.service | 4 ++-- data/systemd/anaconda.service | 3 +-- 5 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 data/systemd/anaconda-noshell.service
diff --git a/data/systemd/Makefile.am b/data/systemd/Makefile.am index 2c4e692..d27ba2f 100644 --- a/data/systemd/Makefile.am +++ b/data/systemd/Makefile.am @@ -21,6 +21,7 @@ systemddir = $(prefix)/lib/systemd/system generatordir = $(prefix)/lib/systemd/system-generators
dist_systemd_DATA = anaconda.service \
anaconda-direct.service \ anaconda.target \ anaconda-tmux@.service \anaconda-noshell.service \
diff --git a/data/systemd/anaconda-direct.service b/data/systemd/anaconda-direct.service index b4c1f2f..9bf172a 100644 --- a/data/systemd/anaconda-direct.service +++ b/data/systemd/anaconda-direct.service @@ -1,6 +1,3 @@ -[Install] -WantedBy=anaconda.target
[Unit] Description=the anaconda installation program Wants=instperf.service rsyslog.service systemd-udev-settle.service NetworkManager.service @@ -8,15 +5,13 @@ After=instperf.service rsyslog.service systemd-udev-settle.service NetworkManage Requires=anaconda.service # TODO: use ConditionArchitecture in systemd v210 or later ConditionPathIsDirectory=|/sys/hypervisor/s390 -ConditionKernelCommandLine=|noshell -ConditionKernelCommandLine=|inst.noshell
[Service] Environment=HOME=/root MALLOC_CHECK_=2 MALLOC_PERTURB_=204 PATH=/usr/bin:/bin:/sbin:/usr Type=oneshot WorkingDirectory=/root ExecStart=/usr/sbin/anaconda -StandardInput= +StandardInput=null StandardOutput=journal+console StandardError=journal+console TimeoutSec=0 diff --git a/data/systemd/anaconda-noshell.service b/data/systemd/anaconda-noshell.service new file mode 100644 index 0000000..a57af39 --- /dev/null +++ b/data/systemd/anaconda-noshell.service @@ -0,0 +1,18 @@ +[Unit] +Description=Restrict Anaconda Text Console +After=anaconda.service +Before=anaconda-tmux@.service anaconda-sshd.service
With this line, there's a dependency problem in the systemd services since anaconda-sshd.service starts before anaconda-target, which starts before anaconda.service.
anaconda-noshell.service is *after* anaconda.service though, but says before anaconda-sshd.service.
With this in place, it renders one completely unable to ssh into an s390x machine at all. (It's a testament to how much crap I have in my repo dir that I didn't even notice I hadn't added this new file to get built into my updates.img when I tested initially.)
Anyway, change it to: Before=anaconda-tmux@.service
And s390x is happy, inst.noshell still functions on x86_64, and ack.
Samantha
+ConditionKernelCommandLine=|inst.noshell +ConditionKernelCommandLine=|noshell
+[Service] +Type=oneshot +WorkingDirectory=/root +ExecStart=/usr/bin/tmux unbind-key -a; \
kill-window -t anaconda:shell; \
bind-key 1 select-window -t :1; \
bind-key 2 select-window -t :2; \
bind-key 3 select-window -t :3; \
bind-key 4 select-window -t :4; \
bind-key 5 select-window -t :5; \
bind-key ? list-keys
diff --git a/data/systemd/anaconda-tmux@.service b/data/systemd/anaconda-tmux@.service index 6a3f58d..e2fd1b8 100644 --- a/data/systemd/anaconda-tmux@.service +++ b/data/systemd/anaconda-tmux@.service @@ -2,8 +2,8 @@ Description=Anaconda Text Console Requires=anaconda.service After=anaconda.target anaconda.service -ConditionKernelCommandLine=!noshell -ConditionKernelCommandLine=!inst.noshell +# TODO: use ConditionArchitecture in systemd v210 or later +ConditionPathIsDirectory=!/sys/hypervisor/s390
[Service] Type=idle diff --git a/data/systemd/anaconda.service b/data/systemd/anaconda.service index e6104b0..a70528b 100644 --- a/data/systemd/anaconda.service +++ b/data/systemd/anaconda.service @@ -1,8 +1,7 @@ [Unit] Description=Anaconda After=anaconda.target -ConditionKernelCommandLine=!noshell -ConditionKernelCommandLine=!inst.noshell +Wants=anaconda-noshell.service
[Service] Type=forking -- 1.8.5.3
anaconda-patches mailing list anaconda-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches
anaconda-patches@lists.fedorahosted.org