\r\n\r\n
コンピュータの電源を入れると、「ブート」プロセスを経る。「ブートストラップ」という言葉が語源である。ここでは、Windows PC、Mac、Linuxのいずれのシステムでも、バックグラウンドで何が起こっているかを説明します。
電源ボタンを押すと、マザーボード、CPU、ハードディスク、ソリッドステートドライブ、グラフィックプロセッサなど、コンピュータに搭載されているすべてのコンポーネントに電源が供給されます。
電源を供給するハードウェアは「パワーサプライ」と呼ばれる。一般的なデスクトップパソコンでは、ケースの隅にある箱のようなもの(上の写真の黄色い部分)で、AC電源ケーブルが接続されているところです。
電源が入ったので、CPUは自動的に初期化され、通常はマザーボードのチップに格納されている小さなプログラムを探します。
かつて、パソコンにはBIOS(Basic Input/Output System)と呼ばれるものが搭載されていた。最近のPCでは、CPUにUEFI(Unified Extensible Firmware Interface)ファームウェアが搭載されています。昔のBIOSに代わる現代的なものです。しかし、混乱に拍車をかけているのは、一部のPC**ベンダーがいまだに自社のUEFIソフトウェアを「BIOS」と呼んでいることです。
関連:UEFIとは何ですか、BIOSとどう違うのですか?
BIOSまたはUEFIファームウェアは、従来のCMOSバッテリーによってバックアップされたメモリにあるマザーボード上の特別な場所から構成設定をロードします。BIOSやUEFIのセットアップ画面で低レベルの設定を変更した場合、そのカスタム設定が保存される場所です。
CPUは、UEFIまたはBIOSを実行して、CPU自身を含むシステムのハードウェアをテストし、初期化します。例えば、コンピュータにRAMがない場合、ビープ音とエラー表示でブートプロセスを停止します。これはブートセルフテスト処理と呼ばれるものです。
この間、画面上にPC**ベンダーのロゴが表示されることがありますが、ここからボタンを押してBIOSやUEFIの設定画面にアクセスすることができる場合が多いようです。しかし、最近のPCの多くは、わざわざロゴを表示しなくても、WindowsのブートオプションメニューからUEFIセットアップ画面にアクセスすれば、このプロセスをあっという間に終えてしまうのです。
UEFIはハードウェアを初期化するだけでなく、実際には非常に小さなオペレーティングシステムである。例えば、IntelのCPUはIntel Management Engineを搭載しています。ビジネスPCのリモート管理を可能にするインテルのアクティブ・マネジメント・テクノロジーを搭載するなど、さまざまな機能を提供します。
ハードウェアのテストと初期化が終わると、UEFIまたはBIOSはPCの起動をオペレーティングシステムのブートローダーに引き継ぎます。
UEFIまたはBIOSは、オペレーティングシステムを起動するための「ブートデバイス」を探します。通常、コンピュータのハードディスクやソリッドステートドライブですが、CD、DVD、USBドライブ、ネットワークの場所である場合もあります。ブートデバイスは、UEFIまたはBIOSの設定画面内で設定することができます。複数のブートデバイスがある場合、UEFI または BIOS はリストにある順番でブートプロセスをそれらに渡そうとします。そのため、例えば光学ドライブに起動可能なDVDがある場合、システムはハードディスクからの起動を試みる前に、まずそのDVDからの起動を試みるかもしれません。
従来、BIOSはディスクの先頭にある特別なブートセクターであるMBR(Master Boot Record)を見ていました。MBRには「ブートローダ」と呼ばれる、残りのOSをロードするコードが含まれています。BIOSはブートローダを実行し、そこから実際のOSを起動するようになりますWindowsまたはLinux。
UEFIを搭載したコンピュータでも、この昔ながらのMBRブート方式でOSを起動することはできますが、通常は代わりにEFI実行ファイルというものを使用します。これらは、ディスクの先頭に格納する必要はない。その代わり、"EFIシステムパーティション "と呼ばれるものに保存されます。
いずれにせよ、原理は同じです。BIOSまたはUEFIはシステム上のストレージデバイスをチェックし、MBRまたはEFIシステムパーティションでアプレットを探し、それを実行します。起動可能なブートデバイスがない場合、ブートプロセスは失敗し、ディスプレイにこのようなエラーメッセージが表示されます。
最近のPCでは、UEFIファームウェアは通常「セキュアブート」として設定されています。これにより、起動元のOSが改ざんされていないこと、低レベルのマルウェアがロードされていないことを確認します。セキュアブートが有効な場合、UEFI はブートローダが適切に署名されているかどうかをブートする前に確認します。
ブートローダは、オペレーティングシステムの残りの部分をブートストラップするという大きな仕事をする小さなプログラムです。Windows は Windows Boot Manager (Bootmgr.exe) というブートローダを使い、ほとんどの Linux システムは GRUB を使い、Mac は boot.efi を使っています。
例えば、ブートローダーに問題がある場合、ブートローダーのエラーメッセージが表示され、そのファイルがディスク上で破損していると、ブートプロセスが停止します。
ブートローダは小さなプログラムに過ぎず、ブートプロセスだけを処理するわけではありません。Windowsでは、WindowsブートマネージャーがWindows OSローダーを見つけて起動し、カーネル(Windows OSの中核部分)を動かすために必要な基本的なハードウェアドライバーをロードし、カーネルを起動します。その後、カーネルはシステムレジストリをメモリにロードし、「BOOTu START」とマークされたその他のハードウェアドライバをブート時にロードする必要があります。その後、Windowsカーネルはセッションマネージャプロセス(Smss.exeファイル)を起動し、システムセッションを開始し、他のドライバをロードします。プロセスが続行され、Windowsはバックグラウンドサービスを読み込むと同時に、ログインできるようにするウェルカム画面を表示します。
Linuxでは、GRUBブートローダがLinuxカーネルをロードします。initは、ブートサービスやログインプロンプトに至るまでの他のユーザプロセスを処理します。
この複雑なプロセスは、操作を正しい順番で行うことで、すべてを正しく読み込むための一つの方法なのです。
ちなみに、いわゆる「ブートローダー」は、実際にはシステム起動時ではなく、ユーザーアカウントにログインしたときに読み込まれます。ただし、一部のバックグラウンドサービス(Windowsの場合)やデーモン(LinuxやmacOSの場合)は、システム起動時にバックグラウンドで起動されます。
シャットダウン処理もかなり複雑で、ここではWindows PCをシャットダウンまたはログオフしたときの処理を説明します。
画像出典:Suwanwanle/Shutterstock.comサイト、DR image/Shutterstock.comサイト。