edit:私は自分の問題を解決したと思います-詳細については質問の下部を参照してください
USB接続された外付けハードドライブの/
の下にあるすべてのファイルのコピーがあります。このバックアップが機能するかどうかをテストするために、私はそれから起動しようとしています。しかし、これは私が予想していたよりも少し難しいことを証明しています。
私が想定しているのはBIOSで、ブートデバイスとして外部HDを選択します。ただし、このデバイスを選択しても、通常のドライブをブートデバイスとして選択しても、同じGRUBメニューが表示されます。これは、手動で行って外部HDにGRUBをインストールしたかどうかに関係なく発生します。だから私の質問は、GRUBが私の通常のブートドライブまたは外部ドライブからロードされているのか、そしてそれは重要ですか?
(hd2,gpt1)
と表示されましたが、外付けにGRUBをインストールした後ドライブ、それは(hd0,gpt2)
として出てきました。おそらく私が抱えている問題は私の最初の質問に関連しているかもしれませんが、linux /boot/vmlinuz-linux root=/dev/sda2
を指定して起動すると、root
として指定されたドライブが見つからないことに関連して常にエラーが発生します。これは、デバイスuuidでルートを指定した場合でも発生します。私の質問は、私は心配する必要がありますか?
/etc/fstab
?これは、ルートが確実に見つかるようにするために変更する必要があるものですか?また、内部ドライブまたは外部ドライブの/etc/fstab
ファイルを変更するかどうかは重要です。 (ルートパーティションのUUIDを持つドライブが/etc/fstab
にマウントされるように、外部ドライブの/
を変更しましたが、役に立ちませんでした)
USB接続の外部HDであるためか、何か特別なことをする必要がありますか?通常の起動中にエラーusb 2-4: device descriptor read/64, error -71
が表示されることに気付きましたが、これはドライブの機能に明らかな影響を与えないため、無視しました。このエラーは、2つの別々の外部HDドックでも発生したため、ハードウェアの問題ではないと思います。
明確化:
Borg を使用して外部バックアップを作成しました。これにより、すべてのファイルのコピーが作成されます。 dd
のようにディスク全体をコピーするわけではないので、たとえばgrubをインストールするときに、bios_grub
フラグを使用してパーティションを手動で作成する必要があります。
起動しようとしているときにgrubで使用する正確なコマンドは
set root=(hd0,gpt2)
linux vmlinuz-linux root=/dev/sda2
initrd initramfs-linux.img
boot
なんとか起動できました。
linux /boot/vmlinuz-linux root=/dev/sda2
とlinux /boot/vmlinuz-linux root=/dev/sdc2
の両方を試しましたが無駄でした。1つ目はドライブがgrubで(hd0,gpt2)
として表示されていたため、2つ目は通常の起動時にパーティションに/dev/sdc2
というラベルが付けられたためです。しかし、どちらも機能せず、どちらも私を奇妙なコマンドラインに落とし込みました。何らかの理由で、正しいUUIDを持つパーティションが実際に/dev/sdb2
にマウントされていることを発見しました。 root=/dev/sdb2
を使用して、システムを正常に起動しました。以前にUUIDを指定して起動しようとしたが、さまざまな理由(GRUBがインストールされていない、UUIDのタイプミスなど)のいずれかで失敗したと思います。
これはかなり反気候的です。私が持っていた元の質問、つまり1。で、どのGRUBが使用されるかがどのように決定されるかについてはまだ興味があります。 GRUBがインストールされている複数のドライブはありますか? 2。/etc/fstab
は起動プロセスで役割を果たしますか、それとも無関係ですか? -そして、私はそれらの質問への回答に対して報奨金を授与します。
問題はroot=/dev/sda2
です。これは、device name
によるマウントを実行しているためです。これは一意ではありませんです。ドライブが1つだけインストールされている場合、通常は常に/dev/sda
として表示されるため、問題はありません。ただし、2番目のディスクまたは/dev/sd?
として表示されるその他のものをインストールすると、順序が保証されず、多くの場合、sda
がsdb
に移動します。 ...すぐに乱雑になり、失敗する可能性があります。
デバイスIDによるまたはidによるを介してマウントするのが最適です。これは一意になります。
/dev/disk/
の下に次のようなフォルダが表示されます
たとえば、by-id/
の下に次のようなリンクが表示されます。
これが私の/etc/fstab
をマウントするby device-id
で、アイデアを提供します。余分な行を削除して、適切な位置に保ちます。そして、私はGRUBではなくEFIを使用しますが、原則は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
注:これは、SLES11.4に表示されるものです。また、EFIを使用している間、GRUBまたはGRUB2またはGRUB2内の特定のアイテムを見つけて、変更する必要があります。ここにある例として、私の/boot/efi/efi/SuSE/elilo.conf
ファイルがあります。root=
の部分に注意してください。 。GRUB by device-id
またはby uuid
に変更したい。そして、/etc/fstab
をに変更することを忘れないでください。独自の方法でby-id
またはby-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-uuid
からディスクを参照します。パーティションラベルを設定し、それらが一意であると信頼していれば、by-label
を使用することもできます。
これはあなたの質問に答えるはずです:
一般に、使用されるGRUBは、BIOSによって最初に表示されるか、BIOSで最初に実行されるように選択されたディスク上にあるものです。ドライブのMBRは=にピオントするためです。 GRUBロードします。
/ etc/fstabは、パーティションのマウントプロセスの自動化のみを担当します。カーテンケースでは、fstabを完全にバイパスできます。