Raspberry Pi に raspbian をキーボードとディスプレイなしでインストールする無精手順[要シリアルケーブル]
目的
- 個人的メモ
- キーボードとディスプレイ接続めんどくさい
対象
- UNIXコマンド多少わかる
構成
- 作業環境ホストPC: macOS Sierra
- HW: Raspberry Pi Model B+ v1.2
- OS: raspbian
- 2016-11-25-raspbian-jessie
- Storage: microSD カード
- 8G ~ 32G くらい
- 今回は 32G を準備
- 8G ~ 32G くらい
- USBシリアルケーブル: Raspberry Pi Arduino PL2303HX内蔵USBシリアル変換ケーブル
- ケース: Pibow 3 Coupe
手順
1. ダウンロード
- 本家: https://www.raspberrypi.org/downloads/
- ミラー: http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/
- 日本国内ミラーからダウンロードしたほうが早いかも
curl -O http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2016-11-29/2016-11-25-raspbian-jessie.zip
curl -O http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2016-11-29/2016-11-25-raspbian-jessie.zip.sha1
FILE_NAME='2016-11-25-raspbian-jessie'
openssl sha1 $FILE_NAME.zip | awk '{print $2}' | grep --color -x `cat $FILE_NAME.zip.sha1 | awk '{print $1}'`
outpuut
6587483c9b90b11185e2ce99175e27fe75af1f61
unzip $FILE_NAME.zip
ls -lh $FILE_NAME.img
2. SD カードへの書き込み
2-1. デバイス名を確認
システムディスクが /dev/disk0 なので disk1 以降を見つけます
- SD カード接続前
df -h | grep '/dev/disk[1-9]'
- SD カード接続後
df -h | grep '/dev/disk[1-9]'
/dev/disk1s1 56Mi 8.4Mi 47Mi 16% 512 0 100% /Volumes/NONAME
デバイス名 /dev/disk1 を確認出来ました。
- mac で disk1 でなく raw device の rdisk1 を指定していることについては man hdiutil を確認
- 要は rdisk を指定したほうが dd が速いです
2-2. 書き込み
デバイス名を間違わないように注意!!!
DEV_NAME='/dev/rdisk1'
echo $DEV_NAME
echo $FILE_NAME.img
sudo diskutil unmountDisk $DEV_NAME
sudo dd bs=1m if=./$FILE_NAME.img of=$DEV_NAME conv=sync
2-3. アンマウントと取り外し
マウントされている場合はアンマウントして取り外しましょう。
sudo diskutil unmountDisk $DEV_NAME
3. Raspberry Pi の起動
3-1. コンソールケーブルの接続
GPIOピンアサイン図
ピン | ケーブル色 |
---|---|
Ground | 黒 |
14 | 白 |
15 | 緑 |
Not Connected | 赤 |
- ホストPCのUSBポートに接続し /dev/cu.usbserial が見えていたらOK
ls /dev/cu.usbserial
output
/dev/cu.usbserial
3-2. Raspberry Pi の電源を入れログインする
- screen コマンドでシリアル接続します。
screen /dev/cu.usbserial 9600
- 何かキーを押してプロンプトが表示されればここまでは成功です
output
Raspbian GNU/Linux 8 raspberrypi ttyAMA0
raspberrypi login:
- 以下のアカウントでログインします。
- UserName: pi
- PassWord: raspberry
output
pi@raspberrypi:~$
4. 初期設定
4-1. ルートパーティションの拡張
dd コマンドで転送した初期イメージ(約4GB)から利用しているSDカードの最大サイズまで拡張します。
sudo raspi-config
1 Expand Filesystem
再起動して適用します。
sudo reboot
4-2. エディターを変更します(vim.tiny)
sudo update-alternatives --config editor
4-3. ネットワークの設定をします
4-3-1. 有線LANの場合
- 設定ファイルを編集します。
ref. man 5 interfaces
sudo vi /etc/network/interfaces
DHCPでアドレスを取得する場合
# iface eth0 inet manual
iface eth0 inet dhcp
手動でアドレスを設定する場合の例
iface eth0 inet static
address 192.168.0.100
netmsak 255.255.255.0
gateway 192.168.0.1
4-3-2. 無線LANの場合
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
例
# country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID名"
psk="パスワード"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
4-4. ネットワークサービスを再起動します
- 無線LANの場合は、無線LANアダプタを接続するだけで良いです
- 有線LANの場合は、サービスを再起動します
sudo systemctl daemon-reload
4-5. ネットワーク設定がされていることを確認します
- IP アドレス
有線LANの場合
ip a s eth0
無線LANの場合
ip a s wlan0
- ルーティング
ip r s
- DNS
cat /etc/resolv.conf
4-6. SSH で外部から接続するための設定
status確認
sudo systemctl status ssh.service
サービス開始
sudo systemctl start ssh.service
サービス有効化
sudo systemctl enable ssh.service
5. 言語設定、OS アップデート etc
sudo raspi-config
4 Internationalisation Options > I1 Change Locale
- 任意で言語を追加します
[*] en_US.UTF-8 UTF-8
[*] ja_JP.UTF-8 UTF-8
- 設定可能な言語に追加されていることを確認します
locale -a
output
C
C.UTF-8
POSIX
en_GB.utf8
en_US.utf8
ja_JP.utf8
- 必要に応じて .bashrc に追記します
vi .bashrc
export LANG=C
export LC_ALL=C
export LANGUAGE=C
. .bashrc
locale
- OS アップデート
sudo apt-get update -y
sudo apt-get upgrade -y
6. おまけ
- X (GUI) 関連パッケージ他の削除
ref. https://codegists.com/snippet/shell/raspbian_server_cleaningsh_rgaidot_shell
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep x11 | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep python | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep sound | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep gnome | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep lxde | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep gtk | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep desktop | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep gstreamer | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep avahi | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep dbus | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep freetype | sed s/install//`
sudo apt-get -y autoremove
sudo apt-get clean