サイトアイコン アラコキからの Raspberry Pi 電子工作

Raspberry Pi Raspbian Stretch のインストール

Raspberry Pi
Raspbian Stretch セットアップ 方法
 
Debian のコードネームは、「Toy Story」のキャラクターの名前が引き継がれており、Debian 9 のコードネームは「 Stretch 」になった。Debian 10 は「 Buster 」になるそうだ。Raspberry Pi に『 2017-08-16-raspbian-stretch version 』で、新規インストールを行った。

以下に、Raspbian Stretch  (Debian 9 stretch) のインストール方法について記載。
 

 

スポンサー リンク

 

 
 
 目 次
1. Raspbian Stretch のセットアップ
 1-1. Systemタブの設定
 1-2. Interfacesの設定
 1-3. オーバークロックの設定
 1-4. Localisationの設定
2. Rspberry Pi の最適化
 2-1. ipアドレスの固定化
 2-2. Chkconfig のインストールと不要デーモンの無効化
 2-3. 不要パッケージの削除
 2-4. swap の無効化
 2-5. tmpフォルダ の RAMディスク化
 2-6. cron により一日に一回システムをリブート
 2-7. ログの最小限化
3. セキュリティ設定
 3-1. root パスワードの設定とユーザの追加
 3-2. sshのポート変更 と root でのログインを無効化
 3-3. SSH接続のアクセス制限
 3-4. ファイヤーウォールの導入
 3-5. SSH接続の公開鍵化
 
 
 
 
1.Raspbian Stretch のセットアップ 
 
SDカードのフォーマット要領 や Raspberry Pi 起動ディスクの作成要領 については、Raspberry Pi SDカードに関するノウハウ一覧 を参照されたい。
 
 
初回起動で、いきなり立ち上がる X Windows のGUI 画面は、Jessie と全く同じ。
 
アプリケーションメニューから → Raspberry Pi Configuraition を起動。
 
1-1. Systemタブの設定
 
Systemタブの設定画面、Jessie からの変化点2つ。
1. Expand Filesystem が無くなった。
2. Resolutin が追加された。

 
①.ディフォルトユーザー ” pi ” のパスワードは、セキュリティ対策として必ず変更する。
②.ホスト名を設定。
③.起動時画面を『To CLI』に変更する。( CLI画面が使い慣れているから )
④.自動ログインのチェックを外す。
これで次回からはいきなりGUIは立ち上がらず、CLIの地味な画面でユーザ名とパスワードを入力してログインすることになる。
⑤.ディスプレイの解像度を設定する。

ディスプレイの解像度は、プルダウンで選択できる。
 
上記の設定は、下記の設定と同じで、この設定が簡単に行えるようになった。
sudo nano /boot/config.txt の編集
hdmi_ignore_edid=0xa5000080
Disable_overscan=1
hdmi_group=2
hdmi_mode=35
 
 
1-2. Interfacesの設定
 
SSH: SSH によるログインを【 Enabled 】とする。
 
 
1-3. オーバークロックの設定
 
ディフォルトのままとする。
 
 
1-4. Localisationの設定
 
それぞれの項目を『日本』仕様にする。
 
①.Set Locale:CLI モードを使用するので、ここでは日本語化しない。(ここで日本語化すると、今度は CLI モードで文字化けが起こる。)
 
Raspbian Jessie にはデフォルトで日本語フォントが入っていたが、Raspbian Stretch では日本語フォントが入っていない。Stretch で日本語化する場合は、日本語フォントをインストールする必要がある。
sudo apt-get install fonts-ipafont
sudo apt-get install ibus-mozc
 
②.Set Timezone: 時間帯を設定する。
 
③.Set Keyboard Layout: キーボード設定が反応しないので、アプリケーションメニューの【Keyboard and Mouse】から設定する。
 
【Keyboard and Mouse】設定の【Keyboard Layout】をクリックする。
 
Country : Japan と Variant : Japanese(OADG 109A) を選択する。
 

④.Set WiFi country:WiFi country コードの設定。

これで、Raspbian Stretch のセットアップは完了。
ここで一旦、reboot。
 
 
 
2. Rspberry Pi の最適化
 
ここからの作業は、ifconfig で IP Adress を確認し、SSHでの操作とする。
 
2-1. ipアドレスの固定化
 
Raspbian Stretch からは、従来までの eth0 スタイルではなく、enxb827eb815b91 のようなMACアドレスに基づくinterface名に変わった。
最近、また eth0 スタイルに戻った。(2017.11.29)
 
このMACアドレスは『 ifconfig 』で、調べる事が出来る。
 
/etc/dhcpcd.conf の編集。
sudo nano /etc/dhcpcd.conf で、ファイルの最下部に以下を追記。
- - - - -
interface enxb827eb815b91 ← MACアドレス ← eth0 で良くなった。
static ip_address=192.168.11.xxx/24
 ← xxx 固定 ipアドレス
static routers=192.168.11.1
static domain_name_servers=192.168.11.1
 
 これでリブートすれば、IPアドレスが固定化される。
 
 
2-2. Chkconfig のインストールと不要デーモンの無効化
 
sudo apt-get install chkconfig
- - - - -
$ sudo chkconfig triggerhappy off
$ sudo chkconfig alsa-utils off
$ sudo chkconfig lightdm off
$ sudo chkconfig plymouth off
 
 
2-3. 不要パッケージの削除
 
$ sudo apt-get autoremove -y wolfram-engine
$ sudo apt-get autoremove -y scratch
$ sudo apt-get autoremove -y python-pygame
$ sudo apt-get autoremove -y pistore
$ sudo apt-get autoremove -y sonic-pi
$ sudo apt-get autoremove -y python-minecraftpi
$ sudo apt-get autoremove -y idle idle3
$ sudo apt-get autoremove -y netsurf-common dillo
$ sudo apt-get autoremove -y debian-reference-common
$ sudo apt-get autoremove -y libraspberrypi-doc
- - - - -
$ sudo rm -rf /home/pi/python_games/
$ sudo rmdir /usr/local/games/
$ sudo rmdir /usr/games/
- - - - -
$ sudo apt-get autoremove -y man manpages
$ sudo apt-get autoremove -y git git-man
$ sudo apt-get autoremove -y galculator
 
 
2-4. swap の無効化
 
スワップは(マイクロ)SDカードへ負荷をかけるので、これを無効にする。freeで確認すると、スワップが100MBほどある。
pi@yaopi70:~ $ free
              total        used        free      shared  buff/cache   available
Mem:         949576       31020      555188        6312      363368      851112
Swap:        102396           0      102396
 
swapを無効化。
sudo swapoff –all
 
再度、freeで確認。スワップがゼロになった。
pi@yaopi70:~ $ free
              total        used        free      shared  buff/cache   available
Mem:         949576       31104      555088        6312      363384      851028
Swap:             0           0           0
 
これだけだと、リブートしたときに復活するので swap が起動しないようにパッケージを削除。
sudo apt-get remove dphys-swapfile
 
ブート設定でも、自動起動しないように dphys-swapfile をオフにする
sudo chkconfig dphys-swapfile off
 
dphys-swapfile オフの確認。
pi@yaopi70:~ $ sudo chkconfig dphys-swapfile -list
dphys-swapfile            0:off  1:off  2:off  3:off  4:off  5:off  6:off
 
swap ファイルの削除
sudo rm /var/swap
 
 
2-5. tmpフォルダ の RAMディスク化
 
tmpフォルダのマウント状況確認。
pi@yaopi70:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G  3.4G   25G  13% /
devtmpfs        460M     0  460M   0% /dev
tmpfs           464M     0  464M   0% /dev/shm
tmpfs           464M  6.2M  458M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           464M     0  464M   0% /sys/fs/cgroup
/dev/mmcblk0p1   42M   21M   21M  52% /boot
tmpfs            93M     0   93M   0% /run/user/1
 
sudo nano /etc/fstab で次の2行を追記。
 
# tmp files put on RAM disk
tmpfs /tmp tmpfs defaults,size=32m 0 0
tmpfs /var/tmp tmpfs defaults,size=16m 0 0
#
 
 再起動。
sudo reboot
 
df -h で tmp がマウントされているか再確認。上記で追加したtmp がマウントされている。
pi@yaopi70:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G  3.4G   25G  13% /
devtmpfs        460M     0  460M   0% /dev
tmpfs           464M     0  464M   0% /dev/shm
tmpfs           464M  6.2M  458M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           464M     0  464M   0% /sys/fs/cgroup
tmpfs            16M     0   16M   0% /var/tmp
tmpfs            32M     0   32M   0% /tmp
/dev/mmcblk0p1   42M   21M   21M  52% /boot
tmpfs            93M     0   93M   0% /run/user/1000
 
 これでRAMディスク化ができたので、SDカード上の tmpファイルを削除する。
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
 
 
2-6. cron により一日に一回システムをリブート
 
 RAMをクリアするために、システムを自動でリブートする設定を行う。
sudo crontab -e
nanoでcrontabファイルの編集ができる。
最後の行に下記を追加する。ここでは午前4時5分に再起動がかかるようにした。
5 4 * * * /sbin/reboot
 
 
2-7. ログの最小限化
 
rsyslog.confを編集し、必要最小限のログ(auth , syslogとmessages)のみを記録させるようにして、ディスクへの書き込みを減らす。
sudo nano /etc/rsyslog.conf
 
必要最低限のログだけ残し、他はコメントアウトする 。
###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*			/var/log/auth.log
*.*;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
#daemon.*			-/var/log/daemon.log
#kern.*				-/var/log/kern.log
#lpr.*				-/var/log/lpr.log
#mail.*				-/var/log/mail.log
#user.*				-/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info			-/var/log/mail.info
#mail.warn			-/var/log/mail.warn
#mail.err			/var/log/mail.err

#
# Logging for INN news system.
#
#news.crit			/var/log/news/news.crit
#news.err			/var/log/news/news.err
#news.notice			-/var/log/news/news.notice

#
# Some "catch-all" log files.
#
#*.=debug;
#	auth,authpriv.none;
#	news.none;mail.none	-/var/log/debug
*.=info;*.=notice;*.=warn;
	auth,authpriv.none;
	cron,daemon.none;
	mail,news.none		-/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg				:omusrmsg:*

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;
#	news.=crit;news.=err;news.=notice;
#	*.=debug;*.=info;
#	*.=notice;*.=warn	/dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
# 
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
#      busy site..
#
daemon.*;mail.*;
	news.err;
	*.=debug;*.=info;
	*.=notice;*.=warn	|/dev/xconsole
 
 
 
 
3.セキュリティ設定
 
3-1. root パスワードの設定とユーザの追加
 
 root パスワードの設定。
sudo passwd root
 
exit し root でログインした後、xxxxxx ユーザの追加と sudo グループへの追加。
sudo adduser xxxxxx
sudo gpasswd -a xxxxxx sudo
 
/etc/sudoersを編集し、xxxxxx ユーザのコマンド毎での、パスワード入力を不要にする 。
sudo nano /etc/sudoers
次の行を追記する。
xxxxxx ALL=(ALL) NOPASSWD: ALL
 
pi ユーザーの削除。
userdel -r pi
 
 
3-2. sshのポート変更 と root でのログインを無効化
 
ssh設定ファイルのバックアップ。
cd /etc/ssh/
sudo cp sshd_config sshd_config.org
 
sshのポート番号を変更し、SSHの root でのログインを無効にする。
sudo nano sshd_config
(自由に利用できる番号として、公式には49152-65535が規定されている)
Port 22 → nnnnn
 ← 変更
PermitRootLogin no
 ← 追記
 
sshサーバを再起動。
cd
sudo service ssh restart
 
 
3-3. SSH接続のアクセス制限
 
SSH接続は外部から破られるとコンピュータを乗っ取られるので、ローカルLANまたは指定IPからの接続のみを許可するように、アクセス制限を行う。
 
hosts.denyファイルを修正する。
sudo nano /etc/hosts.deny
# アクセス制限を追加(すべてのアクセスを拒否)
sshd: ALL
 
hosts.allowファイルを修正する。
sudo nano /etc/hosts.allow
# ローカルLANからのアクセスのみを許可
sshd: 192.168.11.0/24 127.0.0.0/8
 
 
3-4. ファイヤーウォールの導入
 
ファイヤーウォールの導入。
sudo apt-get install ufw
 
ステータスの確認。
sudo ufw status
inactive
 
アクセス制限の設定。Port 22 → nnnnn に変更済み番号。
sudo ufw limit nnnnn
 
ポート 80 と 443 を許可する。
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
 
ファイヤウォールを有効にする。
sudo ufw enable
 
ステータスの確認。
sudo ufw status
active
 
 
3-5. SSH接続の公開鍵化
 
以下の要領は、すでに公開鍵があり、同じものを使いまわす場合の手順で記載。
 
参考:
 
公開鍵ファイル id_rsa.pub をTera Termにドラッグアンドドロップする。
ドラッグアンドドロップすると「ファイル転送を行いますか?」というメッセージが表示されるので、「SCP」をクリックし、ファイルを転送する。
 
鍵格納用フォルダを作り、作成したフォルダのパーミッションを設定した後、鍵をフォルダに移動する。
$ pwd
/home/yaopi
$ ls
id_rsa.pub
$ mkdir .ssh
$ chmod 700 .ssh
$ mv id_rsa.pub .ssh/authorized_keys
 
SSHの設定を、認証鍵方式のログインに変更。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org2
sudo nano /etc/ssh/sshd_config
- - - - -
PubkeyAuthentication yes
 ← #を外す
AuthorizedKeysFile %h/.ssh/authorized_keys
 ← 追記
PasswordAuthentication no
 ← #を外し、yesをnoに変更
 
以上で設定は終了。SSHサーバーを再起動して設定を読み込ませる。
sudo service ssh restart
 
 
参考:
 
 

以上。
(2017.09.10)

 

 

スポンサー リンク

 

             

 

 

 
モバイルバージョンを終了