編集する:私の問題を解決したようです。詳しくは、質問の下部をご覧ください。
/
外部USBで接続されたハードドライブには、すべてのファイルのコピーがあります。このバックアップが機能しているかどうかをテストするためにバックアップを試みました。しかし、これは私が予想していたよりも少し難しかったです。
仮想BIOSでは、外部HDを起動デバイスとして選択しました。ただし、このデバイスを選択するか、通常のドライブを起動デバイスとして選択しても、同じGRUBメニューが表示されます。これは、外付けハードドライブにGRUBを手動で取り付けるかどうかに関係なく発生します。だから私の質問は、GRUBが通常のブートドライブからロードされるのか、それとも外部ドライブからロードされるのかが重要ですか?
- 外付けドライブにGRUBをインストールせずにGRUBコマンドラインを使用すると、外付けドライブが表示されますが、GRUBが外付けドライブに取り付けられた
(hd2,gpt1)
後にマークされていることがわかりました(hd0,gpt2)
。
- 外付けドライブにGRUBをインストールせずにGRUBコマンドラインを使用すると、外付けドライブが表示されますが、GRUBが外付けドライブに取り付けられた
私が経験している問題は最初の問題に関連している可能性がありますが、指定後に起動すると常に見つからないと指定されたドライブに関連する
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/sda2
たlinux /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-id
GRUBの代わりに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-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
答え2
あなたの質問に対する答えは次のとおりです。
一般的に使用される GRUB は、BIOS が認識するディスクの最初の GRUB または BIOS で最初に実行するように選択された GRUB です。これは、ドライブのMBRがロードされたGRUBを指しているためです。
/etc/fstab は、マウントおよびパーティショニングプロセスを自動的に実行する役割のみを担当します。カーテンの場合、fstabを完全にバイパスできます。