< Return to Video

GNUscreen_comes_to_Debian_Installer.webm

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

Japanese subtitles

Revisions Compare revisions