分123前回はLinuxの起動の仕組みをブートローダ段階,カーネル段階,/sbin/init段階の3つに分けて解説しました。その際にも簡単に触れましたが,最近のほとんどのディストリビューションでは,初期化用ramdiskを用いて起動に必要なモジュールドライバを組み込むようになっています。初期化用ramdiskは,1つの汎用的なカーネル設定であらゆる環境に対応できるようになる,ディストリビューターにとっては便利な仕組みですが,余計な仕組みが入っている分,カーネル再構築の敷居が高くなっていることも事実です。そこで,今回はこの初期化用ramdiskやその元になっているモジュールカーネルの考え方について解説すると共に,実際の初期化用ramdiskを調べてその中身を紹介しようと思います。モノリシックカーネルとマイクロカーネル最近では大型コンピュータから携帯機器までカバーしていますが,元々のLinuxはUNIXを参考にしながらPC互換機向けに0から開発されたカーネルです。Torvalds)さんが一人で書きあげました。その際に彼は,プログラミングやデバッグの容易さから,モノリシック(monolithic)カーネルという伝統的なデザインを採用しました。カーネルには各種ハードウェアを操作するデバイスドライバからファイルシステムやネットワークの操作,メモリやプロセスの管理,スケジューリングといったさまざまな機能が必要です。モノリシック(一枚岩)カーネルとは,これらすべての機能が1つの実行ファイルの中にまとめて組み込まれているタイプのカーネルのことです。UNIXのカーネルはモノリシックカーネルのデザインになっていましたが,OSの研究が進むにつれ,モノリシックカーネルには欠点が目立つようになってきました。モノリシックカーネルは多数の機能が1つの実行ファイルに詰め込まれているため,複雑で肥大化しがちな上,一部の機能に問題が生じても全体に影響が出ますし,新しいハードウェア用のデバイスドライバを追加するだけでも全体を再構築する必要がありました。それらの欠点を克服するために考案されたのがマイクロ(micro)カーネルというデザインです。マイクロカーネルでは,カーネルに必要なさまざまな機能をカーネル本体とは独立したアプリケーションとして実現し,カーネル本体にはそれら外部アプリケーション間の通信を管理する最小限の機能だけを残すことで,見通しがよく移植性や拡張性を高めることを目指しています。モノリシックカーネルとマイクロカーネルの違いモノリシックカーネルという名称は,従来のデザインの欠点を表現するためにマイクロカーネルと比較して名付けられたものだそうです。'80年代の半ばにマイクロカーネルの概念とそれを実装したMachと呼ばれるマイクロカーネルが公開されると,OS研究の中心はモノリシックカーネルからマイクロカーネルへと移り,OSF/1やNEXTSTEPなど新しく開発されたOSではマイクロカーネルのデザインが積極的に採用されるようになり,Linuxが公開されたころにはモノリシックカーネルのデザインは時代遅れと考えられていました。war)を闘わせたことは語り草になっています。モノリシックカーネルは時代遅れな分,必要な機能や処理の詳細が十分検討され,実現が容易になっていたことも忘れてはならないでしょう。GNUプロジェクトではHurdというマイクロカーネルのデザインを採用したシステムを開発していますが,HurdはLinuxと同じころに開発が始まったものの,完成は大幅に遅れ現在も正式版のリリースには至っていません。モジュールカーネルモノリシックカーネルとして生まれ,開発の容易さから多数の開発者を集めることで急速に成長したLinuxですが,リーナスさんを始めとする開発者たちもモノリシックカーネルの問題点は熟知していました。マイクロカーネルではカーネル外部のアプリケーション間の通信が多数発生するためにパフォーマンスが出にくいという問題点も明らかになってきました。そこでLinuxの開発者たちが採用したのは,両者の長所を組み合わせたモジュールカーネルというアプローチです。LinuxがターゲットとしているPC互換機の場合,利用可能な周辺機器は膨大な種類に及びます。これら周辺機器を操作するためのドライバをすべてカーネルの実行ファイルに組み込むことは現実的ではありません。言って,新しい周辺機器を追加する度に実行ファイルを作り直すのも面倒な作業です。そこでLinuxではこれら周辺機器用のドライバをモジュールとしてカーネル本体の実行ファイルとは独立に用意しておき,必要に応じてそれらをカーネル本体に動的に組み込むという方法を採用しました。モジュールカーネルの場合,マイクロカーネルのようにOSの本質的な機能を分割してカーネル外部へ出すのではなく,必要な機能を担うモジュールをプラグイン的にカーネル本体に組み込むため,モノリシックカーネルの特徴である効率性は維持しつつ,マイクロカーネルの持つ拡張性も手に入れた形になっています。当初,モジュール化に対応していたのは一部のデバイスドライバだけでしたが,次第にその範囲は広がり,最近のカーネルではネットワーク機能やファイルシステム,I/Oスケジューラといったカーネルの本質的な部分までモジュール化され,多くの機能を動的に追加したり削除したりすることが可能になっています。Linuxとりまとめ役。人類学的にハッカー文化を研究しようとしていたのが,いつの間にかミイラ取りがミイラになってOSSを仕事にするようになってしまいました。最近はスペシャリスト養成を目的とした専門職大学院で教壇に立ったりもしています。日頃の作業効率アップをお考えの方へ。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。