はじめに
ひさしぶりにRaspberryPiを触る時間ができたので、以前の記事「[Raspberry Pi3でキオスク端末(自動ログイン+ブラウザ起動)を作る。](Qiita https://qiita.com/yyano/items/c08705994363b9526d07)」を2019年11月時点の内容に書き直ししました。
環境
- Raspberry Pi3B+
- Raspbian Buster with desktop (2019-09-26-raspbian-buster.img)
公式サイトからではなくミラーサイト http://ftp.jaist.ac.jp/pub/raspberrypi/ からイメージファイルをダウンロードすると早いです。もし公式サイトで更新された日付より7日以上経過している場合、ミラーサイトから取得することをおすすめします。(7日以内だとミラーサイトに反映されていないことがあるようです)
- raspbian_full/images ← Raspbian Buster with desktop and recommended software
- raspbian/images ← Raspbian Buster with desktop
- raspbian_lite/images ← Raspbian Buster Lite
設定
初期設定
- OSイメージをダウンロードして、SDカードに展開
- SDカードをRaspberryPiに刺して電源投入
apt
取得先を変更
取得先を国内のミラーサーバー(RaspbianMirrors)にある日本国内のサーバー(JAIST)に変更します。
sudo vi /etc/apt/sources.list
- deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
+ #deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
+ deb http://ftp.jaist.ac.jp/raspbian buster main contrib non-free rpi
apt IPv6の無効化
もしIPv6環境内ではなくIPv4環境のみ使う場合、下記の設定をします。IPv6がちゃんと設定されていない環境の場合、aptの更新取得が遅くなることがあるようです。
echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4
apt 更新を取得
更新をして再起動します。
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo reboot
一時的にIPv6を無効化する場合は、aptのオプション-o Acquire::ForceIPv4=true
を追加して強制的にIPv4でアクセスするようにします。(例:sudo apt update -o Acquire::ForceIPv4=true
)
WiFi用に国コードを設定する
WiFiを使用する場合は設定が必要です。WiFiを使う場合は、/boot/wpa_supplicant.conf
をつかったほうがいいかもしれません。
sudo raspi-config nonint do_wifi_country JP
GUI関連
解像度
使用しているモニターの出塁などによって解像度などが変わるのですが、若干小さめに描画エリアが設定されるようです。モニターの解像度をすべて使って表示する場合、disable_overscan
を設定します。
# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
- # disable_overscan=1
+ disable_overscan=1
カーソルを消す
- # xserver-config=
+ xserver-config= X -nocursor
上記の方法では全くカーソルが表示されなくなります。動いていない場合にマウスカーソルを消したい場合はunclutter
を使ったほうがいいかもしれません。
chronium 自動起動
ブラウザを自動起動するために/etc/systemd/system/chromium-autorun.service
ファイルを新しく作ります。
[Unit]
Description=Chromium Autorun
[Service]
Environment=DISPLAY=:0.0
Environment=XAUTHORITY=/home/pi/.Xauthority
#ExecStartPre=/home/pi/kiosk-setting.sh
ExecStart=/usr/bin/chromium-browser --noerrdialogs --disable-infobars --disable-background-mode --kiosk --app=https://youtube.com/
Restart=on-abort
User=pi
Group=pi
[Install]
WantedBy=multi-user.target
ExecStart
のオプション指定について (起動オプション - Google Chrome まとめWiki)
-
/usr/bin/chromium-browser
chromiumブラウザのパス -
--noerrdialogs
エラーダイアログを表示しない -
--disable-background-mode
バックグラウンドモードを無効 -
--kiosk
Kioskモードで起動 -
--app=https://youtube.com/
アプリケーションモードとして指定されたURLを表示する
chromiumの--app=<URL>
、全画面モード(F11)のような感じで表示されます。Raspberry Piの電源が強制的に切られてしまった後に再起動すると「『Chromeは正しく終了しませんでした』復元しますか?」とか表示されなくなります。廃止されたオプション--disable-infobars
の代わりに使用。
端末情報の表示
複数台設置したときに、端末情報(IPアドレスなど)が知りたいときがあります。ip addr show
でインターフェース情報を取得しテキストファイル出力、leafpad
で表示しています。必要がない場合は不要です。
- 1つ目の
sleep 20
はleafpadを出力するためのX起動待ち。 - 2つ目の
sleep 10
はleafpadを見せる時間(=経過後、chromiumが起動する)
#!/bin/bash
sleep 20
ip addr show > ~/ip.txt
DISPLAY=:0.0 leafpad ~/ip.txt &
sleep 10
念の為に起動時に前回のセッション情報を消しているのですが、chromiumの--app=<URL>
オプションを使う場合、必要ないかもしれません。
@reboot rm -rf ~/.config/chromium/Singleton*
自動起動の設定
sudo systemctl enable chromium-autorun.service
sudo systemctl start chromium-autorun.service
おわりに
前回の記事と大きく異なるとすれば、aptの設定変更、chromeinumのオプション指定内容が変わった感じでした。