内容列表
NetBSD在i386、alpha、mac68k、macppc和其它一些平台的移植版可以通过Linux模拟层执行大量的原生Linux程序。通常,由于模拟必须重新实现硬件指令,甚至软件的架构(特别是在一些老机器上),你会认为模拟即慢又低效。但Linux模拟是个例外:它仅仅是一个非常薄的、用于处理两个系统之间本已经非常相似的系统调用的软件层。程序代码以全速执行,因而性能不会降低,感觉上也和NetBSD的程序一样。
本章通过演示安装著名的Acrobat Reader版本4来阐述如何配置Linux模拟。
compat_linux(8)处的帮助(man page)阐述了如何安装Linux模拟;通过包(package)只需两步即可。
配置内核
配置 Linux 库
安装 Acrobat Reader件
如果你使用GENERIC内核,什么都不用干,已经装好了。
如果是自定义内核,检查以下选项是否被启用:
option COMPAT_LINUX option EXEC_ELF32
启用的话,编译完内核就可以进入下一步了。
应用程序通常都是需要共享库才能工作的,对于Linux程序,Linux共享库则是必需的。你可以从任何不太老的Linux发行版中得到共享库,但更好的方法是从包(package system)中自动安装SuSE版的。安装时,会有如下过程:
一个用于Linux程序的第二根目录(secondary root directory)会被创建,该目录位于/emul/linux/。模拟状态下的Linux程序会使用该目录作为根目录。如果此目录不存在,系统会选择/作为根目录。
举例说明,假设一个Linux程序要打开/etc/ld.so.conf,它会先在/emul/linux/etc/ld.so.conf处寻找,找不到则转至/etc/ld.so.conf。
多数程序会明确的表明它所依赖的共享库。如Acrobat Reader,在/usr/pkgsrc/print/acroread中输入命令make depends后,程序会输出:
===> acroread-4.0 requires Linux glibc2 libraries - see compat_linux(8).
以上工作不需要手工干预,包系统(package system)会自动处理(好吧 :-))。接下来,是安装共享库的具体过程。
首先你要有一个处理RPM的工具,也就是rpm,用于提取SuSE的共享库。在/usr/pkgsrc/misc/rpm/中执行make和make install即可。
然后安装suse_base这个包。你可以从包系统里下载,也可以找个SuSE的安装盘。把找到的东西放到/usr/pkgsrc/distfiles/suse,然后换到/usr/pkgsrc/emulators/suse_base目录里执行make和make install。
以相同的方法再安装suse_compat和suse_x11。成功后应当有如下的显示:
#pkg_info -a | grep susesuse_base-7.3nb5 Linux兼容包 suse_x11-7.3nb2 Linux图形界面程序兼容包 suse_compat-7.3 Linux旧版共享库兼容包
万事俱备,开始装Acrobat Reader。进入/usr/pkgsrc/print/acroread目录,使用如下命令:
#make#make install
你需要在/etc/mk.conf中添加ACCEPTABLE_LICENSES+=adobe-acrobat-license,表明接受Acrobat Reader的使用协议之后,才能安装。当然了,其实你照着make说的做就行了。
如果仔细注意安装过程的话,会发现/emul/linux其实是指向/usr/pkg/emul/linux的符号链接,这个目录中包含:
bin/
boot/
cdrom/
dev/
etc/
floppy/
home/
lib/
mnt/
opt/
proc/
root/
sbin/
usr/
只能使用/emul/linux,永远也不要动/usr/pkg/emul/linux。后者与实现细节有关,并且会在日后有所变动。
Linux模拟程序需要多大的空间呢?在我的机器上:
#cd /usr/pkg/emul#du -k linux... 214049 linux/
启动安装在最常见的/usr/pkg/bin目录中的Acrobat Reader与启动其它程序的方法一致:
$acroread netbsd.pdf