
Linux(CentOS 7)をインストールするときに、ガイドでは、boot:
kickstartを使用して起動する方法を知るように求められて、CLIに入るにはTABまたはESCAPEを押すように指示しました。
私はただ気になります。このCLIプロンプトはGRUB2ですか?それとも「Anaconda」インストーラに関連していますか?マウントされたドライブのファイル編集など、ほとんどのLinuxコマンドにアクセスできますか?
答え1
驚くべきことに、答えは「起動方法によって異なります」です。
CentOSに関する最初のメッセージが表示されたらTABまたはESCAPEを押すと、ブートローダにアクセスして必要に応じてさまざまな起動オプションを追加できます。これによりboot:
プロンプトが表示されます。
既存のBIOSスタイルで起動する場合光学メディアから、このboot:
プロンプトは、光学メディアのバリエーションであるISOLINUXによって提供されます。SYSLINUX ブートローダ。/isolinux/
メディアのディレクトリにその設定を表示できます。実際のISOLINUXブートローダはファイルではありません。 ISO9660画像構造に直接組み込まれています。
UEFIモードで起動する場合光学メディアからすると、GRUB2にプロンプトが表示されます。/EFI/BOOT
メディアのディレクトリにUEFIブートローダ(32ビットおよび64ビットUEFIバージョン!)を見つけることができます。/images/efiboot.img
メディアには、UEFIブートローダの2番目のコピーもあります。どのブートローダのコピーが実際に使用されるかは、ファームウェアの実装によって異なりますが、同じ内容を持つため重要ではありません。
CentOSインストールメディアのISO9660ファイルシステムのEl Toritoブート構造には、既存のBIOSスタイルブート(組み込みISOLINUXと呼ばれる)用の1つのブートパラメータセットと2つのUEFIブート用のブートパラメータセットがあります。 -bit ia32 UEFI、もう1つは64ビットx64 UEFI用です。このUEFIパラメータはすべてを指すことができますefiboot.img
。dumpet
これ確認する十分El Toritoは構造を起動します。私が試した他のツールは、最初のブートパラメータセットのみを表示する傾向があります。
以下はサンプル出力です。
# dumpet -i CentOS-7-x86_64-DVD-1708.iso
Validation Entry:
Header Indicator: 0x01 (Validation Entry)
PlatformId: 0x00 (80x86)
ID: ""
Checksum: 0x55aa
Key bytes: 0x55aa
Boot Catalog Default Entry:
Entry is bootable
Boot Media emulation type: no emulation
Media load segment: 0x0 (0000:7c00)
System type: 0 (0x00)
Load Sectors: 4 (0x0004)
Load LBA: 5074 (0x000013d2)
Section Header Entry:
Header Indicator: 0x91 (Final Section Header Entry)
PlatformId: 0xef (EFI)
Section Entries: 1
ID: ""
Boot Catalog Section Entry:
Entry is bootable
Boot Media emulation type: no emulation
Media load address: 0 (0x0000)
System type: 0 (0x00)
Load Sectors: 17976 (0x4638)
Load LBA: 580 (0x00000244)
ただし、dd
ISOイメージをUSBメディアに記録し、それを使用してインストーラを起動すると、システムはブートローダを別の方法で見つけます。
第1に、isohybrid
準備プロセスは、ISOイメージの始めによく設計されたMBRパーティションテーブルを含む。これは、USBメディアに2つのパーティションがあることを示しています。 1つはタイプID 0x00のISOイメージの合計サイズを含み、小さいパーティション(〜10M以下)を分割する別のパーティションはタイプID 0xefの最初のパーティションに含まれているように見え、MBRパーティションディスクのESP(EFIシステム)パーティション)であることを示します。 2番目の「パーティション」は実際にefiboot.img
ファイルの内容を指します。本質的に同じ情報を含むGPTパーティションテーブル構造もあります。
(はい、あるパーティションが別のパーティション内にあることを示すことはMBRの意図された構造に技術的に違反しますが、ブートファームウェアがそのような詳細についてはあまりにも難しい可能性はありません...)
MBRブロックには、USBメディアに記録されたインストールイメージを介したBIOSスタイルの起動をカバーするISOLINUXの実際のマスターブートレコードも含まれています。デフォルトのブートモードのUEFIファームウェアはMBRを無視し、ESPをチェックしてUEFIブートローダ(32ビットまたは64ビット)を見つけます。
USBメディアに記録するときにISOイメージがどのように見えるかを確認するには、次のツールを使用losetup -P /dev/loop0 CentOS-7-x86_64-DVD-1708.iso
しますfdisk -l
。
# losetup -P /dev/loop0 CentOS-7-x86_64-DVD-1708.iso
# fdisk -l /dev/loop0
Disk /dev/loop0: 4.2 GiB, 4521459712 bytes, 8830976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1302a8b3
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 * 0 8830975 8830976 4.2G 0 Empty
/dev/loop0p2 2320 20295 17976 8.8M ef EFI (FAT-12/16/32)
(最初のパーティションのタイプは「null」です。おそらくISO9660ファイルシステムに有効なMBRパーティションタイプIDがないためです。)
2つのパーティション(損傷を防ぐための読み取り専用)をマウントし、各パーティション内の内容を調べることもできます。
dumpet
出力は、ESPブートイメージの先頭をLBA#580として識別し、ブロックfdisk
#2320で始まることを示します。これは、ISO9660光学メディアが2048バイトのブロックサイズを使用し、USBメディアがより一般的な512バイトのブロックサイズを使用するためです。