title: Can I install/modify a systemd service without running daemon-reload?
body: <p>Basically, I am building on a x64 host a pre-configured Linux image for a customized ARM board, that exposes a different serial port than the one used in the prebuilt image as getty console. At boot, I can see kernel and systemd output (that uses the serial port I specified in kernel bootargs), but the login shell is started on the other port that the hardware doesn't expose and it is impossible for me to interact with the live system.</p>
  <p>To do so, with the target root file system mounted on my host, I removed the syslink to serial-getty service using the wrong serial port and created a new one using the correct port, like this:</p>
  <pre><code># cd &lt;target_rootfs&gt;/etc/systemd/system/getty.target.wants
  # rm serial-getty@ttyS2.service
  # ln -s /lib/systemd/system/serial-getty@.service serial-getty@ttyS0.service
  </code></pre>
  <p>This did not work, so I tried to force ttyS0 directly on the service file <em>/lib/systemd/system/serial-getty@.service</em>, that went from this:</p>
  <pre><code>...
  [Service]
  Environment=&quot;TERM=xterm&quot;
  ExecStart=-/sbin/agetty -8 -L %I 115200 $TERM
  Type=idle
  Restart=always
  ...
  </code></pre>
  <p>to this:</p>
  <pre><code>...
  [Service]
  Environment=&quot;TERM=xterm&quot;
  ExecStart=-/sbin/agetty -8 -L ttyS0 115200 $TERM
  Type=idle
  Restart=always
  ...
  </code></pre>
  <p>Also this didn't work, so I'm starting to suspect that the only solution is to let <code>systemctl daemon-reload</code> rebuild its generators and dependencies, but how can I do it on a not-live system? Or is there a way to do bypass this?</p>