Chroot環境でRunning in chroot, ignoring command ‘start’と言われて実行できない場合の対処

投稿者: | 9月 28, 2022

初めに

Linux Deployを使っていてwebminやHomebridgeを動かそうとするのですが、sudo systemctl start webmin.serviceとかやるとchroot上だから無視するねーみたいなことを言われます。今回はこれを回避してスタートアップ設定をします。ちなみに実行環境はLinux Deploy上のUbuntu 22.04 LSTです。

方法

systemdは独自の規則に従って書かれているサービスファイルを実行します。このサービスファイルはstartに対するコマンド、stopに対するコマンドといった感じで記述されています。そこで、直接そのコマンドを実行すればいいわけです。

サービスファイルは/usr/lib/systemd/system/か/etc/systemd/system/に入っています。今回は例としてwebminを取り上げます。webminのサービスファイルは/usr/lib/systemd/system/webmin.serviceです。これの中身は

こんな感じになっています。ExecStart=のあとに続く部分(/usr/share/webmin/miniserv.pl /etc/webmin/miniserv.conf)が実行されるコマンドです。これにsudoをつけて

sudo /usr/share/webmin/miniserv.pl /etc/webmin/miniserv.conf

でwebminが実行できます。他にはhomebridgeでは/usr/lib/systemd/system/homebridge.serviceの中身が

となっているのでsudo /opt/homebridge/start.shで実行できるはずです。実際に動かしてみると、rootユーザで実行するのは推奨されてないから–allow-rootフラグをつけろ的なことを言われるので

sudo /opt/homebridge/start.sh --allow-root

みたいな感じで実行できます。一応ExecStartPreもあるので、心配な人は上のコマンドを実行する前に

sudo /bin/run-parts /etc/hb-service/homebridge/prestart.d

を実行してください。

これらから起動できることがわかったと思うので、あとはスクリプトファイルを書いて/etc/rc3.d/に置くだけです。webminなら

echo 'sudo /usr/share/webmin/miniserv.pl /etc/webmin/miniserv.conf' | sudo tee /etc/rc3.d/S01webmin
sudo chmod 755 /etc/rc3.d/S01webmin

Homebridgeなら

echo 'sudo /opt/homebridge/start.sh --allow-root' | sudo tee /etc/rc3.d/S99homebridge
sudo chmod 755 /etc/rc3.d/S99homebridge

みたいな感じで作って権限をつければ大丈夫です。 あとは再起動した時に自動で実行されます。

終わりに

他のサービスでも同じようにできると思うので頑張ってやってみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)