更新
1. Chrome OS
- Chromium OSをダウンロード(xzファイル)
- Raspberry Pi Imagerをダウンロードしてインストール
- (1)16GB以上のSDカードを差し、(2)Raspberry Pi Imagerを起動
- (1)[Erage]でSDカードをフォーマットし、(2)[Use custom]でxzファイルとドライブを選び、(3)[Write]
-
1. Raspberry Pi OS
- Raspberry Pi Imagerをダウンロードし、インストール
- SDカードを差し、Raspberry Pi Imagerを起動し、必要ならSDを消去([CHOOSE OS][Erase]-[CHOOSE SD CARD]-[WRITE])
- Raspberry Pi ImagerでSDに書き込み([CHOOSE OS][Raspberry Pi OS(32-BIT)]-[Storage]-[WRITE])
- RasPiにSDをセットして起動
- コンソールから「pi/raspberry」でloginし、「sudo touch /boot/ssh」でSSH接続を有効にし、「sudo reboot」
- 有線LAN接続しteraTermで「raspberry.local」にSSH接続
- pi/raspberryでログイン
- sudo apt-get update
- sudo apt-get -y dist-upgrade
- uname -sr ...Linuxカーネルのバージョン確認
- sudo rpi-update でカーネル更新
- df -h ...パーティション・空きエリアを確認
- 電源断・リブート...sudo poweroff/reboot/exit
2. 初期設定
- sudo raspi-config
- [4 Localization Options][I1 Change Locale]で「ja_JP.UTF-8 UTF-8」を有効にし、ja_JP.UTF-8をデフォルト
- [I2 Change Timezone]で[Asia][Tokyo] を選択
- [5 Interfacing Options][P5 I2C] を有効に
- 固定IPの設定
sudo nano /etc/dhcpcd.conf で末尾に以下を追加
interface eth0
static ip_address=192.168.11.100/24
static routers=192.168.11.1
static domain_name_servers=192.168.11.1
static domain_search=
noipv6
sudo /etc/init.d/dhcpcd reload で適用
- chkconfigのインストール
sudo apt-get install chkconfig
- 自動起動しているサービスのチェック
- インストール済パッケージ一覧表示
- ntpサーバなど確認
- manのインストール
sudo apt-get install manpages-ja manpages-ja-dev
- リモートデスクトップ
- sudo apt-get install xrdp
- cd /etc/xrdp/
- sudo wget http://w.vmeta.jp/temp/km-0411.ini
- sudo ln -s km-0411.ini km-e0010411.ini
- sudo ln -s km-0411.ini km-e0200411.ini
- sudo ln -s km-0411.ini km-e0210411.ini
- nano .bashrc ...末尾に以下を追加
- nano .nanorc ...nanoの設定
- GPIO(WiringPi)のインストール
sudo apt-get install wiringpi
- GPIOの読み取り
- AWKのインストール
(sudo apt-get install gawk)
sudo apt-get install gawk-doc
(/usr/share/doc/gawk-docにgawk.pdfとgawkinet.pdf)
- I2Cの設定...「sudo nano /boot/config.txt」で末尾に以下を追記
dtparam=i2c=on
dtparam=i2c_arm=on
- i2c-toolsのインストールとI2Cデバイスの一覧表示
sudo apt-get install i2c-tools
i2cdetect -y 1
3. RTC(DS3231)
- RTC(DS3231)を接続
i2cdetect -y 1 ...「68」を確認
- sudo nano /boot/config.txt ...末尾に以下を追記
- 再起動後
i2cdetect -y 1 ...「68」→「UU」を確認
- sudo hwclock -w ...RTCに現在時刻を設定
- sudo apt-get purge fake-hwclock ...fake-hwclockを停止
- sudo nano /etc/default/hwclock ...以下の変更
- sudo nano /lib/udev/hwclock-set...以下をコメントアウト
#if [ -e /run/systemd/system ] ; then
# exit 0
#fi
#if [ -e /run/udev/hwclock-set]; then
# exit 0
#fi
- dmesg | grep rtc
cat /proc/driver/rtc
4. ntp
- sudo nano /etc/ntp.conf ...「server ...」の4行をコメントアウトしその下に以下を追記
pool ntp.nict.jp iburst
# Local clock
server 127.127.1.0
fudge 127.127.1.0 stratum 10
...
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
restrict 192.168.11.0 mask 255.255.255.0
- sudo apt-get install ntpdate ...ntpdateのインストール
- crontab -e の末尾に以下を追加
- ntpdateのインストール
sudo nano /etc/default/ntpdate
- ntpdateのサーバ変更
# The settings in this file are used by the program ntpdate-debian, but not by the upstream program ntpdate.
# Set to "yes" to take the server list from /etc/ntp.conf, from package ntp,
# so you only have to keep it in one place.
NTPDATE_USE_NTP_CONF=yes
# List of NTP servers to use (Separate multiple servers with spaces.)
# Not used if NTPDATE_USE_NTP_CONF is yes.
# 国内の公開NTPサーバを指定する
NTPSERVERS="ntp.nict.jp ntp.jst.mfeed.ad.jp ntp.ring.gr.jp"
# Additional options to pass to ntpdate
NTPOPTIONS=""
再起動後に cat /var/log/syslog でntpサーバを確認
5. Apache と php と Mysql
- sudo apt-get install apache2
(sudo service apache2 start/stop)
ブラウザで「http://raspberrypi.local/」の表示を確認
homeにシンボリックリンクを作成
- sudo apt-get install php7.3
下記のphpinfo.phpを作成し「http://raspberrypi.local/phpinfo.php」の表示を確認
- sudo nano /etc/php/7.3/cli/php.ini
date.timezone = Asia/Tokyo
- sudo nano /etc/php/7.3/apache2/php.ini
date.timezone = Asia/Tokyo
sudo service apache2 restart
6. 自動起動プログラム
- 以下を/home/raspi/setup.shとして作成する。
2019.7.19 LANが立ち上がってから実行されるように「sleep 5」(3以上でOK)。
2019.7.19 実行結果の確認のためにntpdate.logに記録。
(注意) /var/log/syslogおよび/var/log/daemon.logに「ntpdate[776]: no servers can be used, exiting」があるがntpdateのバグか(
ntpdate starts before dhcpclient finishes...)。
#!/bin/bash
sleep 5
#/sbin/hwclock -s
#/usr/sbin/ntpdate -u -b ntp.nict.jp && /sbin/hwclock -w
if /usr/sbin/ntpdate -u -b ntp.nict.jp>>ntpdate.log; then
/sbin/hwclock -w
else
LANG=en_US.UTF-8 date=`date +"%d %b %T"`
echo "$date ntpdate failed.">>ntpdate.log
fi
/home/pi/shutdown.sh &
/home/pi/ntpclock.sh &
- crontab -e で末尾に以下を追加する。
7. その他
- ftpソフトはWinSCPを使う
- I2C液晶ディスプレイを接続
/home/pi/i2c_lcd.sh(775):
#!/bin/bash
function usage {
echo "Usage: $0 [-ic] [-p pos] message" > /dev/stderr;
echo " -i : LCD init, -c : Clear Screen" > /dev/stderr
echo " -p : position (0:top left, 40:bottom left)" > /dev/stderr
exit 1
}
[ $# = 0 ] && usage
while getopts "icp:" flag; do
case $flag in
\?) usage ;;
i) i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x78 0x5e 0x6c i
sleep 0.25
i2cset -y 1 0x3e 0 0x0c 0x01 0x06 i
sleep 0.05
;;
c) i2cset -y 1 0x3e 0 0x01 ;;
p) i2cset -y 1 0x3e 0 $((OPTARG+128)) ;;
esac
done
shift $((OPTIND-1))
[ $# = 0 ] && exit
LANG=C
MSG=`echo -n "$1" | perl -pe '$_=join" ",map{ord }split//'`
#echo $MSG
i2cset -y 1 0x3e 0x40 $MSG i
- LCDに時刻表示
/home/pi/ntpclock.sh(775):
#!/bin/bash
/home/pi/i2c_lcd.sh -i
while :
do
d=$(date +"%m/%d %H:%M:%S")
/home/pi/i2c_lcd.sh -p 0 "$d"
sleep 1
done
- GPIO4にshutdownスイッチ・GPIO27にLEDを接続
/home/pi/shutdown.sh(755):
#!/bin/sh
BUTTON=4 #GPIOポート
LED=27 #GPIOポート
PUSHTIME=5
gpio -g mode $BUTTON in
gpio -g mode $BUTTON up
gpio -g mode $LED out
gpio -g write $LED 1
cnt=0
while [ $cnt -lt $PUSHTIME ] ; do
if [ `gpio -g read $BUTTON` -eq "0" ] ; then
cnt=`expr $cnt + 1`
else
cnt=0
fi
sleep 1
done
/home/pi/i2c_lcd.sh -c -p 40 "Shutdown now..."
shutdown -h now
koyama88@cameo.plala.or.jp