12
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspbian Wheezy から Jessie への移行 やったことメモ

Last updated at Posted at 2015-10-17

やった日:2015年10月中旬

最初の状態

  • Raspberry Pi Model B Rev2(512MB版)
  • Raspbian Wheezy を運用中
  • 無線LAN でネットワークに接続
$ uname -a
Linux raspberrypi 4.1.7+ #817 PREEMPT Sat Sep 19 15:25:36 BST 2015 armv6l GNU/Linux
$ cat /etc/debian_version
7.8

下準備

SDイメージをダウンロード

NOOBS は使うつもりがないので、Raspbian のイメージを持ってくる。
https://www.raspberrypi.org/downloads/raspbian/
今回は2015-09-24版、zipで1.24GB。解凍後は4.02GB。

GUI 環境が要らない人は

Raspbian Jessie Lite を使うと吉。これには GUI 関係のパッケージが入ってない。
zipで280MB、解凍後1.2GBほどとお手頃サイズなので 4GB SDカードでも動く。

既存環境のバックアップ

SDカードの余りが手元にないので、現状のバックアップを取ってから上書きインストールする。
Win32 Disk Imager でおもむろに Read。
さらに、/home/pi とか /etc は tarball にして別のPCにコピー、移行のときに参照しやすくしとく。
あと crontab -laptitude search '~i' の結果も保存っと。

ちょっとしたコツ

書き込み量の多い環境だとSDカードにゴミが溜まるらしく、バックアップしたimgをzipで固めても何か小さくならない。
なので、バックアップ前に空き領域を0埋めしておくといいっぽい。
ってことで大雑把に0埋めするスクリプトを作って走らせておく。

zeropad.sh
#!/bin/bash

EMPTY=$(( `df -B1 /dev/root | awk 'NR==2 {print$4}'` ))
EMPTY=$(( ($EMPTY / 104857600) - 1 ))

mkdir zeropad
trap "rm -r zeropad" EXIT

for ((i = 0; i < $EMPTY; i++)); do
  echo padding file $(( $i + 1 )) / $EMPTY
  dd if=/dev/zero of=zeropad/$i bs=1M count=100 > /dev/null
done

インストール

Win32 Disk Imager で Write。そして立ち上げてみる。
……おお、既定でデスクトップ、しかも自動ログインしてる。
(Raspbian Lite の場合は今までと同じように CUI でログインを要求される)

$ uname -a
Linux raspberrypi 4.1.7+ #817 PREEMPT Sat Sep 19 15:25:36 BST 2015 armv6l GNU/Linux
$ cat /etc/debian_version
8.0

カーネルのバージョンは変わってなかった。

とりあえずの設定

とりあえずキーボードレイアウトとか

参考:Raspberry Pi 2 に Raspbian Jessie (2015-09-24) をセットアップした。
キーマップは "Generic 105-key (Intl) PC" → "Others" → "Japanese" → "Japanese" かな。
CUI から raspi-config を弄ってる場合は、先にロケールを日本語にすると漢字が豆腐になって死ぬので要注意。

とりあえず無線LAN

参考:http://www.myu.ac.jp/~xkozima/lab/raspTutorial1.html
SSIDとパスフレーズを入力して、無線LANドングル(BUFFALO の安いやつ)を挿せばそれだけで繋がる。楽ちん。
ただし、wpa_supplicant は使いにくい部分があり、後で別のパッケージで代替する予定。

とりあえず apt-get

# apt-get update; apt-get upgrade

比較的新しいイメージファイルだったので、更新は3つだけだった。

とりあえず日本語ロケール

(SSH 使う分には関係ないけど)そのまま日本語ロケールを設定すると文字化けるらしいので、VLゴシックあたりを突っ込んでからロケールを変える。VLゴシックってかわいい
参考:Raspberry Pi 2 に Raspbian Jessie (2015-09-24) をセットアップした。

# apt-get install fonts-vlgothic

2015-10-15-173105_1824x984_scrot.png
うむ。

キーボードが……

GUI からキーボードレイアウトを設定しても、raspi-config しても、再起動すると Console のキー配列がデフォルトの US に戻ってる罠。
XWindow にログインすれば設定通り日本語109配列になってるのに……謎。
追記 クリーンインストールしたら直った。さらに謎……

パッケージの設定

wicd

我が家は未だに 802.11g 環境で、電子レンジその他が原因で接続断が発生しやすい状況。
一度接続断が起こると wpa_supplicant は再接続してくれないので、無線LANの管理には wicd を使う。
参考:Easy Wireless Configuration with wicd

追記 Jessie + 4.x 系カーネル からは wpa_supplicant も自動再接続できるように改善されたようなので、この目的で wicd を導入する必要はなくなった。

# apt-get install wicd-cli wicd-curses

設定は wicd-curses から。認証情報を入力して、「このネットワークに自動的に接続する」にチェックすると、wicd が再接続してくれるようになる。
設定が終わったら、さっき wpa_supplicant.conf に加えた認証情報を消す。
reboot して正常に繋がるかどうか確認する。

競合の解消、IPv6 無効

一応繋がるがどうも不安定で、そうこうしているうちに繋がらなくなってしまった。
どうやら wicd.servicedhcpcd.service が競合してるっぽかったので、後者を止める。
ついでに avahi-daemon も使わないので止める。
service の止め方が変わってて戸惑うなど。

# systemctl stop dhcpcd
# systemctl disable dhcpcd
# systemctl stop avahi-daemon
# systemctl disable avahi-daemon

あとルーターが古くて IPv6 非対応なので、これも止めちゃえ。

/etc/sysctl.conf
(略)
# Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1

これで万事解決。
追記 解決してなかった。
これでもまだ競合するので、dhcpcd.conf にさらに次の行を追加。

/etc/dhcpcd.conf
nohook wpa_supplicant

screen

SSH 接続が切れても作業を続けられるように screen を入れる。

# apt-get install screen

ここまで終われば、あとは SSH 経由でいいかな。

mono-complete

C# で書いたプログラムを走らせたいので mono を入れる。

# apt-get install mono-complete

なお

$ mono -V
Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-10)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       normal
        Notifications: epoll
        Architecture:  armel,vfp+hard
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            sgen

初代RasPiで野良ビルドするには時間がかかりすぎるのでこれで我慢するしかない……

exfat-fuse

USBメモリを使う準備。

# apt-get install exfat-fuse

Wheezy の時と同じように /etc/fstab にちょろっと書いて再起動したら、「そんなデバイスない」って言われて emergency shell 起動したんだけど:anger::anger:
noauto あるいは nofail オプションをつければいいらしい。ってか systemd ってなんやねん。

/etc/fstab
(略)
/dev/sda1       /mnt/usbmem0    exfat-fuse defaults,nofail 0       0

参考:jessie で知っておくべき問題点

使ってるうちに気づいたけど、nofail 設定だとUSBメモリを挿すだけで自動的にマウントしてくれるようになったっぽい(noauto の挙動は未確認)。

SSH 公開鍵の配置

参考:ssh公開鍵認証を実装する(自分メモ)
鍵生成は Tera Term でやった。

fbterm

無線LANのトラブル時とかに直接ログインする時に、日本語ロケールなので標準コンソールが豆腐だらけになっちゃう。
ということで UTF-8 を扱える fbterm を入れとく。

# apt-get install fbterm

crontab の復元

保存しておいたファイルからコピペするだけなので省略。

事故回避策

crontab -r の事故を防ぐために。

/etc/bash.bashrc
(略)
# avoid crontab trouble
alias crontab='crontab -i'

rsyslog

/etc/rsyslog.confcron.* のコメントアウトを外す。
SDカードの書き込み回数が気になる場合は、逆にログの量を減らすべき。

1wire

温度計を繋いでるので使えるように。

/etc/modules
(略)
w1-gpio
w1-therm

追記 /boot/config.txt の末尾に次の行を追加する必要あり。

dtoverlay=w1-gpio,gpiopin=4

iptables

# apt-get install iptables-persistent

/etc/iptables/rules.v4 を古いのからコピーしてきて

# netfilter-persistent reload

ここも変わってる。

mrtg

# apt-get install snmpd snmp snmp-mibs-downloader mrtg

mrtg.cfg は Wheezy のをそのまま持ってきてよさ気。
参考:Raspberry Piにmrtgをインストールする

まとめ

ゆっくりやってたら2日かかりました。

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?