第十章,Linux 模拟

内容列表

10.1. 模拟安装
10.1.1. 配置内核
10.1.2. 配置 Linux 库
10.1.3. 安装 Acrobat Reader件
10.2. 目录结构
10.3. 模拟 /proc

NetBSD在i386、alpha、mac68k、macppc和其它一些平台的移植版可以通过Linux模拟层执行大量的原生Linux程序。通常,由于模拟必须重新实现硬件指令,甚至软件的架构(特别是在一些老机器上),你会认为模拟即慢又低效。但Linux模拟是个例外:它仅仅是一个非常薄的、用于处理两个系统之间本已经非常相似的系统调用的软件层。程序代码以全速执行,因而性能不会降低,感觉上也和NetBSD的程序一样。

本章通过演示安装著名的Acrobat Reader版本4来阐述如何配置Linux模拟。

10.1. 模拟安装

compat_linux(8)处的帮助(man page)阐述了如何安装Linux模拟;通过包(package)只需两步即可。

  1. 配置内核

  2. 配置 Linux 库

  3. 安装 Acrobat Reader件

10.1.1. 配置内核

如果你使用GENERIC内核,什么都不用干,已经装好了。

如果是自定义内核,检查以下选项是否被启用:

option COMPAT_LINUX
option EXEC_ELF32

启用的话,编译完内核就可以进入下一步了。

10.1.2. 配置 Linux 库

应用程序通常都是需要共享库才能工作的,对于Linux程序,Linux共享库则是必需的。你可以从任何不太老的Linux发行版中得到共享库,但更好的方法是从包(package system)中自动安装SuSE版的。安装时,会有如下过程:

以上工作不需要手工干预,包系统(package system)会自动处理(好吧 :-))。接下来,是安装共享库的具体过程。

首先你要有一个处理RPM的工具,也就是rpm,用于提取SuSE的共享库。在/usr/pkgsrc/misc/rpm/中执行makemake install即可。

然后安装suse_base这个包。你可以从包系统里下载,也可以找个SuSE的安装盘。把找到的东西放到/usr/pkgsrc/distfiles/suse,然后换到/usr/pkgsrc/emulators/suse_base目录里执行makemake install

以相同的方法再安装suse_compatsuse_x11。成功后应当有如下的显示:

# pkg_info -a | grep suse
suse_base-7.3nb5    Linux兼容包
suse_x11-7.3nb2     Linux图形界面程序兼容包
suse_compat-7.3     Linux旧版共享库兼容包

10.1.3. 安装 Acrobat Reader

万事俱备,开始装Acrobat Reader。进入/usr/pkgsrc/print/acroread目录,使用如下命令:

# make
# make install

注意

你需要在/etc/mk.conf中添加ACCEPTABLE_LICENSES+=adobe-acrobat-license,表明接受Acrobat Reader的使用协议之后,才能安装。当然了,其实你照着make说的做就行了。

10.2. 目录结构

如果仔细注意安装过程的话,会发现/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 

10.3. 模拟 /proc

有些Linux程序员会使用Linux上才有的/proc目录。NetBSD上的procfs能够模拟包含了Linux专用的pseudo文件的/proc目录。使用下面的带有“linux”选项的命令就可以启用模拟功能:

# mount_procfs -o linux procfs /emul/linux/proc

如此,一个模拟Linux的proc的文件系统会被挂载在/emul/linux/proc目录中。在/etc/fstab里添加如下指令就能自动挂载:

procfs /emul/linux/proc procfs ro,linux

Valid XHTML 1.0!