函数库目录 /lib

/lib 就是写程序用到的函数库文件目录 . 该目录下除了函数库文件之外 , 还有一些其他文件 , 如用户人证所需调用的文件 , 硬件的模块等 . 所以 /lib/ 与其说是函数库文件 , 不如说是一个共享的软件仓库 , 只要是供所有程序引用的文件 , 都可以归类其中 . 更准确的说要属于系统 kernel 启动所使用的函数库或者当执行 /bin/ , /sbin/ 中的命令时会调用的函数库才会归类到该目录下 , 其余的则会放到 /usr/lib/ 下 .

/lib/bdevid/

本目录中的文件默认由 nash 这个 RPM 文件提供 , 其中放了一些 block device 的函数库 .

/lib/fireware/

本目录下存放的不是一般的函数库 , 而是一些可能会被用到的固件 , 有些 hotplut 硬件再安装到系统时 , 需要安装 fireware , 这时该 fireware 会被安装到该目录下 .

/lib/i686/

本目录下会有些子目录 , 主要用来分类用 , 其子目录中应该存放和 /lib/ 相同的文件名 , 因为在子目录下的函数库都是经过一些修正调整和的文件 , 以适用于不同的平台 .

/lib/iptables/

iptables 防火墙的函数库 .

/lib/kbd/

Keyboard Input Driver 所使用的模块 . 一般 Linux 系统环境下用户所使用的键盘布局都会参照该目录下的配置 . 在进入系统前 , 系统会先配置键盘的语言 , 该文件在 /etc/sysconfig/keyboard 中 , 当该文件指定所使用的语言为 us 时 , 系统便会直接使用 /lib/kbd/keymaps/ 下的 us.map.gz 文件 .

/lib/lsb/

lsb 其实是一个名称为 LSB (Linux Standard Base) 的组织定义出的目录 , 目的是希望将 /etc/rc.d/init.d/ 下的 functions 慢慢转变成 /lib/lsb/ 目录下的 init-functions 文件 . 不过建议还是先用旧的启动服务方式比较稳妥 .

/lib/modules/

该目录中存放的是支持硬件的模块文件 . 其中的文件大多以 .ko 结尾 . 这里面就涉及到模块依赖性判断 , 加载等问题 . 不在此文叙述范围 . 需要注意的问题 :
1) 假 设当初 kernel 已经配置该模块为 * , 代表在编译内核时已经将该模块放入 Initrd 文件中 , 因此在启动时就已经加载 , 无论配置 /etc/modprobe.conf 或者更改 /lib/modules/ 下的模块 , 都会发现所载入的模块版本还是同一个 , 除非将 initrd 文件中的模块更换 .
2) /lib/modules/$(uname -r) 下的 updates/ 目录代表经过更新后的模块所存放的区域 , 也就是说不论系统有多少模块 , 在 加载前都会先检查 updates/ 目录下的模块 , 有就直接加载 . 因此即使在 kernel/ 下有与 updates/ 相同的模块 , 系统也只会加载后者 .

总的来说 , 正确的模块加载顺序如下 . 文末附解压 initrd 文件步骤 .
1) initrd 中 lib/ 目录下的 .ko 文件
2) /lib/modules/$(uname -r)/updates/*
3) /lib/modules/$(uname -r)/kernels/*

/lib/rtkaio/

AIO 是一种新的 I/O 机制 , 该目录即该机制的函数库 . 在 2.6 以后的内核中已成为标准配置 . 更详细的解释请点击这里 .

/lib/security/

Linux 的 PAM (Pluggable Authentication Modules) 机制 . 只要的配置文件在 /etc/pam.d/ 下 . 基本上 PAM 机制将所有的管理方式分为以下四类 : account , authentication , password , session . 详细教程请点击这里 , 这里 , 这里 .
   
/lib/terminfo/

该目录下存放的是一般会用到的控制台所需要的函数库 . 所有文件按照文件的名称的首字母来存放的 .

/lib/tls/

TLS (Thread-Local Storage) 是将本机内存中的程序转变为 Thread 的其中的一种机制 . 这个对于 XEN 来说是完全不建议使用的 , 像在 Fedora 或 Suse 中该目录就为空 , 而在 Ubuntu 这种以 KVM 位默认虚拟技术的系统中 , 该目录下就会有相应的库文件 .

/lib/udev/

udev 是一套设备的管理机制 , udev 通过 sysfs 的文件系统 (参考 /sys/ 下的文件信息) , 可以正确的掌握目系统上存在的硬件设备 , 以及针对每一个硬件设备做出不同的判断 . 该目录是 /etc/udev/ 的函数库文件 . 更详细的理解请点击这里 .

附 : 解压 initrd 文件方法 :
# cp /boot/initrd.img /tmp
# mv initrd.img initrd.img.gz
# gunzip initrd.img.gz
# cpio -ivmd < initrd.img

参考自 : 邱世华 Linux 系统架构与目录解析

  • jaseywang

    test from my archlinux

  • http://aegiryy.net aegiryy

    受教了,以前从来都没有注意过这里面放什么。。。

    • http://jaseywang.info jaseywang

      不过大部分平时都永不到,还是 Mac 用这舒服(盯着你的 Mac 流口水