/etc/rc.local
を使用して、起動後にいくつかのスクリプトを実行してみました。
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/startup.sh
exit 0
mount -t vboxsf test /home/test
systemctl status rc-local.service
の出力ですrc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; static)
Active: failed (Result: exit-code) since Sun 2016-02-07 22:48:23 ICT; 18min ago
Process: 432 ExecStart=/etc/rc.local start (code=exited, status=1/FAILURE)
Feb 07 22:48:23 debian rc.local[432]: /sbin/mount.vboxsf: mounting failed with the error: No such device
Feb 07 22:48:23 debian systemd[1]: rc-local.service: control process exited, code=exited status=1
Feb 07 22:48:23 debian systemd[1]: Failed to start /etc/rc.local Compatibility.
Feb 07 22:48:23 debian systemd[1]: Unit rc-local.service entered failed state.
私は手動でSudo bash /home/startup.shを実行してみましたが、正常に動作します。このメソッドをUbuntu 14.04
にも適用したところ、エラーは発生しませんでした。
この失敗の背後にある理由は何ですか?どうすれば修正できますか?
あなたの問題は、あなたのrc-local.service
がvboxadd-service.service
より前に開始されているようですが、その後に実行する必要があります。現在、rc.local
はSysVであり(ブートプロセスの最後に実行されます)、systemdによって提供される互換性は完全ではありません(スクリーンショットで確認できます)。おそらく、次のようなカスタムhome-test.mount
ユニットを使用することをお勧めします。
[Unit]
Requires=vboxadd-service.service
After=vboxadd-service.service
[Mount]
What=test
Where=/home/test
Type=vboxsf
[Install]
WantedBy = multi-user.target
次にsystemctl enable home-test.mount
、/home/startup.sh
コールを/etc/rc.local
から削除し、再起動して新しいセットアップをテストします。
警告:VirtualBoxの使用経験はありませんが、マウントユニットの使用経験はほとんどありません。しかし、あなたはアイデアを得ます。