Page MenuHomeVyOS Platform

145-serial_no_restart.patch

Authored By
wsapplegate
Feb 18 2021, 4:48 AM
Size
2 KB
Referenced Files
None
Subscribers
None

145-serial_no_restart.patch

diff --git a/src/conf_mode/system_console.py b/src/conf_mode/system_console.py
index b1781879..d78d4e0f 100755
--- a/src/conf_mode/system_console.py
+++ b/src/conf_mode/system_console.py
@@ -19,7 +19,7 @@ import re
from fileinput import input as replace_in_file
from vyos.config import Config
-from vyos.util import call
+from vyos.util import cmd, call
from vyos.template import render
from vyos import ConfigError, airbag
airbag.enable()
@@ -71,9 +71,19 @@ def verify(console):
def generate(console):
base_dir = '/etc/systemd/system'
# Remove all serial-getty configuration files in advance
+ connected = []
+ for line in cmd('utmpdump /run/utmp').splitlines():
+ user_term = line.split('] [')[4].strip()
+ if 'ttyS' not in user_term:
+ continue
+ connected.append(user_term)
for root, dirs, files in os.walk(base_dir):
for basename in files:
if 'serial-getty' in basename:
+ device = basename.split('@', 1)[1].replace('.service', '')
+ if device in connected:
+ print(f'Warning: not restarting currently in use device {device}, please perform a manual restart later.')
+ continue
call(f'systemctl stop {basename}')
os.unlink(os.path.join(root, basename))
@@ -85,6 +95,8 @@ def generate(console):
getty_wants_symlink = base_dir + f'/getty.target.wants/serial-getty@{device}.service'
render(config_file, 'getty/serial-getty.service.tmpl', console['device'][device])
+ if os.path.exists(getty_wants_symlink):
+ continue
os.symlink(config_file, getty_wants_symlink)
# GRUB
@@ -129,6 +141,9 @@ def apply(console):
# Only start console if it exists on the running system. If a user
# detaches a USB serial console and reboots - it should not fail!
if os.path.exists(f'/dev/{device}'):
+ ret = call(f'systemctl is-active --quiet serial-getty@{device}.service')
+ if not ret:
+ continue
call(f'systemctl start serial-getty@{device}.service')
return None

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
43/34/8894f7f0f45b0495b007223ef11c
Default Alt Text
145-serial_no_restart.patch (2 KB)

Event Timeline