grubを使用して外部バックアップドライブから正しく起動する

grubを使用して外部バックアップドライブから正しく起動する

編集する:私の問題を解決したようです。詳しくは、質問の下部をご覧ください。

/外部USBで接続されたハードドライブには、すべてのファイルのコピーがあります。このバックアップが機能しているかどうかをテストするためにバックアップを試みました。しかし、これは私が予想していたよりも少し難しかったです。

  1. 仮想BIOSでは、外部HDを起動デバイスとして選択しました。ただし、このデバイスを選択するか、通常のドライブを起動デバイスとして選択しても、同じGRUBメニューが表示されます。これは、外付けハードドライブにGRUBを手動で取り付けるかどうかに関係なく発生します。だから私の質問は、GRUBが通常のブートドライブからロードされるのか、それとも外部ドライブからロードされるのかが重要ですか?

    • 外付けドライブにGRUBをインストールせずにGRUBコマンドラインを使用すると、外付けドライブが表示されますが、GRUBが外付けドライブに取り付けられた(hd2,gpt1)後にマークされていることがわかりました(hd0,gpt2)
  2. 私が経験している問題は最初の問題に関連している可能性がありますが、指定後に起動すると常に見つからないと指定されたドライブに関連するlinux /boot/vmlinuz-linux root=/dev/sda2いくつかの障害が発生します。rootデバイスuuidを介してルートを指定しても、これが発生します。私の問題は、私が心配する必要があるかどうかということです

    • /etc/fstab?ルートを見つけるにはこれを変更する必要がありますか?/etc/fstab内蔵ドライブや外付けドライブのファイルを変更しても問題になりますか? (/etc/fstabルートパーティションUUIDを持つドライブがにマウントされるように外部ドライブで変更しましたが、/効果がありませんでした。)

    • USBで接続された外付けハードドライブなので、何か特別な措置を取る必要がありますか?通常の起動時にエラーが見つかりましたが、usb 2-4: device descriptor read/64, error -71これはドライブ機能に顕著な影響を与えないため、無視しました。このエラーは、2つの別々の外部HDドックでも発生するため、ハードウェアの問題ではないようです。


言う:

次のコマンドを使用して外部バックアップを作成しました。ボグ、すべてのファイルのコピーを作成します。これによりディスク全体がコピーされないため、たとえばgrubをインストールするときにそのフラグを使用してパーティションを手動ddで作成する必要があります。bios_grub

起動を試みるときにgrubが使用する正確なコマンドは次のとおりです。

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

正常に起動しました。

私は両方の方法を試しましたが、役に立ちませんでしlinux /boot/vmlinuz-linux root=/dev/sda2linux /boot/vmlinuz-linux root=/dev/sdc2。 1つ目はドライブがgrubに表示され(hd0,gpt2)、2つ目はパーティションが/dev/sdc2正常に起動したときのように表示されるためです。しかし、これらのどれもうまくいかず、すべて私を奇妙なコマンドラインに置きます。/dev/sdb2何らかの理由で正しいUUIDを持つパーティションが実際にマウントされていることがわかりました!使用してroot=/dev/sdb2システムを正常に起動しました。以前にUUIDを指定して起動しようとすると、いくつかの理由(GRUBがインストールされていない、UUIDスペルエラーなど)のいずれかが原因で失敗したようです。

これは本当に予想外のことです。私の元の質問はまだ疑問です。1.GRUBがインストールされているドライブが複数ある場合、どのGRUBを使用するかをどのように決定しますか?2.実際に起動中に役割を果たしていますか/etc/fstab、それとも関係ありませんか? — この質問に対する回答に報酬を提供します。

ベストアンサー1

問題は、それが以下を介してインストールroot=/dev/sda2されたためです。device nameユニークではない。ドライブが1つだけ取り付けられている場合、通常は常に/dev/sda問題がないとマークされます。ただし、2番目のディスクをマウントしたり表示したりするすべての項目は順序が保証されておらず、/dev/sd?通常sda移動される項目がsdb...混乱して非常に早く失敗する可能性があるためです。

以下からインストールするのが最善です。デバイスID別または-uuidを押すこれはユニークです。

以下に、/dev/disk/次のフォルダが表示されます。

  • プレスリリースID/
  • タグ付き/
  • バイパス/
  • -uuid/経由

たとえば、以下に次by-id/のようなリンクが表示されます。

ここにアイデアを提供するための私の/etc/fstabマウントがあります。正しい維持のために余分な行を削除しました。by device-idGRUBの代わりにEFIを使用していますが、原則は同じであり、Grub(grub統合ブートローダの重要な部分)を使用するとより詳細に説明されています。

/dev/disk/by-id/scsi-35000cca070168a20-part2                    /           ext3    acl,user_xattr 1 1
/dev/disk/by-id/scsi-35000cca070168a20-part1                    /boot/efi   vfat    umask=0002,utf8=true 0 0
/dev/disk/by-id/scsi-36003048018e26e011d81ba1714e4c99f-part1    /data       xfs     defaults 1 0
/dev/disk/by-id/scsi-36003048018fa44011d57b61bbe1b8533-part1    /scratch    xfs     defaults 1 0
/dev/disk/by-id/scsi-36003048018e266011d81ba7e1afeadf6-part1    /bkup       xfs        defaults              1 2

注:これはSLES 11.4で見たものです。私はEFIを使用しているので、GRUBまたはGRUB2で特定の項目を見つけて修正する必要があります。ここで私のファイルを例に挙げました/boot/efi/efi/SuSE/elilo.conf。その部分に注目してくださいroot=。 GRUBの対応するコンテンツをby device-idまたはで編集しようとしていますby uuid。そしてメソッド/etc/fstabでのみ修正することを忘れないでください。by-idby-uuid

# This file has been transformed by /sbin/elilo.
# Please do NOT edit here -- edit /etc/elilo.conf instead!
# Otherwise your changes will be lost e.g. during kernel-update.
#
# Modified by YaST2. Last modification on Mon Oct 15 11:04:42 EDT 2018
timeout = 80
##YaST - boot_efilabel = "SUSE Linux Enterprise Server 11 SP4"
default = SLES11_SP4_16
prompt

image = vmlinuz-3.0.101-108.77-default
###Don't change this comment - YaST2 identifier: Original name: linux###
    label = SLES11_SP4_16
    append = "splash=verbose showopts                 "
    initrd = initrd-3.0.101-108.77-default
    root = /dev/disk/by-id/scsi-35000cca070168a20-part2

image = vmlinuz-3.0.101-108.77-default
###Don't change this comment - YaST2 identifier: Original name: failsafe###
    label = Failsafe_15
    append = "showopts ide=nodma apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe                  "
    description = "Failsafe (3.0.101-108.77-default)"
    initrd = initrd-3.0.101-108.77-default
    root = /dev/disk/by-id/scsi-35000cca070168a20-part2

あなたは手紙がどこにいても欲しくない、またはboot=/dev/sd?どこroot=/dev/sd?にもいません。?または、/dev/disk/by-idパーティションラベルを設定して一意であると思われる場合にも使用できます/dev/disk/by-uuidby-label

おすすめ記事