Contents
はじめに
こんにちは、野村です。
前回、VirtualBoxに共有フォルダを設定する方法を紹介しました。
でも課題が残っているのです。
仮想マシンを起動したときに共有フォルダを自動マウントさせたかったのだけど、最近のLinuxにはrc.localがないのですね。困りものです。
で、童爺さんに相談したらsystemdの存在を教わりました。ありがとう!
というわけで今回は「マシン起動時にコマンドを実行する方法」を紹介します。
cronを使う方法
間違ったやりかた
あるサイトを見て、crontabで以下のように@rebootを指定すると、cron起動時にコマンドを実行させることができると知ったのですよ。
@reboot コマンド
簡単そうなので、すぐに試しました。
管理ユーザになって、コマンド「crontab -e」を実行し、以下を追記。
@reboot mount -t vboxsf vmdir /home/jake/vmdir
で、仮想マシンを再起動したところ、共有フォルダがマウントされてませんでした。残念。
正しいやりかた
管理ユーザになって、ファイル「/etc/rc.local」を作成します。
内容は以下の通り。
#!/bin/sh mount -t vboxsf vmdir /home/jake/vmdir
保存したらコマンド「chmod 755 /etc/rc.local」でファイルに実行権限を与えます。
そのあと、コマンド「crontab -e」を実行し、以下をコードを追記。
@reboot /etc/rc.local
再起動後、共有フォルダがマウントされていました。お手軽ですね。
systemdを使う方法
別の方法として、systemdを使えばrc.localを再現できるとのこと。
ファイル「rc.local」を設置
なにはともあれ管理ユーザになって、ファイル「/etc/rc.local」を作成。
内容は以下の通り。
#!/bin/sh mount -t vboxsf vmdir /home/jake/vmdir
保存したらコマンド「chmod 755 /etc/rc.local」でファイルに実行権限を与えます。
サービスファイルを作成
/etc/systemd/system/rc-local.service というファイルを作成します。
# vim /etc/systemd/system/rc-local.service
内容は以下の通り
[Unit] Description=/etc/rc.local [Service] ExecStart=/etc/rc.local Restart=always Type=simple [Install] WantedBy=multi-user.target
サービスの自動起動設定
以下のコマンドを実行します。
# systemctl enable rc-local.service
設定は以上です。
再起動すると、共有フォルダがマウントされていました!
最後に
これ以外にも、update-rc.dを使う方法も試したけど、失敗しました。
もしかしたら設定次第では通ったのかも知れない。でもなんだか難しそう。
今回のことから、腰を据えてsystemdを勉強しなきゃいけない気がしましたよ。
でもそのうちでいいや。
というわけで、今回はこれにて。
コメント
[…] rc.localを使えない環境でマシン起動時にコマンドを実行する […]
crontab -e
の方式でできるようになりました。
wake on lan の設定をLANアダプター(enp3s0)に行うものですが
おかげで助かりました。
感謝!