WEBVTT 00:00:02.000 --> 00:00:08.000 皆さんこんにちは。私の発表にお越しいただきありがとうございます。 00:00:08.000 --> 00:00:17.000 本発表では、Debian インストーラに対する GNU/Screen の組み込みに関してお話します。 00:00:19.000 --> 00:00:24.000 まずは組み込みのあらましについてお話しします。 00:00:24.000 --> 00:00:26.000 すなわち、Debian インストーラとはどんなものか、 00:00:26.000 --> 00:00:30.000 GNU/Screen とはどんなものか、 00:00:30.000 --> 00:00:35.000 GNU/Screen を Debian インストーラに組み込む必要性、 00:00:35.000 --> 00:00:40.000 GNU/Screen サポートをインストーラに追加する方法についてお話します。 00:00:42.000 --> 00:00:47.000 Debian インストーラとはどんなものでしょうか? 00:00:47.000 --> 00:00:51.000 ここにおられる多くの方が Debian インストーラをご存知のことと思います。 00:00:51.000 --> 00:00:55.000 Debian インストーラは単なるインストーラです。 00:00:55.000 --> 00:01:01.000 しかしながら実際のところ、 これは起動可能な Debian 環境であり、 00:01:01.000 --> 00:01:07.000 そのサイズが極力小さくなるように調整されています。 00:01:08.000 --> 00:01:15.000 すなわち、 インストーライメージに文書は含まれないということです。 00:01:15.000 --> 00:01:34.000 それ以外の普通の人にとって通常ならば利用価値の高い情報 (一般に「/usr/share/doc」へ配置される情報) も含まれません。 00:01:34.000 --> 00:01:37.000 しかしながらインストール時ならば、これらの情報は必要ありません。 00:01:37.000 --> 00:01:44.000 そうすることで、 インストーラのサイズを小さくすることが可能です。 00:01:44.000 --> 00:01:50.000 かつて、インストーラは 1 枚か 2 枚のフロッピー内に収まっていました。 00:01:50.000 --> 00:01:53.000 すなわち、インストーラサイズはとても小さかったということです。 00:01:53.000 --> 00:01:55.000 今では、そうすることは不可能です。 00:01:55.000 --> 00:02:04.000 なぜなら、カーネルサイズだけでフロッピーのサイズを超えてしまうからです。 00:02:04.000 --> 00:02:14.000 また、インストーラはパーティション分割ソフトウェアを備えています。 00:02:14.000 --> 00:02:24.000 このおかげで、パーティションを分割したり、 インストーラの中に新しいディスクイメージ作成したりできます。 00:02:24.000 --> 00:02:36.000 その後、「debootstrap」が Debian 環境をインストールします。 00:02:36.000 --> 00:02:41.000 最後に、インストーラがブートローダをインストールします。 00:02:41.000 --> 00:02:53.000 ブートローダには数多くの種類が用意されています。 その一例として PCARM64 向けの GRUB があります。 00:02:53.000 --> 00:03:07.000 また、armelarmhf などの ARM プラットフォーム向けの ブートローダには flash-kernel があります。 00:03:12.000 --> 00:03:15.000 GNU/Screen とは何でしょうか? 00:03:15.000 --> 00:03:17.000 第一に、それはターミナルマルチプレクサです。 00:03:17.000 --> 00:03:28.000 すなわち、これを使うことで物理的な端末の中に 複数の仮想的な端末を持つことが可能になります。 00:03:28.000 --> 00:03:42.000 さらに、ショートカットを使って仮想的な端末を切り替えることも可能です。 00:03:42.000 --> 00:03:47.000 GNU/Screen の場合、ショートカットは「Ctrl-A + 1」、2、3、4 です。 00:03:47.000 --> 00:04:00.000 Tmux (GNU/Screen の代替品) の場合、ショートカットは「Ctrl-B + 1」、2、3、4 です。 00:04:00.000 --> 00:04:14.000 ここまでの説明から、皆様は Debian インストーラ内で GNU/Screen を必要とする理由が気になっているのではないでしょうか。 00:04:14.000 --> 00:04:19.000 どんなご利益があるのでしょうか? 00:04:19.000 --> 00:04:22.000 それでは皆様に普通のインストーラをご覧に入れましょう。 00:04:22.000 --> 00:04:28.000 これが普通のインストーラです。 00:04:28.000 --> 00:04:30.000 ユーザインターフェイスがあります。 00:04:30.000 --> 00:04:42.000 もしパーティション分割や新しいディスクイメージの作成時に問題が生じたなら、 ログを確認したいと思うのではないでしょうか。 00:04:42.000 --> 00:04:49.000 そんな時は、「Alt-F4」キーを押してログコンソールに切り替えることが可能です。 00:04:49.000 --> 00:04:55.000 これが普通の PC の場合です。 00:04:55.000 --> 00:05:03.000 元の画面に戻りたければ、「Alt-F1」キーを押します。 00:05:03.000 --> 00:05:06.000 それでは実演をご覧ください。 00:05:53.000 --> 00:05:56.000 これが普通の Debian インストーラ画面です。 00:05:56.000 --> 00:06:00.000 ここで「Alt-F2」キーを押します。 00:06:00.000 --> 00:06:06.000 するとコマンドラインが表示されます。 00:06:06.000 --> 00:06:09.000 ここでは多くの情報を見ることが可能です。 00:06:09.000 --> 00:06:17.000 「Alt-F4」キーを押せば、ログを見ることも可能です。 00:06:19.000 --> 00:06:22.000 元の画面に戻りたければ、「Alt-F1」キーを押します。 00:06:22.000 --> 00:06:26.000 これで元の画面に戻りました。 00:06:26.000 --> 00:06:28.000 これが普通の PC の場合です。 00:06:28.000 --> 00:06:36.000 しかしながら組込み機器の場合、このような便利な方法はありません。 00:06:55.000 --> 00:06:58.720 armelarmhf などの組込み機器では、 00:06:58.720 --> 00:07:09.000 シリアルコンソールまたはネットワークを介した SSH などを使ってインストールするのが普通です。 00:07:09.000 --> 00:07:14.000 したがって、用意される物理的な画面は一つだけです。 00:07:14.000 --> 00:07:17.150 他に画面はありません。 00:07:17.150 --> 00:07:19.000 実は、方法が全く無いわけではありません。 00:07:19.000 --> 00:07:21.000 前のページを見ることが可能です。 00:07:21.000 --> 00:07:29.000 そのための「戻る」オプションがここにあります。 00:07:29.000 --> 00:07:34.000 戻って、このメニューを表示することが可能です。 00:07:34.000 --> 00:07:42.000 これは上級者向けのメニューであり、 組込み機器でもここからシェルを起動することが可能です。 00:07:42.000 --> 00:07:46.000 シェルが起動されれば、ログを確認することが可能です。 00:07:46.000 --> 00:07:52.000 ログは「/var/log/syslog」に保存されています。 00:07:52.000 --> 00:07:54.000 ログを開いて、内容を確認することが可能です。 00:07:54.000 --> 00:07:58.000 しかしながら、ログを確認するときは、 00:07:58.000 --> 00:08:03.000 毎回戻ってシェルを起動しなければいけません。 00:08:03.000 --> 00:08:05.000 好きなときにログを確認することも不可能です。 00:08:05.000 --> 00:08:10.000 なぜなら、インストーラが作業している間 (パッケージのインストール中など) はメニューを表示できないからです。 00:08:10.000 --> 00:08:16.000 普通の PC ではいつでもできることが組込み機器ではできないのです。 00:08:16.000 --> 00:08:18.000 そこで私は考えました。 00:08:18.000 --> 00:08:24.000 もし GNU/Screen を Debian インストーラに組み込んだら、 00:08:24.000 --> 00:08:36.000 armel などの組込み機器に対するインストールを普通の PC と同じように簡単で便利なものにできるのではないでしょうか。 00:08:42.000 --> 00:08:47.000 このような経緯で、私は GNU/Screen の組み込み作業を開始しました。 00:08:50.000 --> 00:08:54.000 では、どのように組み込み作業を行えばよいのでしょうか? 00:08:54.000 --> 00:08:58.000 しばらく検索した後、 00:08:58.000 --> 00:09:07.000 私は GNU/Screen バイナリパッケージとそれが依存するパッケージ (ライブラリなど) が udeb をサポートする必要があるという点に気が付きました。 00:09:07.000 --> 00:09:18.000 udeb は Debian インストーラ用の特別なフォーマットで、 インストーライメージのサイズを小さくする目的で使われます。 00:09:18.000 --> 00:09:22.000 すなわち、例えば文書は udeb 内から削除されます。 00:09:22.000 --> 00:09:32.000 したがって、第一に、GNU/Screen とそれが依存するライブラリに udeb を作らせる必要があります。 00:09:33.000 --> 00:09:40.000 第二に、これらの udeb を Debian インストーライメージに追加する必要があります。 00:09:42.000 --> 00:09:52.000 第三に、Debian インストーラ内で GNU/Screen を起動させるためのスクリプトを書く必要があります。 00:09:55.000 --> 00:10:00.000 udeb のサポートから話を始めましょう。 00:10:05.000 --> 00:10:13.000 通常、udeb は「debian/control」で管理されます。 00:10:15.000 --> 00:10:19.000 udeb はソースパッケージに対するバイナリパッケージのようなものです。 00:10:19.000 --> 00:10:28.000 udeb (新しいバイナリ) をサポートするにはセクションを追加します。 00:10:28.000 --> 00:10:38.000 その後、新しい「-udeb.install」ファイルを作成します。 00:10:38.000 --> 00:10:49.000 これの内容は本来の「.install」ファイルとほぼ同一ですが、 不要なファイルに関するエントリを削除します。 00:10:49.000 --> 00:10:53.000 この後、パッチを作成します。 00:10:53.000 --> 00:11:05.000 そして、パッケージメンテナにパッチを送り、 パッチの内容を適用してもらいます。 00:11:05.000 --> 00:11:12.000 新しい udeb パッケージが追加されました。 00:11:12.000 --> 00:11:15.000 しかしながら、パッケージが DM によってメンテナンスされている場合、 00:11:15.000 --> 00:11:28.000 残念なことに、DM はパッケージをアップロードするために、 パッケージをスポンサーしてくれる DD を探す必要があります。 00:11:28.000 --> 00:11:35.000 同様の理由により、新しい udeb パッケージは NEW キューに入ります。 00:11:35.000 --> 00:11:40.000 さらに、ftp-master がアップロードを認可するまで待つ必要もあります。 00:11:40.000 --> 00:11:49.000 したがって、アップロードされるまでに通常のパッケージよりも時間がかかります。 00:11:52.000 --> 00:12:01.000 私は GNU/Screen とそれが依存するパッケージに udeb サポートを追加し、 00:12:01.000 --> 00:12:10.000 4 つのバグを報告し、それぞれにパッチを添付しました。 00:12:28.000 --> 00:12:34.000 これで、udeb パッケージの準備ができました。 00:12:34.000 --> 00:12:40.000 しかしながら、Debian インストーライメージにこれを追加する作業が残っています。 00:12:40.000 --> 00:12:54.000 そこで、udeb サポートを追加するために、 「debian-installer.git」リポジトリに対してパッチを当てました。 00:12:56.000 --> 00:13:08.000 最後に、Debian インストーラの起動後に GNU/Screen コマンドを起動する必要があります。 00:13:08.000 --> 00:13:22.000 さらに、PC 上の Debian インストーラ環境をエミューレートするための GNU/Screen の設定も必要です。 00:13:22.000 --> 00:13:29.000 Debian インストーラには 4 つの仮想画面が用意されています。 00:13:29.000 --> 00:13:37.000 1 つ目が主画面、2 つ目がコマンドラインコンソール、最後がログコンソールです。 00:13:37.000 --> 00:13:42.000 この状態をエミュレートしたいわけです。 00:13:49.000 --> 00:13:54.000 それでは実演をご覧ください。 00:14:01.000 --> 00:14:06.000 今回は、Debian インストーラを仮想マシン上で実行しています。 00:14:29.000 --> 00:14:34.000 こちらが GNU/Screen をサポートする Debian インストーラです。 00:14:34.000 --> 00:14:40.000 したがって、1 番、2 番、3 番、4 番、という 4 つの仮想端末が用意されています。 00:14:40.000 --> 00:14:56.000 さらに、「Ctrl-A + 2」、「Ctrl-A + 3」、「Ctrl-A + 4」などの ショートカットを使って端末を切り替えることが可能です。 00:14:56.000 --> 00:15:01.000 こちらがログです。 00:15:06.000 --> 00:15:12.000 PC 側の立場からすると、ご覧のとおり、 これはそれほど便利というわけではないように見えます。 00:15:12.000 --> 00:15:17.000 なぜなら、PC では「Alt-F1」、「Alt-F2」、「Alt-F3」 を使って画面を切り替えることが可能だからです。 00:15:17.000 --> 00:15:23.000 しかしながら組込み機器側の立場からすると、 これはかなり便利です。 00:15:35.000 --> 00:15:40.000 進捗をご報告しましょう。 00:15:40.000 --> 00:15:47.000 実際には、ここに挙げた事柄の処理はすでに完了しています。 00:15:47.000 --> 00:15:53.000 例えば、最初の 2 つはライブラリに関するものです。 00:15:53.000 --> 00:15:56.000 実際には、これらの処理は必要ありませんでした。 00:15:56.000 --> 00:16:05.000 なぜなら、Laurent さんから教わったのですが、 00:16:05.000 --> 00:16:09.000 GNU/Screen を 2 回コンパイルするように設定できたからです。 00:16:09.000 --> 00:16:24.000 すなわち、1 回目に通常の GNU/Screen を、2 回目に auditpam ライブラリを使わない GNU/Screen をコンパイルするということです。 00:16:24.000 --> 00:16:32.000 この方針を採ることにより、GNU/Screen の udeb バイナリのサイズを小さくすることが可能になりました。 00:16:32.000 --> 00:16:38.000 実のところ、本当にサポートする必要があるライブラリは ncurses です。 00:16:38.000 --> 00:16:49.000 ncurses は GNU/Screen のバイナリパッケージと併せて 2 週間前に ftp-master へアップロードされました。 00:16:49.000 --> 00:17:06.000 Debian インストーライメージについて言えば、今週 Debian インストーラ Stretch Alpha 7 がリリースされた後、対応するコミットをプッシュしました。 00:17:06.000 --> 00:17:10.000 Alpha 7 のリリース後にコミットをプッシュしたので、 00:17:10.000 --> 00:17:21.000 Debian インストーラに組み込まれた GNU/Screen を試すにはデイリーイメージを使ってください。 00:17:29.000 --> 00:17:32.000 それでは、恩恵を受けるデバイスについて考えてみましょう。 00:17:32.000 --> 00:17:43.000 恩恵を受けるデバイスとして、シリアルコンソールや SSH ネットワークコンソールを使ってインストールされた通常の ARM ボードや、 00:17:43.000 --> 00:17:56.000 SPARC64 および IBM s390/s390x などの巨大なマシンが挙げられます。 00:17:56.000 --> 00:18:01.000 PC にも恩恵を受けるものがあるでしょう。 00:18:01.000 --> 00:18:04.000 なぜなら、一部の PC はヘッドレスだからです。 00:18:04.000 --> 00:18:13.000 この種のどちらかと言えば PC サーバのような PC は HDMI や VGA ポートを装備していません。 00:18:17.000 --> 00:18:26.000 初期の私の提案に対してコメントをくださった様々な方々と 00:18:26.000 --> 00:18:35.000 udeb パッケージのアップロードに関する手助けに感謝申し上げます。 00:18:35.000 --> 00:18:37.000 本当にありがとうございました。 00:18:37.000 --> 00:18:42.000 [拍手] 00:18:42.000 --> 00:19:02.000 何かご質問があればお願いします。 00:19:02.000 --> 00:19:04.000 [座長]: ええ、どうぞ。 00:19:04.000 --> 00:19:13.000 [質問者 00]: まず初めに、私は SPARC 組み込みシステムをいつも使っています。 00:19:13.000 --> 00:19:15.000 [質問者 00]: そんなわけで、この組み込み作業が大いに役立つことは間違いありません。 00:19:15.000 --> 00:19:19.000 [質問者 00]: 本当に有難うございます。 00:19:19.000 --> 00:19:21.000 [質問者 00]: あなたの作業に深く感謝しております。 00:19:25.000 --> 00:19:32.000 [質問 00-00]: 作業を遂行する上で最も難しかったことは何ですか? 00:19:32.000 --> 00:19:39.000 [質問 00-01]: また、「簡単じゃないか」と最も驚いたことは何ですか? 00:19:39.000 --> 00:19:44.000 実は、最も難しかったことはパッケージをアップロードすることです。 00:19:44.000 --> 00:19:50.000 なぜなら、あるパッケージは DM によってメンテナンスされていたからです。 00:19:50.000 --> 00:19:58.000 通常、DM は DD のスポンサーシップがなくても 担当のパッケージをアップロードできます。 00:19:58.000 --> 00:20:01.000 しかし、udeb は新しいパッケージとみなされるため、 00:20:01.000 --> 00:20:06.000 スポンサーとなる DD を見つける必要がありました。 00:20:06.000 --> 00:20:19.000 DD を見つけてアップロードしてもらうのに、ほぼ 2 ヶ月かかりました。 00:20:21.000 --> 00:20:24.000 [質問者 00]: あと、難しいと思っていたにも関わらず、 00:20:24.000 --> 00:20:26.000 [質問者 00]: 簡単だったことは何ですか? 00:20:26.000 --> 00:20:29.000 えーっと 00:20:29.000 --> 00:20:30.000 [質問者 00]: 難しいことばかりでしたか? 00:20:30.000 --> 00:20:31.000 [笑い] 00:20:31.000 --> 00:20:34.000 技術的な側面から言えば、組み込み作業は骨の折れる作業ではありませんでした。 00:20:34.000 --> 00:20:37.000 なぜなら、すべてのものは用意されていたからです。 00:20:37.000 --> 00:20:42.000 私は単に udeb サポートを追加するための簡単なパッチを書いて、 00:20:42.000 --> 00:20:48.000 Debian インストーラの中で GNU/Screen を起動するスクリプトを書いただけです。 00:20:48.000 --> 00:20:52.000 したがって、技術的な側面から言えば、 組み込み作業はそんなに難しいものではありません。 00:20:52.000 --> 00:20:54.000 [質問者 00]: 素晴らしいですね。 00:20:54.000 --> 00:20:55.000 ありがとうございます。 00:20:55.000 --> 00:21:00.000 [質問者 00]: 他に質問は? 00:21:01.000 --> 00:21:07.000 [質問者 01]: 今回の成果は Stretch Alpha 7 に含まれるとのことでしたが、 00:21:07.000 --> 00:21:13.000 違います。Stretch Alpha 7 の後にコミットをプッシュしました。 00:21:13.000 --> 00:21:15.000 [質問者 01]: なるほど、 ということは成果が含まれるのはフリーズの後になる予定ですか? 00:21:15.000 --> 00:21:16.000 そうです。 00:21:16.000 --> 00:21:17.000 [質問者 01]: わかりました。 00:21:17.000 --> 00:21:25.000 [質問 01-00]: GNU/Screen 関連のコンポーネントをすべて追加することで、 イメージのサイズはどの程度増加しますか? 00:21:25.000 --> 00:21:29.000 [質問者 01]: ものすごくですか? ほんの少しですか? それともサイズは変わりませんか? 00:21:29.000 --> 00:21:41.000 そうですね、Debian インストーライメージのサイズはこれまでに比べてほんの少し増加するでしょう。 00:21:41.000 --> 00:21:49.000 例えば、armel プラットフォームの「QNAP」シリーズというものがあります。 00:21:49.000 --> 00:21:57.000 Debian インストーラは「QNAP」シリーズをサポートしています。 00:21:57.000 --> 00:22:00.000 しかしながら、「QNAP」シリーズにはサイズ制限があります。 00:22:00.000 --> 00:22:07.000 なぜなら、カーネルと初期 RAM ディスクをフラッシュメモリに収める必要があり、 00:22:07.000 --> 00:22:16.000 カーネル用のフラッシュメモリサイズがおよそ 2 MB で初期 RAM ディスク用のサイズが 4 MB だからです。 00:22:18.390 --> 00:22:21.100 したがって、フラッシュメモリのサイズは制限されています。 00:22:21.100 --> 00:22:29.000 対して、GNU/Screen の udeb パッケージのサイズはおよそ 500 KB です。 00:22:29.000 --> 00:22:38.000 したがって、「QNAP」向けのイメージに限って言えば、 今回の成果を含めることは不可能かもしれません。 00:22:38.000 --> 00:22:43.000 それ以外のイメージでは、問題ないと思います。 00:22:43.000 --> 00:22:48.000 考慮すべき大きなサイズ制限はありません。 00:22:57.000 --> 00:23:03.000 現在のところ、今回の成果は Debian インストーラの日次ビルドイメージに含まれます。 00:23:03.000 --> 00:23:08.000 このため、日次ビルドイメージを使えば今回の成果を試用可能です。 00:23:08.000 --> 00:23:22.000 URL は「https://d-i.debian.org/daily-images/」です。 00:23:22.000 --> 00:23:25.000 ここには多くのイメージがあります。 00:23:25.000 --> 00:23:41.000 なぜなら、ここには amd64 や GNU Hurd などのサポート済みアーキテクチャすべてに対するイメージがあるからです。 00:23:42.000 --> 00:23:49.000 したがって、適切なアーキテクチャとイメージを選ぶ必要があります。 00:23:54.000 --> 00:23:56.000 これで私の発表を終わります。ご清聴ありがとうございました。 00:23:56.000 --> 00:24:00.000 [拍手]