Переход с DevFS на Udev

From ArchWiki

Jump to: navigation, search
i18n
English
Русский
繁體中文
简体中文


Дополнительная информация об udev:

Начиная с initscripts 0.7, Arch теперь официально поддерживает Udev. Для этого требуется следущее:

  • initscripts версии 0.7 или новее
pacman -Qs initscripts
  • ядро версии 2.6.x
uname -r

Переход на Udev потребует нескольких шагов.

Contents

Изменение параметров ядра

Ядро в Arch Linux монтирует devfs по умолчанию. Чтобы этого не происходило, необходимо передать ядру параметр "devs=nomount":

GRUB: /boot/grub/menu.lst

kernel /vmlinuz26 root=/dev/discs/disc0/part3 ro devfs=nomount

LILO: /etc/lilo.conf

boot=/dev/hdx
root=/dev/hdy
append="devfs=nomount"

(не забудьте запустить /sbin/lilo после внесения изменений)

Также вы должны убедиться, что ваш загрузчик не использует схему именования разделов devfs:

udev        DevFS                 
-----------------------------------
/dev/fd0    /dev/floppy/0         
/dev/hda    /dev/discs/disc0/disc 
/dev/hdb2   /dev/discs/disc1/part2
/dev/hda3   /dev/discs/disc0/part3

Итак, вот пример правильной строчки загрузки ядра для GRUB:

kernel /vmlinuz26 root=/dev/hda3 ro devfs=nomount

Обратите внимание: начиная с версии ядра 2.6.13 поддержка devfs была отключена, поэтому вам больше не нужно передавать параметр devfs=nomount ядру, чтобы произвести загрузку с поддержкой udev.

Установка пакета udev

pacman -S udev

Изменение файла /etc/fstab

Закомментируйте строчку с "sysfs" и поменяйте везде "usbdevfs" на "usbfs". Так же проверьте, что файл /etc/fstab содержит строчку с "/dev/shm". После всех изменений строчки должны выглядеть примерно вот так:

#sysfs /sys sysfs defaults 0 0
usbfs /proc/bus/usb usbfs defaults 0 0
none /dev/shm tmpfs defaults 0 0
none /dev/pts devpts defaults 0 0

Убедитесь, что вы используете /dev/hda1 формат, а не /dev/discs/disc0/part1 в файле /etc/fstab, иначе при загрузке системы вы увидите сообщения об ошибках.

Перезагрузка

Перезагрузитесь, и все готово.

WARNING: Unable to open an initial console

Если ваше ядро при загрузки зависает с ошибкой:

WARNING: Unable to open an initial console
  • загрузитесь с инсталяционного диска Arch Linux
  • смонтируйте свой корневой раздел (пример: mount /dev/discs/disc0/part3 /mnt)
  • смените корневой каталог командой chroot (пример: chroot /mnt)
  • создайте отсутствующие статические узлы в /dev:
cd /dev
mknod -m 660 console c 5 1
mknod -m 660 null c 1 3

Эти узлы необходимы для загрузки Udev.

Дополнительную информацию можно посмотреть здесь.

Система постоянно перезагружается

Если ваша система продолжает постоянно перезагружаться, то вы должны удалить следующую часть из menu.lst:

devfs=nomount

После того, как система загрузится нужно выполнить команду:

/sbin/migrate-udev

Теперь поместите devfs=nomount обратно в свой menu.lst и перезагрузитесь. Это должно помочь.

Настройка Udev

При запуске Udev читает все файлы правил (*.rules) в /etc/udev/rules.d. Когда Udev добавляет устройство, правила читаются в лексиграфическом порядке до нахождения совпадения. Это значит, что если вам необходима настройка под себя, вы должны создать файл правил, который лексиграфически меньше чем используемый по умолчанию udev.rules. Arch использует 00.rules для пользовательской настройки, но естественно, вы можете более творчески подойти к выбору имени, если захотите.

Вы не должны править /etc/udev/rules.d/udev.rules, так как он используется разработчиками для улучшения набора правил по умолчанию. Если необходимо сделать какие-либо изменения в правилах - скопируйте нужные строки в файл 00.rules.

Информация об udev >= 053

Настройка прав и правил

В последней версии Udev произошли изменения в формате настройки.

Права и пользователь/группа владелец теперь описывается не в отдельном файле, а в самих правилах. В качестве примера смотрите /etc/udev/rules.d/udev.rules.

Это значит, что любые назначенные вами права должны быть перемещены в файл правил, например в /etc/udev/rules.d/udev.rules или /etc/udev/rules.d/00-my.rules. Старые файлы в etc/udev/permissions.d/ больше не действуют и могут быть удалены.

Обратитесь к man странице udev(8) за дальнейшей информацией о написании правил.

Обычный пользователь, в принципе, не должен писать новых правил, вам следует только добавить пользователя в определенные группы в файле /etc/group :

gpasswd -a <username> video
gpasswd -a <username> audio
gpasswd -a <username> optical
gpasswd -a <username> floppy
gpasswd -a <username> storage
gpasswd -a <username> scanner

Объяснение прав групп :

video: включает tv карты, framebuffer устройства (но НЕ! графические карты,они пренадлежат к группе users)
audio: дает доступ к звуковым устройствам и rtc
optical: дает доступ к записи и копированию с cd/dvd устройств
floppy: дает доступ к форматированию и разбиению на разделы дискет
storage: дает доступ к форматированию и разбиению на разделы съемных запоминающих устройств, таких как usbstick или usb жестких дисков
scanner: право на использование сканирующих устройств

Символические ссылки на cd/dvd устройства создаются автоматически и должны вас устраивать.

Известные проблемы:

  • Если после обновления до udev >=053 ваш usbstick не определяется, сделайте reboot и все должно исправиться.

Информация об udev <= 050

Настройка прав и правил

Набор правил используемый Udev находится в /etc/udev/*. Если вы вносите в них изменения, добавьте эти файлы в секцию NoUpgrade вашего /etc/pacman.conf.

Легче, однако, будет создать собственные файлы правил и прав. Поведение Udev по отношению к заданному устройству определяется первым найденным соответствующим правилом. Используя префикс '00-' (это нули,а не буквы О) со своими файлами вы заставите Udev читать ваши правила первыми. Имя файла должно заканчиваться на .rules или .permissions, иначе оно будет проигнорировано.

Пример файла прав (/etc/udev/permissions.d/00-myrules.permissions):

# звуковые устройства
dsp*:root:users:0660
audio*:root:users:0660
midi*:root:users:0660
mixer*:root:users:0660
sequencer*:root:users:0660
sound/*:root:users:0660
snd/*:root:users:0660
beep:root:users:0660
admm*:root:users:0660
adsp*:root:users:0660
aload*:root:users:0660
amidi*:root:users:0660
dmfm*:root:users:0660
dmmidi*:root:users:0660
sndstat:root:users:0660

# дисковые устройства для доступа к записи и аудиокопированию
hdc:root:users:660
hdd:root:users:660

# v4l устройства и радио карты
video*:root:users:0660
radio*:root:users:0660
winradio*:root:users:0660
vtx*:root:users:0660
vbi*:root:users:0660
video/*:root:users:0660
vttuner:root:users:0660
v4l/*:root:users:0660

# scsi устройства, для scsi сканеров и пишущих cdrom`ов
sg*:root:users:0660
pg*:root:users:0660
cdwriter:root:users:0660

Некоторые замечания

  • ЗВУК
    Если нет звука, хотя вы уверены что настроили права верно, попробуйте запустить alsaconf из под root`а, это добавит некоторые псевдонимы модулей в modprobe.conf, и используйте микшер, например alsamixer, для проверки уровней громкости и включения "специальных" возможностей, например 3D звука. После этого добавьте в секцию модулей вашего rc.conf следующее:
    snd-card-0 snd-pcm-oss
    и все должно заработать.
  • CDROMы
    Если вы хотите иметь возможность записи и риппинга, вам придется изменить права на \"настоящее\" устройство (например hd*). Изменение прав на символические ссылки не будет работать.
  • МОДЕМЫ
    ttyS* можно не определять, если pppd запускается как suid root.
  • ПЕЧАТЬ
    Для печати ничего менять не следует. cups запускается от root`а.
  • ЖЕСТКИЕ ДИСКИ И USB-STICKS
    Эти устройства обычно описываются в fstab и если опция "users" присутствует в описании - никаких проблем быть не должно.
  • USB СКАНЕРЫ
    Для usb сканеров ничего менять не надо. Большинство приложений для работы со сканерами используют libusb, которая не обращается на прямую к нодам устройств. Достаточно правильно настроить hotplug. Если сканер работал раньше - то будет работать и с udev.

Создание символических ссылок на устройства

Это только пример, но из него должно быть понятно, как это работает. Добавьте следующее в файл /etc/udev/rules.d/00-myrules.rules:

# ссылки на cdrom/cdrw
KERNEL="hdc", SYMLINK="dvd"
KERNEL="hdd", SYMLINK="cdrom cdrecorder"
# важно для пользователей модемов: поменяйте на ttyS1, 
#  если вы используете второй последовательный порт
KERNEL="ttyS0", SYMLINK="modem"

Перезапустите udev, для того чтобы проверить правильно ли работают ваши ссылки:

/sbin/udevstart

Дополнительную информацию о правилах можно посмотреть здесь:
http://www.reactivated.net/udevrules.php

Personal tools