インストラクター：このレッスンでは､
BIOSやUEFIで設定するブートオプションについて説明します｡
BIOS（基本入出力システム）とは､ パーソナル・コンピューターのマイクロプロセッサーが､
電源を入れた後にコンピューター・システムを起動させ､
起動させるために使用するプログラムのことである｡
このBIOSは､ コンピュータのオペレーティング・システムと､
ハードディスク・ドライブやソリッド・ステート・ドライブなどのストレージ・デバイス､
ビデオ・アダプター､ キーボード､ プリンターなどの接続デバイスとの間のデータの流れも管理する｡
これは､ ファームウェアやチップ上のソフトウェアの最も一般的な例であり､
マシンの電源を入れるたびにコンピュータによって実行される最初のソフトウェアである｡
BIOSには､ プロセッサー､
ビデオカード､ ディスクドライブ､ アダプターをテストして初期化するパワーオンセルフテストの実行や､
システムのハードウェアの設定､ システムの初回電源オン時に実行する適切なブート順序の設定など､ いくつかの役割があります｡
BIOSはROMに格納されており､ ROMは読み出し専用メモリである｡
これは､ 実際にはマザーボードに組み込まれているチップの一種ですが､
フラッシングと呼ばれるプロセスによってアップグレードすることができます｡
BIOSはこのチップ内部のプログラムでもあり､ このプログラムによってユーザーは設定を変更することができ､
その設定はCMOSと呼ばれるものに保存されます｡
CMOSとは相補型金属酸化膜半導体のことで､ バッテリー駆動のメモリーチップだ｡
これはBIOS設定を保存する不揮発性のメモリで､
マザーボードに内蔵されている｡
バッテリー電源が残っている限り､
直流電流はCMOSに供給され､ そのマザーボードとBIOSによって設定が保持されます｡
コンピューターが常に設定を失ったり､ 日付や時刻を忘れたりする場合は､
通常､ バッテリーを交換する必要があることを示しています｡
このバッテリーの寿命は通常約3年｡
しかし､ 最近のCMOSでは､
内蔵のリチウムイオンバッテリーを使用することができる｡
これらのCMOSで使用される最も典型的な外部バッテリーはCR2032として知られており､
これは腕時計の電池のように見える｡
バッテリーが故障し始めると､ ユーザーが最初に気づくのは､
システム時計が日付と時刻を頻繁に忘れてしまうことだ｡
つまり､ 日付や時刻を何度も変更しているようなら､
バッテリーが切れている可能性が高いということだ｡
さて､ コンピュータの電源ボタンを押すと､
電源が投入されて最初に起こるのはブートプロセスの開始であり､ 最初のステップはPOSTとして知られるパワーオンセルフテストである｡
パワーオンセルフテストとは､ コンピュータの基本的な入出力システムまたは起動プログラムが実行する診断テストシーケンスで､
コンピュータのキーボード､ RAM､ ディスクドライブ､
ストレージデバイス､ その他のハードウェアがすべて正常に動作しているかどうかを判断します｡
必要なハードウェアが検出され､ 正常に動作していることが確認されれば､
そのコンピューターは起動を開始することができる｡
ハードウェアが検出されなかったり､
正しく動作していないことが判明した場合､ BIOSはエラーメッセージを発行し､
画面にテキストメッセージが表示されます｡
あるいは､ 画面に問題がある場合､ 特定の問題の性質に応じて､
コード化されたビープ音が連続して鳴ることもあります｡
POSTはコンピュータのビデオカードが起動する前に実行されるため､
すべてを画面に表示できない場合があります｡
したがって､ この可変ビープ音をシステムの異常を伝える手段として使うことになる｡
これらのビープ音は､ マザーボードにインストールされているBIOSの種類によって､
短いビープ音と長いビープ音､ または短いビープ音と長いビープ音が混在することがあります｡
ビープ音の正確なパターンには､ 発見された問題の性質に関するメッセージが含まれている｡
例えば､ キーボードが検出されない場合､ ビープ音の特定のパターンが､
ビープ､ ビープ､ ブープといったように､ 短いビープ音を2回､
長いビープ音を1回送信することでそのことを知らせるかもしれない｡
POSTには致命的なエラーが発生することもある｡
この場合､ 現在のプログラムの実行を停止させ､
ブートプロセスを停止させることになる｡
このPOSTテストでチェックされるハードウェアは､
メモリ､ キーボード､ 入出力デバイス､ プロセッサーなど､ すべての重要なハードウェアであるため､ これを理解することが重要です｡
そのため､ これらのいずれかにエラーがあれば､
ブートプロセスが停止する｡
POSTが成功すると､ BIOSがCMOSから設定を読み込み､
BIOSが設定されたブートデバイスからオペレーティングシステムを探します｡
BIOSはまた､ キーボード､ ディスクドライブ､ ビデオディスプレイなど､
最も基本的なコンポーネントへの入力と出力を可能にする､
そのコンピュータのための独自の低レベルのオペレーティングシステムのようなものを持っています｡
BIOSは､ ストレージ・デバイスから読み取る低レベルの能力を使って､
WindowsやLinux､
Mac OSなど､ インストールされているオペレーティング・システムを見つけようとする｡
そして､ オペレーティング・システムのブートローダーがオペレーティング・システムの起動プロセスを開始し､
コンピューターの制御をオペレーティング・システムに引き渡す｡
さて､ BIOSはCMOSにも設定やコンフィギュレーションを保存していますが､
その設定をどのように変更するのでしょうか？
さて､ CMOS内部でこれらの設定を行うには､
BIOS設定環境に入る必要があります｡
これを行うには､ 起動プロセス中に有効なキーまたは組み合わせキーを押すことになるが､
これはBIOSメーカーによって設定されている｡
最もよく使われるキーはF2かDeleteだが､ これはBIOSや使用しているマザーボードによって異なり､
Escapeキー､ F1､ F10､
F12など他のキーも使われているのを見たことがある｡
通常､ 最初にシステムの電源を入れると､ 画面にメッセージが表示され､
コンフィギュレーション設定を変更するにはどのキー操作が必要かを教えてくれます｡
表示されない場合は､ メーカーのウェブサイトで検索すれば､
そのシステムで使用されているキーストロークを知ることができる｡
従来のBIOSは､ テキストベースのメニューシステムとキーボードを入力システムとして完全に依存していた｡
この従来のBIOSは､ メモリ､ CPU､ 光学ドライブ､
ストレージデバイスに関する情報を表示する機能をユーザーに提供していた｡
これらはグラフィック的にはあまり魅力的ではなかったが､
これらのテキストベースのシステムは､ デバイスの設定､
ブート順序､ クロック速度､ 日付､ 時刻､ 仮想化サポートを有効にするかどうか､ セキュリティ機能､
その他多くのことを行うために必要なすべての機能を提供していた｡
しかし､ 最近のシステムはこの伝統的なBIOSから切り替わり､
代わりにUEFIとして知られるものを使い始めている｡
UEFIとはUnified Extensible Firmware Interface（統合拡張ファームウェア・インターフェース）の略で､
基本的にBIOSをアップデートしたもので､ キーボードとマウスの両方を入力として使用でき､
標準的なテキストベースのメニューの代わりにグラフィカル・ユーザー・インターフェースを提供します｡
これらのシステムは､ テキストベースのメニューシステムではなく､
グラフィカルユーザーインターフェースを備えているため､ より直感的に使用できる傾向にあり､
デバイスの設定､ ブート順序､ クロック速度､ 日付と時刻､ 仮想化サポートオプション､ セキュリティ機能､ レートを含むその他多くの設定に必要なすべての機能を提供している｡
UEFIベースのシステムの中には､
WindowsやLinux､ Mac
OSのような通常のオペレーティング・システムに入ることなく､
オンラインに接続したり､ 基本的なゲームをプレイしたり､ バックアップ・プログラムを使用したりすることができるソフトウェアも含まれている｡
さて､ UEFIには従来のBIOSに比べていくつかの利点がある｡
まず､ 従来のBIOSは32ビットシステムとしてしか動作しないのに対し､
UEFIは64ビットシステムをサポートできる｡
第二に､ UEFIはより大きなハードディスクドライブやソリッドステートデバイスをサポートできる｡
従来のBIOSでは､ 最大2台までのストレージデバイスしかサポートできなかった｡
サイズは2テラバイトだが､
UEFIは最大9台のドライブをサポートする｡
サイズは4ゼタバイト｡
それが9だ｡ 4×10の21バイト｡
それは非常に大きなドライブになる｡
そして今､ そのどれもが実際には存在しない｡
しかし､ このような理由から､
UEFIは将来にわたって私たちに多くの能力を与えてくれる｡
3つ目は､ 従来のBIOSはMBRと呼ばれるマスターブートレコードの使用のみをサポートしており､
これはストレージデバイスのパーティションテーブルで､
ハードドライブやソリッドステートデバイスにどのように保存されているかを示すものです｡
しかしUEFIはGPTとして知られる新しいGUIDまたはGUIDパーティションテーブルフォーマットをサポートすることができます｡
この新しいフォーマットGPTは､ 2より大きなハードディスクやストレージ・デバイスをサポートする｡
サイズは2テラバイト｡
第四に､ UEFIは従来のBIOSよりもシステムの起動が速い傾向にある｡
つまり､ これも我々にとってメリットが増えたということだ｡
そして第五に､ UEFIは通常､ 従来のBIOSよりも大きなサイズのROMを使用します｡
UEFIベースのシステムのほとんどに付属しているGUIベースの設定ツールなど､
より複雑なプログラムにも対応しており､
トラブルシューティングの際に使用できる診断ツールやコマンドも充実しています｡
さて､ 従来のBIOSを使うにせよ､
新しいUEFIベースのシステムを使うにせよ､ この設定ツールを使ってシステムのブート順序とパラメータを設定することになる｡
これにより､ Windows､
Linux､ Mac OSなどのオペレーティング・システムを見つけようとするときに､
どのデバイスから読み込むかを決定することができる｡
これは､ ハードディスク・ドライブやソリッド・ステート・デバイスのような固定ストレージ・デバイスになります｡
しかし､ CD､ DVD､ Blu-rayのような光学ドライブや､
サムドライブやフラッシュドライブのようなUSBドライブに保存することもできるし､ ネットワークアダプターを使ってPXEとして知られる実行前環境を使ってサーバーにアクセスすることもできる｡
これらはすべて有効な選択肢であり､
使用するケースにもよる｡
そのため､ BIOSやUEFIの内部で､
使用したい優先順位リストやブート順を選ぶように設定することが重要です｡
例えば､ 最初に光学ドライブ､
次にハードディスク､ 次にUSB､
最後にネットワークとセットアップしたとしよう｡
つまり､ コンピュータの電源を入れると､
システムはまず光学ドライブを探し､ そこにブート可能なオペレーティング・システムがあるかどうかを確認する｡
そうなれば､ 負荷がかかる｡
しかし､ そうでなければ､ ハードディスク・ドライブとして挙げた2番目の優先順位に移ることになる｡
これでハードディスクを見ると､ ウィンドウズがインストールされていることがわかるかもしれない｡
Windowsがロードされ､ システムの制御がWindowsオペレーティング・システムに引き継がれ､
それ以上ブート・リストに進まなくなる｡
というのも､ 光学ドライブやUSBメモリから実行できるオペレーティング・システムは数多く存在するからだ｡
攻撃者としては､ もし私がKali
LinuxのDVDをあなたの光学ドライブに挿入し､
あなたのコンピュータの電源を入れることができれば､
私はあなたのハードウェアを使用することができ､
あなたのパスワードをすべてバイパスすることができる｡
この時点で､ Kali Linuxの内部からハードディスクをマウントして､
ファイルを読んだりすることができる｡
しかし､ 繰り返しになるが､ DVDをドライブに入れるには､
あなたのシステムに物理的にアクセスする必要がある｡
そのため､ ほとんどの企業環境では､ 光学ドライブやUSBドライブからの起動を無効にするというベストプラクティスを用いて､
攻撃者がこの方法でシステムを乗っ取るのを防ぎたい｡
代わりに､ インストールしたオペレーティング・システムを使用して､
インストールしたハードディスク・ドライブから起動するようにシステムを設定する必要があります｡
あるいは､ シンクライアントを使用している場合､
PXEを主要なオプションとして使用し､ ネットワーク経由でオペレーティングシステムをブートすることを選択し､
光学ドライブやUSBドライブを優先順位リストにまったく選択しないこともできる｡
BIOSとUEFIについて最後に説明しなければならないのは､
BIOSをアップデートする方法だ｡
BIOSまたはUEFIをアップデートするには､ フラッシュと呼ばれるプロセスを使用する必要があります｡
フラッシングは､ BIOSやUEFIのコードベースにアップグレードやセキュリティ修正､
機能改善が必要な場合に実行されます｡
最新のファームウェアのバージョンと､ BIOSまたはUEFIをフラッシュするための具体的な手順については､
常にメーカーのウェブサイトをチェックしてください｡
昔のシステムにはBIOSをフラッシュする機能がなかった｡
そしてその代わりに､ マザーボード上のBIOSチップを丸ごと交換しなければならなかった｡
しかしありがたいことに､ 最近のマザーボードはすべてフラッシュをサポートしているので､
この特殊な手順でBIOSやUEFIを上書きすることができる｡
さて､ BIOSやUEFIをフラッシュする前に､
何か問題が発生した場合に備えて､
設定や情報を常にバックアップしておく必要があります｡
ほとんどのシステムでは､
ファームウェアをフラッシュするためにUSBフラッシュドライブが必要になる｡
そして､ そのUSBフラッシュ・ドライブのルートにファイルをロードし､
フラッシュ・ドライブをマザーボードの指定されたUSBポートに接続し､
指定された一連のキーを押すか､
マザーボード背面の特定のボタンを押しながらシステムを再起動する｡
その後､ BIOSまたはUEFIが引き継ぎ､ ファームウェアをシステムにコピーし､
新しく更新されたファームウェアコードで古いコードを上書きする｡