このページでは、LinuxブートプロセスとGRUBブートローダー カバーされている。起動時にさまざまなオペレーティングシステムを実行する方法や、さまざまなカーネルをロードする方法について説明します。
コンテンツ
ブートローダーの概要
PCハードウェア上で実行されているLinuxシステムが起動すると、最初に実行されるコードは、ROMからロードされるBIOS(基本入出力システム)です。システムのメモリのテストとインストールされているハードウェアの検出が完了すると、オペレーティングシステムのブートローダーに制御を渡して、ブートプロセスを続行しようとします。ブートローダーは、実行するOSを選択するようにユーザーに促し、残りのオペレーティングシステムカーネルをハードドライブ、フロッピーディスク、またはその他のソースからロードする小さなプログラムです。
通常のシステムでは、ブートローダーはBIOSによってプライマリハードドライブの最初のブロックからロードされます。これはマスターブートレコードまたはMBRと呼ばれます。ただし、BIOSは(構成に応じて)最初にフロッピードライブまたはCD-ROMのブートローダーをチェックして、システムをリムーバブルディスクから起動できるようにする場合があります。これは通常、新しいオペレーティングシステムをインストールするときにのみ実行されます。通常の日常的な使用では、ほとんどすべてのシステムがハードディスクから起動します。
Linuxで利用できるブートローダーはいくつかありますが、最も一般的な2つと、この章で説明する2つはLILOとGRUBです。どちらもx86互換のPCハードウェアでのみ機能するため、Apple、SPARC、またはAlphaシステムでLinuxを実行している場合、この章はあまり役に立ちません。 PC以外の各ハードウェアプラットフォームには、プラットフォームの特定の癖や要件に対処するように設計された、専用のLinuxブートローダーがあります。
他のオペレーティングシステム(Windows、FreeBSD、Solarisなど)には独自のブートローダーがあり、基本的にLILOやGRUBと同じことを行いますが、代わりに別のOSのカーネルをロードするように設計されています。 WebminはLinux以外のブートローダーの構成をサポートしていないため、異なるバージョンのUnixを実行している場合は、この章をスキップできます。
Linuxシステムでは、ブートローダーの主な役割はカーネルのロードです。カーネルがメモリにロードされ、制御がメモリに移されると、ブートローダーのジョブが実行されます。次に、カーネルはルートファイルシステムをマウントし、ドライバを初期化し、最後にinitプログラムを実行して、第9章で説明されているようにブートプロセスを続行します。
ブートローダーは、複数のOSがインストールされているシステムにまったく異なるOSをロードするプロセスを開始することもできます。これは、パーティションまたは他のハードディスクの最初のブロックから他のオペレーティングシステムのブートローダーをロードし、そこに制御を移すことによって行われます。次に、他のOSは、ブートローダーがBIOSによって直接実行された場合とまったく同じようにロードされます。起動時にロードするオペレーティングシステムを決定できるため、WindowsとLinuxなどの同じシステムに2つ以上をインストールするのが現実的です。
LILOとGRUBはどちらも、ロード時にブートオプションのメニューを表示するように構成できるため、ユーザーは、ロードする特定のカーネルまたはロードする他のオペレーティングシステムを選択できます。いくつかの異なるカーネルから選択できることは、新しいカーネルをインストールし、新しいカーネルと古いカーネルの両方で起動するオプションが必要な場合に特に役立ちます。すべて同じカーネルバージョンをロードするが、コマンドラインオプションが異なる複数のブートオプションを持つことも可能です。
すべてのLinuxディストリビューションには、インストール時にブートローダーを自動的にセットアップするオプションがあります。通常、インストールされている他のオペレーティングシステムも起動するように選択できます。たとえば、Windowsがすでに別のパーティションにインストールされているシステムにLinuxを追加する場合などです。このデフォルト構成が機能している場合は、LILOまたはGRUB構成を手動で、またはWebminを介して変更するときは十分に注意してください。たった1つのミスでシステムが起動できなくなり、リカバリするためにレスキューディスクを使用する必要が生じる場合があります。
GRUBは通常、構成ファイル/boot/grub/grub.cfgを使用します (以前は menu.lst )およびLILOとは異なり、ext2、ext3、ext4、およびvfatファイルシステムの形式を理解するため、ブロックマップを必要とせずにmenu.lstおよびカーネルファイルを読み取ることができます。このため、またGRUBはハードディスク上のどこにでも格納されているカーネルをロードできるため、通常は優れたブートローダーと見なされ、ほとんどのLinuxディストリビューションでLILOを追い抜いてきました。
GRUB 2
多くの(すべて?)新しいディストリビューションで使用されているGRUB2は、 /etc/grub.d/の構成ファイルを使用します 。モジュール構成は変更できますが、まだ機能しません。
GRUBブートローダーモジュール
名前が示すように、このモジュールを使用すると、GRUBをセットアップできます。 LILOモジュールと同様に、ハードウェアカテゴリから入力すると、メインページに起動時オプションごとに1つずつアイコンのリストが表示されます。このスクリーンショットは例を示しています。
GRUBブートローダーモジュールモジュールのアイコンは、WebminがGRUBがシステムにインストールされていることを検出した場合にのみ表示されます。表示されていない場合、またはモジュールに入るときにエラーが表示された場合、GRUBはインストールされていません。その場合は、代わりにLILOが使用されている可能性があるため、Linuxブートローダーモジュールを使用する必要があります。
GRUBの特徴の1つは、内部的にすべてのハードディスクをBIOSディスク番号で参照することです。 hd0はBIOSによって識別される最初のドライブであり、hd0,0はそのドライブの最初のパーティションです。 IDEハードドライブのみを備えたシステムでは、この番号付けは非常に単純です。BIOSディスク0がプライマリマスター、またはLinuxでは/ dev/hdaです。ディスク2(GRUBではhd1と呼ばれます)がプライマリスレーブであり、以下同様です。ただし、SCSIドライブとIDEドライブを備えたシステムでは、状況はさらに複雑になります。 IDEディスクは通常BIOSの順序でSCSIの前にありますが、これは一部のシステムでは逆になる場合があります。幸い、最近のバージョンのWebminのGRUBモジュールは、LinuxデバイスファイルとBIOSディスク番号の関係を自動的に検出できます。
GRUBを使用した新しいLinuxカーネルまたはBSDの起動
新しいカーネルをコンパイルしたばかりで、それを使用できるようにしたい場合は、新しいGRUBブートオプションを追加する必要があります。
LinuxとFreeBSD、NetBSDまたはOpenBSDの両方がシステムにインストールされていて、起動時にそれらの1つを選択できるようにしたい場合は、同様のプロセスに従う必要があります。これを設定するには、次の手順に従います。
- Linuxカーネルを起動するには、コンパイル後、圧縮されたカーネルイメージファイル(通常はarch / i386 / bzImageのソースディレクトリにあります)を/bootディレクトリにコピーします。通常は、名前をvmlinuz-_xx.yy.zz_に変更する必要があります。ここで、 xx.yy.zz カーネルのバージョン番号です。
- GRUBブートローダーのメインページ モジュールで、新しい起動オプションを追加をクリックします オプション作成フォームに移動するためのリンク。
- 新しいカーネルの一意の名前をオプションのタイトルに入力します linux-xx.yy.zzなどのフィールド 。入力した内容はすべて、起動時にGRUBメニューに表示されます。
- ブートイメージパーティションを設定します 選択済みへのフィールド 隣のリストからカーネルを含むパーティションを選択します。パーティションがメニューに表示されない場合は、その他を選択する必要があります 代わりに、GRUBで使用されるhd_X _、_ Y_形式で、ディスクとパーティションをその隣のフィールドに入力します。たとえば、 hd2,1 BIOSドライブ3の2番目のパーティションになります。
- 起動するオペレーティングシステムの場合 、Linuxカーネルを選択します カーネルの圧縮イメージファイルへのパスをその横のフィールドに入力します。追加の引数をカーネルに渡すには、それらをカーネルオプションに入力します その下のフィールド。 FreeBSDの場合、Linuxカーネルも選択する必要があります / boot / loaderと入力します フィールドに。追加のカーネル引数は許可されていません。 NetBSDまたはOpenBSDの場合は、Linuxカーネルを選択します。 同様に、 type =netbsd / netbsd-elfと入力します 。
- システムのルートディレクトリがLinuxカーネルにコンパイルされていないデバイス(SCSIディスクやハードウェアRAIDコントローラーなど)からマウントされている場合は、必要なカーネルモジュールを含む初期RAMディスクを作成する必要があります。ルートファイルシステムにアクセスします。これが必要かどうかを確認する最も簡単な方法は、他の既存のブートカーネル構成を調べることです。カーネルバージョンxx.yy.zzの/bootディレクトリの下に初期RAMディスクファイルを作成するには 、次のようなコマンドを実行する必要があります:mkinitrd /boot/initrd-_xx.yy.zz_ xx.yy.zz 次に、初期ramdiskファイルを設定します 新しく作成されたファイルへのパスへのフィールド。
- 最後に、作成をクリックします ボタン。入力でエラーが検出されない限り、モジュールのメインページに戻り、新しいカーネルの追加アイコンが表示されます。
- 新しいカーネルを起動するには、システムを再起動する必要があります。 GRUBが起動時に読み込まれると、利用可能な起動オプションのメニューが表示され、そこから新しく追加されたカーネルを選択できます。起動中にカーネルが表示するデバッグ出力とエラーメッセージを必ず確認してください。問題が発生した場合に問題を診断できます。問題がある場合は、再起動して古いカーネルオプションを選択してから、Webminを使用してGRUB構成を修正する必要があります。
新しいカーネルブートオプションを作成したら、モジュールのメインページにあるアイコンをクリックして編集できます。編集フォームでは、保存をクリックして、任意のフィールドを編集し、変更を保存できます。 ボタンをクリックするか、削除をクリックしてカーネルを削除できます 代わりは。自分で作成していないカーネル構成を編集する場合は、システムを起動できなくなる可能性があるため、常に注意してください。
GRUBを使用して別のオペレーティングシステムを起動する
システムの別のオペレーティングシステムが別のハードディスクまたはパーティションにインストールされている場合は、Linuxの代わりに起動時に選択して起動できるようにGRUBを構成できます。 FreeBSD、NetBSD、またはOpenBSDを起動する場合は、代わりに上記の*新しいLinuxカーネルまたはBSDの起動*セクションを参照してください。ただし、Windows、UnixWare、またはその他のOSの場合、実行する手順は次のとおりです。
- モジュールのメインページで、新しい起動オプションを追加をクリックします。 起動オプション作成フォームを表示します。
- オプションタイトルに一意の名前を入力します ウィンドウなどのフィールド。
- ブートイメージパーティションを設定します 選択済みへのフィールド 隣のリストから他のOSを含むパーティションを選択します。パーティションがメニューに表示されない場合は、その他を選択する必要があります 代わりに、GRUBで使用されるhd_X _、_ Y_形式で、ディスクとパーティションをその隣のフィールドに入力します。
- オペレーティングシステムを起動するように変更 その他のOS 。
- 通常、GRUBは、選択したパーティションの最初のセクターでブートローダーを実行するだけです。ただし、たとえばオペレーティングシステムが通常そのローダーをマスターブートレコードに書き込む場合、そこにブートローダーが常に存在するとは限りません。他のオペレーティングシステムがWindowsの場合は、*チェーンローダーファイルから*を選択し、 +1と入力します。 その隣のフィールドに。 ルートパーティションアクションを作成しますか?も確認する必要があります オプション。 SCO UnixWareを起動する場合は、*チェーンローダーファイルから*も選択し、 force +1と入力する必要があります。 その隣のフィールドに。 *ルートパーティションアクションを作成しますか?*オプションも選択する必要があります。
- 作成をクリックします ボタンをクリックして、新しいOSを追加します。ブラウザがモジュールのメインページに戻り、新しいブートオプションのアイコンが表示されます。
- 他のオペレーティングシステムを起動するには、システムを再起動し、起動時にGRUBメニューから選択します。
Linuxカーネルのブートオプションと同様に、モジュールのメインページにあるアイコンをクリックして、別のオペレーティングシステムのオプションを編集または削除できます。変更はすぐに有効になり、システムが次に再起動されたときに使用されます。
グローバルGRUBオプションの編集
GRUBには、すべての起動可能なカーネルとオペレーティングシステムに適用されるいくつかのオプションがあります。これらのグローバルオプションを編集するには、次の手順に従います。
- グローバルオプションの編集をクリックします モジュールのメインページにあるボタンをクリックすると、オプションフォームが表示されます。
- ユーザーが設定された制限時間内にGRUBメニューからカーネルを選択しなかった場合に、どのカーネルが自動的に起動されるかを制御するには、デフォルトの起動オプションを変更します。 分野。選択したオプションを読み込めない場合、GRUBはフォールバックブートオプションで選択されたものにフォールバックします。 分野。
- GRUBがユーザーがブートオプションを選択するのを待ってからデフォルトを使用する時間を変更するには、デフォルトの*フィールドを使用する前に*Timeoutを編集します。
- GRUBブートメニューを使用すると、ユーザーはカーネルパラメータを変更したり、Linuxファイルシステム上の任意のファイルを読み取ったりすることができます。これを防ぐには、ブートパスワードにパスワードを入力します 分野。これにより、パスワードが入力されない限り、ユーザーは使用可能なブートオプションに制限されます。さらに、パスワードがロックされているブートオプション? 設定されているフィールドも選択できなくなります。
- 完了したら、[保存]をクリックします ボタンを押すと、モジュールのメインページに戻ります。
GRUBのインストール
LILOブートローダーを使用していてGRUBに切り替えたい場合は、LILOが現在使用しているのと同じマスターブートレコードまたはパーティションにインストールする必要があります。構成が変更されるたびに効果的に再インストールする必要があるLILOとは異なり、これは1回だけ実行する必要があります。
GRUBをインストールするには、次の手順に従います。
- モジュールのメインページで、グローバルオプションの編集をクリックします。 ボタン。
- ディスク/パーティションへのGRUBのインストールから メニューで、GRUBをインストールするディスクまたはパーティションを選択します。これは通常、システムの最初のハードドライブになります。
- 保存をクリックします ボタンをクリックして、モジュールのメインページに戻ります。
- GRUBのインストールをクリックします ボタンをクリックして、手順2で選択したドライブまたはパーティションに書き込みます。
- これからシステムをLinuxで起動できるように、*新しいLinuxカーネルまたはBSDの起動*セクションで説明されているように、必要なカーネル起動オプションを作成します。これを行う前に再起動すると、Linuxを再起動できなくなります!