マイコンピュータのどのブートローダがプライマリで何がセカンダリかを定義するにはどうすればよいですか?たぶん、いくつかのコマンドがありますか?システムにはROMとBIOSがあります。 /boot/フォルダに行き、私のシステムがどのローダを使用しているかを確認できますが、セカンダリブートローダがない場合はどうすればよいですか?私の質問の目的は、自分のコンピュータでブートローダ(プライマリまたはセカンダリ)を定義する方法です。
答え1
コンピュータからオペレーティングシステム全体を起動するメカニズムは複雑で、PC(Originでは破損)ではより複雑です。以下は荒いつまり、すべてのUEFIナンセンス以前のクラシックPCの概要です。
電源を入れると、BIOSが起動していくつかの「セルフテスト」を実行し、いくつかのハードウェアを検出し、起動ドライブのセクタをメモリの固定部分にロードします。これがMBR(マスターブートレコード)です。
その後、ブートセクタはBIOS呼び出しを使用して、より重要なブートローダをほとんどのディスクの固定位置からメモリにロードします(実際のファイルシステムが利用できず、空き容量がほとんどありません)。
これにより、カーネルを直接ロードするか(たとえば、事前設定されたディスクアドレスセットを使用するlilo)、より重要なことには、ファイルシステムを理解するローダー(例:grub2)をロードします。次に開始する項目を選択できるメニューの種類を提供できます。
ロードされたカーネルが起動します。セルフおよびその他のペイロード(initrd)を解凍し、システム自体のビューを初期化します(BIOSまたはプロセスの前の段階で残ったデータの一部をコピー)。
カーネルによって呼び出されinit
、システムを起動して実行するためのユーザー空間プロセスを開始します。このプロセスでは、RAMのルートから物理ファイルシステムに切り替えられます。
他のマシンは非常に異なり、同じマシンでも全く異なるブートチェーンを使用できます。つまり、PC用Linuxの場合、lilo、isolinux、grub...を使って過去にはカーネルをフロッピーの先頭にコピーして直接ブートすることも可能でしたが(全体MBRダンスを直接行った)これはただほとんど忘れられた過去の一部。