第 124 回 東京エリア Debian 勉強会資料.Deb
銀河系唯一のDebian専門誌
2015 年 3 月 7 日

パイズ
ラ特集：

ianbe
D2にデビアン勉強会

3.1

目次
3.2
事前課題

2

1.1

野島 . . . . . . . . . . . . .

2

1.2

nametake . . . . . . . . . .

2

1.3

NOKUBI Takatsugu

. . .

2

1.4

alohaug . . . . . . . . . . .

1.5

12

第 123 回東京エリア Debian
勉強会 . . . . . . . . . . . .

5

OSC 2015 Tokyo/spring 出展

5Raspberry Pi 2 Model B に

4

Debian Jessie / armhf をインストールする

6

4.1

はじめに . . . . . . . . . . .

62

4.2

RPi と RPi2 の違い . . . . .

6

Roger Shimizu . . . . . . .

2

4.3

Debian armhf / Jessie のイ

1.6

ryo s

. . . . . . . . . . . .

2

1.7

dictoss. . . . . . . . . . .

3

1.8

myokoym . . . . . . . . . .

3

1.9

yy y ja jp

3. . . . . . . . .

Debian Trivia Quiz

ンストール方法. . . . . . .

7

会場での無線 LAN のつなぎ方

13

5.1

はじめに . . . . . . . . . . .

13

5.2

wpasupplicant

5及び/etc/network/interfaces を4利用の場合 . . . . . . . . . .

3

最近の Debian 関連のミーテ
ィング報告

5.3
5113

そ の 他 の 無 線 LAN 用 パッ
ケージを利用の場合 . . . . .

13

第 124 回 東京エリア Debian 勉強会 2015 年 3 月

1 事前課題
野島 貴英

今回の事前課題は以下です:

1. 本日、何の作業をやるかを宣言ください。
2. (オプション) どこで今回の勉強会の開催を知りましたか？
3. (オプション) 何について聞きたい／参加者と話をしたいですか？
この課題に対して提出いただいた内容は以下です。

1.1

1.4

野島alohaug
1. Q.hack time に何をしますか？
A. クリーンルーム環境で PGP 鍵作成、Gnuk 封入 &dictoss さん鍵署名
2. (オプション)Q. どこで今回の勉強会の開催を知りまし1. Q.hack time に何をしますか？
A. DDTSS しまっす!
http://ddtp.debian.net/ddtss/index.cgi/ja
2. (オプション)Q. 何について聞きたい／参加者と話をしたか？

たいですか？

A. twitter (@tokyodebian)
3. (オプション)Q. 何について聞きたい／参加者と話をしA. 参加者と技術の話をしたい！

たいですか？

A. PGP 鍵管理のあるあるネタ収集。

1.2

nametake
1.5

1. Q.hack time に何をしますか？
A. Debian 開発環境セットアップ
2. (オプション)Q. どこで今回の勉強会の開催を知りましRoger Shimizu
1. Q.hack time に何をしますか？
A. 未定
2. (オプション)Q. どこで今回の勉強会の開催を知りましたか？

A. その他。

たか？

A. その他
3. (オプション)Q. 何について聞きたい／参加者と話をし

1.3

たいですか？

NOKUBI Takatsugu

A. GPG キーサインが行われるでしょうか。

1. Q.hack time に何をしますか？
A. OpenCV、KAKASHI、Blender
2. (オプション)Q. どこで今回の勉強会の開催を知りまし

1.6

ryo s
1. Q.hack time に何をしますか？
A. 書籍読み
2. (オプション)Q. どこで今回の勉強会の開催を知りましたか？

A. その他
3. (オプション)Q. 何について聞きたい／参加者と話をしたいですか？

たか？

A. key sign

A. 友達や知り合いから直接

2ます。

1.7

2. (オプション)Q. どこで今回の勉強会の開催を知りましdictoss

たか？

A. Debian JP のメーリングリスト
3. (オプション)Q. 何について聞きたい／参加者と話をし

1. Q.hack time に何をしますか？
A. rasbbery pi 2 に Debian をインストールする下たいですか？

調べ。

A. deb パッケージの作成や公開について

2. (オプション)Q. どこで今回の勉強会の開催を知りまし
たか？

A. Debian JP のメーリングリスト
3. (オプション)Q. 何について聞きたい／参加者と話をし1.9たいですか？

yy y ja jp
1. Q.hack time に何をしますか？
A. DDTSS
2. (オプション)Q. どこで今回の勉強会の開催を知りましA. CPU のポーティングは何を知っている必要があるのか教えて下さい。

たか？

1.8

A. その他
3. (オプション)Q. 何について聞きたい／参加者と話をしmyokoym
1. Q.hack time に何をしますか？
A. deb パケージの作成手順を一から学びたいと思いたいですか？

A. DDTSS のレビューのお願い3

第 124 回 東京エリア Debian 勉強会 2015 年 3 月

2 Debian Trivia Quiz
野島 貴英

Debian の昨今の話題についての Quiz です。
今回の出題範囲は debian-devel-announce@lists.debian.org や debian-news@lists.debian.org に投稿された内容などからです。
問題 1. 2015/3/3 に DebConf15 のアナウンスが行われました。スポンサードな参加の登録期限は何時までで問題 3. 2015/3/1 にて、cdn.debian.net がその役割を終しょう？

え、ある FQDN を指すだけになるということがアナウ□ A 2015/3/7ンスされました。この FQDN は以下のどれ？

□ B 2015/3/15□ A ftp.debian.org□ C 2015/3/29□ B http.debian.net

問題 2. 2015/3/4 に DPL の今年の選出についてアナウンスがありました。DPL の立候補〆切は何時？
□ A 2015/3/4□ B 2015/3/9□ C 2015/4/14□ C sources.debain.net

第 124 回 東京エリア Debian 勉強会 2015 年 3 月

3 最近の Debian 関連のミーティング報告
野島 貴英

3.1 第 123 回東京エリア Debian 勉強会• 場所はスクウェア・エニックスさんのセミナルームをお借りしての開催でした。
• 参加者は 9 名でした。
• セミナ内容は杉本さんによる「Debian GNU/kFreeBSD における Jail 構築を試してみた」でした。
• LT は、今井さんによる「Gnuk と私」でした。
• 残りの時間で hack time を行い、成果発表をしました。
•「世界のやまちゃん 新宿花園店」で、久々に宴会をやりました。
セミナですが、kFreeBSD 使いの杉本さんにより、Debian GNU/kFreeBSD 上の Jail 環境で、

• GNU/kFreeBSD• FreeBSD 10.1-RELEASEを動かすことについて発表がありました。さらに、FreeBSD の持つ Linux バイナリ互換機能で linux-i386 を動かすことにチャレンジされていました。linux-i386 はうまく Jail 環境では動作しなかったとのことですが、試みとしては大変おもしろく、他では類を見ないものだったと思います。当勉強会では、うまくいった事も、うまくいかなかった事も、オリジナルな内容であれば、とても面白い話題となると考えています。今後も奇抜なアイデアの発表が当勉強会でどんどん発表されると良いですね！
また、LT として、今井さんにより、Gnuk Token について語っていただきました。途中、1990 年代のインターネット界隈と秋葉原での、関係者らの数々の偉業の話が多数飛び出すなど非常に刺激的な内容でした。また、何故専用ハードに秘密鍵を保管するのか？保管すべきなのか？についても情熱的に語っていただきました。Gnuk Token は、オープンなハード、オープンなソフトを使った、真にセキュアで真に自由な環境を手に入れることが出来るということについて、大変良い事例だと思います。Gunk Token を使うのが普通の世の中に早くなって欲しいものです。

3.2 OSC 2015 Tokyo/spring 出展
毎年のことですが、今年も 2/28(土) にて、OSC 2015 Tokyo/spring が開かれました。場所はいつもの明星大学 日野キャンパスでした。セミナは、岩松さんにより「Debian Updates」が行われました。20 名程度の方に来ていただ
けました。
今回もブースを出展しました。今回の展示物としての目玉は、64bit ARM 搭載の低価格ボードである Hikey

Board(https://www.96boards.org/products/hikey/) が Debian 稼働状態で展示、また、Gnuk Token も展示されました。今回ブースの大きさが狭く、説明員が２名立つのがやっとというスペースでしたが、多くの人に立ち寄っていただけました。

5

第 124 回 東京エリア Debian 勉強会 2015 年 3 月

4 Raspberry Pi 2 Model B に Debian Jessie /armhf をインストールする
岩松 信洋

4.1 はじめに2015 年 2 月 2 日に新しい Raspberry Pi「Raspberry Pi 2 Model B」が発売されました。今回の Raspberry Pi2（以下、RPi2）は今までの Raspberry Pi（RPi）とは異なり、SoC がアップグレードされたものになっています。
FPU を持っているにも関わらず Debian では armel をつかわなければなりませんでしたが、RPi2 では Debian のarmhf アーキテクチャが利用できるようになります。
本資料では Debian から見た RPi と RPi2 の違いと、RPi2 に Debian Jessie / armhf をインストールする方法について紹介します。

4.2 RPi と RPi2 の違い

図1

RPi Model B+（左） と RPi 2 Model B（右）RPi (Model B+) と RPi 2 Model B のハードウェアは表??となります。CPU、コア数、メモリの種類とサイズが大きく異なる事が分かります。RPi2 ではコア数が増えているため、電源も大きめのものが必要になっていることも6

表1

RPi と RPi 2 B-RPi Model B+

RPi 2 Model B

CPU

ARM1176JZF-S 1 コア (700MHz) / ARMv6

ARM Cortex-A7 4 コア (900MHz) / ARMv7

SoC

Broadcom BCM2835

Broadcom BCM2836

CPUBroadcom VideoCore IV (250MHz)

同左

メモリ

512MB (SDRAM)

1GB (LPDDR2 SDRAM)

ネットワークLAN9514 (10/100 Mbps)

同左

外部 I/OGPIO 40 ピン

同左

ストレージ

microSD

同左

電源

600 mA (3.0W)

900 mA (4.5-5.5W)

表2

Debian と Raspbian‘-Debian armel

Debian armhf

Raspbian

ターゲット命令セット

ARMv4

ARMv7

ARMv6

FPUなし

VFPv3

VFPv2

Debian ネイティブ

Yes

YesNo

表3

UnixBench の結果‘-Debian armel / RPi

Debian armhf /RPi2

Raspbian / Rpi

Raspbian

Unixbench (System Benchmarks Index Score)

66.5

450.8 (183.1)

80.1

442.9 (

注目すべき点です。

Debian armel、armhf、Raspbian の違いは表??の通りです。各アーキテクチャでサポートする命令セットが異なり、Debian armel では RPi/RPi2 に最適化されているとは言えないことがわかります。Unixbench でベンチマークした結果を表??に示します。RPi では Raspbian のよい結果となり、RPi2 では Debian / armhf がよい結果となります。これは Raspbian が ARMv6 / VFPv2 に最適化されたバイナリで、RPi2 に最適化されていないためです。

RPi2 では Raspbian より Debian / armhf を使ったほうが良いことがわかりました。

4.3 Debian armhf / Jessie のインストール方法
インストールには 実機、初期化されてもよい 4GB 以上の microSD カード、電源用の micro USB ケーブル等が必要です。また USB シリアル変換モジュールがあるとコンソールから操作できるので、カスタマイズが楽にできます。
接続例を図 2 に示します。
またインストールの流れは以下となります。

1. microSD カードの認識確認
2. microSD カードの初期化
3. microSD カードにパーティション作成
4. microSD カードのフォーマット
5. cdebootstrap を使って microSD カードにインストール
6. RPi2 の Linux カーネルとカーネルモジュールのインストール
7. RPi2 のカーネルコマンドラインの設定

7

図2RPi2 接続例

8. fstab の設定
9. ネットワークデバイスの設定
10. rootfs 用パーティションの変更
11. root のパスワードの設定と rpi ユーザの追加
12. microSD カードのアンマウントと RPi2 の起動
13. RPi2 へのログイン
14. RPi2 専用ツールのインストール

4.3.1 microSD カード の接続確認
使用している Debian に micorSD カードを挿入します。挿入すると dmesg に以下のようなメッセージが出力されるはずです。これで microSD がどのデバイスファイルに割り当てられたかわかります。図 3 では sde に割り当てられていることがわかります。

$ dmesg | tail -5[858983.896718] FAT-fs (sdf1): Directory bread(block 32775) failed[858983.896729] FAT-fs (sdf1): Directory bread(block 1390704) failed[858983.896731] FAT-fs (sdf1): Directory bread(block 1390705) failed[869873.800361] sd 6:0:0:3: [sde] 15523840 512-byte logical blocks: (7.94 GB/7.40 GiB)
[869873.831121] sde: sde1

図 3 microSD カードのデバイスファイル割り当て確認

4.3.2 microSD カードの初期化
購入したばかりの microSD カードは VFAT 等でフォーマットされています。MBR がある領域を 0 で埋めて初期化します（fdisk コマンド等で丁寧にやってもよいです）。

4.3.3 microSD カードにパーティション作成
fdisk コマンドを使って microSD カードにパーティションを作成します。図 5 に手順を示します。32MB、VFATで boot 用のパーティションを作成し、残りを rootfs 用に Linux 用に作成します。

8

$ sudo dd if=/dev/zero of=/dev/sde bs=1M count=1

図 4 microSD カードの初期化

一気にやりたい方は図 6 を実行すればよいです。

$ sudo fdisk /dev/sde
Command (m for help): oCreated a new DOS disklabel with disk identifier 0x9aa4e1fa.
Command (m for help): nPartition typep
primary (0 primary, 0 extended, 4 free)eextended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-15523839, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-15523839, default 15523839): +32M
Created a new partition 1 of type ’Linux’ and of size 32 MiB.
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): e
If you have created or modified any DOS 6.x partitions, please see the fdisk documentation for additional information.
Changed type of partition ’Linux’ to ’W95 FAT16 (LBA)’.
Command (m for help): nPartition typep
primary (1 primary, 0 extended, 3 free)eextended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (67584-15523839, default 67584):
Last sector, +sectors or +size{K,M,G,T,P} (67584-15523839, default 15523839):
Created a new partition 2 of type ’Linux’ and of size 7.4 GiB.
Command (m for help): w
The partition figure has been altered.
Calling ioctl() to re-read partition figure.
Syncing disks.

図5

microSD カードにパーティションを作成

図 6 microSD カードにパーティションを作成 一気にやるバージョン(echo o; echo n; echo p; echo 1; echo ; echo +32M; echo t; echo e; echo n; echo p; echo 2; echo ; echo ; echo w) | fdisk /dev/sde

4.3.4 microSD カードのフォーマット
パーティション 1 は mkfs.msdos で、パーティション 2 は mkfs.ext でフォーマットします。フォーマットできたら適当なディレクトリを作成し、２つのパーティションをマウントします。今回は パーティション 1 用に /tmp/bootディレクトリ、パーティション 2 用に/tmp/rootfs ディレクトリを作成し、マウントします。

$ sudo mkfs.msdos /dev/sde1$ sudo mkfs.ext4 /dev/sde2$ mkdir /tmp/boot /tmp/rootfs$ sudo mount /dev/sde1 /tmp/boot$ sudo mount /dev/sde2 /tmp/rootfs

図7

microSD カードのフォーマットとマウント

9

4.3.5 cdebootstrap を使って microSD カードにインストールする
cbootstrap を使って、microSD カードに debian 起動イメージをインストールします。操作しているマシンが PC（i386 や amd64）の場合、通常は armhf のバイナリを実行できません。そのため PC 等で先にインストールに必要なDebian パッケージのダウンロードと展開を行い、実際のインストールは RPi2 で行うという方法を取ります。実際のインストール方法は図 8 となります。今回のインストールでは standard で指定されているパッケージの他、シリアルコンソールが使えない環境を考え openssh-server、時間設定のために ntp、証明書のために ca-certificates、エディタとして vim をインストールするようにしています。もし他に一緒にインストールしたいパッケージがある場合
は −−include に続けて指定する事ができます。

$ sudo cdebootstrap --arch=armhf -f standard --foreign jessie \--include=openssh-server,ntp,ca-certificates,vim /tmp/rootfs...

図8cdebootstrap を使った Debian イメージのインストール

4.3.6 RPi2 の Linux カーネルとカーネルモジュールのインストール
残念なことに RPi2 の Linux カーネルは Debian では提供されていません。その理由としてまだ完全にアップストリームでサポートされていない事と起動にファームウェアが必要ということが挙げられます。Debian で RPi2 のLinux カーネルを扱うには rpi-update というツールを使う必要があります。
図 4.3.6 では rpi-update を RPi2 の rootfs にダウンロードした後、実行権限を付加し、rpi-update を使ってカーネルとカーネルモジュールをインストールします。

$ sudo curl -o /tmp/rootfs/usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update$ sudo chmod +x /tmp/rootfs/usr/bin/rpi-update$ sudo mkdir /tmp/rootfs/lib/modules$ sudo ROOT_PATH=/tmp/rootfs BOOT_PATH=/tmp/boot /tmp/rootfs/usr/bin/rpi-update*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom*** Performing self-update% Total% Received % Xferd Average Speed
TimeTimeTime Current
Dload Upload
Total
Spent
Left Speed
100 8107 100 8107
00 54471
0 --:--:-- --:--:-- --:--:-- 54777*** Relaunching after update...

図 9 rpi-update のインストールと Linux カーネルのインストール

4.3.7 RPi2 のカーネルコマンドラインの設定
RPi2 のカーネルコマンドラインを設定します。RPi は/boot/cmdline.txt に記載されているカーネルコマンドラ
インを読み込んで起動します。図 4.3.7 のように実行し、カーネルコマンドラインを設定します。

$ sudo sh -c "echo dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1
root=/dev/mmcblk0p2 rootwait > /tmp/boot/cmdline.txt

図 10 カーネルコマンドラインの設定

4.3.8 fstab の設定
fstab の設定を行ないます。procfs、rootfs, boot ディレクトリの設定を記載します。

10

proc/dev/mmcblk0p1/dev/mmcblk0p2/proc/boot/

proc
vfat
ext4

defaults
0defaults
0defaults,noatime

0201

図 11 fstab の設定

4.3.9 ネットワークデバイスの設定
rootfs/etc/network/interfaces を編集し、ネットワークデバイスを有効にします。この操作は必須ではありませんが、USB シリアル変換モジュールを持ってない人は RPi2 に SSH でログインして操作する必要がありますので、ここでネットワークを起動時に有効するように設定しておきます。RPi2 の IP アドレスを DHCP から取得する場合は
図 4.3.9 のように設定します。

auto eth0
iface eth0 inet dhcp

図 12ネットワークデバイスの設定

4.3.10 rootfs 用パーティションの変更
rootfs/sbin/init に書かれている 2nd bootstrap の内容に rootfs をマウントする行があります。デフォルトではrootfs を / にマウントするよう記述されているため、このままではインストールに失敗します。正しくインストールできるように rootfs を /dev/mmcblk0p2 に変更します。

trap ’error "Interruped!"’ HUP INT TERM
mount -n -o remount,rw rootfs / <- これをmount -n -o remount,rw /dev/mmcblk0p2 / <- これに変更
chown -hR 0:0 /図 13

ネットワークデバイスの設定

4.3.11 root のパスワードの設定と rpi ユーザの追加
現状のままではインストール完了後にログインできません。2nd bootstrap 時に root のパスワードを設定する処理を追加します。また rpi ユーザを作成し、パスワードを設定する処理も追加します。rpi ユーザは説明のために使っているだけですので、他のユーザ名でも問題ありません。

echo ’deb http://ftp.debian.org/debian jessie main’ > /etc/apt/sources.list
echo "root:root" | chpasswd <- この行を追加
useradd -m rpi <- この行を追加
echo rpi:rpi | chpasswd <- この行を追加
run rm /sbin/init

図 14 root パスワードの設定

4.3.12 microSD カードのアンマウントと RPi2 の起動
microSD カードをアンマウントし、PRi2 の microSD カードスロットに挿入します。挿入後、micro USB ケーブ
ルを RPi2 に挿し、RPi2 を起動します。起動すると自動的に 2nd bootstrap が実行され、RPi2 上でインストール

11

が実行されます。もし HDMI 接続ができるモニターを持っている場合は、RPi2 と接続するとインストールされる様子を確認できます。インストール完了まで３０分ほど待たされるので、気長に待ちましょう。HDMI が利用できるモニターを持ってない場合、インストールが完了したか見た目ではわからないので、RPi2 に IP アドレスが割り当てられているか、ping を実行して反応があるかなどで確認する必要があります。

4.3.13 RPi2 へのログイン
インストールが完了すると自動的に init が再実行され、Debian が立ち上がった状態になっています。USB シリ
アルモジュール経由や、SSH 経由でログインできるようになっていますので、ログインしてください。後は通常のDebian と変わりません。
4.3.14 RPi2 専用ツールのインストール
RPi2 の専用ツールである rpi-update、raspi-config はまだ Debian では提供されていません。これらはカーネルやファームウェアのアップデート、RPi ハードウェアの設定を行うための機能が搭載されており、RPi ユーザには必須のツールとなっています。これを Debian で利用できるようにするには raspberrypi.org で提供されている 各ツールの Debian パッケージをインストールする必要があります。図 4.3.14 に設定方法を示します。

# wget -O - http://archive.raspberrypi.org/debian/raspberrypi.gpg.key | apt-key add # echo deb http://archive.raspberrypi.org/debian wheezy main >> /etc/apt/sources.list# apt-get update# apt-get install rpi-update raspi-config

図 15

rpi-config、rpi-update パッケージのインストール方法

4.3.15 終わりにRPi2 から ネイティブの Debian が利用できるようになりました。インストーラや microSD カードイメージが準備されていなくても、今回解説した方法を使うと RPi2 に自分好みの Debian をインストールできるようになります。

CPU も強化されそこそこ使いやすくなった Rpi2 で Debian を触ってみてはいかがでしょうか。

12

第 124 回 東京エリア Debian 勉強会 2015 年 3 月

5 会場での無線 LAN のつなぎ方
野島 貴英,Roger

5.1 はじめに今回試験として、会場側でフィルタ無しのグローバル回線を用意しました。ただ、会場側のセキュリティポリシーにより、wpa-psk AES hidden SSID という方式での提供となります。
以下に Debian マシンでの接続方法を記載します。
また、自分の環境では違うやり方でつながったという方は、野島まで教えて下さい。こちらでもノウハウとして溜めていく予定です。

5.2 wpasupplicant 及び/etc/network/interfaces を利用の場合
もっとも良いマニュアルは、/usr/share/doc/wpasupplicant/README.Debian.gz となります。困った場合はこちらも合わせてご参照下さい。
以下に/etc/network/interfaces の定義について会場の例を記載します。
$ sudo vi /etc/network/interfaces-----以下のエントリがなければ追記ここから---------iface wlan0_debian inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant_debian.conf-----以下のエントリがなければ追記ここまで---------$ sudo vi /etc/wpa_supplicant/wpa_supplicant_debian.conf-----以下のエントリを追記ここから---------network={
ssid=<<会場の SSID>>
psk=<<会場のパスワード>>
scan_ssid=1}-----以下のエントリを追記ここまで---------$ sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant_debian.conf$ sudo ifup wlan0=wlan0_debian

ま た 、ハ マって し まった 時 の デ バッグ 方 法 は 、/usr/share/doc/wpasupplicant/README.Debian.gz 中 の”4.

Trubleshooting” の章が便利です。

5.3 その他の無線 LAN 用パッケージを利用の場合
すみません、自分が情報を持たないため、現場で教えて下さい。

13

14

Debian 勉強会資料
2015 年 3 月 7 日
初版第 1 刷発行
東京エリア Debian 勉強会 （編集・印刷・発行）

15