Переход с DevFS на Udev
From ArchWiki
i18n |
---|
English |
Русский |
繁體中文 |
简体中文 |
Дополнительная информация об udev:
- http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ
- http://bbs.archlinux.org/viewtopic.php?t=5702&start=0
Начиная с 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