http://fsa.ia.ac.cn/files/errata.txt
1. FreeBSD上运行Linux二进制代码的问题
1)FreeBSD上可以运行超过90%的Linux二进制代码。RPM包可安装在/usr/compat/linux里。
/usr/compat/linux看上去像一个完整的Linux根文件系统,FreeBSD将其作为一个虚拟
的Linux“小世界”。可以在/usr/compat/linux/var/lib/rpm/中找到RPM系统的包维护
文件。
Linux程序在打开文件的时候,FreeBSD内核会首先在/usr/compat/linux查找;
假如找不到,就会在FreeBSD真正的VFS中寻找。
2)由于FreeBSD对Linux的仿真是建立在对系统调用的调用格式简单转换的基础上的,
所以在FreeBSD中对Linux程序的执行效率与运行FreeBSD本征程序的效率相差不大。
2. FreeBSD的devfs问题
众所周知,Linux在2.6.x内核中将devfs标记为“deprecated”,而新开发了udev,
他们这样做的主要原因有:
(a)devfs的代码不灵活,只显示存在的设备列表,而有时候我们希望看到暂时不存在的设备名
(b)major,minor快被分配光了,我们需要考虑动态分配方法,而devfs不能支持
(c)用户希望一个硬件对应的设备名是固定的,例如启动盘就叫 /dev/boot_disk,
而不管它是scsi还是ide的
(d)设备在热插拔的时候,用户态程序应该有办法得到通知
目前FreeBSD的devfs则是以往的devfs和Linux udev众多特点的一些融合,而不是简单
搬用旧式的Linux devfs。
1)FreeBSD不赞成在设备不存在时依旧保留其节点文件。假如非要使用这样的功能,
可以用断的软链接实现。
2)FreeBSD的devfs既支持动态分配major/minor号码,也可以由驱动程序指定。
3)FreeBSD的devfs支持软链接,例如cdrom0 -> acd0, cdrom1 -> cd2,这样可以实现
应用程序按统一的命名访问功用相同实现不同的设备,例如IDE CDROM驱动器和SCSI CDROM
驱动器。软链接可以在/etc/devfs.conf中永久设置。假如手工使用ln -s命令设置,
则在系统关机、重启后,原先设置的软链会丢失。
4)FreeBSD有一个devfs守护进程devd。用户程序可以通过UNIX domain socket访问
/var/run/devd.pipe得到设备热插拔的消息通知。