Raspberry pi 3 をセットアップする
夏休みなので、家で眠ってた Raspberry pi 3 Model B を取り出して遊んでみる。
初期設定の情報もググってみると、だいぶ出揃ってるので、割と苦労せずにセットアップできそう。
Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear)-Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
出先でHDMIディスプレイもキーボードもマウスも十分なものがないので、
mac book pro に有線LANで直接つないでセットアップするよ。
※あと最低限必要なのはネット環境とラズパイの電源くらい
USBアダプタ 5V/2.5A Raspberry Pi 3 Model B【2016年2月29日発売】用
- 出版社/メーカー: KSY
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
Amazonで、ラズパイと抱き合わせで買った micro SD カード
【Amazon.co.jp限定】Transcend microSDHCカード 32GB Class10 (無期限保証) Newニンテンドー3DS 動作確認済 TS32GUSDHC10E (FFP)
- 出版社/メーカー: トランセンド・ジャパン
- メディア: Personal Computers
- 購入: 6人 クリック: 5回
- この商品を含むブログを見る
をフォーマットする
micro SD カード を SD カードアダプタに装着して mac book pro に挿入する
(接触不良で5回くらい抜き差ししないと認識しなかった...ホコリが結構入りこんでたみたい)
$ diskutil list /dev/disk0 (internal, physical): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *500.3 GB disk0 .... /dev/disk1 (internal, virtual): #: TYPE NAME SIZE IDENTIFIER 0: Apple_HFS Macintosh HD +499.1 GB disk1 .... /dev/disk2 (internal, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *31.9 GB disk2 1: Windows_FAT_32 NO NAME 31.9 GB disk2s1
自分の環境では /dev/disk2
がSD Cardに該当する模様。
もともと FAT32
フォーマットっぽいし、もしかしたらフォーマット必要ないかもしれない。
が、 NO NAME
というのも寂しいし、せっかくなので名前を付けつつフォーマットしてみる。
$ diskutil eraseDisk FAT32 RASPBERRYPI /dev/disk2 Password: Started erase on disk2 Unmounting disk Error: -69877: Couldn't open device
ん...? フォーマットできない....
ちょっと悩んだが、SDカードアダプタ横の"ロック"スライドスイッチがONになってるという悲しいミスであった。
$ diskutil eraseDisk FAT32 RASPBERRYPI /dev/disk2 Started erase on disk2 Unmounting disk Creating the partition map Waiting for the disks to reappear Formatting disk2s2 as MS-DOS (FAT32) with name RASPBERRYPI 512 bytes per physical sector /dev/rdisk2s2: 61891008 sectors in 1934094 FAT32 clusters (16384 bytes/cluster) bps=512 spc=32 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=61921280 bspf=15111 rdcl=2 infs=1 bkbs=6 Mounting disk Finished erase on disk2
フォーマットできたので、micro SD カードをアンマウントする
$ diskutil unmountDisk /dev/disk2 Unmount of all volumes on disk2 was successful
Raspbian jessie をダウンロードする www.raspberrypi.org
まぁ時間がかかる(ので、事前に落としておくとよい)
$ time wget -4 https://downloads.raspberrypi.org/raspbian_latest ... Length: 1393896178 (1.3G) [application/zip] Saving to: ‘raspbian_latest’ raspbian_latest 100%[================================================================================================================>] 1.30G 1.46MB/s in 21m 37s 2016-08-12 08:39:58 (1.03 MB/s) - ‘raspbian_latest’ saved [1393896178/1393896178] wget -4 https://downloads.raspberrypi.org/raspbian_latest 7.29s user 47.48s system 4% cpu 21:39.90 total $ openssl sha1 raspbian_latest #ファイルの確認 - downloadページに書いてあるsha1ハッシュ値と見くらべる SHA1(raspbian_latest)= 64c7ed611929ea5178fbb69b5a5f29cc9cc7c157 $ unzip raspbian_latest Archive: raspbian_latest inflating: 2016-05-27-raspbian-jessie.img $ ll 2016-05-27-raspbian-jessie.img -rw-r--r-- 1 tkrtmy staff 3.7G 5 27 20:50 2016-05-27-raspbian-jessie.img
実際に micro SD カードに書き込んでいく。
思ったより時間はかからなかった。
# Ctrl + t で進捗確認できる $ time sudo dd bs=1m if=path/to/2016-05-27-raspbian-jessie.img of=/dev/rdisk2 Password: 501+0 records in 500+0 records out 524288000 bytes transferred in 20.045412 secs (26155013 bytes/sec) load: 1.76 cmd: dd 45231 uninterruptible 0.01u 2.19s 2786+0 records in 2785+0 records out 2920284160 bytes transferred in 141.203796 secs (20681343 bytes/sec) 3833+0 records in 3833+0 records out 4019191808 bytes transferred in 196.553034 secs (20448383 bytes/sec) sudo dd bs=1m if=path/to/2016-05-27-raspbian-jessie.img 0.03s user 3.06s system 1% cpu 3:20.94 total $ diskutil eject /dev/disk2 Disk /dev/disk2 ejected
mac で システム環境設定 > 共有 > インターネット共有で、
- 共有する接続経路: Wi-Fi
- 相手のコンピュータでのポート: AX88772(今回USBの有線LAN変換ケーブルを使用したので)
に設定する
Raspberry pi に micro SDカードと有線LANを差し込む
電源を入れる
しばらく経ったら
$ ifconfig # 接続先を絞り込む bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ... inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255 .... status: active # status: active になっている必要があるとのこと $ arp -a # で、192.168.2.1 ~ 192.168.2.255 までのうちのどれかを探して $ ssh pi@{見つけたipアドレス} # password は raspberry pi@raspberrypi:~ $ sudo raspi-config # で、SDカードの全容量使えるようにしたりとかlocaleとかタイムゾーンとか色々設定する - 割愛 -
新規ユーザーを作成する
pi@raspberrypi:~ $ sudo passwd root pi@raspberrypi:~ $ sudo useradd tkrtmy pi@raspberrypi:~ $ sudo passwd tkrtmy pi@raspberrypi:~ $ cd /home && mkdir tkrtmy pi@raspberrypi:~ $ id pi #新しく作ったユーザーに次の行でpiに準ずる権限グループをお好みでつける pi@raspberrypi:~ $ # sudo usermod -G adm,dialout,audio,video,gpio... tkrtmy pi@raspberrypi:~ $ sudo gpasswd -a tkrtmy sudo ユーザ tkrtmy をグループ sudo に追加 pi@raspberrypi:~ $ exit $ ssh tkrtmy@{ipアドレス} # ユーザーを tkrtmy に変えて再ログイン tkrtmy@raspberrypi:~$ sudo chown -R tkrtmy:tkrtmy /home/tkrtmy tkrtmy@raspberrypi:~$ sudo gpasswd -d pi sudo tkrtmy@raspberrypi:~$ sudo visudo # コメントアウトして pi ユーザーの権限を無効にしてしまう #pi ALL=(ALL) NOPASSWD: ALL tkrtmy@raspberrypi:~$ sudo usermod -L pi # piのパスワードをロック # 更新しておく tkrtmy@raspberrypi:~$ sudo apt-get update tkrtmy@raspberrypi:~$ sudo apt-get upgrade
公開鍵認証でログインできるようにする
tkrtmy@raspberrypi:~$ pwd /home/tkrtmy tkrtmy@raspberrypi:~$ mkdir .ssh tkrtmy@raspberrypi:~$ chmod 700 .ssh tkrtmy@raspberrypi:~$ cd .ssh tkrtmy@raspberrypi:~/.ssh$ touch authorized_keys tkrtmy@raspberrypi:~/.ssh$ chmod 600 authorized_keys # ~ 普段通り mac で ssh-keygen とかする。 # そして公開鍵をラズパイの authorized_keys に追記する ~ tkrtmy@raspberrypi:~$ sudo vi /etc/ssh/sshd_config # 以下に示すあたりが肝 #Port 22 port:22 で受け付けないようにコメントアウトする Port {新しいport} ... PermitRootLogin no # root不可 ... PasswordAuthentication no # パスワード認証を無効に ... RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys #コメントインする tkrtmy@raspberrypi:~$ sudo /etc/init.d/ssh restart # mac から公開鍵認証でログインができるか確認する $ ssh -i ~/.ssh/hoge tkrtmy@{ipアドレス} -p {設定した新しいport} # port: 22 でログインできないことも確認しておく $ ssh -i ~/.ssh/hoge tkrtmy@{ipアドレス} ssh: connect to host {ipアドレス} port 22: Connection refused
というか、ipアドレスじゃなくてデフォルトで raspberrypi.local
でアクセスできるはずなので、
ipアドレスの部分は読み替えても良いかもしれない。
/etc/hostname
と /etc/hosts
の raspberrypi
を任意のものに書き換えればホスト名を変えることはできる。
Wi-Fi の設定
tkrtmy@raspberrypi:~$ sudo sh -c 'wpa_passphrase SSID PASS >> /etc/wpa_supplicant/wpa_supplicant.conf' tkrtmy@raspberrypi:~$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid=SSID #psk=PASS # 生パスワードなんで消しておく psk=01b... } tkrtmy@raspberrypi:~$ history | grep wpa_passphrase tkrtmy@raspberrypi:~$ history -d {↑で表示したhistory id} #PASSをhistoryから消す tkrtmy@raspberrypi:~$ iwconfig wlan0 # 設定したSSIDが表示されれば、接続できてるはず wlan0 IEEE 802.11bgn ESSID:SSID ...
最後に無線接続のipを固定にする
tkrtmy@raspberrypi:~$ sudo vi /etc/dhcpcd.conf nohook lookup-hostname # 自分の環境に合わせてipを追記する interface wlan0 inform XXX.XXX.XXX.XXX static routers=XXX.XXX.XXX.1 static domain_name_servers=XXX.XXX.XXX.1 tkrtmy@raspberrypi:~$ sudo /etc/init.d/dhcpcd reload
これで、有線LANを外せる!
と思ったら、外した途端まったくつながらないので原因を突き止める
$ arp -a # b8:27:eb: 始まりのmacアドレス(ラズパイのmacアドレス)が見当たらないので無線通信が断絶している # ので再度有線LANを挿してみる # mac から秘密鍵の情報を引き継いだままログインする $ ssh -A {eth0のip} -p {設定したport} tkrtmy@raspberrypi:~$ ssh-add -l tkrtmy@raspberrypi:~$ ssh {wlan0のip} -p {設定したport} # ログインできたので mac book と ラズパイ の間にある ポケット Wi-Fi が怪しい....
どうにも、手持ちの ポケットWi-Fi の プライバシーセパレータ が有効になっていたからだったっぽい
そもそも プライバシーセパレータ は無線パソコン同士の通信を無効にする設定なので、
有効にしとくのが正しいが、一時的に設定を無効に変更する。
やっと、無線でログインできるようになったぞ〜!!!
ほかにも sudo apt-get install tightvncserver
でリモートデスクトップできるようにしたり、
付随して、日本語フォントをインストールしたりした→
sudo apt-get install fonts-vlgothic
sudo apt-get install ibus-mozc
最後にシャットダウン sudo shutdown -h now
今回はここまで。
まとめ
全体的に割とサラッとセットアップできてしまったが、
有線LANを外して無線ログインできるようにするのが思いのほか詰まってしまった。
原因を探る方法はなんとか思いついたものの、
ネットワーク周りの設定とか雰囲気でこなしてて、
実際よく分かってないなーと実感した。
参考
qiita.com
なぜ /dev/rdisk*
に書き込むのかとか参考になった
qiita.com
kenzo0107.hatenablog.com