第 111 回 東京エリア Debian 勉強会資料.Deb
銀河系唯一のDebian専門誌
2014 年 03 月 15 日

特集：

ぐ繋をiphone5

デビアン勉強会

Debian で iphone5 を繋ぐ

54.1

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

5

4.2

本発表内容についての情報

4

目次
事前課題

2

1.1

吉野 (yy y ja jp) . . . . . .

2

1.2

dictoss(杉本 典充). . . .

2

1.3

umireon. . . . . . . . . .

2

1.4

野首 . . . . . . . . . . . . .

2

1.5

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

2

2

Debian Trivia Quiz

33

最近の Debian 関連のミーテ

1ィング報告3.1

54.3

Debian に繋ぐ . . . . . . . .

54.4

仕組み . . . . . . . . . . . .

84.5

終わりに . . . . . . . . . . .

10

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

11

5.1

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

11

5.2

wpasupplicant

54

東 京 エ リ ア Debian 勉 強 会

1び

利用の場合 . . . . . . . . . .

5.3

東 京 エ リ ア Debian 勉 強 会

110 回目報告 . . . . . . . . .

及/etc/network/interfaces を
4

109 回目報告 . . . . . . . . .
3.2

ソース . . . . . . . . . . . .

411

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

11

第 111 回 東京エリア Debian 勉強会 2014 年 03 月

1 事前課題
野島 貴英

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

1. 本日、何の作業をやるかを宣言ください。
この課題に対して提出いただいた内容は以下です。

1.1

吉野 (yy y ja jp)

1.4• manpages-ja 続き• DDTSS

1.2

野首• KAKASI 2.3.6 のリリースに向けた作業• LanguageTool のルール追加• navi2ch texi の確認• gnu.org web 翻訳

dictoss(杉本 典充)

git-buildpackage でパッケージをつくれるように勉強する。

1.5
1.3umireon

野島

今度こそ、bitblocker でガードされた UEFI 仕様の win-vagrant の basebox を作ります。

dows 7 機材に Debian をデュアルブートインストール。

2

第 111 回 東京エリア Debian 勉強会 2014 年 03 月

2 Debian Trivia Quiz
野島 貴英

ところで、みなさん Debian 関連の話題においついていますか？Debian 関連の話題はメーリングリストをよんでいると追跡できます。ただよんでいるだけでははりあいがないので、理解度のテストをします。特に一人だけでは意味がわからないところもあるかも知れません。みんなで一緒に読んでみましょう。
今回の出題範囲は debian-devel-announce@lists.debian.org や debian-devel@lists.debian.org に投稿された内容などからです。
問題 1. 2014 年 GSoC のメンター募集が行われていま問題 3. Debian のコミュニティにより提供されているす。2014 年の GSoC にて採択されていないものはどれWeb サービスについて調査が行われています。この調査□ A hurd-i386 の開発□ B clang で Debian のパッケージをコンパイルできるの名前は？
□ A Debian Services Serveyようにする□ C Android 上で Debian 環境を作れる件の改良を行う□ B Outreach Program For Women□ C Debian Services Census

問題 2. 先日バグレポートの ID が#740000 を向かえました。#730000 からどのぐらいの期間がたったでしょ問題 4. 毎年恒例の DPL 選挙が始まりました。2014 年の DPL 立候補者は誰？

う？

□ A Takahide Nojima□ A 1ヶ月と 3 日□ B Lucas Nussbaum□ B 3ヶ月と 4 日□ C Stefano Zacchiroli□ C 10ヶ月と 10 日

3

第 111 回 東京エリア Debian 勉強会 2014 年 03 月

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

3.1 東京エリア Debian 勉強会 109 回目報告
東京エリア Debian 勉強会 109 回目は (株) スクウェア・エニックスさんで開催されました。4 名の参加者がありました。

• Debian にて dnsmasq を使い、複数の Debian の仮想環境を、モバイル PC 上の Debian 上で動かす際に便利な、– 簡易 DNS リゾルバの立て方、– 簡易 DNS サーバーの立て方、– 5 分でできる簡易 PXE boot 用サーバーの立て方について発表がありました。

• 参加者全員で、各自の作業を行い、最後に成果発表をしました。
宴会は会場近くの中華食べ放題「南国亭新宿店」にて行いました。

3.2 東京エリア Debian 勉強会 110 回目報告
第 110 回東京エリア Debian 勉強会は、OSC 2014 Tokyo/Spring出張編ということで行われました。東京エリア Debian 勉強会は 2 日目の 3 月 1 日 (土) のみの出展でした。

• 場所は明星大学• iwamatsu さんにより、debian update と debian の EFI/UEFI 対応について発表が行われました。
• 展示について、iwamatsu さん、yy y ja jp さん、koedoyoshida さん、野島で行いました。

4第 111 回 東京エリア Debian 勉強会 2014 年 03 月

4 Debian で iphone5 を繋ぐ
野島 貴英

4.1 はじめに大変不自由なスマートフォンなのに日本で驚異的に売れまくっているという、目を被いたくなるような現実を作り出しているスマートフォンの１つとして、iphone5 があります [1]。このスマートフォン、PC に繋ぐには、windows/mac で iTune などの専用プロプリエタリなソフトウェアを使ってデータ同期をしなければならないという、これでもかというぐらいの不自由仕様となっています。
ここでは、少しでも iphone5 の不自由さを回避するため、• 自由な Debian マシンに、なんとかして不自由な iphone5 を繋ぐ事について、• iphone5 がどのような仕組みでつながるのか（Debian 開発者向け）について述べます。

4.2 本発表内容についての情報ソース
本発表内容の技術の情報ソースは、すべて• Apple 社のディベロッパーサイトで公開情報となっているもの (文献 [2])• Debian パッケージに含まれるプログラムを解析した範囲• その他 Web にて公開されている情報 (文献 [3],[4], [5])のみに基づきます。

4.3 Debian に繋ぐ
東京エリア Debian 勉強会にいらっしゃるような方々は、普段から Debian sid をお使いかと思いますので、ここでは、Debian sid を用い、さらにパッケージのバージョンが低くて問題のある部分だけちょっと自作して*1 繋ぐ方法を取ってみます。
まずは、用意するものを表 1 に記載します。

Step 1. iphone5 に Document 2 Free*2 をインストールしておきます。
Step 2. debian sid で導入される libmobiledevice4 の upstream バージョンが古く、iOS7.1 に対応出来ないので、upstream 最新版からパッケージを自作して最新のものにします。
*1 すみません、bug report あげときます...
*2 https://itunes.apple.com/us/app/documents-2-free-file-manager/id314894105

5

項番品目

備考

1

Debian sid の入っているマシン

2

iphone53Lightning-USB ケーブル

4

Debian と繋ぐ先の iphone アプリ。なんでも良iOS7.1（3/14 現在最新）にバージョンアップ済み

いかと思いますが、ここではファイルマネージャアプリである Document 2 Free を例にあげます。
表1

用意するもの$ sudo aptitude install git$ git clone https://github.com/libimobiledevice/libimobiledevice.git libimobiledevice-1.1.6$ mkdir libimobiledevice4$ cd libimobiledevice4# Debian で用意されている libimobiledevice に梱包されている debian ディレクトリを利用$ apt-get source libimobiledevice4/sid$ cd libimobiledevice-1.1.5$ cp -a debian ../../libimobiledevice-1.1.6$ cd ../../libimobiledevice-1.1.6# いろいろパッチを当てる# 主に、libimobiledevice-1.1.6 だと 1.1.5 用のパッチは upstream で適用済みなのではずす、# doc パッケージの中身は作り方が違う、一部シンボルテーブルも違うなどで# チェックを除外するのが目的。
$ rm -f debian/libimobiledevice-doc.doc-base$ rm -f debian/libimobiledevice-doc.install$ rm -f debian/libimobiledevice-doc.links$ rm -f debian/libimobiledevice4.symbols$ rm -rf debian/patches6$ patch -p1 <<__HERE
diff -ur a/debian/changelog b/debian/changelog--- a/debian/changelog 2013-10-30 02:42:24.000000000 +0900+++ b/debian/changelog 2014-03-13 21:50:16.000000000 +0900@@ -1,3 +1,9 @@+libimobiledevice (1.1.6-1~a1) unstable; urgency=low++ * update latest upstream++ -- Your Name <your@mail.addr> Fri, 28 Feb 2014 01:42:21 +0900+
libimobiledevice (1.1.5-2) unstable; urgency=low* [0052e46] Drop hal fdi file.
diff -ur a/debian/control b/debian/control--- a/debian/control
2013-10-30 02:42:24.000000000 +0900+++ b/debian/control
2014-02-28 01:42:09.000000000 +0900@@ -102,13 +102,3 @@.
This package contains utilities and examples which use libimobiledevice.
-Package: libimobiledevice-doc-Architecture: all-Section: doc-Depends: libjs-jquery, ${misc:Depends}-Description: Library for communicating with iPhone and iPod Touch devices- libimobiledevice is a library that talks the native Apple USB protocols that- the iPhone and iPod Touch use. Unlike other projects, libimobiledevice does
- not depend on using any existing libraries from Apple.
- .
- This package contains the documentation for the library.
diff -ur a/debian/rules b/debian/rules--- a/debian/rules
2013-10-30 02:42:24.000000000 +0900+++ b/debian/rules
2014-02-28 01:49:58.000000000 +0900@@ -25,7 +25,7 @@rm -rf $(CURDIR)/debian/tmp//usr/lib/python*/dist-packages/*.a#Remove installed man pages, installed by *.manpages
rm -f $(CURDIR)/debian/tmp/usr/share/man/man1/*.1
dh_install --fail-missing+dh_installoverride_dh_strip:
dh_strip --dbg-package=libimobiledevice4-dbg@@ -34,5 +34,3 @@# Only build for the current version of python, not all supported.
dh_python2 --no-guessing-versions-override_dh_makeshlibs:
dh_makeshlibs -- -c4__HERE$ sudo aptitude build-dep libimobile4/sid$ debuild -uc -us$ cd ..
$ sudo dpkg -i ./libimobiledevice4_1.1.6-1~a1_amd64.deb ./libimobiledevice-utils_1.1.6-1~a1_amd64.deb

Step 3. 他に iphone5 に繋ぐための必要なパッケージを導入しておきます。
$ sudo aptitude install ideviceinstaller ifuse... いろいろ依存関係に引きずられて入る...

Step 4. Debian マシンにて、fuse グループにユーザを追加し、一旦ログアウト＆ログイン操作を行います。（ログアウト＆ログイン操作を行う事が重要です）$ sudo usermod -a -G fuse <your-login-id>$ exit (あるいは、デスクトップ環境のログアウト操作)
your machine login: <your-login-id>
Password: ...your pass...
(あるいは、デスクトップ環境のログイン操作）$

Step 5. iphone5 のロック画面を解除し、Lightning-USB ケーブルで Debian マシンと繋ぎます。
Step 6. Debian 側、iphone5 側両方に「コンピュータ/デバイスを信頼するか？」という意味のポップアップが表示されるかもしれませんが、「信頼する」を押して一旦抜けます。

Step 7. iphone5 とペアリングを行います。
$ sudo idevicepair pair
SUCCESS: Paired with device ...40 桁の uuid...

なお、この時、iphone5 に「コンピュータを信頼しますか？」というポップアップが出るので、「信頼する」を選択します。すると、Debian 機材の/var/lib/lockdown/以下に必要ファイルができる。以降は idevicepair 操
作を行わなくても iphone5 との通信が出来るようになります。

7

Step 8. iphone5 にすでにインストールされているアプリケーションの appid を Debian から探します。こちらの結果から、Document 2 Free の appid は com.savysoda.documents2Free である事が分かります。
$ ideviceinstaller -l
Total: 16 appscom.savysoda.documents2Free - Documents 2 7.3
com.square-enix.gunsandsouls - GUNS 1.0.1
com.google.b612 - Google Earth 7.1.1... 中略...

Step 9. Document 2 Free のストレージをマウントし、本勉強会資料を投げ込んでみます。（もちろん、動画ファイルとか、mp3 ファイルとか投げ込んでも問題ありません）# マウントポイント作って ifuse でマウントする。
$ mkdir document2$ ifuse --appid com.savysoda.documents2Free ‘pwd‘/document2$ cd document2# document2 Free のストレージが見える$ ls -l
Inbox/ mraid.js$ mkdir 東京 Debian$ cp /home/yours/doc/monthly-report/debianmeetingresume201403.pdf 東京 Debian/$ cd ..
# unmount は fusermount コマンドを使う。
$ fusermount -u ‘pwd‘/document2

Step 10. iphone5 側で Document 2 Free を立ち上げると、東京 Debian というフォルダが出来ており、さらにその下に pdf ファイルが見えます。こちらをタップすると、本資料を iphone5 上で読むことが出来ます。

4.4 仕組み東京エリア Debian 勉強会に集まるような人にとっては、ただ繋ぐだけではおもしろくないと思いますので、仕組みについて説明します。

4.4.1 iphone アプリのストレージの約束事
iphone アプリは、apple 社が定めるいろいろな約束ごとに基づいて設計されています。
今回マウントした iphone アプリのストレージに関する約束ごとは、公開情報となっている Apple Developer サイト掲載の「ファイルシステム プログラミングガイド」[2] に詳細があります。この中で、知っておくべき事として、• iphone アプリは各々割り当てられたサンドボックス内のリソースでしか動作を許されていません。そのため、例えば A アプリから B アプリのストレージ領域をアクセスすることがそもそも出来ません。

• ディレクトリの名前と用途が統一的に決められています。（例：Documents/,Library/,tmp/)となっています（図 1 参照。) 今回マウントに利用した ifuse コマンドですが、このコマンドは、通常はオプション–appid で指定した ipone アプリの持つ Documents ディレクトリをマウントする能力があります。（注：所謂 jailbreak した iphone 端末は除きます）

8

図1

iphone アプリのストレージの様子

4.4.2 Debian との通信の仕組み
今回紹介の件について iphone5 と Debian との通信の仕組みを図 2 に示します。

図2

iphone5 と Debian の通信の仕組み

基本的に、Lightning-USB ケーブル上には、usbmux のパケットが流れます。

さらにペイロードとして、lockdown プロトコルと言われるプロトコル、afc プロトコルが適宜 SSL/TLS ライブラリで暗号化されて乗っています。
プロトコルについて階層化して図示すると図 3 に示します。

9図3

iphone5 との通信プロトコル

また、各々のプロトコルについての説明を表に示します。
項番

プロトコル名概要

1

usbmuxlightning/usb に流れているプロトコル2

Lockdown

iphone5 との通信認証、iphone5 の Lightning 端子側から利用出来るサービスのやりとりを担当。

plist 形式の電文を usbmux に載せ、iphone5 とやりとりを行う。

3afc

Apple File Connection のためのプロトコル。
ファイルシステム操作が出来る。
表2

プロトコル名称と概要

また、plist 形式とは、property list の略で、バイナリ形式の電文と、XML 形式の電文の２種類があるようです。
なお、電文のやりとりの詳細、電文の説明については、文献 [3],[4], [5] に詳細があります。

4.5 終わりに
今回、Debian に iphone5 を繋ぎ、iTune によらないデータ転送について紹介しました。また、実現する技術についても紹介しました。こちらにより、不自由なスマートフォンを少しでも自由に使う事が出来れば幸いです。

参考文献[1] GIGAZINE,「Apple が 過 去 最 高 の 売 上 を 発 表 、日 本 で は iPhone が 69% の シェア を 獲 得 」, http://gigazine.net/news/20140128-apple-report-fy14-q1/[2] Apple Developer サイト,「ファイルシステム プログラミングガイド」, https://developer.apple.com/jp/devcenter/ios/library/japanese.html[3] theiphonewiki,“Usbmux”, http://theiphonewiki.com/wiki/Usbmux[4] theiphonewiki,“afc”, http://theiphonewiki.com/wiki/AFC[5] GOTO:Hack,“Hacking

apple accessories to pown iDevices”,

Mathieu RENARD, http://2013.hackitoergosum.org/

presentations/Day3-04.Hacking%20apple%20accessories%20to%20pown%20iDevices%20%E2%80%93%20Wake%20up%20Neo!
%20Your%20phone%20got%20pwnd%20!%20by%20Mathieu%20GoToHack%20RENARD.pdf

10

第 111 回 東京エリア Debian 勉強会 2014 年 03 月

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

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 aptitude install wpasupplicant# hidden ssid の元では必ず ap-scan 1,scan-ssid 1 を指定する事。
# 参考：http://bugs.debian.org/358137$ sudo vi /etc/network/interfaces-----以下のエントリを追記ここから---------iface wlan_tokyodebian inet dhcp
wpa-ssid <<会場の SSID>>
wpa-psk <<会場のパスワード>>
wpa-ap-scan 1
wpa-scan-ssid 1-----以下のエントリを追記ここまで---------# 無線 LAN を有効にする。
$ sudo ifup wlan0=wlan_tokyodebian# 無線 LAN を無効にする。
$ sudo ifdown wlan0

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

Trubleshooting” の章が便利です。

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

1112

13

14

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

15