セキュリティ&プログラミングキャンプ 2010 Linux組レポート
そこはコンピュータ版「精神と時の部屋」
富士通株式会社 Linux開発統括部
武内 覚
2010/9/14
■kprobeのバグ修正
熊野くんはkprobeという機能のバグ修正に取り組みました。kprobeはカーネルに手を入れずにユーザーが定義したトレース情報を採取できます。1つの関数に複数のトレースを仕込めるのですが、複数仕掛けた場合に、関数の戻り値情報が変な値になるというバグがあり、彼はそれを修正してLKMLに投稿しました。これも次版のLinuxカーネルにマージの見込みです。
彼は早々に1つ目の課題を終わらせてしまって時間が余ったので、2つ目の課題にも取り組みました。セキュリティ向上のために、ブート処理の途中で、制限時間内に特定のキーシーケンス(具体的にいうと、某有名シューティングゲームでポーズ中に入力すると最強装備にパワーアップするアレ)を入力しないとカーネルパニックするという画期的なシステムです。将来はほかの著名キーシーケンスに対応したり、入力が成功したときに音が出るようにしたりと、あさっての方向に進化する予定だそうです。
http://lkml.org/lkml/2010/8/15/22 |
■モールス信号でコンソール出力
宮岡くんはシステムのアクセシビリティ向上のため、コンソール出力をモールス信号で出すという課題に取り組みました。通常のコンソールドライバ(pty/tty)は規模が大き過ぎるため、時間的な制約を考慮してLinux console driverとして実装しました。その結果、正式なモールス信号を出すまでは至りませんでしたが、カーネルが出力するすべてのメッセージについて、各文字のASCIIコードに対応する周波数のビープ音が出せるようになりました。音が出ているはずなのに出ないなど、最後まで設定に非常に苦労したようです。
余談ですが、完成するまでネタバレをしないようにと山幡講師と2人でイヤホンを付けて黙々とハックするさまは、怪しさ満開でした。
イヤホンを付けた怪しい宮岡くん(右)と山幡講師 |
■psコマンドの高速化
鈴尾くんと田中君はpsコマンドの高速化に取り組みました。psに-uオプションを付けると、特定のユーザーが動かしているプロセスの情報のみ表示しますが、実行プロセス数が多い大規模システムで、ps -uが遅いことが現在大きな問題になっています。その原因は、プロセスに関する情報を保持している/proc/以下のファイルを見にいく処理に無駄が多いことです。この問題に対して、田中くんはpsコマンドの観点で、そして鈴尾くんはカーネルの観点でアプローチしました。
現在のps -uは、指定したユーザーに関係ないプロセスに関する情報も収集しているため、必要以上に動きが遅くなっています。田中くんはこの無駄な処理を削除しました。この結果、ps -uをおよそ10倍高速化できました。
鈴尾くんはioctlを使って、/proc/を読んだときに特定のユーザーが実行したプロセスに関するファイルのみをフィルタリングして列挙するという修正をしました。この結果、ps -uを14倍程度高速化できました。2人とも、修正すべき個所が少し残っていた段階で時間切れになったために開発コミュニティへの投稿まではできませんでしたが、今後、彼らのやる気次第で十分それは可能だといえるでしょう。
■カーネルビルドの時間予測
池田くんはカーネルビルドの時間予測に取り組みました。これに取り組むきっかけは、キャンプの事前課題で彼が非常に低速なマシンでカーネルビルドをして、ビルドに5時間もかかったことです。
なぜこんなに時間がかかるかというと、現在のLinux Kernelのソースコードは全部で1000万行を超えていて、設定によっては非常に多くのソースコードがコンパイル対象になるからです。それに加えてマシンスペックが低ければ、上記のようにビルドに大量の時間がかかってしまいます。さらに、現状では、ビルド中にどこまでビルドが進んでいるかを確認する方法がないのも問題です。
ベースとなるアイデアは単純で、ビルド対象のソースコードの行数をすべて数えて、それを基に所要時間を見積もるというものです。設定ファイルを変更するとコンパイル対象ソース行数をどれだけ削れたか、つまりどれだけカーネルを軽量化できたかの指標に使えるので、単に時間予測だけではなく、いろいろと便利な使い道がありそうです。しかしカーネルのビルドシステムが非常に複雑だったことより、キャンプ中は完成に至りませんでした。講師陣としてはどんな結果になるか興味があるので、ぜひ完成させてLKMLに投稿してもらいたいです。
「成果発表」で締めくくった5日目(最終日)
5日目の最終日はキャンプの集大成、成果発表です。前半はプログラミングコースの発表でコース内のキャンプ生全員が発表し、後半はそのうち各組の代表者が全体発表をするという構成でした。時間の都合で残念ながらLinux組の一部キャンプ生が発表できませんでしたが、代表者がほかの人の内容も一部プレゼンするなどのフォローをしました。出会ってからたった5日間しかたっていないのに、チームワークは抜群のようです。ここではLinux組の発表のうち、一部をご紹介します。
矢倉くんはカーネルビルドシステムの改善、およびカーネルモードbrainf*ckについてプレゼンしました。後者については、言語名の肝心なところを通常伏せ字にすることが多いのですが、まだ13歳の彼が普通に*の部分を発音して「f*ck」「f*ck」と連呼しているさまは圧巻でした。熊野くんはログイン前にキーシーケンスを入力するデモをしましたが、見事失敗してカーネルパニックが起きて、会場を爆笑の渦に巻き込んでくれました。失敗したときの「あ!」という彼の魂の声はまだ耳に残っています。
全体発表のLinux組代表は中谷くんでした。彼はシュレッダー機能とはどのようなものであるかを軽妙な語り口でプレゼンし、最後には自らのプレゼン資料をシュレッダーにかけて、すべて恥ずかしいポエムに変換するといううまいオチを付けてくれました。また、彼は宮岡くんのネタについても少しだけ紹介してくれました。USBメモリをマシンに挿した瞬間に、宮岡くん作曲の怪しいビープ音が数分間鳴り続けるというシュールな光景はしばらく忘れられそうにありません。音が鳴り続ける横で中谷くんが平然とプレゼンを続けていたのがなおポイント高しです。
超恥ずかしいポエム。某講師が酔った勢いで作ったとのうわさも |
閉講式後は、キャンプのオフィシャルではありませんが、講師陣が参加者のためにかき集めてきた書籍や非売品グッズの配布イベントがありました。おみやげ置き場はさながらバーゲン会場のようで、みんなで思い思いのものを仲良く奪い合い、もとい分け合っていました。協力者の皆様に感謝です。
その後キャンプ生が、手に入れた本に筆者である講師にサインをもらうという、本イベントならではの光景が繰り広げられました。彼らにとってそれは、アイドル候補生があこがれの芸能人に会えたようなものなのでしょう。これはやる気が上がること請け合いです。ただ、一見普通のおっさんたち(失礼!)が小難しそうな本にサインして、それを若者がうれしそうに受け取るという絵は、冷静に見るとかなり面白かったです。
大きく羽ばたく第一歩に
とにかく、あっという間に過ぎた5日間でした。キャンプ生たちにとってはもっとそうだったのではないでしょうか。うわさには聞いていましたが、これほど楽しい時間を過ごせるとは思っていませんでした。
初日から最終日まで、そして朝から晩まで、キャンプ生たちのやる気がみなぎっていたのが印象的です。キャンプ後のブログやTwitterなどの書き込みを見ても、まだまだ熱気冷めやらぬという様子で、閉講後日にちが経過している現在でもそれは変わりません。彼らの楽しそうな姿、そして素晴らしい成果を見て、本イベントには非常に大きな意義があったとあらためて確信しました。
最後はキャンプ生が全員そろって集合写真 |
最後に少しだけいわせてもらうと、本イベントは天才的な学生を連れてきてお披露目するためのものでは決してありません。コンピュータが好きということ以外は特に変わったところのない学生を集めて、技術的な成長はもちろん、一線級のプロに触れて将来像を明確にしてもらうこと、そして何より、同じ価値観を持つ人々と寝食を共にしてキャンプ生同士のネットワークを作ってもらうことが目的です。実際Linux組のキャンプ生たちも、約1カ月に渡る事前課題やキャンプ本番で成長した結果、上記のような成果を挙げることができたのです。
この記事に興味を持った学生の皆さんには、ぜひとも来年は本イベントに応募してもらいたいと思います。皆さんとお会いできることを楽しみにしています。
関連記事: | |
今年もアツかった! セキュリティ&プログラミングキャンプ開催(@ITNews) | |
「作ることは尊い」のである! セプキャン2010レポート(@IT自分戦略研究所) |
3/3 |
|
||||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム 仮想化技術関連記事 |
連載:実践! Xenで実現するサーバ統合 有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します |
|
特集:サーバの仮想化技術とビジネス展開の可能性 jailからUML/VMwareまで 1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった |
|
特集:仮想化技術のアプローチと実装 VMwareから要注目技術Xenまで 1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう |
|
特集:仮想OS「User Mode Linux」活用法 技術解説からカーネルカスタマイズまで Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
特集:仮想化技術の大本命「Xen」を使ってみよう インストール & Debian環境構築編 高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう |
|
特集:仮想化技術の大本命「Xen」を使ってみよう Xen対応カスタムカーネル構築編 Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる |
|
特集:IPv6、UML、セキュリティ機能の統合 全貌を現したLinuxカーネル2.6[第4章] 今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう |
|
Linux Squareプロダクトレビュー VMware Workstation 4 PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう |
|
古くて新しい「サーバ仮想化技術」の行方 サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する |
|
Linux Squareフォーラム全記事インデックス |
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|