web-dev-qa-db-ja.com

GRUB2:2番目の(別の)ハードディスクから起動

私はこの質問について調査しましたが、明確な答えを見つけることができませんでした...または明確な質問ですらありません。したがって、簡単な例を使用します。

私のコンピュータには** 2つのハードディスクがあります。**

  • ハードディスク1bunt Linux GRUB2 on [〜#〜] mbr [〜#〜]
  • ハードディスク2任意他のMBRローダーを備えた他のオペレーティングシステム(どちらに悩まされますか?).

GRUB2のみbuntuへのブート(私の例では、最初のハードディスク上)。
_update-grubを発行すると検出されません 2番目のハードディスクのオペレーティングシステムですが、存在することはわかっています。
起動時に[〜#〜] bios [〜#〜]と入力し、起動順序をハードディスク2に変更すると、2番目のオペレーティングシステム起動OK

どうすればGRUB2にエントリを追加2番目のハードディスクから起動できますか?

(実際には、私はこの質問をすることができると思いますなし 2番目のハードディスクのオペレーティングシステムを指定します。そうでない場合は?)

この構成のサンプルマシンのos-proberの要求に応じて出力を追加します。

luis@threepwood:~$ Sudo os-prober
/dev/sdb1:Windows 7 (loader):Windows:chain
/dev/sdb7:Ubuntu 14.04.3 LTS (14.04):Ubuntu:linux

この特定の例(BIOSでブート順序を変更した)の場合:

  • sdbはHDD-1です。
  • sdaはHDD-2です。
10

GRUBを起動している間に、 c コマンドラインモードのキー 、入力

rootnoverify (hd0)
chainloader +1
boot

etvoilà、私は私にGRUBも得ましたが、GRUB 2、もう一度やり直しました

set root=(hd0)
chainloader +1
boot

同じ問題が再び発生し、解決しました;)

2
shortStack

とても簡単です。手順に従ってください。

シナリオ例:

  • /dev/sda1 – CentOS

  • /dev/sdb1 – Debian

CentOSドライブにアクティブなMBRがあるとしましょう。したがって、起動後にCentOSシステムにアクセスできます。 Debianを追加する必要があります。

アクティブOS(このシナリオではCentOS)でのタスク:

  1. mount /dev/sdb1 /mnt/debian

  2. 以下のように、/mnt/debian/boot/grub{2}/grub.cfgからDebianのmenuentryセクション全体を切り取ります。

    menuentry 'Debian GNU/Linux' --class debian --class gnu-linux ... { ... }

  3. 次に、ファイルを作成します:touch /etc/grub.d/11_linux

  4. これはスクリプトなので、必ず実行してください:chmod +x /etc/grub.d/11_linux

  5. 追加:

    #!/bin/sh
    echo "
    

    11_linuxの先頭に、そのセクションを貼り付けます。最後は"で終わりました。したがって、次のものが必要です。

    centos #~> cat /etc/grub.d/11_linux
    
    #!/bin/sh
    echo "menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-78026456-ebcc-4eed-b59d-a3f0bdff7353' {
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  f2de4123-5a98-4568-99dd-e61940b99ab2
        else
          search --no-floppy --fs-uuid --set=root f2de4123-5a98-4568-99dd-e61940b99ab2
        fi
        echo    'Loading Linux 3.16.0-4-AMD64 ...'
        linux   /vmlinuz-3.16.0-4-AMD64 root=/dev/mapper/Thinkpad--vg-root ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-3.16.0-4-AMD64
    }"
    
  6. grub2-mkconfig -o /boot/grub{2}/grub.cfg

  7. リブート。

出来上がり。

2
Radek Radek

こんにちは私は同じ問題を抱えていました。 os-proberをインストールした後、grub-customizerがos-proberを使用して2番目のHDD上のOSを見つけ、それをブートメニューに追加できることがわかりました。設定ファイルを編集するよりも簡単だと思うかもしれません:)

1
Murray Neish

2番目のhddのエントリーをgrub構成に追加する必要があると思います。

どのOSでもかまいません。

Windows HDDでgrub2のデュアルブックを使用しています。 WindowsとLinuxの両方を検出し、起動するOSを選択するメニューを提供します。

事前設定、チェーンロード、maunalエントリのgrubへの追加については、次のリンクをたどってください。

https://help.ubuntu.com/community/Grub2/CustomMenus

0
Ijaz Ahmad Khan

私は通常grub.cfgを手動で記述し、update-grubを使用せず、いわゆるマスターGrub2ブートローダーを使用してどこから起動するかを選択し、各Linuxディストリビューションに独自のルートパーティションに独自のブートローダーをインストールさせます、そのためLinuxは、私のマスターgrub2ブートローダーに触れずに、独自のブートローダーを編集できます。

そして、他のディスクMBRにジャンプするには、通常のOSのgrub.cfgに次のような種類のエントリがあり、最初のディスクのようにディスクを見る必要がない場合:

menuentry "Boot from second disk" {
   chainloader (hd1)+1
}
menuentry "Boot from third disk" {
   chainloader (hd2)+1
}
menuentry "Boot from fourth disk" {
   chainloader (hd3)+1
}

したがって、MBRを必要な他のディスクにロードするだけです。

ただし、他のディスクを最初のディスクと同じように表示したいいくつかのトリッキーなLinux(および一部のWindows)では、次のようになります。

menuentry "Boot from second disk and see it as first disk" {
   set root=(hd1)
   drivemap -s hd0 hd1
   chainloader +1
}
menuentry "Boot from third disk and see it as first disk" {
   set root=(hd2)
   drivemap -s hd0 hd2
   chainloader +1
}
menuentry "Boot from fourth disk and see it as first disk" {
   set root=(hd3)
   drivemap -s hd0 hd3
   chainloader +1
}

すべてが詳細に説明されています:

  • (hd#)はディスクを表し、#はゼロから始まります

  • drivemapはドライブの交換を行うので、どのディスクも最初のディスク、または任意の数として見ることができます(2つのディスクで見られる順序で交換します)

  • チェーンローダー(hd#)+ 1がディスクのMBRにジャンプする

  • チェーンローダー+1は(ルート)に格納されているものの最初のセクターにジャンプします

  • set root = ...(root)が持つものを設定します。

  • (root)は変数のようなもので、lessを入力するために使用できます

grub.cfgファイルの完全なドキュメントについては、公式Webページを参照してください。

https://www.gnu.org/software/grub/manual/grub/grub.html

0
Anonymous