RaspberryPi
raspbian
headless

Raspberry Pi に Raspbian をヘッドレス インストール

Raspberry Pi を、ディスプレイ、キーボードを使わないでインストールする方法です。有線LAN で接続する設定をします。

SD への書き込み

# dd bs=4M if=2018-03-13-raspbian-stretch.img of=/dev/mmcblk0
1180+0 レコード入力
1180+0 レコード出力
4949278720 bytes (4.9 GB, 4.6 GiB) copied, 386.111 s, 12.8 MB/s

書き込みが完了した SD を、fdisk で見ると

# fdisk /dev/mmcblk0

ディスク /dev/mmcblk0: 14.9 GiB, 15931539456 バイト, 31116288 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x377d1fa5

デバイス       起動 開始位置 最後から   セクタ サイズ Id タイプ
/dev/mmcblk0p1          8192    93814    85623  41.8M  c W95 FAT32 (LBA)
/dev/mmcblk0p2         94208 31116287 31022080  14.8G 83 Linux

設定を行う為に SD をマウントします。

# mount /dev/mmcblk0p2 /mnt/sdp2
# ls /mnt/sdp2
bin   dev  home  lost+found  mnt  proc  run   srv  tmp  var
boot  etc  lib   media       opt  root  sbin  sys  usr

ネットワークの設定
/mnt/sdp2/etc/network/interfaces

auto lo

iface lo inet loopback
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1

/mnt/sdp2/etc/rc.local に次を加えます。

ifup eth0

/boot をマウントします。

# mount /dev/mmcblk0p1 /mnt/sdp1
# ls /mnt/sdp1
bcm2708-rpi-0-w.dtb bootcode.bin   fixup_x.dat   start_cd.elf
bcm2708-rpi-b.dtb   cmdline.txt    issue.txt     start_db.elf
bcm2708-rpi-b-plus.dtb  config.txt     kernel7.img   start.elf
bcm2708-rpi-cm.dtb  COPYING.linux  kernel.img    start_x.elf
bcm2709-rpi-2-b.dtb fixup_cd.dat   LICENCE.broadcom
bcm2710-rpi-3-b.dtb fixup.dat      LICENSE.oracle
bcm2710-rpi-cm3.dtb fixup_db.dat   overlays

ブート時にSSH サーバーを起動するようにする。

cd /mnt/sdp1
touch ssh

ヘッドレスで ssh をスタートさせるには、/boot に、ssh という名前のファイルを置きます。
A security update for Raspbian PIXEL

If you want to enable SSH, all you need to do is to put a file called ssh in the /boot/ directory. The contents of the file don’t matter: it can contain any text you like, or even nothing at all. When the Pi boots, it looks for this file; if it finds it, it enables SSH and then deletes the file. 

アンマウントして、SDカードを抜き、ラズベリーパイに差して、ブートします。

ssh でログインします。

ssh pi@192.168.0.10

ログインしてから、ssh サーバーの状態を確認します。

# systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
   Active: active (running) since Fri 2017-12-29 05:16:26 UTC; 4h 13min ago
  Process: 476 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS
  Process: 471 ExecReload=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
  Process: 393 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 452 (sshd)
   CGroup: /system.slice/ssh.service
           └─452 /usr/sbin/sshd -D

設定

sudo raspi-config

wifi 接続に切り替えるには、次を行います。

/etc/wpa_supplicant/wpa_supplicant.conf の設定

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
    ssid="GP01-SSID"
    psk="secret123"
    key_mgmt=WPA-PSK
}

network={
    ssid="GP03-SSID"
    psk="secret456" 
    key_mgmt=WPA-PSK
}

/etc/network/interfaces の設定

allow-hotplug wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

/etc/rc.local の ifup eth0 をコメントアウト

再起動

sudo shutdown -r now