Что произойдет, если вы удалите файл устройства?

21

Я примерно знаю о файлах, расположенных в / dev.

Я знаю, что есть два типа (символ / блок), доступ к этим файлам связывается с драйвером в ядре.

Я хочу знать, что произойдет, если я удалю один - специально для обоих типов файлов. Если я удалю файл блочного устройства, скажем /dev/sda, какой эффект - если таковой имеется - это имеет? Я только что размонтировал диск?

Точно так же, что, если я удаляю /dev/mouse/mouse0- что происходит? Мышь перестает работать? Это автоматически заменяет себя?

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

альфа
источник
1
Я удалил / dev / zero в системе SVR4 один раз. Плохая идея. Потребовалось немного работы, чтобы снова загрузить мою систему.
Брэд Ланам

Ответы:

30

Это просто (специальные) файлы. Они служат только «указателями» на фактическое устройство. (т.е. модуль драйвера внутри ядра.)

Если какая-то команда / служба уже открыла этот файл, он уже имеет дескриптор устройства и продолжит работу.

Если какая-либо команда / служба пытается открыть новое соединение, она попытается получить доступ к этому файлу и потерпит неудачу из-за «файл не найден».

Обычно эти файлы заполняются udev, что автоматически создает их при запуске системы и при особых событиях, таких как подключение к USB-устройству, но вы также можете создать их вручную mknod.

Михась
источник
3
Это на самом деле не отвечает на вопрос ...
Gogeta70
«Обычно эти файлы заполняются udev» Обычно, но в Linux. Есть makedevкоманда, которая обычно выполняет свою работу и, в отличие от udevнее, кажется, присутствует среди большинства unix-подобных ОС.
Сергей Колодяжный
1
@ Gogeta70, какую часть вопроса оставляет этот пост без ответа?
Руслан
@RonJohn Вопрос помечен linuxиudev
Михаил Мрозек
1
@RonJohn Да, но с "но". Книга Ubuntu Hacks, написанная в 2006 году, показывает, что она есть /etc/init.d/makedev. В руководстве по freebsd упоминается MAKEDEV, появившийся в 4.2BSD (с 1983 года). Я думаю, что в 1983 году было бы так же логично сделать MAKEDEVавтоматизацию через init, как и в 06
Сергей Колодяжный,
8

Файлы устройств на самом деле являются псевдонимами файловой системы для записи в таблице устройств ядра. Если вы посмотрите на файлы / dev с помощью «ls -l», то увидите, что у них есть основной номер устройства и дополнительный номер устройства. Если вы удаляете файлы из файловой системы, вы всегда можете воссоздать их, используя соответствующие инструменты, чтобы связать специальный файл с записью в таблице устройств ядра - см. Mknod (1).

Стивен М. Уэбб
источник
3

С этого момента они могут быть доступны только тем программам, которые уже открыли эти устройства. Таким образом, это не способ размонтировать файловые системы. А с помощью udev перезагрузка может восстановить эти устройства. Странный способ изучения Unix.

Джерард Х. Пилле
источник