Если два ваших жестких диска находятся на разных интерфейсах и управляются разными драйверами, Linux назовет их в порядке инициализации драйверов. Если инициализация выполняется параллельно, это может привести к тому, что назначения имен устройств могут отличаться.
Имена устройств назначаются udev. Ваша проблема упоминается в вики Arch, но там, похоже, нет решения.
Я не знаком с Arch, поэтому я объясню, как эта проблема решается в Ubuntu; Базовые функции предоставляются ядром Linux, которое одинаково, но могут быть параметры конфигурации, которые делают эти функции по-разному работающими в Arch.
Вместо использования /dev/sda2
качестве параметра корневого устройства (root=
) в загрузчике вы можете использовать UUID или метку со следующим синтаксисом:
… /boot/vmlinuz root=UUID=01234567-89ab-cdef-0123-456789abcdef ro …
… /boot/vmlinuz root=LABEL=mylabel ro …
UUID уникальным образом идентифицирует файловую систему, поэтому вам нужен UUID файловой системы, которая находится в /dev/sda2
. В Ubuntu /dev/disk/by-uuid/01234567-89ab-cdef-0123-456789abcdef
является символической ссылкой на /dev/sda2
. Если в вашей файловой системе есть метка (установленная вручную, вам нужно обеспечить уникальность), есть символическая ссылка в /dev/disk/by-label
. Метки и ссылки UUID генерируются по следующим правилам udev:
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"