メモ:Raspberry Pi3 の設定

骨折してバイクに乗れないので、かわりといってはあれですが、Raspberry Pi3 を購入しました。
ようやく基本的な設定が終わったみたいなので、メモ書きを残しておきます > 明日の自分 .

Raspberry Pi3 に設定する内容

  1. 有線LANのIPアドレス: 192.168.11.201
  2. 無線LANのIPアドレス: 172.24.1.1 (アクセスポイントにする)
  3. SSH のポート : 2222
  4. 家庭内LAN用のDNS : DNSMASQ
  5. WEB Server : nginx

備考:家庭内LAN はルーターが 192.168.11.1/24 で、こいつがDHCPサーバー
参考にされる場合は、適宜読み替えてください。

Linux(Debian Jessie)の NotePC で raspbian の ZIP を落として解凍しておく

from: https://www.raspberrypi.org/downloads/raspbian/
更新が入るかも、なのでむやみに早く落としておく必要はない
時間がかかるので、落としている間はお風呂に入りましょう(入らなくても良いけど…)
この手の作業は無線ではなく有線LANでやるのが吉ですが、季節柄こたつで作業したかったので無線で落としました。
NotePC じゃなくても、Linux じゃなくても良いのですが、私は普段はNotePCでLinuxを使っているので。

sd メディアのデバイスを確認する

8GB以上 の マイクロ SD カード(以降は単に SD カードとする)を必要に応じてアダプターを介するなどして、NotePCに挿入して dmesg を実行し、SD カードのデバイスを確認する
——–<<<ここから>>>————————-
(略)
[26998.496791] mmc0: new high speed SDHC card at address 59b4
[26998.497624] mmcblk0: mmc0:59b4 USD 29.4 GiB
(略)
——–<<<ここまで>>>————————-
上記は 32GB の 新品 SD カードを刺した時のもの.

=> デバイスは /dev/mmcblk0 !

通常は /dev/ の部分は固定で、それ以降の部分を dmesg の結果から得る。
デバイスを間違えると次の作業で悲惨な目に遭いかねないので慎重に。
他の SD カードは刺さっていない状態を作って、何度かその SD カードを抜き差しし、都度 dmesg を確認すれば間違える可能性は減らせるでしょう
SD カードを使いまわす場合、念の為に次をやっておくと良いかも。
sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1K seek=256 count=32

Raspbian のイメージをsdに書き込む

sudo dd if=2016-03-18-raspbian-jessie.img of=/dev/mmcblk0

if=のファイル名は私の場合。何時 Raspbian を落とすかにより変わり得る
of=のデバイス名は上の1.で確認したデバイス名。打ち間違えないよう、コピペするのが安全かも
進捗を見るには、別のウィンドウから次のコマンドを実行すると、元のddの画面に、コピーされたバイト数が表示される
sudo pkill -USR1 dd
linux の場合で、mac は駄目らしい(未確認)。
パーセンテージ表示とかはないので、元のイメージのファイルサイズ(約4GB)と比較して進捗度合いを把握する。
進捗を頻繁に確認するよりは、他の作業をしていた方がマシなほど時間がかかる。
dd が完了したら、念の為 sudo sync をして、バッファーに溜まってるものを書き出させておく(要るのか?)

出来上がった sd の内容を確認してから取り出す

(1)sudo lsblk -o +fstype |sed -n ‘1p;/mmcblk0/p’
——–<<<ここから>>>————————-
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT FSTYPE
mmcblk0 179:0 0 29.5G 0 disk
├─mmcblk0p1 179:1 0 60M 0 part vfat
└─mmcblk0p2 179:2 0 3.7G 0 part ext4
——–<<<ここまで>>>————————-

(2)sudo sfdisk –dump /dev/mmcblk0
——–<<<ここから>>>————————-
# partition table of /dev/mmcblk0
unit: sectors

/dev/mmcblk0p1 : start= 8192, size= 122880, Id= c
/dev/mmcblk0p2 : start= 131072, size= 7747584, Id=83
/dev/mmcblk0p3 : start= 0, size= 0, Id= 0
/dev/mmcblk0p4 : start= 0, size= 0, Id= 0
——–<<<ここまで>>>————————-

mmcblk0 の部分は、適宜読み替えること
(2)の mmcblk0p3 や mmcblk0p4 は size=0 なら良いんじゃないだろうか?
mmcblk0p1 と mmcblk0p2 がちゃんと出来ていればOKのはず。(ちゃんとって何だ?)

もう一度、sudo sync しておいてから、SD カードを抜く

Raspberry Pi3 の起動

LANとHDMIケーブル、キーボード・マウスを繋げて、用意しておいた SD カードを差し、電源ケーブルを繋ぐと電源が入る(キーボードを繋げておかないと、キーボードの設定がメニューから出来なかった気がするのは気のせい?)。
まぁ、私の場合は、ポインティング・デバイス付きのキーボードなのでマウスは繋げないんだけど…
暫くまつとGUIで起動してくる。起動してこなければ、ケーブルや sd カードの差し込みを確認する。

私の場合、この段階で、ルーターの管理画面で、DHCP で新たに割り当てられた IP アドレスを持つ MAC に対して、192.168.11.201 を割り当てるように操作して反映させたうえで、一度 Raspberry を再起動した。
これにより、以降は ssh 経由で作業がしやすくなる。

以下は、母艦(NotePC)から ssh -p 22 pi@192.168.11.201 で繋いで作業した。( ssh の設定を変更したら、それに応じて変わるけれども )

慣れないうちは、いや、慣れてからでも設定作業は平行して作業しないほうが良い。何かしら勘違いをする。
できれば、raspberry 以外に ssh 接続していたら、それは切断しておいた方が混乱が無い。
不要なターミナル・ソフトも閉じておく。ssh 作業に慣れていないならなおさら。
可能ならば、LAN内の不必要なPC等は、電源をオフしておくか、LANから離脱させておく。

何か致命的に間違えたなら、sd を再作成して作業をしなおす。

ユーザーID設定等

pi のパスワードを変更する

  1. passwd を実行する
  2. カレントのパスワードとして raspberry を入力する
  3. 新しく設定するパスワードを入力して Enter キーを押す
  4. もう一度新しく設定するパスワードを入力して Enter キーを押す

root のパスワードを変更しておく

  1. sudo passwd root を実行して設定
  2. 新しく設定するパスワードを入力して Enter キーを押す
  3. もう一度新しく設定するパスワードを入力して Enter キーを押す

通常使うユーザーIDを追加

取り敢えず説明では taka という id を追加する。

  1. sudo adduser taka を実行して設定(グループはwheelにしておきたかったがまだ無いようなので気にしない)
  2. sudo usermod -a -G adm,dialout,cdrom,sudo,video,plugdev,games,users,input,netdev,spi,i2c,gpio taka
  3. (sudo id -a pi でグループを確認した)

  4. sudo visudo を実行して変更
  5. #pi ALL=(ALL) NOPASSWD: ALL
    taka ALL=(ALL) PASSWD: ALL

  6. su taka を実行して新しく作ったユーザーIDになって、sudo sync を実行してみる

IP固定化

ルーターのDHCP側で固定にはしているんだけど、端から固定にした方が起動時間が短くなるはずなので….
sudo vi /etc/dhcpcd.conf (以下追加内容)
——–<<<ここから>>>————————-
interface eth0
static ip_address=192.168.11.201/24
static routers=192.168.11.1
static domain_name_servers=8.8.8.8

interface wlan0
static ip_address=172.24.1.1/24
——–<<<ここまで>>>————————-

fstab のチューニング

sudo vi /etc/fstab (以下追加内容)
——–<<<ここから>>>————————-
tmpfs /run/shm tmpfs rw,noexec,nosuid,nodev,relatime 0 0
tmpfs /tmp tmpfs defaults,noatime,nosuid 0 0
——–<<<ここまで>>>————————-
sudo mount -a を行ってエラーが出ない事を確認しておく
/var/log を tmpfs にしても良いんだけど、起動時にmkdir/chown/touchなどしないといけなくなるので…

raspi-configでの作業

su – で root になる ( sudo では、「Expand Filesystem」が上手く行かなかった気がする )
raspi-config を実行する

  1. 「Expand Filesystem」を選択
  2. 「Boot Options」で「B1 Console」を選択
  3. 「Advanced Options」
  4. 「Hostname」に「rpi.XXXXXXXX.jp」を指定
    「SSH」を「Enable」に指定
    「Device Tree」を「Enable」に指定

  5. 「Internationaization Options」
  6. (デスクトップとして使わないので英語として設定する)
    「Change Locale」を設定 (上下カーソルで移動してスペースキー)
    [ ]en_GB.UTF-8 UTF-8
    [*] en_US.UTF-8 UTF-8
    -> en_US.UTF-8 を選択
    「Change Timezone」-> 「Asia」 -> 「Tokyo」 を設定
    「Change Keyboard Layout」
    -> 「Generic 105-key (Intl) PC」
    -> 「Other」
    -> 「Japanese」
    -> 「Japanese – Japanese (OADG 109A)」
    -> 「The default for the keyboard layout」
    -> 「No compose key」
    -> 「Use Control+Alt+Backspace to terminate the X server?」は
    「Change Wi-fi Country」->「JP Japan」

  7. 「Advanced Options」->「Update」 (ここでやらなくても良いのかも....)
  8. sd のサイズが小さいなら、一度終わらせ、reboot してから実施。
    最初に行ったほうが良いのかもしれない…
    (時間がかかるのは私の環境のせい?)

  9. で exit して sudo reboot し、ssh で再接続(pi じゃなく taka でログイン )

df -h で / のファイルシステムが拡張されている事を確認する

システム更新・基本的なソフトウェアの導入等

準備

sudo vi /etc/apt/sources.list (deb-src の行の先頭の#を取る)
sudo apt-get update
wget https://archive.raspbian.org/raspbian.public.key -O – | sudo apt-key add –

システム更新

  1. sudo apt-get update を実行 (時間がかかる)
  2. sudo rpi-update を実行 (時間がかかる)
  3. sudo apt-get upgrade を実行 (時間がかかる)

/boot/config.txt の更新

必要なら、sudo vi /boot/config.txt (以下、追加内容:USB 出力電流量を増加させる)
——–<<<ここから>>>————————-
max_usb_current=1
——–<<<ここまで>>>————————-

pi ユーザーを削除

sudo userdel -r pi

ipv6 を無効化

sudo vi /etc/sysctl.d/10-local.conf
——–<<<ここから>>>————————-
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.br0.disable_ipv6 = 1
——–<<<ここまで>>>————————-

sudo vi /etc/modprobe.d/ipv6.conf
——–<<<ここから>>>————————-
# Don’t load ipv6 by default
alias net-pf-10 off
alias ipv6 off
——–<<<ここまで>>>————————-

ssh設定

sudo vi /etc/ssh/sshd_config (確認/変更箇所のみ)
——–<<<ここから>>>————————-
Port 2222
PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
DenyUsers ALL
AllowUsers taka
——–<<<ここまで>>>————————-

sudo vi /etc/ssh/ssh_config (追記確認)
——–<<<ここから>>>————————-
AddressFamily inet
——–<<<ここまで>>>————————-

sudo vi /etc/hosts.allow (確認/変更箇所のみ)
——–<<<ここから>>>————————-
ALL: 127.0.0.1
sshd: 192.168.11. 172.24.1.
——–<<<ここまで>>>————————-

sudo vi /etc/hosts.deny (確認/変更箇所のみ)
——–<<<ここから>>>————————-
sshd: ALL
——–<<<ここまで>>>————————-

sudo /etc/init.d/ssh restart
sudo insserv -d ssh

[[clientから]]
ssh -p 2222 192.168.11.201
(本当に接続するかと聞かれたらすると答えたあとで…..パスワード認証)
mkdir ~/.ssh
chmod 700 ~/.ssh
exit

[[別ターミナル:rsa は別途作成しておく]]
vi ~/.ssh/config (追加内容)
——–<<<ここから>>>————————-
Host rpi
HostName 192.168.11.201
User taka
Port 2222
IdentityFile ~/.ssh/raspberry/id_rsa
ServerAliveInterval 60
——–<<<ここまで>>>————————-
ssh-copy-id -p 2222 -i ~/.ssh/raspberry/id_rsa.pub taka@192.168.11.201
(パスワードを入力)

ssh rpi
(パスワードなしでログインできたらok)

[[以下は client から rsa認証の確認が取れてからRaspberry側で実施する事….]]

sudo vi /etc/ssh/sshd_config (確認/変更箇所のみ)
——–<<<ここから>>>————————-
PasswordAuthentication no
UsePAM no
——–<<<ここまで>>>————————-

sudo /etc/init.d/ssh restart
sudo insserv -d ssh

ファイヤーウォール設定

sudo apt-get install iptables-persistent
sudo vi /etc/iptables/rules.v4


スキルが足りないので、余りセキュアに出来ていない。まだ使ってないポートも開いている…

sudo ln -s /etc/iptables/rules.v4 /lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat
(要らないのかも….)

sudo vi /etc/iptables/rules.v6


sudo netfilter-persistent reload
間違えてたら、iptables -F でリセットして作業見直し

ntp サーバーにする

sudo apt-get install ntp
sudo vi /etc/ntp.conf


sudo vi /etc/default/ntp
——–<<<ここから>>>————————-
NTPD_OPTS=’-4 -g’
——–<<<ここまで>>>————————-

sudo /etc/init.d/ntp restart
暫く待ってから同期状態を確認する
ntpq -pn

Name サーバーにする

利用するのは dnsmasq 簡易DNSサーバー(逆引きの記述が不要なので選んだ)

sudo apt-get install dnsmasq dnsutils
sudo vi /etc/dnsmasq.conf


sudo vi /etc/hosts ここの登録を充実させればいい
———————————————-
127.0.0.1 localhost
#::1 localhost ip6-localhost ip6-loopback
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters
#
#127.0.1.1 rpi.XXXXXXXX.jp
192.168.11.201 rpi.XXXXXXXX.jp rpi
———————————————-

sudo service dnsmasq restart

Raspberry上での動作確認
nslookup 8.8.8.8
nslookup 192.168.11.201

動作が大丈夫そうだったら、ルーターの設定で、プライマリーのDNSサーバーをRaspberryのIPアドレスにする
セカンダリーに8.8.8.8 を指定しておくと、サーバーダウン時に良いと思う

Wifi アクセス・ポイントにする

sudo apt-get install hostapd haveged
sudo vi /etc/hostapd/hostapd.conf


sudo vi /etc/hostapd/hostapd.accept (接続許可するMAC を1行に一つづつ書いていく)
——–<<<ここから>>>————————-
00:00:00:00:00:00
——–<<<ここまで>>>————————-

sudo vi /etc/rc.local (exit 0 の前に追加)
——–<<<ここから>>>————————-
sleep 5
service dnsmasq restart
——–<<<ここまで>>>————————-

sudo vi /etc/sysctl.conf (以下追加)
——–<<<ここから>>>————————-
net.ipv4.ip_forward=1
——–<<<ここまで>>>————————-

sudo vi /etc/network/interfaces(変更 箇所のみ:あればコメントアウトする)
——–<<<ここから>>>————————-
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
——–<<<ここまで>>>————————-

sudo vi /etc/init.d/hostapd (変更・確認箇所のみ)
——–<<<ここから>>>————————-
DAEMON_CONF=/etc/hostapd/hostapd.conf
——–<<<ここまで>>>————————-

ファイル・サーバーにする

sudo apt-get install samba
sudo mkdir /home/share
sudo chown nobody:nogroup /home/share
sudo chmod 777 /home/share
sudo vi /etc/samba/smb.conf (変更箇所)
——–<<<ここから>>>————————-
[global]
unix charset = UTF-8 # <= 追加
dos charset = CP932 # <= 追加 workgroup = WORKGROUP
interfaces = 127.0.0.0/8 192.168.11.0/24 172.24.1.0/24

bind interfaces only = yes # <= interfaces 項目に指定したホストだけに接続を限定する
log file = /var/log/samba/log.%m

map to guest = bad user # <= 未登録アカウントで接続された場合にゲストとして扱う load printers = no # <= プリンタを使用していない場合
disable spoolss = yes # <= プリンタを使用していない場合 printing = bsd # <= プリンタを使用していない場合 # 最終行に追加
[share] # <= 共有名
path = /home/share # <= 共有ディレクトリ
writable = yes # <= 書込可
guest ok = yes # <= ゲストユーザー可
guest only = yes # <= 全てゲストとして扱う
create mode = 0777 # <= ファイル作成はフル権限で
directory mode = 0777 # <= ディレクトリ作成はフル権限で
——–<<<ここまで>>>————————-
(# 以降は記述していない)
sudo touch /etc/printcap
sudo /etc/init.d/samba restart
sudo smbpasswd -a taka

DLNA サーバー構築

sudo apt-get install minidlna
su –
echo “fs.inotify.max_user_watches = 81920” > /etc/sysctl.d/minidlna.conf
exit
sudo sysctl -p /etc/sysctl.d/minidlna.conf
sudo sysctl fs.inotify.max_user_watches

sudo cp -p /etc/minidlna.conf /etc/minidlna.conf.ORG
sudo vim /etc/minidlna.conf (変更箇所のみ)
——–<<<ここから>>>————————-
#media_dir=/var/lib/minidlna
media_dir=A,/home/share/dlna/music
media_dir=P,/home/share/dlna/pictures
media_dir=V,/home/share/dlna/videos
——–<<<ここまで>>>————————-
sudo mkdir -p /home/share/dlna/music
sudo mkdir -p /home/share/dlna/pictures
sudo mkdir -p /home/share/dlna/videos
<<2016-04-20 add start>>
sudo chown nobody:nogroup /home/share/dlna/pictures/
sudo chown nobody:nogroup /home/share/dlna/videos/
sudo chown nobody:nogroup /home/share/dlna/music/
<<2016-04-20 add end >>
service minidlna restart
sudo apt-get install php5-sqlite
sudo chmod a+w /var/cache/minidlna/files.db

web サーバー構築

sudo apt-get install nginx php5 php5-fpm
cd /etc/nginx
sudo vi /etc/nginx/sites-enabled/default (変更箇所のみ)
——–<<<ここから>>>————————-
index index.html index.htm index.nginx-debian.html;
->
index index.php index.html index.htm index.nginx-debian.html;

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
——–<<<ここまで>>>————————-

cd /var/www/html
sudo vi index.php
——–<<<ここから>>>————————-
phpinfo();
?>
——–<<<ここまで>>>————————-

sudo mkdir /var/log/nginx
sudo /etc/init.d/nginx configtest
sudo /etc/init.d/nginx start

別マシンから http://192.168.11.201 へアクセス(再起動してからかも)

mysql 導入

sudo apt-get install mysql-server
sudo vi /etc/mysql/my.cnf (追記場所のみ)
——–<<<ここから>>>————————-
[client]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect=’SET NAMES utf8′
character-set-server = utf8

[mysqldump]
default-character-set=utf8
——–<<<ここまで>>>————————-

ユーザーを作る
mysql -u root -p
mysql> CREATE USER ‘taka’@’localhost’ IDENTIFIED BY ‘xxxxxxxxx’;
mysql> select User,Host from mysql.user;
mysql> SHOW GRANTS FOR taka@localhost;
mysql> CREATE DATABASE taka CHARACTER SET utf8;
mysql> grant all on taka.* to taka@localhost identified by ‘xxxxxxxxx’;
mysql> exit

boot 時に全てのコアを使用する

不要なのかも知れないけど...
sudo vi /etc/init.d/rc
find this line : CONCURRENCY=makefile
replace with : CONCURRENCY=shell

/etc/sysctl.confの編集

次を設定(行追加) ・・・よくわかっていないものも含む
——–<<<ここから>>>————————-
vm.swappiness = 20
vm.dirty_writeback_centisecs = 1500
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.core.netdev_max_backlog = 5000
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

kernel.threads-max = 65535
fs.file-max = 131070
vm.readahead_ratio = 100
vm.readahead_hit_rate = 5
vm.hardmaplimit = 0
vm.mapped = 10
——–<<<ここまで>>>————————-

VNC接続できるようにする

sudo apt-get install tightvncserver xrdp
vncserver :1
(パスワードを指定して一旦終わらせる)
vncserver -kill :1
vi ~/.vnc/xstartup
(追加箇所)
——–<<<ここから>>>————————-
#x-window-manager &
startlxde &
——–<<<ここまで>>>————————-
vncserver :1 -geometry 1024×600
vi /etc/rc.local (挿入)
——–<<<ここから>>>————————-
/bin/su -l taka -c “vncserver :1 -geometry 1024×600”
——–<<<ここまで>>>————————-

rootを HDD にする

HDD を USB 接続する
(他に接続してなければ、/dev/sda)
sudo fdisk /dev/sda
既存のパーティションを全て消す
新規に作成
1番目:n -> p -> (開始セクタはデフォルト) -> (サイズはswapに割り振る量を適当)
2番め:n -> p -> 2 −> (開始セクタはデフォルト) -> (終了セクタはデフォルト)
タイプ変更:t -> 1 -> 82
確認 :p
確定 :w
終了 :q

sudo mke2fs -t ext4 /dev/sda2
sudo mkswap /dev/sda1
/dev/mmcblk0p2 の内容をHDDへコピー
sudo mkdir /mnt/hdd
sudo dd if=/dev/mmcblk0 of=/mnt/hdd/raspbian_xxxxxxxx.dd.img
(この段階の sd の内容をコピーしておく)
sudo mkdir /mnt/sd
sudo mount /dev/sda1 /mnt/hdd
sudo mount /dev/mmcblk0p2 /mnt/sd
cd /mnt/hdd
sudo cp -ax /mnt/sd/* ./
(時間がかかる)
sudo umount /mnt/sd
sudo cp /etc/fstab /etc/fstab.org
sudo vi /etc/fstab (以下、変更箇所のみ)
——–<<<ここから>>>————————-
/dev/sda2 / ext4 defaults,noatime 1 1
/dev/sda1 none swap defaults 0 0
# /dev/mmcblk0p2 / ext4 defaults,noatime 0 1
——–<<<ここまで>>>————————-
sudo mount /dev/mmcblk0p1 /mnt/sd
sudo cp /mnt/sd/boot/cmdline.txt /boot/cmdline.txt.org
sudo vi /boot/cmdline.txt
——–<<<ここから>>>————————-
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait
——–<<<ここまで>>>————————-
sudo umount /mnt/sd
sudo umount /mnt/hdd
<<2016-04-20 add start>>
sudo tune2fs -o journal_data_writeback /dev/sda2
<<2016-04-20 add end >>
sudo shutdown -r now
再起動したらログイン
df
sudo swapon -s

抜け・間違いがあるかも知れません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA