Дисковое устройство меняется после каждой перезагрузки

2965
ZelluX

У меня есть диск SATA и диск IDE на настольном компьютере, и я установил Windows 7 на диск SATA, в то время как ArchLinux в IDE, диск установлен на диск IDE.

В ArchLinux / etc / fstab я установил корневое устройство монтирования как / dev / sda2 вместо / dev / sdb2, как обнаружено в программе установки ArchLinux.

Однако каждый раз, когда я загружаюсь из grub в ArchLinux, есть вероятность, что initrd не сможет прочитать из / dev / sda2, поскольку кажется, что / dev / sda - это диск Windows 7, а не ArchLinux. Но иногда это работает, так как / dev / sda становится ArchLinux. Другими словами, будет ли диск ArchLinux / dev / sda или / dev / sdb другим после перезагрузки.

Мне интересно, если это помогает использовать UUID для выбора раздела вместо пути устройства. И есть ли другое решение этой проблемы?

3

3 ответа на вопрос

2
Crankyadmin

Использование UUID всегда лучший вариант. Но, как говорится, ваша проблема исходит от вас uDev. Некоторым более старым контроллерам Sata требуется немного времени для ускорения, и к тому времени udev уже нашел диск IDE и использовал его в качестве первого диска. Хотя я верю, что это только из Cold-Boot.

При работе с Coreboot я часто сталкивался с этой проблемой, и единственным реальным решением, которое я нашел, была пауза в системе на несколько секунд (мои 1 ТБ заняли все 20 секунд), чтобы позволить дискам раскрутиться.

Надеюсь, это поможет каким-то образом!

1
quack quixote

Как говорится в ответе Crankyadmin, идентификация раздела по UUID предпочтительнее, чем использование путей к устройствам.

Другой альтернативой является идентификация по метке раздела. Я предпочитаю это UUID, потому что он гораздо более понятен человеку, но вам нужно убедиться, что ваши разделы используют уникальные метки, и некоторые символы, которые в других случаях допустимы в метках разделов, могут быть проблематичными для этого использования (в частности, пробелы могут не работать Что ж).

Вы можете добавить метки к своим разделам ext (2,3,4) с tune2fs -L <new-label> <device>или во время форматирования, используя -L <new-label>опцию с mkfs.ext(2,3). Используйте этикетки только как UUID, в обоих /etc/fstabи /boot/grub/menu.lst:

# 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 
0
JJC

Я согласен с предыдущими комментариями об использовании UUID вместо / dev / sdX в ваших конфигурациях (например, в / etc / fstab). Хотя это старый вопрос, я подумал, что поделюсь этой страницей, которую нашел, когда сталкивался с подобной проблемой сегодня. Кажется, это хороший справочник о том, как использовать UUID (или метки, если вы предпочитаете их).