Вопрос или проблема
Я пытаюсь создать символическую ссылку на раздел диска и смонтировать раздел, используя эту символическую ссылку.
Информация о моем разделе выглядит следующим образом
# blkid
/dev/sda3: UUID="dbd18617-ff94-44c7-b6a2-f520004258e0" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="c4db5f86-45b2-43d3-8983-fedeb71da5cd"
Сначала я попытался смонтировать раздел, используя PARTUUID, как показано ниже, и это сработало, как и ожидалось.
# mount PARTUUID="c4db5f86-45b2-43d3-8983-fedeb71da5cd" /mnt
Теперь я создал символическую ссылку для раздела.
# ln -sf PARTUUID="c4db5f86-45b2-43d3-8983-fedeb71da5cd" /dev/update
# ls -la /dev/update
lrwxrwxrwx 1 root root 45 Sep 24 23:10 /dev/update -> 'PARTUUID=c4db5f86-45b2-43d3-8983-fedeb71da5cd'
И попытался смонтировать раздел, используя символическую ссылку, но получил сообщение об ошибке ниже.
# mount /dev/update /mnt
mount: /mnt: специальное устройство /dev/update не существует.
Вот в чем вопрос. Я делаю что-то не так? Или монтирование раздела с использованием PARTUUID не разрешено?
Для сравнения я создал другую символическую ссылку. (После удаления вышеуказанной символической ссылки).
# ln -sf /dev/sda3 /dev/update
lrwxrwxrwx 1 root root 9 Sep 24 23:12 /dev/update -> /dev/sda3
Используя эту символическую ссылку, монтирование раздела прошло успешно.
# mount /dev/update /mnt
Вы видите, что я делаю что-то не так?
Ответ или решение
Да, вы правильно отметили, что создание символических ссылок на PARTUUID
или UUID
напрямую не работает так, как вы ожидали. Давайте разберемся в ситуации подробнее.
Ваша команда для создания символической ссылки:
# ln -sf PARTUUID="c4db5f86-45b2-43d3-8983-fedeb71da5cd" /dev/update
не создает фактической ссылки на устройство, как это делает команда, в которой используется путь к устройству, например:
# ln -sf /dev/sda3 /dev/update
Точная причина в том, что при создании символической ссылки вы указываете строку PARTUUID=...
, и операционная система не интерпретирует это как специальное устройство. PARTUUID
и UUID
работают на уровне системных вызовов, но они не существуют как файловые пути, которые можно использовать в виде символических ссылок.
Когда вы используете команду mount
, она ожидает, что аргумент будет действительным путем к блочному устройству, а не строкой надлежащего формата, такой как PARTUUID
.
Чтобы корректно использовать PARTUUID
, вам нужно делать это в самом команде mount
, как вы уже сделали. То есть:
# mount PARTUUID="c4db5f86-45b2-43d3-8983-fedeb71da5cd" /mnt
или
# mount UUID="dbd18617-ff94-44c7-b6a2-f520004258e0" /mnt
Для вашей задачи создания символической ссылки вы можете использовать существующие устройства, как это показано вами, а именно:
# ln -sf /dev/sda3 /dev/update
Это правильный подход, и он будет работать должным образом, потому что /dev/sda3
является реальным блочным устройством, в отличие от PARTUUID
, который не является физическим предназначением для символических ссылок.
В заключение, использование PARTUUID
в символических ссылках не поддерживается, так как они не представляют собой физические устройства, на которые можно создать ссылку. Лучше всего использовать путь к блочному устройству, который непосредственно указывает на реальный диск или раздел.