Eudev 软件包包含动态创建设备节点的程序。
采用一个规避措施,防止 /tools 目录被硬编码到 Eudev 二进制文件的库文件位置中:
cat > config.cache << "EOF" HAVE_BLKID=1 BLKID_LIBS="-lblkid" BLKID_CFLAGS="-I/tools/include" EOF
准备安装 Eudev:
./configure --prefix=/usr \ --bindir=/sbin \ --sbindir=/sbin \ --libdir=/usr/lib \ --sysconfdir=/etc \ --libexecdir=/lib \ --with-rootprefix= \ --with-rootlibdir=/lib \ --enable-manpages \ --disable-static \ --config-cache
编译该软件包:
LIBRARY_PATH=/tools/lib make
这里的 LIBRARY_PATH 变量和下面的 LD_LIBRARY_PATH 允许使用 /tools 中存在,但尚未安装到主系统中的库。LIBRARY_PATH 被用于在链接过程中查找库,LD_LIBRARY_PATH 用于在程序执行过程中查找库。
创建一些目录,它们目前被用于测试,但之后也会成为安装好的 eudev 的一部分。
mkdir -pv /lib/udev/rules.d mkdir -pv /etc/udev/rules.d
运行以下命令以测试编译结果:
make LD_LIBRARY_PATH=/tools/lib check
安装该软件包:
make LD_LIBRARY_PATH=/tools/lib install
安装一些在 LFS 环境中很有用的自定义规则和支持文件:
tar -xvf ../udev-lfs-20171102.tar.bz2 make -f udev-lfs-20171102/Makefile.lfs install
硬件设备的相关信息被维护在 /etc/udev/hwdb.d
和
/lib/udev/hwdb.d
目录中。 Eudev 需要将这些信息编译到二进制数据库 /etc/udev/hwdb.bin
中。初始化该数据库:
LD_LIBRARY_PATH=/tools/lib udevadm hwdb --update
每次硬件信息有更新时,都要运行该命令。