Difference between revisions of "GRUB (日本語)"

From ArchWiki
Jump to: navigation, search
m
Line 64: Line 64:
 
===== GUID Partition Table (GPT) 特有の手順 =====
 
===== GUID Partition Table (GPT) 特有の手順 =====
  
GRUB in [[GPT|BIOS-GPT]] configuration requires a [http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html BIOS boot partition] to embed its {{ic|core.img}} in the absence of post-MBR gap in GPT partitioned systems (which is taken over by the GPT Primary Header and Primary Partition table). This partition is used by GRUB only in BIOS-GPT setups. No such partition type exists in case of MBR partitioning (at least not for GRUB). This partition is also not required if the system is UEFI based, as no embedding of bootsectors takes place in that case.
+
GPT でパーティションされたシステムには {{ic|core.img}} を埋め込むための MBR の隙間の領域がないので (GPT のプライマリヘッダーやプライマリパーティションテーブルに使われます)、[[GPT|BIOS-GPT]] の GRUB 設定では [http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html BIOS boot partition] が必要になります。このパーティションは BIOS-GPT 環境の GRUB でだけ使われます。MBR パーティションではそのようなパーティションのタイプは存在しません (少なくとも GRUB にはありません)。システムが UEFI を使っている時も (ブートセクタの埋め込みがないので)、このパーティションは必要ありません。
  
For a BIOS-GPT configuration, create a 1007 KiB partition at the beginning of the disk using gdisk, cgdisk or GNU Parted with no filesystem. The size of 1007 KiB will allow for the following partition to be correctly alligned at 1024 KiB. If needed, the partition can also be located somewhere else on the disk, but it should be within the first 2 TiB region. Set the partition type to {{ic|ef02}} in (c)gdisk or {{ic|set <BOOT_PART_NUM> bios_grub on}} in GNU Parted.
+
BIOS-GPT 設定では gdisk, cgdisk, GNU Parted などを使って、ディスクの最初にファイルシステムのない 1007 KiB のパーティションを作成してください。1007 KiB という容量によって次に続くパーティションを 1024 KiB に正しくアライメントすることができます。必要であれば、ディスクの他の場所にこのパーティションを配置することもできますが、先頭の 2TiB の領域内である必要があります。パーティションタイプは (c)gdisk では {{ic|ef02}} に GNU Parted では {{ic|set <BOOT_PART_NUM> bios_grub on}} に設定してください。
  
 
{{Note|
 
{{Note|
* This partition should be created before {{ic|grub-install}} or {{ic|grub-setup}} is run
+
* このパーティションは {{ic|grub-install}} {{ic|grub-setup}} を実行する前に作成しておく必要があります
* gdisk will only allow you to create this partition on the position which will waste the least amount of space (sector 34-2047) if you create it last, after all the other partitions. This is because gdisk will auto-align partitions to 2048-sector boundaries if possible
+
* 他の全てのパーティションの後にこのパーティションを作成する場合、gdisk では容量の消費が一番少ない場所 (セクター 34-2047) にしか作成できません。なぜなら gdisk はパーティションを出来る限り 2048 セクター境界に自動アライメントするからです
 
}}
 
}}
  
 
===== Master Boot Record (MBR) 特有の手順 =====
 
===== Master Boot Record (MBR) 特有の手順 =====
  
Usually the post-[[MBR]] gap (after the 512 byte MBR region and before the start of the 1st partition) in many MBR (or msdos disklabel) partitioned systems is 31 KiB when DOS compatibility cylinder alignment issues are satisfied in the partition table. However a post-MBR gap of about 1 to 2 MiB is recommended to provide sufficient room for embedding GRUB's {{ic|core.img}} ({{bug|24103}}). It is advisable to use a partitioner which supports 1 MiB partition alignment to obtain this space as well as satisfy other non-512 byte sector issues (which are unrelated to embedding of {{ic|core.img}}).
+
通常 MBR でパーティションされた環境において [[Master Boot Record (日本語)|MBR]] の後の隙間 (512バイトの MBR 領域の後ろで最初のパーティションの前) 31 KiB になっていて、このパーティションテーブルでは DOS 互換のシリンダー・アライメントは問題になりません。しかしながら GRUB {{ic|core.img}} 用に十分な領域を確保するため 1 から 2 MiB ほど MBR の後の領域をとることを推奨します ({{bug|24103}})。この領域を獲得したり他の 512 バイトでないセクターの問題を起こさないために ({{ic|core.img}} の埋め込みとは関係ありません) 1 MiB パーティション・アライメントをサポートしているパーティションツールを使うのが得策です。
  
 
==== UEFI システム ====
 
==== UEFI システム ====
Line 108: Line 108:
 
* [[#core.img だけを生成する]] (一番安全な方法だが、{{ic|/boot/grub/i386-pc/core.img}} を chainload するために [[GRUB Legacy]] や [[Syslinux]] など他の BIOS ブートローダーが必要)
 
* [[#core.img だけを生成する]] (一番安全な方法だが、{{ic|/boot/grub/i386-pc/core.img}} を chainload するために [[GRUB Legacy]] や [[Syslinux]] など他の BIOS ブートローダーが必要)
  
{{Note|See http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html for additional documentation.}}
+
{{Note|http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html で詳しく説明されています。}}
  
 
===== GPT BIOS boot partition にインストールする =====
 
===== GPT BIOS boot partition にインストールする =====
Line 148: Line 148:
 
{{Note|GRUB does not encourage installation to a partition boot sector or a partitionless disk like GRUB Legacy or Syslinux does. This kind of setup is prone to breakage, especially during updates, and is not supported by Arch devs.}}
 
{{Note|GRUB does not encourage installation to a partition boot sector or a partitionless disk like GRUB Legacy or Syslinux does. This kind of setup is prone to breakage, especially during updates, and is not supported by Arch devs.}}
  
To set up grub to a partition boot sector, to a partitionless disk (also called superfloppy) or to a floppy disk, run (using for example {{ic|/dev/sdaX}} as the {{ic|/boot}} partition):
+
パーティションブートセクタや、パーティションレスディスク (別名 superfloppy) やフロッピーディスクに grub をセットアップするには、以下を実行してください ({{ic|/boot}} パーティションを {{ic|/dev/sdaX}} として例にしています):
 
   
 
   
 
  # modprobe dm-mod
 
  # modprobe dm-mod
Line 155: Line 155:
 
  # chattr +i /boot/grub/i386-pc/core.img
 
  # chattr +i /boot/grub/i386-pc/core.img
  
You need to use the {{ic|--force}} option to allow usage of blocklists and should not use {{ic|1=--grub-setup=/bin/true}} (which is similar to simply generating {{ic|core.img}}).
+
{{ic|--force}} オプションを使ってブロックリストを利用する必要があります {{ic|1=--grub-setup=/bin/true}} は使えません ({{ic|core.img}} を生成するだけと同じです)
  
 
{{ic|grub-install}} will give out warnings like which should give you the idea of what might go wrong with this approach:
 
{{ic|grub-install}} will give out warnings like which should give you the idea of what might go wrong with this approach:
Line 163: Line 163:
 
                         However, blocklists are UNRELIABLE and their use is discouraged.
 
                         However, blocklists are UNRELIABLE and their use is discouraged.
  
Without {{ic|--force}} you may get the below error and {{ic|grub-setup}} will not setup its boot code in the partition boot sector:
+
{{ic|--force}} がないと下のエラーが表示され {{ic|grub-setup}} はパーティションブートセクタにブートコードを設定しません:
 
   
 
   
 
  /sbin/grub-setup: error: will not proceed with blocklists
 
  /sbin/grub-setup: error: will not proceed with blocklists
  
With {{ic|--force}} you should get:
+
{{ic|--force}} をつければ次のように表示されるはずです:
  
 
  Installation finished. No error reported.
 
  Installation finished. No error reported.
Line 175: Line 175:
 
The workaround for this is to set the immutable flag on {{ic|/boot/grub/i386-pc/core.img}} (using chattr command as mentioned above) so that the sector locations of the {{ic|core.img}} file in the disk is not altered. The immutable flag on {{ic|/boot/grub/i386-pc/core.img}} needs to be set only if {{ic|grub}} is installed to a partition boot sector or a partitionless disk, not in case of installation to MBR or simple generation of {{ic|core.img}} without embedding any bootsector (mentioned above).
 
The workaround for this is to set the immutable flag on {{ic|/boot/grub/i386-pc/core.img}} (using chattr command as mentioned above) so that the sector locations of the {{ic|core.img}} file in the disk is not altered. The immutable flag on {{ic|/boot/grub/i386-pc/core.img}} needs to be set only if {{ic|grub}} is installed to a partition boot sector or a partitionless disk, not in case of installation to MBR or simple generation of {{ic|core.img}} without embedding any bootsector (mentioned above).
  
Continue with [[GRUB#Generate config file]] below.
+
下の [[#設定ファイルの生成]] に進んで下さい。
  
 
===== core.img だけを生成する =====
 
===== core.img だけを生成する =====
  
To populate the {{ic|/boot/grub}} directory and generate a {{ic|/boot/grub/i386-pc/core.img}} file '''without''' embedding any {{ic|grub}} bootsector code in the MBR, post-MBR region, or the partition bootsector, add {{ic|1=--grub-setup=/bin/true}} to {{ic|grub-install}}:
+
{{ic|grub}} のブートセクタコードを MBR, MBR の後の隙間またはパーティションのブートセクタに'''埋め込まずに''' {{ic|/boot/grub}} ディレクトリを作成して {{ic|/boot/grub/i386-pc/core.img}} ファイルを生成するには、{{ic|grub-install}} {{ic|1=--grub-setup=/bin/true}} を加えて下さい:
 
   
 
   
 
  # modprobe dm-mod
 
  # modprobe dm-mod
 
  # grub-install --target=i386-pc --grub-setup=/bin/true --recheck --debug /dev/sda
 
  # grub-install --target=i386-pc --grub-setup=/bin/true --recheck --debug /dev/sda
  
You can then chainload GRUB's {{ic|core.img}} from GRUB Legacy or syslinux as a Linux kernel or a multiboot kernel.
+
これで Linux カーネルやマルチブートカーネルとして GRUB Legacy や syslinux から GRUB の {{ic|core.img}} をチェインロードできます。
  
 
==== 設定ファイルの生成 ====
 
==== 設定ファイルの生成 ====
Line 245: Line 245:
  
 
==== マルチブート ====
 
==== マルチブート ====
This should work out of the box, but an extra utility needs to be installed: os-prober. Install it, then rerun grub-mkconfig -o /boot/grub/grub.cfg. If this fails, you can try manually adding an entry by following the instructions below.
+
追加のユーティリティをインストールすれば、すぐに動かすことができます: {{Pkg|os-prober}}。パッケージをインストールして、{{ic|grub-mkconfig -o /boot/grub/grub.cfg}} を再度実行してください。失敗する場合は、下の説明を見て手動でエントリを加えて下さい。
  
{{Note|If Windows is not found, try mounting its boot partition}}
+
{{Note|Windows が見つからない時は、Windows の boot パーティションをマウントしてみてください}}
  
===== Microsoft Windows installed in BIOS-MBR mode =====
+
===== BIOS-MBR モードでインストールされた Microsoft Windows =====
  
{{Note|GRUB supports booting {{ic|bootmgr}} directly and chainload of partition boot sector is no longer required to boot Windows in a BIOS-MBR setup.}}
+
{{Note|GRUB {{ic|bootmgr}} の直接起動をサポートしており、もはや BIOS-MBR 環境で Windows を起動するためにパーティションブートセクタのチェインロードをする必要はありません。}}
  
{{Warning|It is the '''system partition''' that has {{ic|bootmgr}}, not your "real" Windows partition (usually C:). When showing all UUIDs with blkid, the system partition is the one with {{ic|LABEL&#61;"SYSTEM RESERVED"}} and is only about 100 MB in size (much like the boot partition for Arch). See [[Wikipedia:System partition and boot partition]] for more info.}}
+
{{Warning|{{ic|bootmgr}} が存在するのは'''システムパーティション'''であり、"実際に使っている" Windows のパーティション (一般的に C:) ではありません。{{ic|blkid}} で全ての UUID を表示した際、システムパーティションは {{ic|LABEL&#61;"SYSTEM RESERVED"}} のパーティションであり容量はほんの 100 MB (Arch の boot パーティションとほぼ同じ大きさ) です。詳細は [[Wikipedia:System partition and boot partition]] を参照してください。}}
  
Throughout this section, it is assumed your Windows partition is /dev/sda1. A different partition will change every instance of hd0,msdos1. First, find the UUID of the NTFS filesystem of the Windows's SYSTEM PARTITION where the {{ic|bootmgr}} and its files reside. For example, if Windows {{ic|bootmgr}} exists at {{ic|/media/SYSTEM_RESERVED/bootmgr}}:
+
このセクションでは、あなたの Windows パーティションは {{ic|/dev/sda1}} だと仮定しています。違うパーティションを使っている場合は全ての {{ic|hd0,msdos1}} を修正しなくてはなりません。最初に、{{ic|bootmgr}} と関連ファイルがある Windows のシステムパーティションの NTFS ファイルシステムの UUID を見つけて下さい。例えば、Windows の {{ic|bootmgr}} {{ic|/media/SYSTEM_RESERVED/bootmgr}} に存在する場合:
  
For Windows Vista/7/8:
+
Windows Vista/7/8 では:
  
 
  # grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr
 
  # grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr
Line 265: Line 265:
 
  --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
 
  --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
  
{{Note|For Windows XP, replace {{ic|bootmgr}} with {{ic|NTLDR}} in the above commands. And note that there may not be a separate SYSTEM_RESERVED partition; just probe the file NTLDR on your Windows partition.}}
+
{{Note|Windows XP では、上記のコマンドにある {{ic|bootmgr}} {{ic|NTLDR}} に置き換えて下さい。さらに、SYSTEM_RESERVED パーティションは存在しない可能性があることに注意してください; あなたの Windows パーティション上に NTLDR ファイルがないか調べて下さい。}}
  
Then, add the below code to {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} and regenerate {{ic|grub.cfg}} with {{ic|grub-mkconfig}} as explained above to boot Windows (XP, Vista, 7 or 8) installed in BIOS-MBR mode:
+
次に、BIOS-MBR モードでインストールされた Windows (XP, Vista, 7, 8) を起動するために下のコードを {{ic|/etc/grub.d/40_custom}} {{ic|/boot/grub/custom.cfg}} に追加して、上で説明したように {{ic|grub-mkconfig}} を使って {{ic|grub.cfg}} を再生成してください:
  
For Windows Vista/7/8:
+
Windows Vista/7/8 では:
  
 
  menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {
 
  menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {
Line 280: Line 280:
 
  }
 
  }
  
For Windows XP:
+
Windows XP では:
  
 
  menuentry "Microsoft Windows XP" {
 
  menuentry "Microsoft Windows XP" {
Line 291: Line 291:
 
  }
 
  }
  
{{Note| In some cases, mine I have installed GRUB before a clean Windows 8, you you cannot boot windows having an error with \boot\bcd (error code 0xc000000f). You can fix it going to Windows Recovery Console (cmd from install disk) and executing:
+
{{Note|たまに (Windows 8 で GRUB をインストールした場合など)、{{ic|\boot\bcd}} でエラーが起こって Windows を起動できなくなることがあります (エラーコード {{ic|0xc000000f}})。Windows の回復コンソール (インストールディスクから cmd) を使って以下を実行することで修復することが可能です:
 
  x:\> "bootrec.exe /fixboot"  
 
  x:\> "bootrec.exe /fixboot"  
 
  x:\> "bootrec.exe /RebuildBcd".
 
  x:\> "bootrec.exe /RebuildBcd".
{{Warning| Do not use "bootrec.exe /Fixmbr" because it will wipe GRUB out.  }}
+
{{Warning|"bootrec.exe /Fixmbr" を使わないで下さい GRUB が消去されてしまいます。}}
 
  }}
 
  }}
  
{{ic|/etc/grub.d/40_custom}} can be used as a template to create {{ic|/etc/grub.d/nn_custom}}. Where {{ic|nn}} defines the precendence, indicating the order the script is executed.  The order scripts are executed determine the placement in the grub boot menu.
+
{{ic|/etc/grub.d/40_custom}} をテンプレートとして使って {{ic|/etc/grub.d/nn_custom}} を作成することができます。{{ic|nn}} は優先順位を定義し、スクリプトが実行される順番を示します。スクリプトが実行される順番で grub のブートメニューの場所が決まります。
  
{{Note|{{ic|nn}} should be greater than 06 to ensure necessary scripts are executed first.}}
+
{{Note|最初に必要なスクリプトが実行されるように {{ic|nn}} 06 よりも大きな値にするべきです。}}
  
 
=== UEFI システム ===
 
=== UEFI システム ===
Line 375: Line 375:
 
GRUB を BIOS システムで設定するときと異なり {{ic|grub-install}} コマンドの最後に <device_path> オプション (例: {{ic|/dev/sda}}) を使わないことに注意してください。UEFI のブートローダーは MBR やパーティションのブートセクタを全く使わないので <device_path> が指定されてもインストールスクリプトはそれを無視されます。
 
GRUB を BIOS システムで設定するときと異なり {{ic|grub-install}} コマンドの最後に <device_path> オプション (例: {{ic|/dev/sda}}) を使わないことに注意してください。UEFI のブートローダーは MBR やパーティションのブートセクタを全く使わないので <device_path> が指定されてもインストールスクリプトはそれを無視されます。
  
[[#UEFI 設定ファイルの生成]] と [[#Create GRUB entry in the firmware boot manager]] に従って {{ic|grub.cfg}} ファイルを作成することでシステムを UEFI ブートすることができます。
+
[[#UEFI 設定ファイルの生成]] と [[#ファームウェアのブートマネージャに GRUB エントリを作成する]] に従って {{ic|grub.cfg}} ファイルを作成することでシステムを UEFI ブートすることができます。
  
 
==== UEFI 設定ファイルの生成 ====
 
==== UEFI 設定ファイルの生成 ====
Line 397: Line 397:
 
GRUB がブート中に "no suitable mode found" とエラーを表示するときは、[[#"No suitable mode found" エラー]] を見て下さい。
 
GRUB がブート中に "no suitable mode found" とエラーを表示するときは、[[#"No suitable mode found" エラー]] を見て下さい。
  
==== Create GRUB entry in the firmware boot manager ====
+
==== ファームウェアのブートマネージャに GRUB エントリを作成する ====
  
{{ic|grub-install}} automatically tries to create a menu entry in the boot manager. If it does not, then see [[Beginners' Guide#GRUB]] for instructions to use {{ic|efibootmgr}} to create a menu entry. However, the problem is likely to be that you have not booted your CD/USB in UEFI mode, as in [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO]].
+
{{ic|grub-install}} は自動でブートマネージャにメニューエントリを作成しようとします。作成されないときは、[[Beginners' Guide (日本語)#GRUB]] を参照して {{ic|efibootmgr}} を使ってメニューエントリを作成してください。また、UEFI モードで CD/USB を起動できないような問題については [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO]] を参照してください。
  
==== Create GRUB standalone UEFI application ====
+
==== GRUB の独立 UEFI アプリケーションを作成する ====
  
It is possible to create a {{ic|grubx64_standalone.efi}} application which has all the modules embeddded in a memdisk within the UEFI application, thus removing the need for having a separate directory populated with all the GRUB UEFI modules and other related files. This is done using the {{ic|grub-mkstandalone}} command which is included in {{Pkg|grub}}.
+
全てのモジュールを UEFI アプリケーション内の memdisk に埋め込んだ {{ic|grubx64_standalone.efi}} アプリケーションを作成することができ、これによって GRUB UEFI モジュールやその他関連ファイルが利用するディレクトリを別に持つ必要がなくなります。これを行うには {{Pkg|grub}} に含まれている {{ic|grub-mkstandalone}} コマンドを使います。
  
 
The easiest way to do this would be with the install command already mentioned before, but specifying the modules to include. For example:
 
The easiest way to do this would be with the install command already mentioned before, but specifying the modules to include. For example:
Line 421: Line 421:
 
If you pass {{ic|/home/user/Desktop/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/grub.cfg}}. If you pass {{ic|/home/user/Desktop/boot/grub/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/boot/grub/grub.cfg}}. That is the reason for {{ic|cd}}'ing into {{ic|/home/user/Desktop/boot/grub/}} and passing {{ic|boot/grub/grub.cfg}}, to include the file as {{ic|(memdisk)/boot/grub/grub.cfg}}, which is what {{ic|grub.efi}} expects the file to be.
 
If you pass {{ic|/home/user/Desktop/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/grub.cfg}}. If you pass {{ic|/home/user/Desktop/boot/grub/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/boot/grub/grub.cfg}}. That is the reason for {{ic|cd}}'ing into {{ic|/home/user/Desktop/boot/grub/}} and passing {{ic|boot/grub/grub.cfg}}, to include the file as {{ic|(memdisk)/boot/grub/grub.cfg}}, which is what {{ic|grub.efi}} expects the file to be.
  
You need to create an UEFI Boot Manager entry for {{ic|/boot/efi/EFI/arch_grub/grubx64_standalone.efi}} using {{ic|efibootmgr}}. Follow [[#Create GRUB entry in the Firmware Boot Manager]].
+
{{ic|efibootmgr}} を使って {{ic|/boot/efi/EFI/arch_grub/grubx64_standalone.efi}} の UEFI ブートマネージャエントリを作成する必要があります。[[#ファームウェアのブートマネージャに GRUB エントリを作成する]] に従って下さい。
  
 
==== マルチブート ====
 
==== マルチブート ====
  
===== Microsoft Windows installed in UEFI-GPT mode =====
+
===== UEFI-GPT モードでインストールされた Microsoft Windows =====
  
Find the UUID of the FAT32 filesystem in the UEFI SYSTEM PARTITION where the Windows UEFI Bootloader files reside. For example, if Windows {{ic|bootmgfw.efi}} exists at {{ic|/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi}} (ignore the upper-lower case differences since that is immaterial in FAT filesystem):
+
Windows の UEFI ブートローダーファイルが存在する UEFI SYSTEM PARTITION の FAT32 ファイルシステムの UUID を見つけて下さい。例えば、Windows の {{ic|bootmgfw.efi}} {{ic|/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi}} にある場合 (FAT ファイルシステムでは大文字小文字の違いは無視されます):
  
 
  # grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
 
  # grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Line 435: Line 435:
 
  --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1
 
  --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1
  
Then, add this code to {{ic|/etc/grub.d/40_custom}} to chainload Windows x86_64 (Vista SP1+, 7 or 8) installed in UEFI-GPT mode:
+
次に、UEFI-GPT モードでインストールされた Windows x86_64 (Vista SP1+, 7, 8) をチェインロードするために以下のコードを {{ic|/etc/grub.d/40_custom}} に追加してください:
  
 
  menuentry "Microsoft Windows Vista/7/8 x86_64 UEFI-GPT" {
 
  menuentry "Microsoft Windows Vista/7/8 x86_64 UEFI-GPT" {
Line 446: Line 446:
 
  }
 
  }
  
Afterwards remake {{ic|/boot/grub/grub.cfg}}:
+
その後 {{ic|/boot/grub/grub.cfg}} を再生成してください:
  
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
  # grub-mkconfig -o /boot/grub/grub.cfg
Line 452: Line 452:
 
== 設定 ==
 
== 設定 ==
  
You can also choose to automatically generate or manually edit {{ic|grub.cfg}}.
+
{{ic|grub.cfg}} を自動で生成するか手動で編集するか選ぶことができます。
  
 
{{Note|
 
{{Note|
* For EFI systems, if GRUB was installed with the {{ic|--boot-directory}} option set, the {{ic|grub.cfg}} file must be placed in the same directory as {{ic|grubx64.efi}}. Otherwise, the {{ic|grub.cfg}} file goes in {{ic|/boot/grub/}}, just like in GRUB BIOS
+
* EFI システムでは、{{ic|--boot-directory}} オプションを使って GRUB がインストールされた場合、{{ic|grub.cfg}} ファイルは {{ic|grubx64.efi}} と同じディレクトリにあるはずです。そうでないのなら、GRUB BIOS と同じように {{ic|grub.cfg}} ファイルは {{ic|/boot/grub/}} にあります
* [http://members.iinet.net/~herman546/p20/GRUB2%20Configuration%20File%20Commands.html Here] is a quite complete description of how to configure GRUB
+
* [http://members.iinet.net/~herman546/p20/GRUB2%20Configuration%20File%20Commands.html ここ] GRUB の設定方法のほとんど完璧に近い説明があります。
 
}}
 
}}
  
=== Automatically generating using grub-mkconfig ===
+
=== grub-mkconfig を使って自動で生成する ===
  
The GRUB {{ic|menu.lst}} equivalent configuration files are {{ic|/etc/default/grub}} and {{ic|/etc/grub.d/*}}. {{ic|grub-mkconfig}} uses these files to generate {{ic|grub.cfg}}. By default the script outputs to stdout. To generate a {{ic|grub.cfg}} file run the command:
+
GRUB {{ic|menu.lst}} に同等の設定ファイルが {{ic|/etc/default/grub}} {{ic|/etc/grub.d/*}} です。{{ic|grub-mkconfig}} はこれらのファイルを使って {{ic|grub.cfg}} を生成します。デフォルトではスクリプトは標準出力に出力します。{{ic|grub.cfg}} ファイルを生成するには次のコマンドを実行してください:
  
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
  # grub-mkconfig -o /boot/grub/grub.cfg
Line 469: Line 469:
 
{{Note|If you're trying to do this in a chroot or systemd-nspawn container, you might notice that it doesn't work, complaining that grub-probe can't get the 'canonical path of /dev/sdaX'. In this case, try using arch-chroot as described [https://bbs.archlinux.org/viewtopic.php?pid&#61;1225067#p1225067 here].}}
 
{{Note|If you're trying to do this in a chroot or systemd-nspawn container, you might notice that it doesn't work, complaining that grub-probe can't get the 'canonical path of /dev/sdaX'. In this case, try using arch-chroot as described [https://bbs.archlinux.org/viewtopic.php?pid&#61;1225067#p1225067 here].}}
  
==== Additional arguments ====
+
==== 追加引数 ====
  
To pass custom additional arguments to the Linux image, you can set the {{ic|GRUB_CMDLINE_LINUX}} variable in {{ic|/etc/default/grub}}.
+
カスタムの追加引数を Linux イメージに渡すために、{{ic|/etc/default/grub}} {{ic|GRUB_CMDLINE_LINUX}} 変数を設定することができます。
  
For example, use {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX"</nowiki>}} where {{ic|sda'''X'''}} is your swap partition to enable resume after hibernation.
+
例として、{{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX"</nowiki>}} を使えばハイバネーションからの復帰を有効にできます ({{ic|sda'''X'''}} swap パーティションに置き換えて下さい)。
  
You can also use {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/${swap_uuid}"</nowiki>}}, where {{ic|${swap_uuid} }} is the [[Persistent_block_device_naming|UUID]] of your swap partition.
+
また、{{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/${swap_uuid}"</nowiki>}} を使うこともできます ({{ic|${swap_uuid} }} は swap パーティションの [[Persistent_block_device_naming|UUID]] に置き換えて下さい)。
  
Multiple entries are separated by spaces within the double quotes.  So, for users who want both resume and systemd it would look like this:
+
複数のエントリを使う時はダブルクォートの中でスペースで区切って下さい。 So, for users who want both resume and systemd it would look like this:
 
{{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX init=/usr/lib/systemd/systemd"</nowiki>}}
 
{{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX init=/usr/lib/systemd/systemd"</nowiki>}}
  
See [[Kernel parameters]] for more info.
+
詳しくは [[Kernel parameters (日本語)]] を見て下さい。
  
=== Manually creating grub.cfg ===
+
=== grub.cfg を手動で編集する ===
  
{{Warning|Editing this file is strongly ''not'' recommended. The file is generated by the {{ic|grub-mkconfig}} command, and it is best to edit your {{ic|/etc/default/grub}} or one of the scripts in the {{ic|/etc/grub.d}} folder.}}
+
{{Warning|{{ic|grub.cfg}} ファイルの編集は''非推奨''です。このファイルは {{ic|grub-mkconfig}} コマンドで生成して、{{ic|/etc/default/grub}} や、{{ic|/etc/grub.d}} フォルダ内のスクリプトを編集するのに越したことはありません。}}
  
A basic GRUB config file uses the following options:
+
基本的な GRUB 設定ファイルは以下のオプションを使っています:
 
* {{ic|(hdX,Y)}} is the partition {{ic|Y}} on disk {{ic|X}}, partition numbers starting at 1, disk numbers starting at 0
 
* {{ic|(hdX,Y)}} is the partition {{ic|Y}} on disk {{ic|X}}, partition numbers starting at 1, disk numbers starting at 0
 
* {{ic|1=set default=N}} is the default boot entry that is chosen after timeout for user action
 
* {{ic|1=set default=N}} is the default boot entry that is chosen after timeout for user action
Line 493: Line 493:
 
* {{ic|1=set root=(hdX,Y)}} sets the boot partition, where the kernel and GRUB modules are stored (boot need not be a separate partition, and may simply be a directory under the "root" partition ({{ic|/}})
 
* {{ic|1=set root=(hdX,Y)}} sets the boot partition, where the kernel and GRUB modules are stored (boot need not be a separate partition, and may simply be a directory under the "root" partition ({{ic|/}})
  
An example configuration:
+
設定サンプル:
  
 
{{hc|/boot/grub/grub.cfg|<nowiki>
 
{{hc|/boot/grub/grub.cfg|<nowiki>
Line 529: Line 529:
 
</nowiki>}}
 
</nowiki>}}
  
=== Dual-booting ===
+
=== デュアルブート ===
  
{{Note|If you want GRUB to automatically search for other systems, you may wish to install {{Pkg|os-prober}}.}}
+
{{Note|GRUB に自動で他のシステムを検索してほしい場合は、{{Pkg|os-prober}} をインストールするとよいでしょう。}}
  
==== Using grub-mkconfig ====
+
==== grub-mkconfig を使う ====
 
The best way to add other entries is editing the {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} . The entries in this file will be automatically added when running {{ic|grub-mkconfig}}.
 
The best way to add other entries is editing the {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} . The entries in this file will be automatically added when running {{ic|grub-mkconfig}}.
 
After adding the new lines, run:
 
After adding the new lines, run:
Line 539: Line 539:
 
to generate an updated {{ic|grub.cfg}}.
 
to generate an updated {{ic|grub.cfg}}.
  
===== With GNU/Linux =====
+
===== GNU/Linux とデュアルブート =====
  
 
Assuming that the other distro is on partition {{ic|sda2}}:
 
Assuming that the other distro is on partition {{ic|sda2}}:
Line 549: Line 549:
 
  }
 
  }
  
===== With FreeBSD =====
+
===== FreeBSD とデュアルブート =====
  
 
Requires that FreeBSD is installed on a single partition with UFS. Assuming it is installed on {{ic|sda4}}:
 
Requires that FreeBSD is installed on a single partition with UFS. Assuming it is installed on {{ic|sda4}}:
Line 558: Line 558:
 
  }
 
  }
  
===== With Windows =====
+
===== Windows とデュアルブート =====
  
 
This assumes that your Windows partition is {{ic|sda3}}. Remember you need to point set root and chainloader to the system reserve partition that windows made when it installed, not the actual partition windows is on. This example works if your system reserve partition is {{ic|sda3}}.
 
This assumes that your Windows partition is {{ic|sda3}}. Remember you need to point set root and chainloader to the system reserve partition that windows made when it installed, not the actual partition windows is on. This example works if your system reserve partition is {{ic|sda3}}.
Line 572: Line 572:
 
  drivemap -s hd0 hd2
 
  drivemap -s hd0 hd2
  
==== With Windows via EasyBCD and NeoGRUB ====
+
==== EasyBCD NeoGRUB を使って Windows とデュアルブート ====
  
 
Since EasyBCD's NeoGRUB currently does not understand the GRUB menu format, chainload to it by replacing the contents of your {{ic|C:\NST\menu.lst}} file with lines similar to the following:
 
Since EasyBCD's NeoGRUB currently does not understand the GRUB menu format, chainload to it by replacing the contents of your {{ic|C:\NST\menu.lst}} file with lines similar to the following:
Line 583: Line 583:
 
  kernel      /boot/grub/i386-pc/core.img
 
  kernel      /boot/grub/i386-pc/core.img
  
=== Visual configuration ===
+
=== 外観の設定 ===
  
In GRUB it is possible, by default, to change the look of the menu. Make sure to initialize, if not done already, GRUB graphical terminal, gfxterm, with proper video mode, gfxmode, in GRUB. This can be seen in the section [[#"No suitable mode found" error]]. This video mode is passed by GRUB to the linux kernel via 'gfxpayload' so any visual configurations need this mode in order to be in effect.
+
GRUB には初めからメニューの見た目を変更する機能が備わっています。GRUB で GRUB graphical terminal, gfxterm を適切なビデオモードで初期化できているか確認してください。これについては [[#"No suitable mode found" エラー]] のセクションで説明されています。GRUB から linux カーネルへは 'gfxpayload' を通してビデオモードが渡されるので、外観の変更を適用するにはこのモードが必要になります。
  
==== Setting the framebuffer resolution ====
+
==== フレームバッファの解像度を設定する ====
  
 
GRUB can set the framebuffer for both GRUB itself and the kernel. The old {{ic|1=vga=}} way is deprecated. The preferred method is editing {{ic|/etc/default/grub}} as the following sample:
 
GRUB can set the framebuffer for both GRUB itself and the kernel. The old {{ic|1=vga=}} way is deprecated. The preferred method is editing {{ic|/etc/default/grub}} as the following sample:
Line 632: Line 632:
 
  # reboot
 
  # reboot
  
==== Background image and bitmap fonts ====
+
==== 背景画像とビットマップフォント ====
  
GRUB comes with support for background images and bitmap fonts in {{ic|pf2}} format. The unifont font is included in the {{Pkg|grub}} package under the filename {{ic|unicode.pf2}}, or, as only ASCII characters under the name {{ic|ascii.pf2}}.
+
GRUB は背景画像と {{ic|pf2}} フォーマットのビットマップフォントをサポートしています。{{Pkg|grub}} パッケージに含まれている unifont フォントは {{ic|unicode.pf2}} というファイル名で置いてあり、同じく ASCII 文字は {{ic|ascii.pf2}} という名前です。
  
Image formats supported include tga, png and jpeg, providing the correct modules are loaded. The maximum supported resolution depends on your hardware.
+
サポートされている画像フォーマットは tga, png, jpeg で適切なモジュールがロードされます。利用できる最大解像度はあなたのハードウェアによります。
  
Make sure you have set up the proper [[#Setting the framebuffer resolution|framebuffer resolution]].
+
正しい[[#フレームバッファの解像度を設定する|フレームバッファの解像度]]を設定するようにしてください。
  
Edit {{ic|/etc/default/grub}} like this:
+
{{ic|/etc/default/grub}} を以下のように編集してください:
 
  GRUB_BACKGROUND="/boot/grub/myimage"
 
  GRUB_BACKGROUND="/boot/grub/myimage"
 
  #GRUB_THEME="/path/to/gfxtheme"
 
  #GRUB_THEME="/path/to/gfxtheme"
 
  GRUB_FONT="/path/to/font.pf2"
 
  GRUB_FONT="/path/to/font.pf2"
  
{{Note|If you have installed GRUB on a separate partition, {{ic|/boot/grub/myimage}} becomes {{ic|/grub/myimage}}.}}
+
{{Note|GRUB を分割して別のパーティションにインストールしている場合、{{ic|/boot/grub/myimage}} {{ic|/grub/myimage}} になります。}}
  
To generate the changes and add the information into {{ic|grub.cfg}}, run:  
+
変更を適用して {{ic|grub.cfg}} に情報を追加するには、次を実行して下さい:
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
  # grub-mkconfig -o /boot/grub/grub.cfg
  
If adding the splash image was successful, the user will see {{ic|"Found background image..."}} in the terminal as the command is executed.
+
スプラッシュイメージの追加が成功したのならば、上のコマンドを実行したときに {{ic|"Found background image..."}} と表示されるはずです。
If this phrase is not seen, the image information was probably not incorporated into the {{ic|grub.cfg}} file.
+
この文句が表示されない場合、画像情報はおそらく {{ic|grub.cfg}} ファイルに組み入れられていません。
 
   
 
   
If the image is not displayed, check:
+
画像が表示されないときは、以下をチェックしてください:
* The path and the filename in {{ic|/etc/default/grub}} are correct
+
* {{ic|/etc/default/grub}} に記述したパスとファイル名が正しいか
* The image is of the proper size and format (tga, png, 8-bit jpg)
+
* 画像のサイズとフォーマットは問題ないか (tga, png, 8-bit jpg)
* The image was saved in the RGB mode, and is not indexed
+
* 画像が RGB モードで保存されていて、インデックスは付いていないか
* The console mode is not enabled in {{ic|/etc/default/grub}}
+
* コンソールモードが {{ic|/etc/default/grub}} で無効になっているか
* The command {{ic|grub-mkconfig}} must be executed to place the background image information into the {{ic|/boot/grub/grub.cfg}} file
+
* 背景画像を {{ic|/boot/grub/grub.cfg}} ファイルに入れるために {{ic|grub-mkconfig}} コマンドをちゃんと実行したか
  
==== Theme ====
+
==== テーマ ====
  
Here is an example for configuring Starfield theme which was included in GRUB package.
+
以下は GRUB パッケージに含まれている Starfield テーマを設定する例です。
  
Edit {{ic|/etc/default/grub}}
+
{{ic|/etc/default/grub}} を編集してください:
 
  GRUB_THEME="/usr/share/grub/themes/starfield/theme.txt"
 
  GRUB_THEME="/usr/share/grub/themes/starfield/theme.txt"
  
Generate the changes:
+
変更を適用してください:
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
  # grub-mkconfig -o /boot/grub/grub.cfg
  
If configuring the theme was successful, you will see {{ic|Found theme: /usr/share/grub/themes/starfield/theme.txt}} in the terminal.
+
テーマの設定が成功すると、ターミナルに {{ic|Found theme: /usr/share/grub/themes/starfield/theme.txt}} と表示されます。
Your splash image will usually not be displayed when using a theme.
+
テーマを使っている時は基本的にスプラッシュイメージは表示されません。
  
 
==== Menu colors ====
 
==== Menu colors ====
Line 696: Line 696:
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
  # grub-mkconfig -o /boot/grub/grub.cfg
  
==== Disable framebuffer ====
+
==== フレームバッファの無効化 ====
  
Users who use NVIDIA proprietary driver might wish to disable GRUB's framebuffer as it can cause problems with the binary driver.
+
バイナリドライバーに問題が発生するので NVIDIA のプロプライエタリドライバーを使っているユーザーは GRUB のフレームバッファを無効化するべきです。
  
To disable framebuffer, edit {{ic|/etc/default/grub}} and uncomment the following line:
+
フレームバッファを無効にするには、{{ic|/etc/default/grub}} を編集して次の行をアンコメントしてください:
 
  GRUB_TERMINAL_OUTPUT=console
 
  GRUB_TERMINAL_OUTPUT=console
  
and run:
+
そして次を実行して下さい:
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
  # grub-mkconfig -o /boot/grub/grub.cfg
  
Line 711: Line 711:
 
and rebuild the configuration as before.
 
and rebuild the configuration as before.
  
=== Other Options ===
+
=== 他のオプション ===
  
 
==== LVM ====
 
==== LVM ====
Line 958: Line 958:
 
}}
 
}}
  
=== Booting an ISO directly from GRUB ===
+
=== GRUB から ISO を直接起動する ===
  
Edit {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} to add an entry for the target ISO. When finished, update the GRUB menu as with the usual {{ic|grub-mkconfig -o /boot/grub/grub.cfg}} (as root).
+
{{ic|/etc/grub.d/40_custom}} {{ic|/boot/grub/custom.cfg}} を編集して対象の ISO のエントリを追加してください。編集したら、通常通り {{ic|grub-mkconfig -o /boot/grub/grub.cfg}} (root ) 実行して GRUB メニューを更新してください。
  
 
==== Arch ISO ====
 
==== Arch ISO ====
Line 1,005: Line 1,005:
 
  }
 
  }
  
==== Other ISOs ====
+
==== 他の ISO ====
  
 
Other working configurations from [http://askubuntu.com/questions/141940/how-to-boot-live-iso-images link Source].
 
Other working configurations from [http://askubuntu.com/questions/141940/how-to-boot-live-iso-images link Source].
Line 1,130: Line 1,130:
 
=== "No suitable mode found" エラー ===
 
=== "No suitable mode found" エラー ===
  
If you get this error when booting any menuentry:
+
メニューエントリのどれかを起動したときに以下のエラーが表示される場合:
  
 
  error: no suitable mode found
 
  error: no suitable mode found
 
  Booting however
 
  Booting however
  
Then you need to initialize GRUB graphical terminal ({{ic|gfxterm}}) with proper video mode ({{ic|gfxmode}}) in GRUB. This video mode is passed by GRUB to the linux kernel via 'gfxpayload'. In case of UEFI systems, if the GRUB video mode is not initialized, no kernel boot messages will be shown in the terminal (atleast until KMS kicks in).
+
GRUB の正しいビデオモード ({{ic|gfxmode}}) を使って GRUB グラフィカルターミナル ({{ic|gfxterm}}) を初期化する必要があります。このビデオモードは 'gfxpayload' を使って GRUB から linux カーネルに渡されます。UEFI 環境の場合、GRUB のビデオモードが初期化されないと、端末にカーネルのブートメッセージが (少なくとも KMS が有効になるまで) 全く表示されません。
  
 
Copy {{ic|/usr/share/grub/unicode.pf2}} to ${GRUB_PREFIX_DIR} ({{ic|/boot/grub/}} in case of BIOS and UEFI systems). If GRUB UEFI was installed with {{ic|1=--boot-directory=/boot/efi/EFI}} set, then the directory is {{ic|/boot/efi/EFI/grub/}}:
 
Copy {{ic|/usr/share/grub/unicode.pf2}} to ${GRUB_PREFIX_DIR} ({{ic|/boot/grub/}} in case of BIOS and UEFI systems). If GRUB UEFI was installed with {{ic|1=--boot-directory=/boot/efi/EFI}} set, then the directory is {{ic|/boot/efi/EFI/grub/}}:
Line 1,170: Line 1,170:
 
As you can see for gfxterm (graphical terminal) to function properly, {{ic|unicode.pf2}} font file should exist in {{ic|${GRUB_PREFIX_DIR<nowiki>}</nowiki>}}.
 
As you can see for gfxterm (graphical terminal) to function properly, {{ic|unicode.pf2}} font file should exist in {{ic|${GRUB_PREFIX_DIR<nowiki>}</nowiki>}}.
  
=== msdos-style error message ===
+
=== msdos-style エラーメッセージ ===
  
 
  grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding will not be possible!
 
  grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding will not be possible!
Line 1,177: Line 1,177:
 
  grub-setup: error: If you really want blocklists, use --force.
 
  grub-setup: error: If you really want blocklists, use --force.
  
This error may occur when you try installing GRUB in a VMware container. Read more about it [https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760 here]. It happens when the first partition starts just after the MBR (block 63), without the usual space of 1 MiB (2048 blocks) before the first partition. Read [[#Master Boot Record (MBR) specific instructions]]
+
このエラーは VMware コンテナに GRUB をインストールしようとすると起こることがあります。詳しくは [https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760 ここ] を読んで下さい。最初のパーティションが MBR (ブロック 63) のすぐ後ろから始まっていて、最初のパーティションの前に通常の 1 MiB のスペース (2048 ブロック) がない場合に起こります。[[#Master Boot Record (MBR) 特有の手順]] を読んで下さい。
  
=== GRUB UEFI drops to shell ===
+
=== GRUB UEFI がシェルを起動する ===
  
If GRUB loads but drops you into the rescue shell with no errors, it may be because of a missing or misplaced {{ic|grub.cfg}}. This will happen if GRUB UEFI was installed with {{ic|--boot-directory}} and {{ic|grub.cfg}} is missing OR if the partition number of the boot partition changed (which is hard-coded into the {{ic|grubx64.efi}} file).
+
GRUB がロードしたときにエラーを表示せずにレスキューシェルを起動する場合、おそらく {{ic|grub.cfg}} が存在しなかったり間違った場所に置かれていることが原因です。GRUB UEFI {{ic|--boot-directory}} でインストールして {{ic|grub.cfg}} がなかったり、ブートパーティションのパーティション番号 ({{ic|grubx64.efi}} ファイルにハードコードされています) が変更されているときにこの問題が発生します。
  
 
=== GRUB UEFI not loaded ===
 
=== GRUB UEFI not loaded ===
Line 1,200: Line 1,200:
 
=== Invalid signature ===
 
=== Invalid signature ===
  
If trying to boot Windows results in an "invalid signature" error, e.g. after reconfiguring partitions or adding additional hard drives, (re)move GRUB's device configuration and let it reconfigure:
+
(パーティションを再設定したりハードドライブを追加した後) Windows を起動しようとしたときに "invalid signature" エラーが起こる場合、GRUB のデバイス設定を移動(削除)して再設定してください:
 
  # mv /boot/grub/device.map /boot/grub/device.map-old
 
  # mv /boot/grub/device.map /boot/grub/device.map-old
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
{{ic|grub-mkconfig}} should now mention all found boot options, including Windows. If it works, remove {{ic|/boot/grub/device.map-old}}.
 
{{ic|grub-mkconfig}} should now mention all found boot options, including Windows. If it works, remove {{ic|/boot/grub/device.map-old}}.
  
=== Boot freezes ===
+
=== 起動中にフリーズする ===
  
If booting gets stuck without any error message after GRUB loading the kernel and the initial ramdisk, try removing the {{ic|add_efi_memmap}} kernel parameter.
+
GRUB がカーネルと initial ramdisk をロードした後、エラーを出さずにブートが固まる場合、{{ic|add_efi_memmap}} カーネルパラメータを取り除いてみてください。
  
 
=== GRUB Legacy のリストア ===
 
=== GRUB Legacy のリストア ===
Line 1,229: Line 1,229:
 
  # dd if=/path/to/backup/mbr-boot-code of=/dev/sdX bs=446 count=1
 
  # dd if=/path/to/backup/mbr-boot-code of=/dev/sdX bs=446 count=1
  
=== Arch not found from other OS ===
+
=== 他の OS から Arch が見つからない ===
Some have reported that other distributions have trouble finding Arch Linux automatically with {{ic|os-prober}}. If this problem arises, it has been reported that detection can be improved with the presence of {{ic|/etc/lsb-release}}. This file and updating tool is available with the package {{pkg|lsb-release}} in the [[Official Repositories|official repositories]].
+
 
 +
他のディストリビューションで {{ic|os-prober}} を使って Arch Linux を自動的に検索できないという報告が複数確認されています。この問題が発生する場合、{{ic|/etc/lsb-release}} をおくことで検知が改善されると報告されています。このファイルと更新ツールは[[Official Repositories (日本語)|公式リポジトリ]]にある {{pkg|lsb-release}} パッケージから利用可能です。
  
 
== 資料 ==
 
== 資料 ==

Revision as of 17:05, 1 September 2013

zh-CN:GRUB2 zh-TW:GRUB2 Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki - BURG は GRUB v2 をベースにした全く新しいブートローダーです。幅広い OS で使うことができ、テキスト・グラフィックモードで動く、細かく設定可能なメニューシステムを持っています。 Template:Article summary wiki - 前のバージョンで、今はサポートされていません。 Template:Article summary heading Template:Article summary wiki Template:Article summary link Template:Article summary end

GRUB - GRUB Legacy と混同しないでください - は次世代の GRand Unified Bootloader です。GRUB Legacy の後継の研究開発プロジェクト PUPA から GRUB は作られています。全てを整理するため GRUB はスクラッチから書きなおされモジュール性とポータビリティを獲得しました [1]

手短に言えば、ブートローダーはコンピューターが起動した時に最初に走るソフトウェアプログラムです。Linux カーネルのロードとコントロールの移譲を担当しています。そして、カーネルはオペレーションシステムの他全てを初期化します。

Contents

前置き

  • GRUB という名前は公式でソフトウェアのバージョン2を示しています、[2] を見て下さい。古いバージョンについての記事は GRUB Legacy を見て下さい。
  • GRUB は root で (/boot ファイルシステムを分割しないで) Btrfs を使った zlib や LZO による圧縮をサポートしています。

GRUB Legacy ユーザーへのメモ

  • GRUB Legacy から GRUB へのアップグレードはで書かれている GRUB のフレッシュインストールとほとんど同じです。
  • GRUB Legacy と GRUB ではコマンドが異なります。先に進む前に GRUB commands を確認してください (例: "find" は "search" に置き換わっています)。
  • 今の GRUB はモジュール式であり "stage 1.5" を必要としません。そのため、ブートローダー自体の機能は限定的です -- 拡張機能の必要に応じてハードドライブからモジュールがロードされます (例: RAID サポートや LVM)
  • デバイスの命名規則が GRUB Legacy と GRUB で変わっています。パーティションは0ではなく1から番号付けされ、ドライブは0から番号が始まり、パーティションテーブルのタイプが前に付きます。例えば、/dev/sda1(hd0,msdos1) (MBR) や (hd0,gpt1) (GPT) と表記されます。
  • systemd-sysvcompat を使わずに systemd を利用していて、昔の grub の menu.lst に init=/usr/lib/systemd/systemd が存在する場合、自動的に生成される grub.cfg ファイルはこのカーネルパラメータを持ち越さないかもしれません (起動時に "ERROT: Root device mounted successfully, but /sbin/init does not exist" と表示されます)。この場合、grub がエラーを出した Arch Linux エントリを編集して、init=/usr/lib/systemd/systemd をカーネルパラメータに追加し、それを永続化させてください
  • GRUB は GRUB legacy よりもかなり大きくなっています (/boot に ~13 MB は占領します)。分割された /boot パーティションから起動している状態で、このパーティションが 32MB よりも小さい場合、ディスク容量の問題が起こったり、pacman が新しいカーネルのインストールを拒否したりします。システムの再パーティショニングをしたいときは、Syslinux に切り替えてください、容量が少なくてすみます (/boot に ~1.5 MB ほど取ります)。

重要なデータのバックアップ

GRUB のインストールはスムーズに行われるべきですが、GRUB v2 にアップグレードする前に GRUB Legacy のファイルを保持しておくことを強く推奨します。

# mv /boot/grub /boot/grub-legacy

ブートコードやパーティションテーブルを含んでいる MBR をバックアップするには (/dev/sdX は実際のディスクパスに置き換えてください):

# dd if=/dev/sdX of=/path/to/backup/mbr_backup bs=512 count=1

MBR の446バイトにはブートコードが含まれていて、次の64バイトにはパーティションテーブルが含まれています。リストアする際にパーティションテーブルを上書きしたくない場合は、MBR ブートコードだけをバックアップすることを推奨します:

# dd if=/dev/sdX of=/path/to/backup/bootcode_backup bs=446 count=1

GRUB2 を正しくインストールできないときは、#GRUB Legacy のリストア を見て下さい。

事前の注意事項

BIOS システム

GUID Partition Table (GPT) 特有の手順

GPT でパーティションされたシステムには core.img を埋め込むための MBR の隙間の領域がないので (GPT のプライマリヘッダーやプライマリパーティションテーブルに使われます)、BIOS-GPT の GRUB 設定では BIOS boot partition が必要になります。このパーティションは BIOS-GPT 環境の GRUB でだけ使われます。MBR パーティションではそのようなパーティションのタイプは存在しません (少なくとも GRUB にはありません)。システムが UEFI を使っている時も (ブートセクタの埋め込みがないので)、このパーティションは必要ありません。

BIOS-GPT 設定では gdisk, cgdisk, GNU Parted などを使って、ディスクの最初にファイルシステムのない 1007 KiB のパーティションを作成してください。1007 KiB という容量によって次に続くパーティションを 1024 KiB に正しくアライメントすることができます。必要であれば、ディスクの他の場所にこのパーティションを配置することもできますが、先頭の 2TiB の領域内である必要があります。パーティションタイプは (c)gdisk では ef02 に GNU Parted では set <BOOT_PART_NUM> bios_grub on に設定してください。

Note:
  • このパーティションは grub-installgrub-setup を実行する前に作成しておく必要があります
  • 他の全てのパーティションの後にこのパーティションを作成する場合、gdisk では容量の消費が一番少ない場所 (セクター 34-2047) にしか作成できません。なぜなら gdisk はパーティションを出来る限り 2048 セクター境界に自動アライメントするからです
Master Boot Record (MBR) 特有の手順

通常 MBR でパーティションされた環境において MBR の後の隙間 (512バイトの MBR 領域の後ろで最初のパーティションの前) は 31 KiB になっていて、このパーティションテーブルでは DOS 互換のシリンダー・アライメントは問題になりません。しかしながら GRUB の core.img 用に十分な領域を確保するため 1 から 2 MiB ほど MBR の後の領域をとることを推奨します (FS#24103)。この領域を獲得したり他の 512 バイトでないセクターの問題を起こさないために (core.img の埋め込みとは関係ありません) 1 MiB パーティション・アライメントをサポートしているパーティションツールを使うのが得策です。

UEFI システム

Note: UEFI, GPT, UEFI Bootloaders のページをよく読んでおいてください。
UEFI System Partition を作成・マウントする

Unified Extensible Firmware Interface#EFI System Partition に書かれた手順に従って UEFI System Partition を作成してください。そして /boot/efi に UEFI System Partition at /boot/efi をマウントしてください。他のマウントポイントに UEFI System Partition をマウントしている場合は、下の手順で /boot/efi とマウントポイントを置き換えてください:

# mkdir -p /boot/efi
# mount -t vfat <UEFI_SYSTEM_PARTITION> /boot/efi

/boot/efi/EFI ディレクトリを作成してください:

# mkdir /boot/efi/EFI

インストール

BIOS システム

公式リポジトリ にある grub パッケージから GRUB をインストールできます。grub-legacy がインストールされている場合は置き換えられます。

Note: パッケージをインストールするだけでは /boot/grub/i386-pc/core.img ファイルや /boot/grub/i386-pc 内の GRUB モジュールは更新されません。下で説明されているように grub-install を使って手動でアップデートする必要があります。

ブートファイルをインストール

BIOS ブートで GRUB ブートファイルをインストールする方法は3つあります:

GPT BIOS boot partition にインストールする

GUID Partition Table のディスクは予約された "ブートトラック" を持っていません。そのため GRUB core イメージを保持する BIOS Boot Partition (ef02) を作成する必要があります。

GNU Parted を使って、以下のようなコマンドで設定することができます:

# parted /dev/disk set <partition-number> bios_grub on

gdisk を使っている場合、パーティションのタイプを ef02 に設定してください。GUID を直接設定する必要があるパーティショニングプログラムでは、‘21686148-6449-6e6f-744e656564454649’ (もしくは Hah!IdontNeedEFI) が GUID です。

Warning: パーティションを BIOS Boot Partition と決めるときはどのパーティションが選択されているかに注意してください。インストール中 GRUB が BIOS Boot Partition を見つけた時、自動的にパーティションを上書きします。パーティションに何もデータが入っていないことを確認してください。

GPT ディスクで grub をセットアップするには、/boot/grub ディレクトリを作り、/boot/grub/i386-pc/core.img ファイルを生成して、それを BIOS Boot Partition に埋め込みます、以下を実行してください:

# modprobe dm-mod
# grub-install --target=i386-pc --recheck --debug /dev/sda

/dev/sda はインストール先に置き換えて下さい。

下の #設定ファイルの生成 に進んで下さい。

440バイトの MBR ブートコード領域にインストールする

440バイトの Master Boot Record ブートコード領域に grub をセットアップするには、/boot/grub ディレクトリを作り、/boot/grub/i386-pc/core.img ファイルを生成して、それを 31 KiB の (最低限の容量 - パーティションのアライメントによって変化します) MBR の後の領域に埋め込み、設定ファイルを生成します、以下を実行してください:

# modprobe dm-mod
# grub-install --recheck /dev/sdX

/dev/sdX はインストール先に置き換えて下さい (この場合最初の SATA ディスクの MBR)。/bootLVM を使う場合、複数の物理ディスクに GRUB をインストールできます。

Warning: 後者を使う時は /boot ディレクトリを確認してください。たまに boot-directory パラメータが /boot の中にもうひとつ /boot フォルダを作ることがあります。次のように表示されたら間違ったインストールがなされます: /boot/boot/grub/

下の #設定ファイルの生成 に進んで下さい。

パーティションやパーティションレスディスクにインストールする
Note: GRUB does not encourage installation to a partition boot sector or a partitionless disk like GRUB Legacy or Syslinux does. This kind of setup is prone to breakage, especially during updates, and is not supported by Arch devs.

パーティションブートセクタや、パーティションレスディスク (別名 superfloppy) やフロッピーディスクに grub をセットアップするには、以下を実行してください (/boot パーティションを /dev/sdaX として例にしています):

# modprobe dm-mod
# chattr -i /boot/grub/i386-pc/core.img
# grub-install --target=i386-pc --recheck --debug --force /dev/sdaX
# chattr +i /boot/grub/i386-pc/core.img

--force オプションを使ってブロックリストを利用する必要があります --grub-setup=/bin/true は使えません (core.img を生成するだけと同じです)。

grub-install will give out warnings like which should give you the idea of what might go wrong with this approach:

/sbin/grub-setup: warn: Attempting to install GRUB to a partitionless disk or to a partition. This is a BAD idea.
/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. 
                        However, blocklists are UNRELIABLE and their use is discouraged.

--force がないと下のエラーが表示され grub-setup はパーティションブートセクタにブートコードを設定しません:

/sbin/grub-setup: error: will not proceed with blocklists

--force をつければ次のように表示されるはずです:

Installation finished. No error reported.

The reason why grub-setup does not by default allow this is because in case of partition or a partitionless disk is that grub relies on embedded blocklists in the partition bootsector to locate the /boot/grub/i386-pc/core.img file and the prefix dir /boot/grub. The sector locations of core.img may change whenever the filesystem in the partition is being altered (files copied, deleted etc.). For more info see https://bugzilla.redhat.com/show_bug.cgi?id=728742 and https://bugzilla.redhat.com/show_bug.cgi?id=730915.

The workaround for this is to set the immutable flag on /boot/grub/i386-pc/core.img (using chattr command as mentioned above) so that the sector locations of the core.img file in the disk is not altered. The immutable flag on /boot/grub/i386-pc/core.img needs to be set only if grub is installed to a partition boot sector or a partitionless disk, not in case of installation to MBR or simple generation of core.img without embedding any bootsector (mentioned above).

下の #設定ファイルの生成 に進んで下さい。

core.img だけを生成する

grub のブートセクタコードを MBR, MBR の後の隙間またはパーティションのブートセクタに埋め込まずに /boot/grub ディレクトリを作成して /boot/grub/i386-pc/core.img ファイルを生成するには、grub-install--grub-setup=/bin/true を加えて下さい:

# modprobe dm-mod
# grub-install --target=i386-pc --grub-setup=/bin/true --recheck --debug /dev/sda

これで Linux カーネルやマルチブートカーネルとして GRUB Legacy や syslinux から GRUB の core.img をチェインロードできます。

設定ファイルの生成

最後に、GRUB の設定を生成してください (設定については設定セクションで詳しく説明しています):

# grub-mkconfig -o /boot/grub/grub.cfg
Note: このファイルのパスは /boot/grub/grub.cfg です、/boot/grub/i386-pc/grub.cfg ではありません。

GRUB がブート中に "no suitable mode found" とエラーを表示するときは、#"No suitable mode found" エラー を見て下さい。

grub-mkconfig が失敗する場合、次のコマンドで /boot/grub/menu.lst ファイルを /boot/grub/grub.cfg に変換してください:

# grub-menulst2cfg /boot/grub/menu.lst /boot/grub/grub.cfg

例えば:

/boot/grub/menu.lst
default=0
timeout=5

title  Arch Linux Stock Kernel
root   (hd0,0)
kernel /vmlinuz-linux root=/dev/sda2 ro
initrd /initramfs-linux.img

title  Arch Linux Stock Kernel Fallback
root   (hd0,0)
kernel /vmlinuz-linux root=/dev/sda2 ro
initrd /initramfs-linux-fallback.img
/boot/grub/grub.cfg
set default='0'; if [ x"$default" = xsaved ]; then load_env; set default="$saved_entry"; fi
set timeout=5

menuentry 'Arch Linux Stock Kernel' {
  set root='(hd0,1)'; set legacy_hdbias='0'
  legacy_kernel   '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'
  legacy_initrd '/initramfs-linux.img' '/initramfs-linux.img'
  
}

menuentry 'Arch Linux Stock Kernel Fallback' {
  set root='(hd0,1)'; set legacy_hdbias='0'
  legacy_kernel   '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'
  legacy_initrd '/initramfs-linux-fallback.img' '/initramfs-linux-fallback.img'
}

GRUB の /boot/grub/grub.cfg 設定ファイルを作るのを忘れて、再起動したら GRUB のコマンドシェルが表示された場合、以下を入力してください:

sh:grub> insmod legacycfg
sh:grub> legacy_configfile ${prefix}/menu.lst

Arch で起動して正しい GRUB /boot/grub/grub.cfg 設定ファイルを再生成してください。

Note: このオプションは BIOS システムでだけ機能します、UEFI システムでは動きません。

マルチブート

追加のユーティリティをインストールすれば、すぐに動かすことができます: os-prober。パッケージをインストールして、grub-mkconfig -o /boot/grub/grub.cfg を再度実行してください。失敗する場合は、下の説明を見て手動でエントリを加えて下さい。

Note: Windows が見つからない時は、Windows の boot パーティションをマウントしてみてください
BIOS-MBR モードでインストールされた Microsoft Windows
Note: GRUB は bootmgr の直接起動をサポートしており、もはや BIOS-MBR 環境で Windows を起動するためにパーティションブートセクタのチェインロードをする必要はありません。
Warning: bootmgr が存在するのはシステムパーティションであり、"実際に使っている" Windows のパーティション (一般的に C:) ではありません。blkid で全ての UUID を表示した際、システムパーティションは LABEL="SYSTEM RESERVED" のパーティションであり容量はほんの 100 MB (Arch の boot パーティションとほぼ同じ大きさ) です。詳細は Wikipedia:System partition and boot partition を参照してください。

このセクションでは、あなたの Windows パーティションは /dev/sda1 だと仮定しています。違うパーティションを使っている場合は全ての hd0,msdos1 を修正しなくてはなりません。最初に、bootmgr と関連ファイルがある Windows のシステムパーティションの NTFS ファイルシステムの UUID を見つけて下さい。例えば、Windows の bootmgr/media/SYSTEM_RESERVED/bootmgr に存在する場合:

Windows Vista/7/8 では:

# grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr
69B235F6749E84CE
# grub-probe --target=hints_string /media/SYSTEM_RESERVED/bootmgr
--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
Note: Windows XP では、上記のコマンドにある bootmgrNTLDR に置き換えて下さい。さらに、SYSTEM_RESERVED パーティションは存在しない可能性があることに注意してください; あなたの Windows パーティション上に NTLDR ファイルがないか調べて下さい。

次に、BIOS-MBR モードでインストールされた Windows (XP, Vista, 7, 8) を起動するために下のコードを /etc/grub.d/40_custom/boot/grub/custom.cfg に追加して、上で説明したように grub-mkconfig を使って grub.cfg を再生成してください:

Windows Vista/7/8 では:

menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {
  insmod part_msdos
  insmod ntfs
  insmod search_fs_uuid
  insmod ntldr     
  search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
  ntldr /bootmgr
}

Windows XP では:

menuentry "Microsoft Windows XP" {
  insmod part_msdos
  insmod ntfs
  insmod search_fs_uuid
  insmod ntldr     
  search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
   ntldr /ntldr
}
Note: たまに (Windows 8 で GRUB をインストールした場合など)、\boot\bcd でエラーが起こって Windows を起動できなくなることがあります (エラーコード 0xc000000f)。Windows の回復コンソール (インストールディスクから cmd) を使って以下を実行することで修復することが可能です:
x:\> "bootrec.exe /fixboot" 
x:\> "bootrec.exe /RebuildBcd".
Warning: "bootrec.exe /Fixmbr" を使わないで下さい GRUB が消去されてしまいます。

/etc/grub.d/40_custom をテンプレートとして使って /etc/grub.d/nn_custom を作成することができます。nn は優先順位を定義し、スクリプトが実行される順番を示します。スクリプトが実行される順番で grub のブートメニューの場所が決まります。

Note: 最初に必要なスクリプトが実行されるように nn は 06 よりも大きな値にするべきです。

UEFI システム

Note: それぞれのマザーボードの製造者によって UEFI は別々に実装されているということは有名です。 Users experiencing problems getting Grub/EFI to work properly are encouraged to share detailed steps for hardware-specific cases where UEFI booting does not work as described below. In an effort to keep the parent GRUB article neat and tidy, see the GRUB EFI Examples page for these special cases.

最初に grub パッケージをインストールして、それから下の手順に従って下さい。

Note: パッケージをインストールするだけでは core.efi ファイルや UEFI System Partition 内の GRUB モジュールは更新されません。下で説明されているように grub-install を使って手動でアップデートする必要があります。

ブートファイルのインストール

UEFI system partition にインストールする
Note:
  • 下のコマンドでは GRUB を x86_64-efi でインストールすると仮定しています (IA32-efi を使うのなら下のコマンドの x86_64i386 に置き換えて下さい)。
  • インストールを行うために、BIOS ではなく UEFI を使って起動する必要があります。ISO ファイルを USB ドライブにコピーして起動した場合、このガイドに従ってください、そうしないと grub-install はエラーを出します。

GRUB のインストールスクリプトが UEFI system partition を検知するように UEFI system partition を /boot/efi/ にマウントしてください:

# mkdir -p /boot/efi
# mount -t vfat /dev/sdXY /boot/efi

以下のコマンドを実行して GRUB UEFI アプリケーションを /boot/efi/EFI/arch_grub に、GRUB のモジュールを /boot/grub/x86_64-efi (推奨) にインストールしてください:

# modprobe dm-mod
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug
Note: --target--directory オプションがないと、grub-install は GRUB がインストールされるファームウェアがどれか決められません。そのような場合 grub-installsource_dir does not exist. Please specify --target or --directory というメッセージを表示します。

GRUB モジュールと grub.cfg/boot/efi/EFI/grub ディレクトリに grubx64.efi アプリケーションを /boot/efi/EFI/arch_grub にインストールしたい (つまり全ての GRUB UEFI ファイルを UEFISYS partition に収める) 場合は以下を使って下さい:

# modprobe dm-mod 
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI --recheck --debug

--efi-directory オプションは UEFI SYSTEM PARTITION のマウントポイントを、--bootloader-idgrubx64.efi ファイルの保存に使われるディレクトリの名前を、--boot-directory は実際にモジュールがインストールされる (そして grub.cfg を作成する) ディレクトリをそれぞれ指定します。

実際のパスは:

<efi-directory>/<EFI or efi>/<bootloader-id>/grubx64.efi
<boot-directory>/grub/x86_64-efi/<all modules, grub.efi, core.efi, grub.cfg>
Note: --bootloader-id オプションは <boot-directory>/grub を変更しません、つまりモジュールを <boot-directory>/<bootloader-id> にインストールすることはできません、このパスは <boot-directory>/grub に固定されています。

--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=grub は:

<efi-directory>/<EFI or efi>/<bootloader-id> == <boot-directory>/grub == /boot/efi/EFI/grub

--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=arch_grub は:

<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/arch_grub
<boot-directory>/grub == /boot/efi/EFI/grub

--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=arch_grub は:

<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/arch_grub
<boot-directory>/grub == /boot/grub

--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=grub は:

<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/grub
<boot-directory>/grub == /boot/grub

<efi-directory>/<EFI or efi>/<bootloader-id>/grubx64.efi<boot-directory>/grub/x86_64-efi/core.efi と全く同じです。

Note:
  • GRUB 2.00 では grub-install のオプション --efi-directory--root-directory を置き換えます、後者は使われなくなりました。
  • オプション --efi-directory--bootloader-id は GRUB UEFI 専用です。

どんな場合でも grub-installgrubx64.efi を UEFI SYSTEM PARTITION の中にインストールするために UEFI SYSTEM PARTITION をマウントする必要があり、それによってファームウェアから起動されます (using the efibootmgr created boot entry in non-Mac systems)。

GRUB を BIOS システムで設定するときと異なり grub-install コマンドの最後に <device_path> オプション (例: /dev/sda) を使わないことに注意してください。UEFI のブートローダーは MBR やパーティションのブートセクタを全く使わないので <device_path> が指定されてもインストールスクリプトはそれを無視されます。

#UEFI 設定ファイルの生成#ファームウェアのブートマネージャに GRUB エントリを作成する に従って grub.cfg ファイルを作成することでシステムを UEFI ブートすることができます。

UEFI 設定ファイルの生成

最後に、GRUB の設定を生成してください (設定については設定セクションで詳しく説明しています):

# grub-mkconfig -o <boot-directory>/grub/grub.cfg
Note: このファイルのパスは <boot-directory>/grub/grub.cfg です、<boot-directory>/grub/x86_64-efi/grub.cfg ではありません。

--boot-directory=/boot を使った場合:

# grub-mkconfig -o /boot/grub/grub.cfg

--boot-directory=/boot/efi/EFI を使った場合:

# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg

パスは --bootloader-id オプションの値とは無関係です。

GRUB がブート中に "no suitable mode found" とエラーを表示するときは、#"No suitable mode found" エラー を見て下さい。

ファームウェアのブートマネージャに GRUB エントリを作成する

grub-install は自動でブートマネージャにメニューエントリを作成しようとします。作成されないときは、Beginners' Guide (日本語)#GRUB を参照して efibootmgr を使ってメニューエントリを作成してください。また、UEFI モードで CD/USB を起動できないような問題については Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO を参照してください。

GRUB の独立 UEFI アプリケーションを作成する

全てのモジュールを UEFI アプリケーション内の memdisk に埋め込んだ grubx64_standalone.efi アプリケーションを作成することができ、これによって GRUB UEFI モジュールやその他関連ファイルが利用するディレクトリを別に持つ必要がなくなります。これを行うには grub に含まれている grub-mkstandalone コマンドを使います。

The easiest way to do this would be with the install command already mentioned before, but specifying the modules to include. For example:

# grub-mkstandalone --directory="/usr/lib/grub/x86_64-efi/" --format="x86_64-efi" --compression="xz" \
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" <any extra files you want to include>

The grubx64_standalone.efi file expects grub.cfg to be within its $prefix which is (memdisk)/boot/grub. The memdisk is embedded within the EFI app. The grub-mkstandlone script allow passing files to be included in the memdisk image to be as the arguments to the script (in <any extra files you want to include>).

If you have the grub.cfg at /home/user/Desktop/grub.cfg, then create a temporary /home/user/Desktop/boot/grub/ directory, copy the /home/user/Desktop/grub.cfg to /home/user/Desktop/boot/grub/grub.cfg, cd into /home/user/Desktop/boot/grub/ and run:

# grub-mkstandalone --directory="/usr/lib/grub/x86_64-efi/" --format="x86_64-efi" --compression="xz" \
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" "boot/grub/grub.cfg"

The reason to cd into /home/user/Desktop/boot/grub/ and to pass the file path as boot/grub/grub.cfg (notice the lack of a leading slash - boot/ vs. /boot/ ) is because dir1/dir2/file is included as (memdisk)/dir1/dir2/file by the grub-mkstandalone script.

If you pass /home/user/Desktop/grub.cfg the file will be included as (memdisk)/home/user/Desktop/grub.cfg. If you pass /home/user/Desktop/boot/grub/grub.cfg the file will be included as (memdisk)/home/user/Desktop/boot/grub/grub.cfg. That is the reason for cd'ing into /home/user/Desktop/boot/grub/ and passing boot/grub/grub.cfg, to include the file as (memdisk)/boot/grub/grub.cfg, which is what grub.efi expects the file to be.

efibootmgr を使って /boot/efi/EFI/arch_grub/grubx64_standalone.efi の UEFI ブートマネージャエントリを作成する必要があります。#ファームウェアのブートマネージャに GRUB エントリを作成する に従って下さい。

マルチブート

UEFI-GPT モードでインストールされた Microsoft Windows

Windows の UEFI ブートローダーファイルが存在する UEFI SYSTEM PARTITION の FAT32 ファイルシステムの UUID を見つけて下さい。例えば、Windows の bootmgfw.efi/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi にある場合 (FAT ファイルシステムでは大文字小文字の違いは無視されます):

# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
1ce5-7f28
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1

次に、UEFI-GPT モードでインストールされた Windows x86_64 (Vista SP1+, 7, 8) をチェインロードするために以下のコードを /etc/grub.d/40_custom に追加してください:

menuentry "Microsoft Windows Vista/7/8 x86_64 UEFI-GPT" {
  insmod part_gpt
  insmod fat
  insmod search_fs_uuid
  insmod chain
  search --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
  chainloader /efi/Microsoft/Boot/bootmgfw.efi
}

その後 /boot/grub/grub.cfg を再生成してください:

# grub-mkconfig -o /boot/grub/grub.cfg

設定

grub.cfg を自動で生成するか手動で編集するか選ぶことができます。

Note:
  • EFI システムでは、--boot-directory オプションを使って GRUB がインストールされた場合、grub.cfg ファイルは grubx64.efi と同じディレクトリにあるはずです。そうでないのなら、GRUB BIOS と同じように grub.cfg ファイルは /boot/grub/ にあります
  • ここ に GRUB の設定方法のほとんど完璧に近い説明があります。

grub-mkconfig を使って自動で生成する

GRUB の menu.lst に同等の設定ファイルが /etc/default/grub/etc/grub.d/* です。grub-mkconfig はこれらのファイルを使って grub.cfg を生成します。デフォルトではスクリプトは標準出力に出力します。grub.cfg ファイルを生成するには次のコマンドを実行してください:

# grub-mkconfig -o /boot/grub/grub.cfg

/etc/grub.d/10_linux is set to automatically add menu items for Arch linux that work out of the box, to any generated configuration. Other operating systems may need to be added manually to /etc/grub.d/40_custom or /boot/grub/custom.cfg

Note: If you're trying to do this in a chroot or systemd-nspawn container, you might notice that it doesn't work, complaining that grub-probe can't get the 'canonical path of /dev/sdaX'. In this case, try using arch-chroot as described here.

追加引数

カスタムの追加引数を Linux イメージに渡すために、/etc/default/grubGRUB_CMDLINE_LINUX 変数を設定することができます。

例として、GRUB_CMDLINE_LINUX="resume=/dev/sdaX" を使えばハイバネーションからの復帰を有効にできます (sdaX は swap パーティションに置き換えて下さい)。

また、GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/${swap_uuid}" を使うこともできます (${swap_uuid} は swap パーティションの UUID に置き換えて下さい)。

複数のエントリを使う時はダブルクォートの中でスペースで区切って下さい。 So, for users who want both resume and systemd it would look like this: GRUB_CMDLINE_LINUX="resume=/dev/sdaX init=/usr/lib/systemd/systemd"

詳しくは Kernel parameters (日本語) を見て下さい。

grub.cfg を手動で編集する

Warning: grub.cfg ファイルの編集は非推奨です。このファイルは grub-mkconfig コマンドで生成して、/etc/default/grub や、/etc/grub.d フォルダ内のスクリプトを編集するのに越したことはありません。

基本的な GRUB 設定ファイルは以下のオプションを使っています:

  • (hdX,Y) is the partition Y on disk X, partition numbers starting at 1, disk numbers starting at 0
  • set default=N is the default boot entry that is chosen after timeout for user action
  • set timeout=M is the time M to wait in seconds for a user selection before default is booted
  • menuentry "title" {entry options} is a boot entry titled title
  • set root=(hdX,Y) sets the boot partition, where the kernel and GRUB modules are stored (boot need not be a separate partition, and may simply be a directory under the "root" partition (/)

設定サンプル:

/boot/grub/grub.cfg
# Config file for GRUB - The GNU GRand Unified Bootloader
# /boot/grub/grub.cfg

# DEVICE NAME CONVERSIONS
#
#  Linux           Grub
# -------------------------
#  /dev/fd0        (fd0)
#  /dev/sda        (hd0)
#  /dev/sdb2       (hd1,2)
#  /dev/sda3       (hd0,3)
#

# Timeout for menu
set timeout=5

# Set default boot entry as Entry 0
set default=0

# (0) Arch Linux
menuentry "Arch Linux" {
  set root=(hd0,1)
  linux /vmlinuz-linux root=/dev/sda3 ro
  initrd /initramfs-linux.img
}

## (1) Windows
#menuentry "Windows" {
#  set root=(hd0,3)
#  chainloader +1
#}

デュアルブート

Note: GRUB に自動で他のシステムを検索してほしい場合は、os-prober をインストールするとよいでしょう。

grub-mkconfig を使う

The best way to add other entries is editing the /etc/grub.d/40_custom or /boot/grub/custom.cfg . The entries in this file will be automatically added when running grub-mkconfig. After adding the new lines, run:

# grub-mkconfig -o /boot/grub/grub.cfg 

to generate an updated grub.cfg.

GNU/Linux とデュアルブート

Assuming that the other distro is on partition sda2:

menuentry "Other Linux" {
  set root=(hd0,2)
  linux /boot/vmlinuz (add other options here as required)
  initrd /boot/initrd.img (if the other kernel uses/needs one)
}
FreeBSD とデュアルブート

Requires that FreeBSD is installed on a single partition with UFS. Assuming it is installed on sda4:

menuentry "FreeBSD" {
  set root=(hd0,4)
  chainloader +1
}
Windows とデュアルブート

This assumes that your Windows partition is sda3. Remember you need to point set root and chainloader to the system reserve partition that windows made when it installed, not the actual partition windows is on. This example works if your system reserve partition is sda3.

# (2) Windows XP
menuentry "Windows XP" {
  set root="(hd0,3)"
  chainloader +1
}

If the Windows bootloader is on an entirely different hard drive than GRUB, it may be necessary to trick Windows into believing that it is the first hard drive. This was possible with drivemap. Assuming GRUB is on hd0 and Windows is on hd2, you need to add the following after set root:

drivemap -s hd0 hd2

EasyBCD や NeoGRUB を使って Windows とデュアルブート

Since EasyBCD's NeoGRUB currently does not understand the GRUB menu format, chainload to it by replacing the contents of your C:\NST\menu.lst file with lines similar to the following:

default 0
timeout 1
title       Chainload into GRUB v2
root        (hd0,7)
kernel      /boot/grub/i386-pc/core.img

外観の設定

GRUB には初めからメニューの見た目を変更する機能が備わっています。GRUB で GRUB graphical terminal, gfxterm を適切なビデオモードで初期化できているか確認してください。これについては #"No suitable mode found" エラー のセクションで説明されています。GRUB から linux カーネルへは 'gfxpayload' を通してビデオモードが渡されるので、外観の変更を適用するにはこのモードが必要になります。

フレームバッファの解像度を設定する

GRUB can set the framebuffer for both GRUB itself and the kernel. The old vga= way is deprecated. The preferred method is editing /etc/default/grub as the following sample:

GRUB_GFXMODE=1024x768x32
GRUB_GFXPAYLOAD_LINUX=keep

To generate the changes, run:

# grub-mkconfig -o /boot/grub/grub.cfg

The gfxpayload property will make sure the kernel keeps the resolution.

Note:
  • If this example does not work for you try to replace gfxmode="1024x768x32" by vbemode="0x105". Remember to replace the specified resolution with one suitable for your screen
  • To show all the modes you can use # hwinfo --framebuffer (hwinfo is available in [community]), while at GRUB prompt you can use the vbeinfo command

If this method does not work for you, the deprecated vga= method will still work. Just add it next to the "GRUB_CMDLINE_LINUX_DEFAULT=" line in /etc/default/grub for eg: "GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792" will give you a 1024x768 resolution.

You can choose one of these resolutions: 640×480, 800×600, 1024×768, 1280×1024, 1600×1200, 1920×1200

915resolution hack

Some times for Intel graphic adapters neither # hwinfo --framebuffer nor vbeinfo will show you the desired resolution. In this case you can use 915resolution hack. This hack will temporarily modify video BIOS and add needed resolution. See 915resolution's home page

First you need to find a video mode which will be modified later. For that we need the GRUB command shell:

sh:grub> 915resolution -l
Intel 800/900 Series VBIOS Hack : version 0.5.3
[...]
Mode 30 : 640x480, 8 bits/pixel
[...]

Next, we overwrite the Mode 30 with 1440x900 resolution:

/etc/grub.d/00_header
[...]
915resolution 30 1440 900  # Inserted line
set gfxmode=${GRUB_GFXMODE}
[...]

Lastly we need to set GRUB_GFXMODE as described earlier, regenerate GRUB configuration file and reboot to test changes:

# grub-mkconfig -o /boot/grub/grub.cfg
# reboot

背景画像とビットマップフォント

GRUB は背景画像と pf2 フォーマットのビットマップフォントをサポートしています。grub パッケージに含まれている unifont フォントは unicode.pf2 というファイル名で置いてあり、同じく ASCII 文字は ascii.pf2 という名前です。

サポートされている画像フォーマットは tga, png, jpeg で適切なモジュールがロードされます。利用できる最大解像度はあなたのハードウェアによります。

正しいフレームバッファの解像度を設定するようにしてください。

/etc/default/grub を以下のように編集してください:

GRUB_BACKGROUND="/boot/grub/myimage"
#GRUB_THEME="/path/to/gfxtheme"
GRUB_FONT="/path/to/font.pf2"
Note: GRUB を分割して別のパーティションにインストールしている場合、/boot/grub/myimage/grub/myimage になります。

変更を適用して grub.cfg に情報を追加するには、次を実行して下さい:

# grub-mkconfig -o /boot/grub/grub.cfg

スプラッシュイメージの追加が成功したのならば、上のコマンドを実行したときに "Found background image..." と表示されるはずです。 この文句が表示されない場合、画像情報はおそらく grub.cfg ファイルに組み入れられていません。

画像が表示されないときは、以下をチェックしてください:

  • /etc/default/grub に記述したパスとファイル名が正しいか
  • 画像のサイズとフォーマットは問題ないか (tga, png, 8-bit jpg)
  • 画像が RGB モードで保存されていて、インデックスは付いていないか
  • コンソールモードが /etc/default/grub で無効になっているか
  • 背景画像を /boot/grub/grub.cfg ファイルに入れるために grub-mkconfig コマンドをちゃんと実行したか

テーマ

以下は GRUB パッケージに含まれている Starfield テーマを設定する例です。

/etc/default/grub を編集してください:

GRUB_THEME="/usr/share/grub/themes/starfield/theme.txt"

変更を適用してください:

# grub-mkconfig -o /boot/grub/grub.cfg

テーマの設定が成功すると、ターミナルに Found theme: /usr/share/grub/themes/starfield/theme.txt と表示されます。 テーマを使っている時は基本的にスプラッシュイメージは表示されません。

Menu colors

You can set the menu colors in GRUB. The available colors for GRUB can be found in the GRUB Manual. Here is an example:

Edit /etc/default/grub:

GRUB_COLOR_NORMAL="light-blue/black"
GRUB_COLOR_HIGHLIGHT="light-cyan/blue"

Generate the changes:

# grub-mkconfig -o /boot/grub/grub.cfg

Hidden menu

One of the unique features of GRUB is hiding/skipping the menu and showing it by holding Esc when needed. You can also adjust whether you want to see the timeout counter.

Edit /etc/default/grub as you wish. Here is an example where the comments from the beginning of the two lines have been removed to enable the feature, the timeout has been set to five seconds and to be shown to the user:

GRUB_HIDDEN_TIMEOUT=5
GRUB_HIDDEN_TIMEOUT_QUIET=false

and run:

# grub-mkconfig -o /boot/grub/grub.cfg

フレームバッファの無効化

バイナリドライバーに問題が発生するので NVIDIA のプロプライエタリドライバーを使っているユーザーは GRUB のフレームバッファを無効化するべきです。

フレームバッファを無効にするには、/etc/default/grub を編集して次の行をアンコメントしてください:

GRUB_TERMINAL_OUTPUT=console

そして次を実行して下さい:

# grub-mkconfig -o /boot/grub/grub.cfg

Another option if you want to keep the framebuffer in GRUB is to revert to text mode just before starting the kernel. To do that modify the variable in /etc/default/grub:

GRUB_GFXPAYLOAD_LINUX=text

and rebuild the configuration as before.

他のオプション

LVM

If you use LVM for your /boot, add the following before menuentry lines:

insmod lvm

and specify your root in the menuentry as:

set root=lvm/lvm_group_name-lvm_logical_boot_partition_name

Example:

# (0) Arch Linux
menuentry "Arch Linux" {
  insmod lvm
  set root=lvm/VolumeGroup-lv_boot
  # you can only set following two lines
  linux /vmlinuz-linux root=/dev/mapper/VolumeGroup-root ro
  initrd /initramfs-linux.img
}

RAID

GRUB provides convenient handling of RAID volumes. You need to add insmod mdraid which allows you to address the volume natively. For example, /dev/md0 becomes:

set root=(md0)

whereas a partitioned RAID volume (e.g. /dev/md0p1) becomes:

set root=(md0,1)

To install grub when using raid1 as the /boot partition (or using /boot housed on a raid1 root partition), on devices with GPT ef02/'BIOS boot partition', simply run grub-install on both of the drives, such as:

grub-install --recheck --debug /dev/sda && grub-install --recheck --debug /dev/sdb

Where the raid1 array housing /boot is housed on /dev/sda and /dev/sdb.

Persistent block device naming

One naming scheme for Persistent block device naming is the use of globally unique UUIDs to detect partitions instead of the "old" /dev/sd*. Advantages are covered up in the above linked article.

Persistent naming via filesystem UUIDs are used by default in GRUB.

Note: The /boot/grub.cfg file needs regeneration with the new UUID in /etc/default/grub every time a relevant filesystem is resized or recreated. Remember this when modifying partitions & filesystems with a Live-CD.

Whether to use UUIDs is controlled by an option in /etc/default/grub:

# GRUB_DISABLE_LINUX_UUID=true

Either way, do not forget to generate the changes:

# grub-mkconfig -o /boot/grub/grub.cfg

Using Labels

It is possible to use labels, human-readable strings attached to filesystems, by using the --label option to search. First of all, label your existing partition:

# tune2fs -L <LABEL> <PARTITION>

Then, add an entry using labels. An example of this:

menuentry "Arch Linux, session texte" {
  search --label --set=root archroot
  linux /boot/vmlinuz-linux root=/dev/disk/by-label/archroot ro
  initrd /boot/initramfs-linux.img
}

Recall previous entry

GRUB can remember the last entry you booted from and use this as the default entry to boot from next time. This is useful if you have multiple kernels (i.e., the current Arch one and the LTS kernel as a fallback option) or operating systems. To do this, edit /etc/default/grub and change the value of GRUB_DEFAULT:

GRUB_DEFAULT=saved

This ensures that GRUB will default to the saved entry. To enable saving the selected entry, add the following line to /etc/default/grub:

GRUB_SAVEDEFAULT=true
Note: Manually added menu items, e.g. Windows in /etc/grub.d/40_custom or /boot/grub/custom.cfg, will need savedefault added. Remember to regenerate(#Generate config file) your configuration file.

Changing the default menu entry

To change the default selected entry, edit /etc/default/grub and change the value of GRUB_DEFAULT:

Using numbers :

GRUB_DEFAULT=0

Grub identifies entries in generated menu counted from zero. That means 0 for the first entry which is the default value, 1 for the second and so on.

Or using menu titles :

GRUB_DEFAULT='Arch Linux, with Linux core repo kernel'
Note: Remember to regenerate(#Generate config file) your configuration file.

Security

If you want to secure GRUB so it is not possible for anyone to change boot parameters or use the command line, you can add a user/password combination to GRUB's configuration files. To do this, run the command grub-mkpasswd-pbkdf2. Enter a password and confirm it:

grub-mkpasswd-pbkdf2
[...]
Your PBKDF2 is grub.pbkdf2.sha512.10000.C8ABD3E93C4DFC83138B0C7A3D719BC650E6234310DA069E6FDB0DD4156313DA3D0D9BFFC2846C21D5A2DDA515114CF6378F8A064C94198D0618E70D23717E82.509BFA8A4217EAD0B33C87432524C0B6B64B34FBAD22D3E6E6874D9B101996C5F98AB1746FE7C7199147ECF4ABD8661C222EEEDB7D14A843261FFF2C07B1269A

Then, add the following to /etc/grub.d/00_header:

/etc/grub.d/00_header
cat << EOF

set superusers="username"
password_pbkdf2 username <password>

EOF

where <password> is the string generated by grub-mkpasswd_pbkdf2.

Regenerate your configuration file. Your GRUB command line, boot parameters and all boot entries are now protected.

This can be relaxed and further customized with more users as described in the "Security" part of the GRUB manual.

Root encryption

To let GRUB automatically add the kernel parameters for root encryption, add cryptdevice=/dev/yourdevice:label to GRUB_CMDLINE_LINUX in /etc/default/grub.

Tip: If you are upgrading from a working GRUB Legacy configuration, check /boot/grub/menu.lst.pacsave for the correct device/label to add. Look for them after the text kernel /vmlinuz-linux.

Example with root mapped to /dev/mapper/root:

GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:root"

Also, disable the usage of UUIDs for the rootfs:

GRUB_DISABLE_LINUX_UUID=true

Regenerate the configuration.

Boot non-default entry only once

The command grub-reboot is very helpful to boot another entry than the default only once. GRUB loads the entry passed in the first command line argument, when the system is rebooted the next time. Most importantly GRUB returns to loading the default entry for all future booting. Changing the configuration file or selecting an entry in the GRUB menu is not necessary.

Note: This requires GRUB_DEFAULT=saved in /etc/default/grub (and then regenerating grub.cfg) or, in case of hand-made grub.cfg, the line set default="${saved_entry}".

Hide GRUB unless the Shift key is held down

In order to achieve the fastest possible boot, instead of having GRUB wait for a timeout, it is possible for GRUB to hide the menu, unless the Shift key is held down during GRUB's start-up.

In order to achieve this, you should add the following line to /etc/default/grub:

 GRUB_FORCE_HIDDEN_MENU="true"

And the following file should be created:

/etc/grub.d/31_hold_shift

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

. "${datarootdir}/grub/grub-mkconfig_lib"

found_other_os=

make_timeout () {

  if [ "x${GRUB_FORCE_HIDDEN_MENU}" = "xtrue" ] ; then 
    if [ "x${1}" != "x" ] ; then
      if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
    verbose=
      else
    verbose=" --verbose"
      fi

      if [ "x${1}" = "x0" ] ; then
    cat <<EOF
if [ "x\${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF
      else
    cat << EOF
if [ "x\${timeout}" != "x-1" ]; then
  if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
    set timeout=0
  fi
fi
EOF
      fi
    fi
  fi
}

adjust_timeout () {
  if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
    cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
EOF
    make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}"
    echo else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
    echo fi
  else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
  fi
}

  adjust_timeout

    cat <<EOF
if [ "x\${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF

GRUB から ISO を直接起動する

/etc/grub.d/40_custom/boot/grub/custom.cfg を編集して対象の ISO のエントリを追加してください。編集したら、通常通り grub-mkconfig -o /boot/grub/grub.cfg を (root で) 実行して GRUB メニューを更新してください。

Arch ISO

Note: The following examples assume the ISO is in /archives on hd0,6.
Tip: For thumbdrives, use something like (hd1,$partition) and either /dev/sdbY for the img_dev parameter or a persistent name, e.g. img_dev=/dev/disk/by-label/CORSAIR.
x86_64
menuentry "Archlinux-2013.05.01-dual.iso" --class iso {
  set isofile="/archives/archlinux-2013.05.01-dual.iso"
  set partition="6"
  loopback loop (hd0,$partition)/$isofile
  linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop
  initrd (loop)/arch/boot/x86_64/archiso.img
}
i686
menuentry "Archlinux-2013.05.01-dual.iso" --class iso {
  set isofile="/archives/archlinux-2013.05.01-dual.iso"
  set partition="6"
  loopback loop (hd0,$partition)/$isofile
  linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop
  initrd (loop)/arch/boot/i686/archiso.img
}

Ubuntu ISO

Note: The example assumes that the iso is in /archives on hd0,6. Users must adjust the location and hdd/partition in the lines below to match their systems.
menuentry "ubuntu-13.04-desktop-amd64.iso" {
  set isofile="/archives/ubuntu-13.04-desktop-amd64.iso"
  loopback loop (hd0,6)/$isofile
  linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --
  initrd (loop)/casper/initrd.lz
}
menuentry "ubuntu-12.04-desktop-amd64.iso" {
  set isofile="/archives/ubuntu-12.04-desktop-amd64.iso"
  loopback loop (hd0,6)/$isofile
  linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --
  initrd (loop)/casper/initrd.lz
}

他の ISO

Other working configurations from link Source.

Using the command shell

Since the MBR is too small to store all GRUB modules, only the menu and a few basic commands reside there. The majority of GRUB functionality remains in modules in /boot/grub, which are inserted as needed. In error conditions (e.g. if the partition layout changes) GRUB may fail to boot. When this happens, a command shell may appear.

GRUB offers multiple shells/prompts. If there is a problem reading the menu but the bootloader is able to find the disk, you will likely be dropped to the "normal" shell:

sh:grub>

If there is a more serious problem (e.g. GRUB cannot find required files), you may instead be dropped to the "rescue" shell:

grub rescue>

The rescue shell is a restricted subset of the normal shell, offering much less functionality. If dumped to the rescue shell, first try inserting the "normal" module, then starting the "normal" shell:

grub rescue> set prefix=(hdX,Y)/boot/grub
grub rescue> insmod (hdX,Y)/boot/grub/i386-pc/normal.mod
rescue:grub> normal

Pager support

GRUB supports pager for reading commands that provide long output (like the help command). This works only in normal shell mode and not in rescue mode. To enable pager, in GRUB command shell type:

sh:grub> set pager=1

GUI 設定ツール

以下のパッケージがインストール可能です:

  • grub-customizer — ブートローダー (GRUB や BURG) のカスタマイズ
https://launchpad.net/grub-customizer || grub-customizerAUR
  • grub2-editor — GRUB ブートローダー設定の KDE4 コントロールモジュール
http://kde-apps.org/content/show.php?content=139643 || grub2-editorAUR
  • kcm-grub2 — この Kcm モジュールは GRUB の基本的な設定を管理します
http://kde-apps.org/content/show.php?content=137886 || kcm-grub2AUR
  • startupmanager — GRUB Legacy, GRUB, Usplash, Splashy の設定を変更できる GUI アプリ (abandonned)
http://sourceforge.net/projects/startup-manager/ || startupmanagerAUR

parttool for hide/unhide

If you have a Windows 9x paradigm with hidden C:\ disks GRUB can hide/unhide it using parttool. For example, to boot the third C:\ disk of three Windows 9x installations on the CLI enter the CLI and:

parttool hd0,1 hidden+ boot-
parttool hd0,2 hidden+ boot-
parttool hd0,3 hidden- boot+
set root=hd0,3
chainloader +1
boot

Using the rescue console

See #Using the command shell first. If unable to activate the standard shell, one possible solution is to boot using a live CD or some other rescue disk to correct configuration errors and reinstall GRUB. However, such a boot disk is not always available (nor necessary); the rescue console is surprisingly robust.

The available commands in GRUB rescue include insmod, ls, set, and unset. This example uses set and insmod. set modifies variables and insmod inserts new modules to add functionality.

Before starting, the user must know the location of their /boot partition (be it a separate partition, or a subdirectory under their root):

grub rescue> set prefix=(hdX,Y)/boot/grub

where X is the physical drive number and Y is the partition number.

To expand console capabilities, insert the linux module:

grub rescue> insmod (hdX,Y)/boot/grub/linux.mod
Note: With a separate boot partition, omit /boot from the path, (i.e. type set prefix=(hdX,Y)/grub and insmod (hdX,Y)/grub/linux.mod).

This introduces the linux and initrd commands, which should be familiar (see #Configuration).

An example, booting Arch Linux:

set root=(hd0,5)
linux /boot/vmlinuz-linux root=/dev/sda5
initrd /boot/initramfs-linux.img
boot

With a separate boot partition, again change the lines accordingly:

set root=(hd0,5)
linux /vmlinuz-linux root=/dev/sda6
initrd /initramfs-linux.img
boot

After successfully booting the Arch Linux installation, users can correct grub.cfg as needed and then reinstall GRUB.

To reinstall GRUB and fix the problem completely, changing /dev/sda if needed. See #Bootloader installation for details.

Combining the use of UUIDs and basic scripting

If you like the idea of using UUIDs to avoid unreliable BIOS mappings or are struggling with GRUB's syntax, here is an example boot menu item that uses UUIDs and a small script to direct GRUB to the proper disk partitions for your system. All you need to do is replace the UUIDs in the sample with the correct UUIDs for your system. The example applies to a system with a boot and root partition. You will obviously need to modify the GRUB configuration if you have additional partitions:

 menuentry "Arch Linux 64" {
         # Set the UUIDs for your boot and root partition respectively
         set the_boot_uuid=ece0448f-bb08-486d-9864-ac3271bd8d07
         set the_root_uuid=c55da16f-e2af-4603-9e0b-03f5f565ec4a
   
         # (Note: This may be the same as your boot partition)
   
         # Get the boot/root devices and set them in the root and grub_boot variables
         search --fs-uuid $the_root_uuid --set=root
         search --fs-uuid $the_boot_uuid --set=grub_boot
   
         # Check to see if boot and root are equal.
         # If they are, then append /boot to $grub_boot (Since $grub_boot is actually the root partition)
         if [ $the_boot_uuid == $the_root_uuid ] ; then
             set grub_boot=($grub_boot)/boot
         else
             set grub_boot=($grub_boot)
         fi
   
         # $grub_boot now points to the correct location, so the following will properly find the kernel and initrd
         linux $grub_boot/vmlinuz-linux root=/dev/disk/by-uuid/$the_root_uuid ro
         initrd $grub_boot/initramfs-linux.img
 }

トラブルシューティング

Intel BIOS not booting GPT

Some Intel BIOS's require at least one bootable MBR partition to be present at boot, causing GPT-partitioned boot setups to be unbootable.

This can be circumvented by using (for instance) fdisk to mark one of the GPT partitions (preferably the 1007 KiB partition you have created for GRUB already) bootable in the MBR. This can be achieved, using fdisk, by the following commands: Start fdisk against the disk you are installing, for instance fdisk /dev/sda, then press a and select the partition you wish to mark as bootable (probably #1) by pressing the corresponding number, finally press w to write the changes to the MBR.

Note: The bootable-marking must be done in fdisk or similar, not in GParted or others, as they will not set the bootable flag in the MBR.

More information is available here

デバッグメッセージを有効にする

以下を grub.cfg に追加してください:

set pager=1
set debug=all

"No suitable mode found" エラー

メニューエントリのどれかを起動したときに以下のエラーが表示される場合:

error: no suitable mode found
Booting however

GRUB の正しいビデオモード (gfxmode) を使って GRUB グラフィカルターミナル (gfxterm) を初期化する必要があります。このビデオモードは 'gfxpayload' を使って GRUB から linux カーネルに渡されます。UEFI 環境の場合、GRUB のビデオモードが初期化されないと、端末にカーネルのブートメッセージが (少なくとも KMS が有効になるまで) 全く表示されません。

Copy /usr/share/grub/unicode.pf2 to ${GRUB_PREFIX_DIR} (/boot/grub/ in case of BIOS and UEFI systems). If GRUB UEFI was installed with --boot-directory=/boot/efi/EFI set, then the directory is /boot/efi/EFI/grub/:

# cp /usr/share/grub/unicode.pf2 ${GRUB_PREFIX_DIR}

If /usr/share/grub/unicode.pf2 does not exist, install bdf-unifont, create the unifont.pf2 file and then copy it to ${GRUB_PREFIX_DIR}:

# grub-mkfont -o unicode.pf2 /usr/share/fonts/misc/unifont.bdf

Then, in the grub.cfg file, add the following lines to enable GRUB to pass the video mode correctly to the kernel, without of which you will only get a black screen (no output) but booting (actually) proceeds successfully without any system hang.

BIOS systems:

insmod vbe

UEFI systems:

insmod efi_gop
insmod efi_uga

After that add the following code (common to both BIOS and UEFI):

insmod font
if loadfont ${prefix}/fonts/unicode.pf2
then
    insmod gfxterm
    set gfxmode=auto
    set gfxpayload=keep
    terminal_output gfxterm
fi

As you can see for gfxterm (graphical terminal) to function properly, unicode.pf2 font file should exist in ${GRUB_PREFIX_DIR}.

msdos-style エラーメッセージ

grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding will not be possible!
grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.
            However, blocklists are UNRELIABLE and its use is discouraged.
grub-setup: error: If you really want blocklists, use --force.

このエラーは VMware コンテナに GRUB をインストールしようとすると起こることがあります。詳しくは ここ を読んで下さい。最初のパーティションが MBR (ブロック 63) のすぐ後ろから始まっていて、最初のパーティションの前に通常の 1 MiB のスペース (2048 ブロック) がない場合に起こります。#Master Boot Record (MBR) 特有の手順 を読んで下さい。

GRUB UEFI がシェルを起動する

GRUB がロードしたときにエラーを表示せずにレスキューシェルを起動する場合、おそらく grub.cfg が存在しなかったり間違った場所に置かれていることが原因です。GRUB UEFI を --boot-directory でインストールして grub.cfg がなかったり、ブートパーティションのパーティション番号 (grubx64.efi ファイルにハードコードされています) が変更されているときにこの問題が発生します。

GRUB UEFI not loaded

An example of a working EFI:

# efibootmgr -v
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001,0002
Boot0000* Grub	HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\efi\grub\grub.efi)
Boot0001* Shell	HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\EfiShell.efi)
Boot0002* Festplatte	BIOS(2,0,00)P0: SAMSUNG HD204UI

If the screen only goes black for a second and the next boot option is tried afterwards, according to this post, moving GRUB to the partition root can help. The boot option has to be deleted and recreated afterwards. The entry for GRUB should look like this then:

Boot0000* Grub	HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\grub.efi)

Invalid signature

(パーティションを再設定したりハードドライブを追加した後) Windows を起動しようとしたときに "invalid signature" エラーが起こる場合、GRUB のデバイス設定を移動(削除)して再設定してください:

# mv /boot/grub/device.map /boot/grub/device.map-old
# grub-mkconfig -o /boot/grub/grub.cfg

grub-mkconfig should now mention all found boot options, including Windows. If it works, remove /boot/grub/device.map-old.

起動中にフリーズする

GRUB がカーネルと initial ramdisk をロードした後、エラーを出さずにブートが固まる場合、add_efi_memmap カーネルパラメータを取り除いてみてください。

GRUB Legacy のリストア

  • Move GRUB v2 files out of the way:
# mv /boot/grub /boot/grub.nonfunctional
  • Copy GRUB Legacy back to /boot:
# cp -af /boot/grub-legacy /boot/grub
  • Replace MBR and next 62 sectors of sda with backed up copy
Warning: This command also restores the partition table, so be careful of overwriting a modified partition table with the old one. It will mess up your system.
# dd if=/path/to/backup/first-sectors of=/dev/sdX bs=512 count=1

A safer way is to restore only the MBR boot code use:

# dd if=/path/to/backup/mbr-boot-code of=/dev/sdX bs=446 count=1

他の OS から Arch が見つからない

他のディストリビューションで os-prober を使って Arch Linux を自動的に検索できないという報告が複数確認されています。この問題が発生する場合、/etc/lsb-release をおくことで検知が改善されると報告されています。このファイルと更新ツールは公式リポジトリにある lsb-release パッケージから利用可能です。

資料

  1. 公式 GRUB マニュアル - https://www.gnu.org/software/grub/manual/grub.html
  2. Ubuntu wiki の GRUB ページ - https://help.ubuntu.com/community/Grub2
  3. GRUB wiki page describing steps to compile for UEFI systems - https://help.ubuntu.com/community/UEFIBooting
  4. Wikipedia の BIOS Boot partition ページ

参照

  1. A Linux Bash Shell script to compile and install GRUB for BIOS from BZR Source
  2. A Linux Bash Shell script to compile and install GRUB for UEFI from BZR Source