デスクトップマシンにSATAディスクとIDEディスクがあり、SATAディスクにWindows 7をインストールし、IDEにArchLinuxをインストールし、grubをIDEにインストールしました。ディスク。
ArchLinux/etc/fstabで、ArchLinuxセットアッププログラムで検出されたように、ルートマウントデバイスを/ dev/sdb2ではなく/ dev/sda2として設定しました。
ただし、grubからArchLinuxを起動するたびに、/ dev/sdaがArchLinuxではなくWindows7のディスクであるように見えるため、initrdが/ dev/sda2から読み取れない可能性があります。しかし、/ dev/sdaがArchLinuxのものになるので、時々それは機能します。つまり、ArchLinuxディスクが/ dev/sdaであるか/ dev/sdbであるかは、再起動後に異なります。
デバイスパスの代わりにUUIDを使用してパーティションを選択すると役立つかどうか疑問に思っています。そして、この問題に対する他の解決策はありますか?
UUIDを使用することは常により良いオプションです。しかし、あなたの問題はあなたのuDevから来ていると言われています。一部の古いSataコントローラは、起動するのに少し時間がかかり、その時点でudevはすでにIDEドライブを見つけて、それを最初のドライブとして使用しました。これはコールドからのみだと思いますが-ブート。
Corebootで作業しているときに、この問題に頻繁に遭遇しました。私が見つけた唯一の実際の解決策は、ドライブをスピンアップできるようにシステムを数秒間一時停止することでした(私の1TBは20秒かかりました)。
それが何らかの形で役立つことを願っています!
Crankyadminの回答が述べているように、デバイスパスを使用するよりも、UUIDでパーティションを識別する方が望ましいです。
別の方法は、パーティションラベルで識別することです。 UUIDよりも人間が読める形式の方が好きですが、パーティションで一意のラベルを使用していることを確認する必要があります。パーティションラベルで有効な一部の文字は、この使用に問題がある可能性があります(特に、スペースが機能しない場合があります)。上手)。
_tune2fs -L <new-label> <device>
_を使用してext(2,3,4)パーティションにラベルを追加するか、フォーマット時にmkfs.ext(2,3)
を指定して_-L <new-label>
_オプションを使用してラベルを追加できます。 _/etc/fstab
_と_/boot/grub/menu.lst
_の両方でUUIDと同じようにラベルを使用します。
_# fstab w/ UUID
UUID=3a9a1209-47de-4959-8ba6-9724e4c3eb37 / ext3 defaults,errors=remount-ro 0 1
# fstab w/ label
LABEL=Arch-root / ext3 defaults,errors=remount-ro 0 1
# GRUB config w/ UUID
kernel /boot/vmlinuz-2.6.20-15-generic root=UUID=3a9a1209-47de-4959-8ba6-9724e4c3eb37 ro quiet splash
# GRUB config w/ label
kernel /boot/vmlinuz-2.6.20-15-generic root=LABEL=Arch-root ro quiet splash
_
構成(/ etc/fstabなど)で/ dev/sdXの代わりにUUIDを使用することに関する以前のコメントに同意します。これは古い質問ですが、私は共有したいと思いました this 今日同様の問題を扱っているときに見つけたページ。 UUID(または必要に応じてラベル)の使用方法についての良いリファレンスのようです。