2014年7月25日金曜日

WICの機能や無線LANの状態を確認する

Raspberry Piに無線LAN USBアダプタ(WLI-UC-GNM)を接続

$ lsusb
(関連箇所のみ抜粋)
Bus 001 Device 004: ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]

$ lsmod
Module                  Size  Used by
(関連箇所のみ抜粋)
rt2800usb              17279  0 
rt2800lib              80619  1 rt2800usb
rt2x00usb              11669  1 rt2800usb
rt2x00lib              44799  3 rt2x00usb,rt2800lib,rt2800usb
mac80211              329373  3 rt2x00lib,rt2x00usb,rt2800lib
cfg80211              211002  2 mac80211,rt2x00lib
rfkill                 19567  2 cfg80211
-->
cfg80211、mac80211の記述からnl80211でカバーできそう

iwのインストール
$ sudo apt-get install iw

サポート機能の確認
$ iw list
Wiphy phy0
(関連箇所のみ抜粋)
 Supported Ciphers:
  * WEP40 (00-0f-ac:1)
  * WEP104 (00-0f-ac:5)
  * TKIP (00-0f-ac:2)
  * CCMP (00-0f-ac:4)
 Available Antennas: TX 0 RX 0
 Supported interface modes:
   * IBSS
   * managed
   * AP
   * AP/VLAN
   * WDS
   * monitor
   * mesh point
 software interface modes (can always be added):
   * AP/VLAN
   * monitor
 valid interface combinations:
   * #{ AP, mesh point } <= 8,
     total <= 8, #channels <= 1
-->
IBSS: アドホック
managed: クライアント
AP: アクセスポイント
VLAN: 無線VLAN
monitor: 無線LANネットワーク検出

無線LANのスキャン
$ sudo iw dev wlan0 scan

iwconfigはまだ使えるようだが、これはそのうちdeprecatedされるかもしれない
$ sudo ifdown wlan0
$ iwconfig
(関連箇所のみ抜粋)
wlan0     IEEE 802.11bgn  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

$ sudo ifup wlan0
$ iwconfig
(関連箇所のみ抜粋)
wlan0     IEEE 802.11bgn  ESSID:"RaspiSSID"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: 01:23:45:67:89:AB   
          Bit Rate=6.5 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=70/70  Signal level=-39 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0


[参考URL]
cfg80211 - Linux Wireless
mac80211 - Linux Wireless
nl80211 - Linux Wireless
hostapd を使用した簡単な方法で WiFi に強力な暗号化を実装する

2014年7月21日月曜日

Raspberry Piのネットワークを設定する

有線LAN


有線LAN用固定IPの設定
$ sudo cp /etc/network/interfaces{,.orig}
$ sudo vim /etc/network/interfaces

/etc/network/interfaces
auto lo
iface lo inet loopback

iface eth0 inet static
address 192.168.21.41
netmask 255.255.255.0
gateway 192.168.21.1

該当IFの無効・有効化
$ sudo ifdown eth0 && sudo ifup eth0


無線LAN


無線LANクライアントの設定
$ sudo cp /etc/wpa_supplicant/wpa_supplicant.conf{,.orig}
$ wpa_passphrase "RaspiSSID" "RaspiSSIDPW" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
network={
        ssid="RaspiSSID"
        #psk="RaspiSSIDPW"
        psk=d721085129ab22a68036c3c5cf7d28dab5f9b3de93a8866fe6626d59e811b7f7
}

$ sudo vim /etc/wpa_supplicant/wpa_supplicant.conf

/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="RaspiSSID"
        scan_ssid=0           # スキャン方法(0:パッシブ、1:アクティブ)
        priority=0            # 値が大きいほど優先度が高い(デフォルトは0)
        proto=RSN             # WPA2はRSNの別名
        key_mgmt=WPA-PSK
        pairwise=TKIP CCMP
        group=CCMP
        psk=d721085129ab22a68036c3c5cf7d28dab5f9b3de93a8866fe6626d59e811b7f7
        id_str="RaspiConf"    # 識別名
}

無線LAN用固定IPの設定
$ sudo cp /etc/network/interfaces{,.orig}
$ sudo vim /etc/network/interfaces

/etc/network/interfaces
auto lo
iface lo inet loopback

iface eth0 inet static
address 192.168.21.41
netmask 255.255.255.0
gateway 192.168.21.1

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

iface RaspiConf inet static
address 192.168.21.42
netmask 255.255.255.0
gateway 192.168.21.1

該当IFの無効・有効化
$ sudo ifdown wlan0 && sudo ifup wlan0


リゾルバの設定


$ sudo vim /etc/resolv.conf
$ cat /etc/resolv.conf
nameserver 192.168.21.1
nameserver 192.168.22.1
search example.com example.jp


ホスト名の設定


$ sudo vim /etc/hostname
$ cat /etc/hostname
raspi

$ sudo vim /etc/hosts
$ cat /etc/hosts
127.0.0.1      localhost.localdomain   localhost
127.0.1.1      raspi.example.com       raspi
192.168.11.41  raspi.example.com       raspi
192.168.11.42  raspi.example.com       raspi


再起動


$ sudo shutdown -r now


[参考URL]
How-To: WiFi roaming with wpa-supplicant | Debuntu
wpa_supplicant.conf(5)
Gentoo Linux ドキュメント -- 無線ネットワーク

2014年7月18日金曜日

Raspberry Piをバックアップ・リストアする

バックアップ


バックアップ元であるSDカードのディスク番号を確認してからバックアップを実行。
$ diskutil list
(関係箇所のみ抜粋)
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk1
   1:             Windows_FAT_32 boot                    58.7 MB    disk1s1
   2:                      Linux                         15.9 GB    disk1s2

$ df -h
Filesystem                          Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
(関係箇所のみ抜粋)
/dev/disk1s1                        56Mi  9.5Mi   46Mi    17%      512        0  100%   /Volumes/boot

$ sudo dd bs=1m if=/dev/rdisk1 of=./raspi_YYYYMMDD.img

gzip圧縮してバックアップする際は
$ sudo dd bs=1m if=/dev/rdisk1 | gzip > ./raspi_YYYYMMDD.gz


リストア


リストア先であるSDカードのディスク番号を確認、アンマウントしてからリストアを実行(過去の内容と同様)。
$ diskutil list
(関係箇所のみ抜粋)
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk1
   1:                 DOS_FAT_32 UNTITLED                15.9 GB    disk1s1

$ df -h
Filesystem                          Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
(関係箇所のみ抜粋)
/dev/disk1s1                        15Gi  2.5Mi   15Gi     1%        0        0  100%   /Volumes/UNTITLED

$ sudo diskutil unmount /dev/disk1s1
$ sudo dd bs=1m if=./raspi_YYYYMMDD.img of=/dev/rdisk1
$ sudo diskutil eject /dev/rdisk1

gzip圧縮したファイルからリストアする際は
$ sudo diskutil unmount /dev/disk1s1
$ gzip -dc ./raspi_YYYYMMDD.gz | sudo dd bs=1m of=/dev/rdisk1
$ sudo diskutil eject /dev/rdisk1


[参考URL]
Back-up a Raspberry Pi SD card using a Mac | TechTonic

2014年7月16日水曜日

Raspberry Piの初期設定を行う

apt-getの実行


$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo shutdown -r now


raspi-configの実行


$ sudo raspi-config

1 Expand Filesystem
    rootfs(ext4フォーマット)を拡張する。
    再起動後に拡張rootfsが有効になる。

2 Change User Password
    「$ sudo passwd pi」が実行される。
    ユーザpiのパスワードを変更する。

4 Internationalisation Options
  • Change Locale
  • 「$ sudo dpkg-reconfigure locales」が実行される。
    「en_US.UTF-8 UTF-8」のみをチェックする。
    「Default local for the system environment」については「en_US.UTF-8」を選択する。
    設定反映のために、一旦ログアウトしてから再度ログインする。

  • Change Timezone
  • 「$ sudo dpkg-reconfigure tzdata」が実行される。
    「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 -> Yes」と選択する。
    最後のYesは「Use Control+Alt+Backspace to terminate the X server?」に関する選択。


追加のロケール設定


$ sudo vi /etc/default/locale
$ cat /etc/default/locale 
#  File generated by update-locale
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANGUAGE=en_US.UTF-8
設定反映のために、一旦ログアウトしてから再度ログインする。


HDMI出力の固定化


$ sudo vi /boot/config.txt
(関連箇所のみ抜粋)
hdmi_force_hotplug=1
framebuffer_width=1920
framebuffer_height=1080

$ sudo shutdown -r now


[参考URL]
“Americanizing” the Raspberry Pi | Rohan Kapoor
Fix locale problems in Raspbian | Programming and Technology

2014年7月14日月曜日

Raspberry Piで使うSDカードをセットアップする

OSイメージ(Raspbian)の準備


本家からOSイメージをダウンロードしようとすると時間がかかるので、JAISTのミラーサイトからダウンロードする。
$ wget http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2014-06-22/2014-06-20-wheezy-raspbian.zip

$ openssl sha1 2014-06-20-wheezy-raspbian.zip
SHA1(2014-06-20-wheezy-raspbian.zip)= b020908e3cba472a24f7a17498008eb69d86d1cb

$ unzip 2014-06-20-wheezy-raspbian.zip


ディスク番号の確認


SDカードを接続してディスク番号を確認する。
$ diskutil list
(関係箇所のみ抜粋)
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk1
   1:                 DOS_FAT_32 UNTITLED                15.9 GB    disk1s1

$ df -h
Filesystem                          Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
(関係箇所のみ抜粋)
/dev/disk1s1                        15Gi  2.5Mi   15Gi     1%        0        0  100%   /Volumes/UNTITLED


OSイメージの書き込み


SDカードをアンマウントした上で、rawデバイス指定で書き込みを実行する(アンマウント実行後は、書き込みが完了するまでSDカードを取り外さないこと)。
なお、ddコマンド実行中にControl-Tを押下すると書き込み進捗状況を確認できる。
$ sudo diskutil unmount /dev/disk1s1
$ sudo dd bs=1m if=2014-06-20-wheezy-raspbian.img of=/dev/rdisk1
$ sudo diskutil eject /dev/rdisk1


[参考URL]
Raspberry Pi Documentation
RPi Easy SD Card Setup - eLinux.org