Raspbian imageを編集する

現在最新のRaspbianは2018-10-09版です。現行のRaspbianは3〜4ヶ月ごとにカーネルや累積したアップデートパッケージを更新してリリースしています。

カードを作成する際は書き込んだあとからも編集可能ですがimageファイルの時点で最低限の編集をしておけば複数のカードを作成する際やヘッドレス用途などのインストール作業が非常に楽になります。

どのように編集するかはそれぞれですが当サイトではIPアドレス、wifi接続設定、使いやすいbashrcやvimrcなどの設定ファイルもインストールしたらすぐ使えるよう放り込んでいます。

作業環境はRaspberry Pi 3(Raspbian desktop)

Raspbian Download


ダウンロードは国内のミラーサイトが早いと思います。(特にリリース直後)
本家より数時間遅れで反映されるようです。
ページ(URL)の末尾に最新の日付のRaspbianが追加されます。

jaist
http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/
http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_lite/images/

zipファイルを適当なディレクトリにダウンロード、展開します。

kpartxのインストール

# apt install kpartx

以前はloop deviceの作成にコマンドラインから実行していましたがもう少し簡単に扱えるようpcmanfmに関連付けをします。


実行するコマンドライン
sudo kpartx -a %f
アプリケーションの名前(適当に)
kpartx-add
デフォルトのアクション チェック


imgファイルを右クリックするとkpartx-addが登録されています。
場所にはbootとrootfsが見えてきます。


ドライブを選択してパスワード入力


マウントしてファイルが見えてきます。
bootはユーザー所有になっているのでssh空ファイルを作成
root所有のファイルはターミナルから実行
pcmanfmからkpartxを実行するとpcmanfm(LXDE)からは内蔵deviceと認識してloop deviceは再起動するまでリストから外せなくなってしまいますがddの実行には問題ありません。
(コマンドラインから# kpartx -d しても不可)

右クリックから作成したkpartx-addは~/.local/share/applicationsに置かれます。(編集、削除可)

[Desktop Entry]
Type=Application
Name=kpartx-add
Exec=sudo kpartx -a %f
Categories=Other;
NoDisplay=true
MimeType=application/x-raw-disk-image
Terminal=false

imgファイルの編集
/boot/ssh 空ファイル作成

初期アクセス用のアドレスを決めておきます。(interfaceはまだ指定しない)
/etc/dhcpcd.conf (各アドレスは自環境)

static ip_address=192.168.0.13/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

wifi接続設定 (作業用Piからコピーしてもいい)
/etc/wpa_supplicant/wpa_supplicant.conf

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

network={
    ssid="xxxx-xxxx"
    psk="xxxxxxxxxx"
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    group=CCMP
    priority=2
}

dd 書き込んでみる
/dev/sdx (認識したデバイス名で) loop deviceはアンマウント

# dd if=2018-10-09-raspbian-stretch-lite.img of=/dev/sdx bs=1M

ラベルを編集
ddは全くのクローンを作成します。識別しやすいようにラベルを付け替えます。
bootはmlabel(mtoolsをインストール)で書き換えできますが変更しないほうがいいと思います。

# e2label /dev/sda2 zerow


書き込んだカードをzero(w)にセットして起動
有線も同時に接続しましたがzero(w)のネットワークは内蔵wifiが優先するようです。
あとは必要に応じてinterface アドレス hostnameなどを変更設定してセットアップを続行します。
新たにカードを作成する際も全く同じ手順で初回ログインアクセスが可能になります。