Я загружаю Linux с USB-накопителя на моем ноутбуке. Все работает нормально, пока я не усыплю ноутбук. Когда он просыпается, внезапно USB-накопитель получает другое имя устройства, и все начинает давать сбой, потому что уже смонтированная файловая система находится на устройстве, которое больше не существует. Как заставить Linux поддерживать устройство с тем же именем, когда оно просыпается?
2 ответа
Я не могу сказать вам, как не дать ему поменять имя устройства, но все же может быть решение вашей проблемы. Прежде чем делать следующие изменения, просто для безопасности сделайте резервную копию вашего файла /etc/fstab
и убедитесь, что у вас есть какое-то другое загрузочное устройство, доступное в случае сбоя (что может легко произойти, если набрать здесь одну букву).
Сначала проверьте ваш /etc/fstab
. Вероятно, ваши записи выглядят так:
/dev/sde1 / ext4 errors=remount-ro 0 1
И после пробуждения ваш диск сменился на sdf
, как в качестве примера, поэтому эта запись сейчас не работает. Поскольку эти имена устройств присваиваются последовательно при обнаружении, вы можете предпочесть какое-то непротиворечивое имя, не затронутое этим. Итак, ваш второй шаг:
ls -l /dev/disk/by-uuid
Теперь проверьте, какая из записей там указывает на /dev/sde1
(или, конечно, замените sde1
тем, на что в данный момент связан ваш диск). Это может выглядеть так:
lrwxrwxrwx 1 root root 10 Jun 30 20:53 b207-e035ddd09600 -> ../../sde1
Теперь вы можете сказать уникальный идентификатор устройства. Вернитесь к вашему /etc/fstab
и замените /dev/sde1
на /dev/disk/by-uuid/b207-e035ddd09600
(снова замените мои примерные значения вашими реальными). Теперь строка должна выглядеть так:
/dev/disk/by-uuid/b207-e035ddd09600 / ext4 errors=remount-ro 0 1
Теперь больше не должно иметь значения, какое "имя устройства" есть на вашем USB-накопителе, поскольку оно идентифицируется уникальным идентификатором, который не подлежит изменению.
ОБНОВИТЬ:
При использовании образа LiveCD на USB-накопителе все может выглядеть немного иначе, поскольку /etc/fstab
может содержать только виртуальные файловые системы (например, tmpfs), но пропускает записи для разделов диска. В этом случае проверьте с помощью /etc/mtab
(который содержит все подключенные в данный момент разделы), проверьте, соответствует ли запись вашей флешке, скопируйте ее и добавьте в /etc/fstab
. Затем настройте его (в /etc/fstab
конечно!) как описано выше.
(подсказка для имен: fstab
= Таблица файловой системы, содержит определения файловых систем для монтирования и какие параметры будут использоваться для их монтирования; mtab
: Монтированная таблица, т.е. какие файловые системы в настоящее время монтируются и какие параметры использовались. Помните, что вы также можете монтировать файловые системы вручную, передавая все необходимые параметры команде mount
: следовательно, /etc/mtab
может содержать записи, не найденные в /etc/fstab
. Также наоборот, поскольку на устройстве может быть установлен флаг noauto
в /etc/fstab
, поэтому система не монтирует его автоматически.)
В зависимости от того, какой Linux вы используете, вы можете обнаружить, что простое присвоение имени USB-накопителю делает то, что вам нужно. Например, если вы присвоите диску метку файловой системы MYDISK
он будет смонтирован в /media/MYDISK
.
Если это не сработает, вы можете использовать правила udev
чтобы добиться того, что вам нужно, хотя это и сложнее.