/dev/mem — файл символьного устройства, представляющий образ физической памяти компьютера, он может быть использован для исследования системы и для внесения в неё исправлений (частично).
Адреса байтов в /dev/mem рассматриваются как адреса физической памяти, при ссылках на несуществующие адреса возвращаются ошибки. Исследование системы или внесение в неё исправлений иногда приводят к непредвиденным результатам в том случае, если есть биты, которые разрешается только читать или только записывать.
Начиная с версии ядра Linux 2.6.26 и в зависимости от архитектуры, параметр настройки ядра CONFIG_STRICT_DEVMEM (включен по умолчанию) ограничивает области, к которым можно получить доступ через этот файл. Например, на архитектуре x86 доступ к ОЗУ не разрешен, однако к отображенной в области PCI памяти доступ есть. Для создания файла нужно выполнить:
sudo mknod -m 660 /dev/mem c 1 1
sudo chown root:kmem /dev/mem
Файл /dev/kmem идентичен файлу /dev/mem за исключением того, что он обеспечивает доступ к виртуальной памяти ядра, а не к физической. Начиная с версии ядра Linux 2.6.26, этот файл становится доступен только после включения параметра настройки ядра CONFIG_DEVKMEM. Для создания файла нужно выполнить:
sudo mknod -m 640 /dev/kmem c 1 2
sudo chown root:kmem /dev/kmem
Файл /dev/port похож на /dev/mem, но предоставляет доступ к портам ввода-вывода. Для создания файла нужно выполнить:
sudo mknod -m 660 /dev/port c 1 4
sudo chown root:kmem /dev/port