Mdev: Difference between revisions
(→USB Printer: update link) |
Prabuanand (talk | contribs) (moved content from Editing Custom network interface names page) |
||
(10 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{DISPLAYTITLE:mdev}} | {{DISPLAYTITLE:mdev}} | ||
mdev is the default [[Device_Manager|device manager]] on Alpine Linux. It is provided by busybox as alternative to [https://man.archlinux.org/man/udev.7 systemd's udev]. | |||
mdev is the default [[ | |||
mdev is '''not''' a drop in replacement for udev. See [[eudev]] for that instead. mdev lacks some features which makes it not recommended for a full blown desktop enviroment. | mdev is '''not''' a drop in replacement for udev. See [[eudev]] for that instead. mdev lacks some features which makes it not recommended for a full blown desktop enviroment. | ||
== Installation == | == Installation == | ||
The easy way to setup mdev is throught the [[#Setup_Script|setup script]]. For custom installation see the [[#Manually|manually section]]. Note that | The easy way to setup mdev is throught the [[#Setup_Script|setup script]]. For custom installation see the [[#Manually|manually section]]. Note that a manual installation is only recommended for advanced users. | ||
=== Setup Script === | === Setup Script === | ||
Line 13: | Line 11: | ||
The {{pkg|alpine-conf}} package privides [https://git.alpinelinux.org/alpine-conf/tree/setup-devd.in setup-devd] to easily install and setup device managers. | The {{pkg|alpine-conf}} package privides [https://git.alpinelinux.org/alpine-conf/tree/setup-devd.in setup-devd] to easily install and setup device managers. | ||
Install {{pkg|alpine-conf}} if not already. | Install {{pkg|alpine-conf}} if it is not already installed. | ||
{{cmd|# apk add {{pkg|alpine-conf}}}} | {{cmd|# apk add {{pkg|alpine-conf}}}} | ||
Setup mdev. | Setup mdev. | ||
Line 21: | Line 19: | ||
Mdev is provided by the {{pkg|busybox}} package which is pre installed on any alpine installation. To run mdev the [[OpenRC]] init scripts are required too. If it isn't already installed install it: | Mdev is provided by the {{pkg|busybox}} package which is pre installed on any alpine installation. To run mdev the [[OpenRC]] init scripts are required too. If it isn't already installed install it: | ||
{{cmd|# apk | {{cmd|# apk add {{pkg|busybox-mdev-openrc}}}} | ||
{{Note|If you already have a device manager installed you need to stop it before you start mdev.}} | |||
Enable the mdev service. | Enable the mdev service. | ||
Line 38: | Line 34: | ||
== Remove == | == Remove == | ||
{{warning| | {{warning|Use [[#Setup script|Setup script]] to change device manager. Manual removal of a device manager without first setting up an alternative may cause unexpected issues.}} | ||
First stop the service. This step can be skipped when you are running in a chroot. | First stop the service. This step can be skipped when you are running in a chroot. | ||
Line 44: | Line 40: | ||
Then disable it. | Then disable it. | ||
{{cmd|# rc-update delete mdev sysinit}} | {{cmd|# rc-update delete mdev sysinit}} | ||
You might also want to uninstall the init scripts since they are not used anymore. | You might also want to uninstall the init scripts since they are not used anymore. | ||
Line 52: | Line 47: | ||
== libudev replacement == | == libudev replacement == | ||
{{pkg|libudev-zero}} provides udev apis | {{pkg|libudev-zero}} provides udev apis but is independent from the device manager used. When installed it will make '''some''' udev reliant programms work with mdev. See <code>[https://github.com/illiliti/libudev-zero/#what-doesnt-work What doesn't work]</code>. | ||
== Configuration == | |||
''mdev'' reads {{path|/etc/mdev.conf}} and according to [https://git.busybox.net/busybox/plain/docs/mdev.txt mdev documentation] one can define a command to be executed per device definition. | |||
=== Custom network interface name === | |||
The command {{ic|nameif}} is used to change network interface name to set custom network interface name. | |||
The file {{path|/etc/mdev.conf}} needs to be edited as follows:{{cat|/etc/mdev.conf|<nowiki>-SUBSYSTEM=net;DEVPATH=.*/net/.*;.* root:root 600 @/sbin/nameif -s</nowiki>}} | |||
The above command tell ''mdev'' to call ''nameif'' for devices found in {{path|/sys/class/net/}}. | |||
{{cmd|# ls -d -C -1 /sys/class/net/eth* | |||
/sys/class/net/eth1 | |||
/sys/class/net/eth2 | |||
/sys/class/net/eth3 | |||
/sys/class/net/eth4 | |||
/sys/class/net/eth5 | |||
}} | |||
To view hwaddr or mac address with interface name {{ic|eth0}}, use the command {{Cmd|# cat /sys/class/net/eth0/address}} | |||
The command {{ic|nameif}} reads {{path|/etc/mactab}} by default. To set custom network interface name as {{ic|dmz0}} for hwaddr {{ic|90:e2:ba:04:28:c0}}, add an entry in the file {{path|/etc/mactab}} as follows: {{Cat|/etc/mactab| | |||
dmz0 90:e2:ba:04:28:c0}} | |||
Since {{path|/etc/mdev.conf}} is part of ramdisk, ramdisk rebuild is required. Issue the following command to configure: {{cmd|# grep /etc/mdev.conf /etc/mkinitfs/features.d/*.files | |||
/etc/mkinitfs/features.d/base.files:/etc/mdev.conf | |||
}} | |||
To rebuild ramdisk:{{cmd|<nowiki># mkinitfs $(ls /lib/modules/) | |||
==> initramfs: creating /boot/initramfs-lts | |||
</nowiki>}} | |||
To use renamed network interface without reboot, just call {{ic|nameif}} while the network interface is down:{{cmd|# nameif -s}} | |||
== USB Printer == | === USB Printer === | ||
See [[Printer_Setup#configure_mdev_for_USB_printers|configure mdev for USB printers]] | See [[Printer_Setup#configure_mdev_for_USB_printers|configure mdev for USB printers]] | ||
== Raspberry Pi Bluetooth Speaker == | === Raspberry Pi Bluetooth Speaker === | ||
See [[Raspberry_Pi_Bluetooth_Speaker#Bluetooth|Raspberry Pi Bluetooth Speaker]] | See [[Raspberry_Pi_Bluetooth_Speaker#Bluetooth|Raspberry Pi Bluetooth Speaker]] | ||
Latest revision as of 04:40, 16 September 2025
mdev is the default device manager on Alpine Linux. It is provided by busybox as alternative to systemd's udev. mdev is not a drop in replacement for udev. See eudev for that instead. mdev lacks some features which makes it not recommended for a full blown desktop enviroment.
Installation
The easy way to setup mdev is throught the setup script. For custom installation see the manually section. Note that a manual installation is only recommended for advanced users.
Setup Script
The alpine-conf package privides setup-devd to easily install and setup device managers.
Install alpine-conf if it is not already installed.
# apk add alpine-conf
Setup mdev.
# setup-devd mdev
Manually
Mdev is provided by the busybox package which is pre installed on any alpine installation. To run mdev the OpenRC init scripts are required too. If it isn't already installed install it:
# apk add busybox-mdev-openrc
Enable the mdev service.
# rc-update add mdev sysinit
# rc-update add hwdrivers sysinit
If you are not running in a chroot you will also want to start mdev.
# rc-service mdev start
# rc-service hwdrivers start
You might also want to take a look at libudev replacement if programms you want to use depend on udev.
Remove

First stop the service. This step can be skipped when you are running in a chroot.
# rc-service mdev stop
Then disable it.
# rc-update delete mdev sysinit
You might also want to uninstall the init scripts since they are not used anymore.
# apk del busybox-mdev-openrc
The mdev binary is part of the busybox package and therefor can't be uninstalled.
libudev replacement
libudev-zero provides udev apis but is independent from the device manager used. When installed it will make some udev reliant programms work with mdev. See What doesn't work
.
Configuration
mdev reads /etc/mdev.conf and according to mdev documentation one can define a command to be executed per device definition.
Custom network interface name
The command nameif
is used to change network interface name to set custom network interface name.
The file /etc/mdev.conf needs to be edited as follows:
Contents of /etc/mdev.conf
The above command tell mdev to call nameif for devices found in /sys/class/net/.
# ls -d -C -1 /sys/class/net/eth* /sys/class/net/eth1 /sys/class/net/eth2 /sys/class/net/eth3 /sys/class/net/eth4 /sys/class/net/eth5
To view hwaddr or mac address with interface name eth0
, use the command
# cat /sys/class/net/eth0/address
The command nameif
reads /etc/mactab by default. To set custom network interface name as dmz0
for hwaddr 90:e2:ba:04:28:c0
, add an entry in the file /etc/mactab as follows:
Contents of /etc/mactab
Since /etc/mdev.conf is part of ramdisk, ramdisk rebuild is required. Issue the following command to configure:
# grep /etc/mdev.conf /etc/mkinitfs/features.d/*.files /etc/mkinitfs/features.d/base.files:/etc/mdev.conf
To rebuild ramdisk:
# mkinitfs $(ls /lib/modules/) ==> initramfs: creating /boot/initramfs-lts
To use renamed network interface without reboot, just call nameif
while the network interface is down:
# nameif -s
USB Printer
See configure mdev for USB printers
Raspberry Pi Bluetooth Speaker
See Raspberry Pi Bluetooth Speaker