1
00:00:02,000 --> 00:00:08,000
皆さんこんにちは。私の発表にお越しいただきありがとうございます。
2
00:00:08,000 --> 00:00:17,000
本発表では、Debian インストーラに対する GNU/Screen の組み込みに関してお話します。
3
00:00:19,000 --> 00:00:24,000
まずは組み込みのあらましについてお話しします。
4
00:00:24,000 --> 00:00:26,000
すなわち、Debian インストーラとはどんなものか、
5
00:00:26,000 --> 00:00:30,000
GNU/Screen とはどんなものか、
6
00:00:30,000 --> 00:00:35,000
GNU/Screen を Debian インストーラに組み込む必要性、
7
00:00:35,000 --> 00:00:40,000
GNU/Screen サポートをインストーラに追加する方法についてお話します。
8
00:00:42,000 --> 00:00:47,000
Debian インストーラとはどんなものでしょうか?
9
00:00:47,000 --> 00:00:51,000
ここにおられる多くの方が Debian インストーラをご存知のことと思います。
10
00:00:51,000 --> 00:00:55,000
Debian インストーラは単なるインストーラです。
11
00:00:55,000 --> 00:01:01,000
しかしながら実際のところ、
これは起動可能な Debian 環境であり、
12
00:01:01,000 --> 00:01:07,000
そのサイズが極力小さくなるように調整されています。
13
00:01:08,000 --> 00:01:15,000
すなわち、
インストーライメージに文書は含まれないということです。
14
00:01:15,000 --> 00:01:34,000
それ以外の普通の人にとって通常ならば利用価値の高い情報
(一般に「/usr/share/doc」へ配置される情報) も含まれません。
15
00:01:34,000 --> 00:01:37,000
しかしながらインストール時ならば、これらの情報は必要ありません。
16
00:01:37,000 --> 00:01:44,000
そうすることで、
インストーラのサイズを小さくすることが可能です。
17
00:01:44,000 --> 00:01:50,000
かつて、インストーラは 1 枚か 2 枚のフロッピー内に収まっていました。
18
00:01:50,000 --> 00:01:53,000
すなわち、インストーラサイズはとても小さかったということです。
19
00:01:53,000 --> 00:01:55,000
今では、そうすることは不可能です。
20
00:01:55,000 --> 00:02:04,000
なぜなら、カーネルサイズだけでフロッピーのサイズを超えてしまうからです。
21
00:02:04,000 --> 00:02:14,000
また、インストーラはパーティション分割ソフトウェアを備えています。
22
00:02:14,000 --> 00:02:24,000
このおかげで、パーティションを分割したり、
インストーラの中に新しいディスクイメージ作成したりできます。
23
00:02:24,000 --> 00:02:36,000
その後、「debootstrap」が Debian 環境をインストールします。
24
00:02:36,000 --> 00:02:41,000
最後に、インストーラがブートローダをインストールします。
25
00:02:41,000 --> 00:02:53,000
ブートローダには数多くの種類が用意されています。
その一例として PC や ARM??? 向けの GRUB があります。
26
00:02:53,000 --> 00:03:07,000
また、armel や armhf などの ARM プラットフォーム向けの
ブートローダには flash-kernel があります。
27
00:03:12,000 --> 00:03:15,000
GNU/Screen とは何でしょうか?
28
00:03:15,000 --> 00:03:17,000
第一に、それはターミナルマルチプレクサです。
29
00:03:17,000 --> 00:03:28,000
すなわち、これを使うことで物理的な端末の中に
複数の仮想的な端末を持つことが可能になります。
30
00:03:28,000 --> 00:03:42,000
さらに、短縮キーを使って仮想的な端末を切り替えることも可能です。
31
00:03:42,000 --> 00:03:47,000
GNU/Screen の場合、短縮キーは 「Ctrl-A (数字)」 です。
32
00:03:47,000 --> 00:04:00,000
Tmux (GNU/Screen の代替品) の場合、短縮キーは 「Ctrl-B (数字)」 です。
33
00:04:00,000 --> 00:04:14,000
ここまでの説明から、皆様は Debian インストーラ内で GNU/Screen を必要とする理由が気になっているのではないでしょうか。
34
00:04:14,000 --> 00:04:19,000
どんなご利益があるのでしょうか?
35
00:04:19,000 --> 00:04:22,000
それでは皆様に普通のインストーラをご覧に入れましょう。
36
00:04:22,000 --> 00:04:28,000
これが普通のインストーラです。
37
00:04:28,000 --> 00:04:30,000
ユーザインターフェイスがあります。
38
00:04:30,000 --> 00:04:42,000
もしパーティション分割や新しいディスクイメージの作成時に問題が生じたなら、
ログを確認したいと思うのではないでしょうか。
39
00:04:42,000 --> 00:04:49,000
そんな時は、「Alt-F4」キーを押してログコンソールに切り替えることが可能です。
40
00:04:49,000 --> 00:04:55,000
これが普通の PC の場合です。
41
00:04:55,000 --> 00:05:03,000
元の画面に戻りたければ、「Alt-F1」キーを押します。
42
00:05:03,000 --> 00:05:06,000
それでは実演をご覧ください。
43
00:05:53,000 --> 00:05:56,000
これが普通の Debian インストーラ画面です。
44
00:05:56,000 --> 00:06:00,000
ここで「Alt-F2」キーを押します。
45
00:06:00,000 --> 00:06:06,000
するとコマンドラインが表示されます。
46
00:06:06,000 --> 00:06:09,000
ここでは様々な情報を見ることが可能です。
47
00:06:09,000 --> 00:06:17,000
「Alt-F4」キーを押せば、ログを見ることも可能です。
48
00:06:19,000 --> 00:06:22,000
元の画面に戻りたければ、「Alt-F1」キーを押します。
49
00:06:22,000 --> 00:06:26,000
これで元の画面に戻りました。
50
00:06:26,000 --> 00:06:28,000
これが普通の PC の場合です。
51
00:06:28,000 --> 00:06:36,000
しかしながら組込み機器の場合、このような便利な方法はありません。
52
00:06:55,000 --> 00:07:09,000
armel や armhf などの組込み機器では、シリアルコンソールまたはネットワークを介した SSH などを使ってインストールするのが普通です。
53
00:07:09,000 --> 00:07:14,000
したがって、用意される物理的な画面は一つだけです。
54
00:07:14,000 --> 00:07:18,000
他に画面はありません。
55
00:07:18,000 --> 00:07:19,000
実は、方法が全く無いわけではありません。
56
00:07:19,000 --> 00:07:21,000
前のページを見ることが可能です。
57
00:07:21,000 --> 00:07:29,000
そのための「戻る」オプションがここにあります。
58
00:07:29,000 --> 00:07:34,000
戻って、このメニューを表示することが可能です。
59
00:07:34,000 --> 00:07:42,000
これは上級者向けのメニューであり、
組込み機器でもここからシェルを起動することが可能です。
60
00:07:42,000 --> 00:07:46,000
シェルが起動されれば、ログを確認することが可能です。
61
00:07:46,000 --> 00:07:52,000
ログは「/var/log/syslog」に保存されています。
62
00:07:52,000 --> 00:07:54,000
ログを開いて、内容を確認することが可能です。
63
00:07:54,000 --> 00:07:58,000
しかしながら、ログを確認するときは、
64
00:07:58,000 --> 00:08:03,000
毎回戻ってシェルを起動しなければいけません。
65
00:08:03,000 --> 00:08:05,000
好きなときにログを確認することも不可能です。
66
00:08:05,000 --> 00:08:10,000
なぜなら、インストーラが作業している間 (パッケージのインストール中など) はメニューを表示できないからです。
67
00:08:10,000 --> 00:08:16,000
普通の PC ではいつでもできることが組込み機器ではできないのです。
68
00:08:16,000 --> 00:08:18,000
そこで私は考えました。
69
00:08:18,000 --> 00:08:24,000
もし GNU/Screen を Debian インストーラに組み込んだら、
70
00:08:24,000 --> 00:08:36,000
armel などの組込み機器に対するインストールを普通の PC と同じように簡単で便利なものにできるのではないでしょうか。
71
00:08:42,000 --> 00:08:47,000
このような経緯で、私は GNU/Screen の組み込み作業を開始しました。
72
00:08:50,000 --> 00:08:54,000
では、どのように組み込み作業を行えばよいのでしょうか?
73
00:08:54,000 --> 00:08:58,000
しばらく検索した後、
74
00:08:58,000 --> 00:09:07,000
私は GNU/Screen バイナリパッケージとそれが依存するパッケージ (ライブラリなど) が udeb をサポートする必要があるという点に気が付きました。
75
00:09:07,000 --> 00:09:18,000
udeb は Debian インストーラ用の特別なフォーマットで、
インストーライメージのサイズを小さくする目的で使われます。
76
00:09:18,000 --> 00:09:22,000
すなわち、例えば文書は udeb 内から削除されます。
77
00:09:22,000 --> 00:09:32,000
したがって、第一に、GNU/Screen とそれが依存するライブラリに udeb を作らせる必要があります。
78
00:09:33,000 --> 00:09:40,000
第二に、これらの udeb を Debian インストーライメージに追加する必要があります。
79
00:09:42,000 --> 00:09:52,000
第三に、Debian インストーラ内で GNU/Screen を起動させるためのスクリプトを書く必要があります。
80
00:09:55,000 --> 00:10:00,000
udeb のサポートから話を始めましょう。
81
00:10:05,000 --> 00:10:13,000
通常、udeb は「debian/control」で管理されます。
82
00:10:15,000 --> 00:10:19,000
udeb はソースパッケージに対するバイナリパッケージのようなものです。
83
00:10:19,000 --> 00:10:28,000
udeb (新しいバイナリ) をサポートするにはセクションを追加します。
84
00:10:28,000 --> 00:10:38,000
その後、新しい「-udeb.install」ファイルを作成します。
85
00:10:38,000 --> 00:10:49,000
これの内容は本来の「.install」ファイルとほぼ同一ですが、
不要なファイルに関するエントリを削除します。
86
00:10:49,000 --> 00:10:53,000
この後、パッチを作成します。
87
00:10:53,000 --> 00:11:05,000
そして、パッケージメンテナにパッチを送り、
パッチの内容を適用してもらいます。
88
00:11:05,000 --> 00:11:12,000
新しい udeb パッケージが追加されました。
89
00:11:12,000 --> 00:11:15,000
しかしながら、パッケージが DM によってメンテナンスされている場合、
90
00:11:15,000 --> 00:11:28,000
残念なことに、DM はパッケージをアップロードするために、
パッケージをスポンサーしてくれる DD を探す必要があります。
91
00:11:28,000 --> 00:11:35,000
同様の理由により、新しい udeb パッケージは NEW キューに入ります。
92
00:11:35,000 --> 00:11:40,000
さらに、ftp-master がアップロードを認可するまで待つ必要もあります。
93
00:11:40,000 --> 00:11:49,000
したがって、アップロードされるまでに通常のパッケージよりも時間がかかります。
94
00:11:52,000 --> 00:12:01,000
私は GNU/Screen とそれが依存するパッケージに udeb サポートを追加し、
95
00:12:01,000 --> 00:12:10,000
4 つのバグを報告し、それぞれにパッチを添付しました。
96
00:12:28,000 --> 00:12:34,000
これで、udeb パッケージの準備ができました。
97
00:12:34,000 --> 00:12:40,000
しかしながら、Debian インストーライメージにこれを追加する作業が残っています。
98
00:12:40,000 --> 00:12:54,000
そこで、udeb サポートを追加するために、
「debian-installer.git」リポジトリに対してパッチを当てました。
99
00:12:56,000 --> 00:13:08,000
最後に、Debian インストーラの起動後に GNU/Screen を起動する必要があります。
100
00:13:08,000 --> 00:13:22,000
さらに、PC 上の Debian インストーラ環境をエミューレートするための GNU/Screen の設定も必要です。
101
00:13:22,000 --> 00:13:29,000
Debian インストーラには 4 つの仮想画面が用意されています。
102
00:13:29,000 --> 00:13:37,000
1 つ目が主画面、2 つ目がコマンドラインコンソール、最後がログコンソールです。
103
00:13:37,000 --> 00:13:42,000
この状態をエミュレートしたいわけです。
104
00:13:49,000 --> 00:13:54,000
それでは実演をご覧ください。
105
00:14:01,000 --> 00:14:06,000
今回は、Debian インストーラを仮想マシン上で実行しています。
106
00:14:29,000 --> 00:14:34,000
こちらが GNU/Screen をサポートする Debian インストーラです。
107
00:14:34,000 --> 00:14:40,000
したがって、1 番、2 番、3 番、4 番、という 4 つの仮想端末が用意されています。
108
00:14:40,000 --> 00:14:56,000
さらに、「Ctrl-A 2」、「Ctrl-A 3」、「Ctrl-A 4」などの
短縮キーを使って端末を切り替えることが可能です。
109
00:14:56,000 --> 00:15:01,000
こちらがログです。
110
00:15:06,000 --> 00:15:12,000
PC 側の立場からすると、ご覧のとおり、
これはそれほど便利というわけではないように見えます。
111
00:15:12,000 --> 00:15:17,000
なぜなら、PC では「Alt-F1」、「Alt-F2」、「Alt-F3」
を使って画面を切り替えることが可能だからです。
112
00:15:17,000 --> 00:15:23,000
しかしながら組込み機器側の立場からすると、
これはかなり便利です。
113
00:15:35,000 --> 00:15:40,000
進捗をご報告しましょう。
114
00:15:40,000 --> 00:15:47,000
実際には、ここに挙げた事柄の処理はすでに完了しています。
115
00:15:47,000 --> 00:15:53,000
例えば、最初の 2 つはライブラリに関するものです。
116
00:15:53,000 --> 00:15:56,000
実際には、これらの処理は必要ありませんでした。
117
00:15:56,000 --> 00:16:05,000
なぜなら、Laurent さんから教わったのですが、
118
00:16:05,000 --> 00:16:09,000
GNU/Screen を 2 回コンパイルするように設定できたからです。
119
00:16:09,000 --> 00:16:24,000
すなわち、1 回目に通常の GNU/Screen を、2 回目に audit と pam ライブラリを使わない GNU/Screen をコンパイルするということです。
120
00:16:24,000 --> 00:16:32,000
この方針を採ることにより、GNU/Screen の udeb バイナリのサイズを小さくすることが可能になりました。
121
00:16:32,000 --> 00:16:38,000
実のところ、本当にサポートする必要があるライブラリは ncurses です。
122
00:16:38,000 --> 00:16:49,000
ncurses は GNU/Screen のバイナリパッケージと併せて 2 週間前に ftp-master へアップロードされました。
123
00:16:49,000 --> 00:17:06,000
Debian インストーライメージについて言えば、今週 Debian インストーラ Stretch Alpha 7 がリリースされた後、対応するコミットをプッシュしました。
124
00:17:06,000 --> 00:17:10,000
Alpha 7 のリリース後にコミットをプッシュしたので、
125
00:17:10,000 --> 00:17:21,000
Debian インストーラに組み込まれた GNU/Screen を試すにはデイリーイメージを使ってください。
126
00:17:29,000 --> 00:17:32,000
それでは、恩恵を受けるデバイスについて考えてみましょう。
127
00:17:32,000 --> 00:17:43,000
恩恵を受けるデバイスとして、シリアルコンソールや SSH ネットワークコンソールを使ってインストールされた通常の ARM ボードや、
128
00:17:43,000 --> 00:17:56,000
SPARC64 および IBM s390/s390x などの巨大なマシンが挙げられます。
129
00:17:56,000 --> 00:18:01,000
PC にも恩恵を受けるものがあるでしょう。
130
00:18:01,000 --> 00:18:04,000
なぜなら、一部の PC はヘッドレスだからです。
131
00:18:04,000 --> 00:18:13,000
この種のどちらかと言えば PC サーバのような PC は HDMI や VGA ポートを装備していません。
132
00:18:17,000 --> 00:18:26,000
初期の私の提案に対してコメントをくださった様々な方々に感謝申し上げます。
133
00:18:26,000 --> 00:18:35,000
また、udeb パッケージのアップロードに関する手助けにも感謝申し上げます。
134
00:18:35,000 --> 00:18:37,000
本当にありがとうございました。
135
00:18:37,000 --> 00:18:42,000
[拍手]
136
00:18:42,000 --> 00:19:02,000
何かご質問があればお願いします。
137
00:19:02,000 --> 00:19:04,000
[座長]: ええ、どうぞ。
138
00:19:04,000 --> 00:19:13,000
[質問者 00]: まず初めに、私は SPARC 組み込みシステムをいつも使っています。
139
00:19:13,000 --> 00:19:15,000
[質問者 00]: そんなわけで、この組み込み作業が大いに役立つことは間違いありません。
140
00:19:15,000 --> 00:19:19,000
[質問者 00]: 本当に有難うございます。
141
00:19:19,000 --> 00:19:21,000
[質問者 00]: あなたの作業に深く感謝しております。
142
00:19:25,000 --> 00:19:32,000
[質問 00-00]: 作業を遂行する上で最も難しかったことは何ですか?
143
00:19:32,000 --> 00:19:39,000
[質問 00-01]: また、「簡単じゃないか」と最も驚いたことは何ですか?
144
00:19:39,000 --> 00:19:44,000
実は、最も難しかったことはパッケージをアップロードすることです。
145
00:19:44,000 --> 00:19:50,000
なぜなら、あるパッケージは DM によってメンテナンスされていたからです。
146
00:19:50,000 --> 00:19:58,000
通常、DM は DD のスポンサーシップがなくても
担当のパッケージをアップロードできます。
147
00:19:58,000 --> 00:20:01,000
しかし、udeb は新しいパッケージとみなされるため、
148
00:20:01,000 --> 00:20:06,000
スポンサーとなる DD を見つける必要がありました。
149
00:20:06,000 --> 00:20:19,000
DD を見つけてアップロードしてもらうのに、ほぼ 2 ヶ月かかりました。
150
00:20:21,000 --> 00:20:24,000
[質問者 00]: あと、難しいと思っていたにも関わらず、
151
00:20:24,000 --> 00:20:26,000
[質問者 00]: 簡単だったことは何ですか?
152
00:20:26,000 --> 00:20:29,000
えーっと
153
00:20:29,000 --> 00:20:30,000
[質問者 00]: 難しいことばかりでしたか?
154
00:20:30,000 --> 00:20:31,000
[笑い]
155
00:20:31,000 --> 00:20:34,000
技術的な側面から言えば、組み込み作業は骨の折れる作業ではありませんでした。
156
00:20:34,000 --> 00:20:37,000
なぜなら、すべてのものは用意されていたからです。
157
00:20:37,000 --> 00:20:42,000
私は単に udeb サポートを追加するための簡単なパッチを書いて、
158
00:20:42,000 --> 00:20:48,000
Debian インストーラの中で GNU/Screen を起動するスクリプトを書いただけです。
159
00:20:48,000 --> 00:20:52,000
したがって、技術的な側面から言えば、
組み込み作業はそんなに難しいものではありません。
160
00:20:52,000 --> 00:20:54,000
[質問者 00]: 素晴らしいですね。
161
00:20:54,000 --> 00:20:55,000
ありがとうございます。
162
00:20:55,000 --> 00:21:00,000
[質問者 00]: 他に質問は?
163
00:21:01,000 --> 00:21:07,000
[質問者 01]: 今回の成果は Stretch Alpha 7 に含まれるとのことでしたが、
164
00:21:07,000 --> 00:21:13,000
違います。Stretch Alpha 7 の後にコミットをプッシュしました。
165
00:21:13,000 --> 00:21:15,000
[質問者 01]: なるほど、
ということは成果が含まれるのはフリーズの後になる予定ですか?
166
00:21:15,000 --> 00:21:16,000
そうです。
167
00:21:16,000 --> 00:21:17,000
[質問者 01]: わかりました。
168
00:21:17,000 --> 00:21:25,000
[質問 01-00]: GNU/Screen 関連のコンポーネントをすべて追加することで、
イメージのサイズはどの程度増加しますか?
169
00:21:25,000 --> 00:21:29,000
[質問者 01]: ものすごくですか? ほんの少しですか? それともサイズは変わりませんか?
170
00:21:29,000 --> 00:21:41,000
そうですね、Debian インストーライメージのサイズはこれまでに比べてほんの少し増加するでしょう。
171
00:21:41,000 --> 00:21:49,000
例えば、armel プラットフォームの「QNAP」シリーズというものがあります。
172
00:21:49,000 --> 00:21:57,000
Debian インストーラは「QNAP」シリーズをサポートしています。
173
00:21:57,000 --> 00:22:00,000
しかしながら、「QNAP」シリーズにはサイズ制限があります。
174
00:22:00,000 --> 00:22:07,000
なぜなら、カーネルと初期 RAM ディスクをフラッシュメモリに収める必要があり、
175
00:22:07,000 --> 00:22:16,000
カーネル用のフラッシュメモリサイズがおよそ 2 MB で初期 RAM ディスク用のサイズが 4 MB だからです。
176
00:22:16,000 --> 00:21:21,000
したがって、フラッシュメモリのサイズは制限されています。
177
00:22:21,000 --> 00:22:29,000
対して、GNU/Screen の udeb パッケージのサイズはおよそ 500 KB です。
178
00:22:29,000 --> 00:22:38,000
したがって、「QNAP」向けのイメージに限って言えば、
今回の成果を含めることは不可能かもしれません。
179
00:22:38,000 --> 00:22:43,000
それ以外のイメージでは、問題ないと思います。
180
00:22:43,000 --> 00:22:48,000
考慮すべき大きなサイズ制限はありません。
181
00:22:57,000 --> 00:23:03,000
現在のところ、今回の成果は Debian インストーラの日次ビルドイメージに含まれます。
182
00:23:03,000 --> 00:23:08,000
このため、日次ビルドイメージを使えば今回の成果を試用可能です。
183
00:23:08,000 --> 00:23:22,000
URL は「https://d-i.debian.org/daily-images/」です。
184
00:23:22,000 --> 00:23:25,000
ここには多くのイメージがあります。
185
00:23:25,000 --> 00:23:41,000
なぜなら、ここには amd64 や GNU Hurd などのサポート済みアーキテクチャすべてに対するイメージがあるからです。
186
00:23:42,000 --> 00:23:49,000
したがって、適切なアーキテクチャとイメージを選ぶ必要があります。
187
00:23:54,000 --> 00:23:56,000
これで私の発表を終わります。ご清聴ありがとうございました。
188
00:23:56,000 --> 00:24:00,000
[拍手]