Page Top

自動ログイン anchor.png

Raspberry Piを起動時に,自動的にログインしたい場合がある。

Page Top

CUI環境の場合 anchor.png

''/etc/systemd/system/getty.target.wants/getty@tty1.service''ファイルを編集する。

ExecStart=-/sbin/agetty --autologin yuji --noclear %I $TERM

--autologin <ユーザ名>で,自動にログインさせたいユーザをセットする。

systemdの設定ファイルをリロードさせる。

# systemctl daemon-reload

自動ログインしないようにするには,上記の設定をコメントアウトして,設定ファイルをリロードする。

Page Top

GUI環境の場合 anchor.png

Raspbian Stretchは,LXDEが使われている。

自動ログインしたい場合は,/etc/lightdm/lightdm.confファイルを,

autologin-user=ログインしたいユーザ名
autologin-user-timeout=0

のように設定する。

デフォルトでは,piユーザがセットされている。

コメントアウトすれば,自動ログインしなくなる。

Page Top

自動でプログラム実行 anchor.png

Raspberry Piを起動した後,プログラム等を自動実行したいことがある。
これを実現する場合には,いくつかの方法がある。

LinuxなどのUnix系なOSでは,OS起動時のプログラムの自動実行する仕組みとして,主に2種類の方法が混在している。

  • SysVinitタイプ
  • systemdタイプ

比較的新しいLinuxディストリビューションでは,systemdが採用されている。ディストリビューションによっては,systemdを主に使うが互換性からSysVinitタイプも使用できるようになっているものもある。
Raspberry PiのRaspbian Stretchもsystemdではあるが,SysVinitタイプでも使えるOSである。

他の自動実行する仕組みとして,定時に実行する仕組みにcronがあるが,特殊な実行タイミングとしてreboot時がある,これを使用することでも起動時に自動実行できる。

また,CUI時のシェルログイン時,GUIでのログイン時,にプログラムを自動実行する仕組みもある。

Page Top

/etc/rc.localを使用する anchor.png

起動時には,/etc/rc.localというスクリプトファイルが,initプロセスにより実行されるようになっている。

そこで,/etc/rc.localファイルの最後のexit 0の手前あたりに,実行したいプログラムを記述しておく。
例えば,hogehoge.shというプログラムだったら,

hogehoge.sh

exit 0

注意することとして,プログラムはroot権限で実行される。つまり,実行権限やアクセス権限も適切に設定する必要があります。
また,プログラムやファイルは,フルパスで記述する必要がある。

Page Top

Systemdを使用する anchor.png

Systemdはバックグランドで実行されるデーモンプログラムを管理するシステム。
この機能を使用して,起動時にプログラムを実行させることが出来る。

autoexec.shというプログラムを実行したい場合,まず,/etc/systemd/system/myautoexec.serviceを作成する。

[Unit]
Description = My autoexec program
After=syslog.target

[Service]
Type=simple
WorkingDirectory = /home/yuji/autoexec
ExecStart = /home/yuji/autoexec/autoexec.sh
TimeStopSec=5
StandardOutput=null
[Install]
WantedBy=multi-user.target

Descriptionにサービス名,WorkingDirectoryに作業ディレクリ名,ExecStartに実行したいプログラムを記述すれば良い。

実行時にユーザを指定したい場合は,[Service]セクションに,

User=ユーザ
Group=グループ

というようにすれば,指定出来る。これがなければrootで実行される。

実際に起動するには,systemctlコマンドを使用する。

実行する場合,

$ sudo systemctl start myprogram

停止する場合,

$ sudo systemctl stop myprogram

リブート(起動)時に実行させる場合,

$ sudo systemctl enable myprogram

リブート(起動)時に実行させない場合,

$ sudo systemctl disable myprogram

のようにする。

Page Top

cronを使用する anchor.png

cronを使用してユーザー権限でプログラムを実行することが出来る。

cronでスケジュールを登録する時(crontab -e)に,

@reboot                  /home/yuji/hogehoge.sh

って登録すると,起動時にhogehoge.shを実行してくれる。

crontab -eで登録したユーザの権限で実行される。

Page Top

.bash_profile(.bashrc)を利用する anchor.png

ログイン時のログインシェルの起動時に自動的にプログラム実行させたい場合は,~/.bash_profile(もしくは,~/.bashrc)に,実行させたいプログラムを記載する。

ただシェル起動時に毎回実行されるため,起動時のログイン時だけプログラムを実行するには工夫が必要。

Page Top

GUI環境での自動実行 anchor.png

GUI環境(デスクトップ)が起動後,プログラムを自動実行するには,~/.config/lxsession/LXDE-pi/autostartファイルに,実行したいプログラムを登録する。

例えば,/home/yuji/hogehoge.shを起動したい場合,

@/home/yuji/hogehoge.sh

というように記述する。

Page Top

CUI環境とGUI環境の切り替え anchor.png

現在,CUI環境かGUI環境か調べる場合は,

# systemctl get-default
multi-user.target

のようにして,確認する。multi-user.targetはCUI環境。

GUI環境から,CUI環境に切り替える場合は,

# systemctl set-default multi-user.target

CUI環境から,GUI環境に切り替える場合は,

# systemctl set-default graphical.target

として,再起動すれば良い。

# raspi-config

でもいいんだけど・・・


新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

Front page   Freeze Diff Backup Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 4407, today: 3, yesterday: 0
Last-modified: 2020-12-26 (Sat) 16:07:35 (JST) (1440d) by yuji