Утилиты CLI, создание файлов: команда mknod

Команда mknod предназначается для создания файлов специального типа -- файлов устройств. В качестве аргументов она требует:

  • имени устройства в форме /dev/dev_name;
  • указания его типа -- символьного -- c (например, виртуальные терминалы) или блочного -- b (например, дисковые накопители и их разделы);
  • старшего номера (major) -- уникального идентификатора, характеризующего родовую группу устройств (например, 4 -- идентификатор виртуальных терминалов);
  • младшего номера (minor), являющегося идентификатором конкретного устройства в своей группе (например, младший номер 0 в группе старшего номера 4 -- идентификатор первой, системной, виртуальной консоли, а 63 -- идентификатор последней теоретически возможной из них).

Кроме стандартных, команда mknod имеет только одну опцию -m (--mode), с помощью которой устанавливаются атрибуты доступа к создаваемому файлу устройства (точно также, как это было описано для команды mkdir). Таким образом, команда

$ mknod --mode=200 /dev/tty63 c 4 63

создаст файл устройства для последней теоретически возможной виртуальной консоли. Что, впрочем, не значит, будто бы сразу после этого в нее можно переключаться -- предварительно следует внести должные изменения в скрипты инициализации.

На практике команда mknod часто используется в опосредованном виде -- в составе сценария /dev/MAKEDEV, автоматизирующего процесс создания файлов устройств. В частности, он делает ненужным знание старшего и младшего номеров устройств. Правда, только для тех из них, которые были предусмотрены при разработке сценария. Если же требуемое устройство не входит в число охваченных данным вариантом /dev/MAKEDEV, использования команды mknod в явном виде не избежать. Правда, все более широкое внедрение файловой системы devfs (в BSD-системах) или (в Linux) механизма udev, позволяющих создавать файлы устройств при загрузке (причем -- только реально существующих в системе) или "на лету", при "горячем" подключении, грозят сделать команду mknod анахронизмом. Тем не менее, для таких систем, как OpenBSD и DragonFlyBSD она остаётся актуальной.


Содержание

. .