diff --git a/zh_CN.GB2312/books/handbook/Makefile b/zh_CN.GB2312/books/handbook/Makefile
index 7f201a288b..ab7e5a1b51 100644
--- a/zh_CN.GB2312/books/handbook/Makefile
+++ b/zh_CN.GB2312/books/handbook/Makefile
@@ -1,259 +1,272 @@
#
# $FreeBSD$
#
# Build the FreeBSD Handbook (Simplified Chinese).
#
-# Original revision: 1.102
+# Original revision: 1.103
# ------------------------------------------------------------------------
#
# Handbook-specific variables
#
# WITH_PGPKEYS The print version of the handbook only prints PGP
# fingerprints by default. If you would like for the
# entire key to be displayed, then set this variable.
# This option has no affect on the HTML formats.
#
# Handbook-specific targets
#
# pgpkeyring This target will read the contents of
# pgpkeys/chapter.sgml and will extract all of
# the pgpkeys to standard out. This output can then
# be redirected into a file and distributed as a
# public keyring of FreeBSD developers that can
# easily be imported into PGP/GPG.
#
# ------------------------------------------------------------------------
.PATH: ${.CURDIR}/../../share/sgml/glossary
MAINTAINER= doc@FreeBSD.org
DOC?= book
FORMATS?= html-split
HAS_INDEX= true
USE_PS2PDF= yes
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
IMAGES_EN = advanced-networking/isdn-bus.eps
IMAGES_EN+= advanced-networking/isdn-twisted-pair.eps
IMAGES_EN+= advanced-networking/natd.eps
IMAGES_EN+= advanced-networking/net-routing.pic
IMAGES_EN+= advanced-networking/static-routes.pic
IMAGES_EN+= geom/striping.pic
IMAGES_EN+= install/adduser1.scr
IMAGES_EN+= install/adduser2.scr
IMAGES_EN+= install/adduser3.scr
IMAGES_EN+= install/boot-mgr.scr
IMAGES_EN+= install/console-saver1.scr
IMAGES_EN+= install/console-saver2.scr
IMAGES_EN+= install/console-saver3.scr
IMAGES_EN+= install/console-saver4.scr
IMAGES_EN+= install/desktop.scr
IMAGES_EN+= install/disklabel-auto.scr
IMAGES_EN+= install/disklabel-ed1.scr
IMAGES_EN+= install/disklabel-ed2.scr
IMAGES_EN+= install/disklabel-fs.scr
IMAGES_EN+= install/disklabel-root1.scr
IMAGES_EN+= install/disklabel-root2.scr
IMAGES_EN+= install/disklabel-root3.scr
IMAGES_EN+= install/disk-layout.eps
IMAGES_EN+= install/dist-set.scr
IMAGES_EN+= install/dist-set2.scr
IMAGES_EN+= install/docmenu1.scr
IMAGES_EN+= install/ed0-conf.scr
IMAGES_EN+= install/ed0-conf2.scr
IMAGES_EN+= install/edit-inetd-conf.scr
IMAGES_EN+= install/fdisk-drive1.scr
IMAGES_EN+= install/fdisk-drive2.scr
IMAGES_EN+= install/fdisk-edit1.scr
IMAGES_EN+= install/fdisk-edit2.scr
IMAGES_EN+= install/ftp-anon1.scr
IMAGES_EN+= install/ftp-anon2.scr
IMAGES_EN+= install/hdwrconf.scr
IMAGES_EN+= install/keymap.scr
IMAGES_EN+= install/main1.scr
IMAGES_EN+= install/mainexit.scr
IMAGES_EN+= install/main-std.scr
IMAGES_EN+= install/main-options.scr
IMAGES_EN+= install/main-doc.scr
IMAGES_EN+= install/main-keymap.scr
IMAGES_EN+= install/media.scr
IMAGES_EN+= install/mouse1.scr
IMAGES_EN+= install/mouse2.scr
IMAGES_EN+= install/mouse3.scr
IMAGES_EN+= install/mouse4.scr
IMAGES_EN+= install/mouse5.scr
IMAGES_EN+= install/mouse6.scr
IMAGES_EN+= install/mta-main.scr
IMAGES_EN+= install/net-config-menu1.scr
IMAGES_EN+= install/net-config-menu2.scr
IMAGES_EN+= install/nfs-server-edit.scr
IMAGES_EN+= install/ntp-config.scr
IMAGES_EN+= install/options.scr
IMAGES_EN+= install/pkg-cat.scr
IMAGES_EN+= install/pkg-confirm.scr
IMAGES_EN+= install/pkg-install.scr
IMAGES_EN+= install/pkg-sel.scr
IMAGES_EN+= install/probstart.scr
IMAGES_EN+= install/routed.scr
IMAGES_EN+= install/security.scr
IMAGES_EN+= install/sysinstall-exit.scr
IMAGES_EN+= install/timezone1.scr
IMAGES_EN+= install/timezone2.scr
IMAGES_EN+= install/timezone3.scr
IMAGES_EN+= install/userconfig.scr
IMAGES_EN+= install/userconfig2.scr
IMAGES_EN+= install/xf86setup.scr
IMAGES_EN+= mail/mutt1.scr
IMAGES_EN+= mail/mutt2.scr
IMAGES_EN+= mail/mutt3.scr
IMAGES_EN+= mail/pine1.scr
IMAGES_EN+= mail/pine2.scr
IMAGES_EN+= mail/pine3.scr
IMAGES_EN+= mail/pine4.scr
IMAGES_EN+= mail/pine5.scr
IMAGES_EN+= install/example-dir1.eps
IMAGES_EN+= install/example-dir2.eps
IMAGES_EN+= install/example-dir3.eps
IMAGES_EN+= install/example-dir4.eps
IMAGES_EN+= install/example-dir5.eps
IMAGES_EN+= security/ipsec-network.pic
IMAGES_EN+= security/ipsec-crypt-pkt.pic
IMAGES_EN+= security/ipsec-encap-pkt.pic
IMAGES_EN+= security/ipsec-out-pkt.pic
IMAGES_EN+= vinum/vinum-concat.pic
IMAGES_EN+= vinum/vinum-mirrored-vol.pic
IMAGES_EN+= vinum/vinum-raid10-vol.pic
IMAGES_EN+= vinum/vinum-raid5-org.pic
IMAGES_EN+= vinum/vinum-simple-vol.pic
IMAGES_EN+= vinum/vinum-striped-vol.pic
IMAGES_EN+= vinum/vinum-striped.pic
+IMAGES_EN+= virtualization/parallels-freebsd1.png
+IMAGES_EN+= virtualization/parallels-freebsd2.png
+IMAGES_EN+= virtualization/parallels-freebsd3.png
+IMAGES_EN+= virtualization/parallels-freebsd4.png
+IMAGES_EN+= virtualization/parallels-freebsd5.png
+IMAGES_EN+= virtualization/parallels-freebsd6.png
+IMAGES_EN+= virtualization/parallels-freebsd7.png
+IMAGES_EN+= virtualization/parallels-freebsd8.png
+IMAGES_EN+= virtualization/parallels-freebsd9.png
+IMAGES_EN+= virtualization/parallels-freebsd10.png
+IMAGES_EN+= virtualization/parallels-freebsd11.png
+IMAGES_EN+= virtualization/parallels-freebsd12.png
+IMAGES_EN+= virtualization/parallels-freebsd13.png
# Images from the cross-document image library
IMAGES_LIB= callouts/1.png
IMAGES_LIB+= callouts/2.png
IMAGES_LIB+= callouts/3.png
IMAGES_LIB+= callouts/4.png
IMAGES_LIB+= callouts/5.png
IMAGES_LIB+= callouts/6.png
IMAGES_LIB+= callouts/7.png
IMAGES_LIB+= callouts/8.png
IMAGES_LIB+= callouts/9.png
IMAGES_LIB+= callouts/10.png
#
# SRCS lists the individual SGML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
SRCS+= audit/chapter.sgml
SRCS+= book.sgml
SRCS+= colophon.sgml
SRCS+= freebsd-glossary.sgml
SRCS+= advanced-networking/chapter.sgml
SRCS+= basics/chapter.sgml
SRCS+= bibliography/chapter.sgml
SRCS+= boot/chapter.sgml
SRCS+= config/chapter.sgml
SRCS+= cutting-edge/chapter.sgml
SRCS+= desktop/chapter.sgml
SRCS+= disks/chapter.sgml
SRCS+= eresources/chapter.sgml
SRCS+= firewalls/chapter.sgml
SRCS+= geom/chapter.sgml
SRCS+= install/chapter.sgml
SRCS+= introduction/chapter.sgml
SRCS+= jails/chapter.sgml
SRCS+= kernelconfig/chapter.sgml
SRCS+= l10n/chapter.sgml
SRCS+= linuxemu/chapter.sgml
SRCS+= mac/chapter.sgml
SRCS+= mail/chapter.sgml
SRCS+= mirrors/chapter.sgml
SRCS+= multimedia/chapter.sgml
SRCS+= network-servers/chapter.sgml
SRCS+= pgpkeys/chapter.sgml
SRCS+= ports/chapter.sgml
SRCS+= ppp-and-slip/chapter.sgml
SRCS+= preface/preface.sgml
SRCS+= printing/chapter.sgml
SRCS+= security/chapter.sgml
SRCS+= serialcomms/chapter.sgml
SRCS+= users/chapter.sgml
SRCS+= vinum/chapter.sgml
SRCS+= virtualization/chapter.sgml
SRCS+= x11/chapter.sgml
# Entities
SRCS+= chapters.ent
SYMLINKS= ${DESTDIR} index.html handbook.html
# Turn on all the chapters.
CHAPTERS?= ${SRCS:M*chapter.sgml}
SGMLFLAGS+= ${CHAPTERS:S/\/chapter.sgml//:S/^/-i chap./}
SGMLFLAGS+= -i chap.freebsd-glossary
pgpkeyring: pgpkeys/chapter.sgml
@${JADE} -V nochunks ${OTHERFLAGS} ${JADEOPTS} -d ${DSLPGP} -t sgml ${MASTERDOC}
DOC_PREFIX?= ${.CURDIR}/../../..
#
# Handbook-specific variables
#
.if defined(WITH_PGPKEYS)
JADEFLAGS+= -V withpgpkeys
.endif
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
#
# rules generating lists of mirror site from XML database.
#
XMLDOCS= mirrors-ftp:::mirrors.sgml.ftp.inc.tmp \
mirrors-cvsup:::mirrors.sgml.cvsup.inc.tmp \
eresources:::eresources.sgml.www.inc.tmp
DEPENDSET.DEFAULT= transtable mirror
XSLT.DEFAULT= ${XSL_MIRRORS}
XML.DEFAULT= ${XML_MIRRORS}
NO_TIDY.DEFAULT= yes
PARAMS.mirrors-ftp+= --param 'type' "'ftp'" \
--param 'proto' "'ftp'" \
--param 'target' "'handbook/mirrors/chapter.sgml'"
PARAMS.mirrors-cvsup+= --param 'type' "'cvsup'" \
--param 'proto' "'cvsup'" \
--param 'target' "'handbook/mirrors/chapter.sgml'"
PARAMS.eresources+= --param 'type' "'www'" \
--param 'proto' "'http'" \
--param 'target' "'handbook/eresources/chapter.sgml'"
SRCS+= mirrors.sgml.ftp.inc \
mirrors.sgml.cvsup.inc \
eresources.sgml.www.inc
CLEANFILES+= mirrors.sgml.ftp.inc mirrors.sgml.ftp.inc.tmp \
mirrors.sgml.cvsup.inc mirrors.sgml.cvsup.inc.tmp \
eresources.sgml.www.inc eresources.sgml.www.inc.tmp
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
.for p in ftp cvsup
mirrors.sgml.${p}.inc: mirrors.sgml.${p}.inc.tmp
${SED} -e 's,<\([^ >]*\)\([^>]*\)/>,<\1\2>\1>,;s,,,'\
< $@.tmp > $@ || (${RM} -f $@ && false)
.endfor
eresources.sgml.www.inc: eresources.sgml.www.inc.tmp
${SED} -e 's,<\([^ >]*\)\([^>]*\)/>,<\1\2>\1>,;s,,,'\
< $@.tmp > $@ || (${RM} -f $@ && false)
diff --git a/zh_CN.GB2312/books/handbook/geom/chapter.sgml b/zh_CN.GB2312/books/handbook/geom/chapter.sgml
index 40088f9d3d..0f32ef00e0 100644
--- a/zh_CN.GB2312/books/handbook/geom/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/geom/chapter.sgml
@@ -1,434 +1,504 @@
Tom
Rhodes
原作
GEOM: 模块化磁盘变换框架
概述
GEOM
GEOM 磁盘框架
GEOM
本章将介绍以 &os; GEOM 框架来使用磁盘。
这包括了使用这一框架来配置的主要的 RAID
控制工具。 这一仗不会深入讨论 GEOM
如何处理或控制 I/O、 其下层的子系统或代码。
您可以从 &man.geom.4; 联机手册及其众多 SEE ALSO 参考文献中得到这些信息。
这一章也不是对 RAID 配置的权威介绍,
它只介绍由 支持GEOM 的 RAID
级别。
读完这章, 您将了解:
通过 GEOM 支持的 RAID 类型。
如何使用基本工具来配置和管理不同的 RAID
级别。
如何通过 GEOM 使用镜像、 条带、 加密和挂接在远程的磁盘设备。
如何排除挂接在 GEOM 框架上的磁盘设备的问题。
阅读这章之前, 您应:
理解 &os; 如何处理磁盘设备
()。
了解如何配置和安装新的 &os; 内核
()。
GEOM 介绍
GEOM 允许访问和控制类 (classes) — 主引导记录、
BSD 标签 (label), 等等 — 通过使用
provider, 或在
/dev 中的特殊文件。
它支持许多软件 RAID 配置, GEOM 能够向操作系统,
以及在其上运行的工具提供透明的访问方式。
Tom
Rhodes
原作
Murray
Stokely
RAID0 - 条带
GEOM
条带
条带是一种将多个磁盘驱动器合并为一个卷的方法。
许多情况下, 这是通过硬件控制器来完成的。 GEOM
磁盘子系统提供了 RAID0 的软件支持,
它也成为磁盘条带。
在 RAID0 系统中, 数据被分为多个块,
这些块将分别写入阵列的所有磁盘。 与先前需要等待系统将 256k
数据写到一块磁盘上不同, RAID0 系统,
能够同时分别将打碎的 64k 写到四块磁盘上, 从而提供更好的 I/O
性能。 这一性能提升还能够通过使用多个磁盘控制器来进一步改进。
在 RAID0 条带中的每一个盘的尺寸必须一样,
因为 I/O 请求是分散到多个盘上的, 以便让这些盘上的读写并行完成。
磁盘条带图
在未格式化的 ATA 磁盘上建立条带
加载 geom_stripe
模块:
&prompt.root; kldload geom_stripe
确信存在合适的挂接点 (mount point)。 如果这个卷将成为根分区,
那么暂时把它挂接到其他位置i, 如 /mnt:
&prompt.root; mkdir /mnt
确定将被做成条带卷的磁盘的设备名,
并创建新的条带设备。 举例而言,
要将两个未用的、 尚未分区的 ATA 磁盘
/dev/ad2 和
/dev/ad3 做成一个条带设备:
&prompt.root; gstripe label -v st0 /dev/ad2 /dev/ad3
接着需要写标准的 label, 也就是通常所说的分区表到新卷上,
并安装标准的引导代码:
&prompt.root; bsdlabel -wB /dev/stripe/st0
上述过程将在
/dev/stripe
目录中的 st0 设备基础上建立两个新设备。
这包括 st0a 和
st0c。 这时, 就可以在
st0a 设备上用下述
newfs 命令来建立文件系统了:
&prompt.root; newfs -U /dev/stripe/st0a
在屏幕上将滚过一些数字, 整个操作应该能在数秒内完成。
现在可以挂接刚刚做好的卷了。
要挂接刚创建的条带盘:
&prompt.root; mount /dev/stripe/st0a /mnt
要在启动过程中自动挂接这个条带上的文件系统,
需要把关于卷的信息放到
/etc/fstab 文件中:
&prompt.root; echo "/dev/stripe/st0a /mnt ufs rw 2 2" \
>> /etc/fstab
此外, geom_stripe 模块也必须通过在
/boot/loader.conf 中增加下述设置,
以便在系统初始化过程中自动加载。
&prompt.root; echo 'geom_stripe_load="YES"' >> /boot/loader.conf
RAID1 - 镜像
GEOM
磁盘镜像
镜像是一种许多公司和家庭用户使用的不需中断的备份技术。
当存在镜像时, 它的意思是说 磁盘B 简单地复制 磁盘A。
或者, 也可能是 磁盘C+D
复制 磁盘A+B。 无论磁盘如何配置, 共同的特征,
都是磁盘或卷的信息会被复制。 随后,在无需中断服务或访问的情况下,
可以很容易地复原和备份这些信息, 甚至把它们存储到其他更安全的地方。
要开始做这件事, 首先要确保系统中有两个同样大的磁盘驱动器,
下面的例子假定使用直接访问方式 (Direct Access, &man.da.4;)
SCSI 的磁盘。
首先需要把 &os; 安装到第一块磁盘上, 并建立两个分区。
第一个分区将成为交换区, 其尺寸应该是两倍的
RAM 尺寸, 而余下的空间,
则作为根 (/) 文件系统来使用。
当然, 也可以为其他挂接点划分不同的分区;
但是, 这将使难度提高一个量级,
因为您将不得不手工修改 &man.bsdlabel.8; 和 &man.fdisk.8;
的设置。
重新启动系统, 并等待其完全初始化完。
当这个过程完成之后, 以 root
用户的身份登录。
创建 /dev/mirror/gm 设备,
并将其连接到 /dev/da1:
&prompt.root; gmirror label -vnb round-robin gm0 /dev/da1
系统应会给出下列回应:
Metadata value stored on /dev/da1.
Done.
初始化 GEOM, 这将加载
/boot/kernel/geom_mirror.ko 内核模块:
&prompt.root; gmirror load
这个命令应该会在
/dev/mirror
目录中创建
gm0 设备节点。
在刚创建的 gm0
设备上安装通用的 fdisk 标签以及引导区代码:
&prompt.root; fdisk -vBI /dev/mirror/gm0
接下来安装通用的 bsdlabel
信息:
&prompt.root; bsdlabel -wB /dev/mirror/gm0s1
如果存在多个区段 (slice) 或分区 (partition),
则需要修改一部分上面命令的参数。
它们必须与另一个盘上对应的区段和分区匹配。
使用 &man.newfs.8; 工具来在 gm0s1a
设备上建立默认的 UFS
文件系统:
&prompt.root; newfs -U /dev/mirror/gm0s1a
这将让系统输出很多信息和一系列数字。 不必为此担心,
只需看看是否有错误提示就可以了, 如果没问题, 接下来把它挂到
/mnt 挂接点上面:
&prompt.root; mount /dev/mirror/gm0s1a /mnt
现在需要把所有引导盘上的数据迁移到新的文件系统上了。
下面的例子使用了 &man.dump.8; 和 &man.restore.8;
这两个命令; 不过, 用 &man.dd.1; 在这里也可以达到完全一样的目的。
&prompt.root; dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)
这个操作必须在所有文件系统上都作一遍。 您可以将前述命令中的文件系统,
改为所希望的文件系统的位置。
接下来应该编辑复制出来的 /mnt/etc/fstab
文件, 并删去或注释掉交换文件
需要注意的是,
在 fstab 注释掉交换文件,
通常会需要您以其他方式重建交换空间。
请参见 以了解进一步的细节。
。 修改其他文件系统对应的信息,
以便让它们使用新盘。 参考下面的例子:
# Device Mountpoint FStype Options Dump Pass#
#/dev/da0s2b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
接下来需要建一个 boot.conf 文件,
在当前和新盘的根分区上各放一份。 这个文件将
帮助
系统的 BIOS
从正确的驱动器上引导:
&prompt.root; echo "1:da(1,a)/boot/loader" > /boot.config
&prompt.root; echo "1:da(1,a)/boot/loader" > /mnt/boot.config
在所有的分区上都放这些是为了保证系统能够正确引导。
如果由于某种原因系统无法从新的根分区读数据,
则还有一根救命稻草。
用下面的命令来确保系统引导时会加载 geom_mirror.ko:
&prompt.root; echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf
最后重新启动系统:
&prompt.root; shutdown -r now
如果一切顺利, 系统将从
gm0s1a 设备启动, 并给出 login
提示等待用户登录。 如果发生错误, 请查阅接下来的故障排除环节。 我们接着将
da0 磁盘也加入 gm0
设备:
&prompt.root; gmirror configure -a gm0
&prompt.root; gmirror insert gm0 /dev/da0
此处 告诉 &man.gmirror.8; 采用自动同步,
或换言之: 自动地将磁盘的写操作做镜像处理。 联机手册中详细解释了如何重建,
以及替换磁盘, 只不过它用 data
表示这里的 gm0。
故障排除
系统拒绝引导
如果系统引导时出现类似下面的提示:
ffs_mountroot: can't find rootvp
Root mount failed: 6
mountroot>
这种情况应使用电源或复位按钮重启机器。
在引导菜单中, 选择第六 (6) 个选项。
这将让系统进入 &man.loader.8; 提示符。
在此处手工加载内核模块:
OK? load geom_mirror
OK? boot
如果这样做能解决问题, 则说明由于某种原因模块没有被正确加载。
可以通过在内核配置文件中加入:
options GEOM_MIRROR
然后重新编译和安装内核来解决这个问题。
GEOM Gate 网络设备
通过 gate 工具, GEOM 支持以远程方式使用设备, 例如磁盘、
CD-ROM、 文件等等。 这和 NFS 类似。
在开始工作之前, 首先要创建一个导出文件。
这个文件的作用是指定谁可以访问导出的资源,
以及提供何种级别的访问授权。 例如,
要把第一块 SCSI 盘的第四个 slice 导出,
对应的 /etc/gg.exports 会是类似下面的样子:
192.168.1.0/24 RW /dev/da0s4d
这表示允许同属私有子网的所有机器访问
da0s4d 分区上的文件系统。
要导出这个设备, 首先请确认它没有被挂接,
然后是启动 &man.ggated.8; 服务:
&prompt.root; ggated
现在我们将在客户机上 mount 该设备,
使用下面的命令:
&prompt.root; ggatec create -o rw 192.168.1.1 /dev/da0s4d
ggate0
&prompt.root; mount /dev/ggate0 /mnt
到此为止, 设备应该已经可以通过挂接点
/mnt 访问了。
请注意, 如果设备已经被服务器或网络上的任何其他机器挂接,
则前述操作将会失败。
如果不再需要使用这个设备,
就可以使用 &man.umount.8; 命令来安全地将其卸下了,
这一点和其他磁盘设备类似。
+
diff --git a/zh_CN.GB2312/books/handbook/jails/chapter.sgml b/zh_CN.GB2312/books/handbook/jails/chapter.sgml
index e49ba98b7b..0b595635eb 100644
--- a/zh_CN.GB2312/books/handbook/jails/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/jails/chapter.sgml
@@ -1,411 +1,411 @@
Matteo
Riondato
原作
Jails
jails
概述
这一章将为您介绍 &os; jail 是什么, 以及如何使用它们。
Jail, 有时也被认为是对 chroot 环境
的一种增强型替代品, 对于管理员而言是非常强大的工具, 同时,
它的一些基本用法, 对高级用户而言也相当有用。
读完这章, 您将了解:
jail 是什么, 以及它在您安装的 &os;
中所能发挥的作用。
如何联编、 启动和停止 jail。
如何从 jail 内部或主机上进行管理的一些基础知识。
其他一些能够为您提供关于 jail 的有用信息的地方还有:
&man.jail.8; 联机手册。 这是关于 jail —
用于在 &os; 中启动、 停止和控制 &os; jail — 工具的完整说明书。
邮件列表及其存档。 由 &a.mailman.lists; 提供的
&a.questions; 和其他邮件列表的存档, 已经包含了一系列关于
jail 的有价值的信息。 通常搜索存档或询问 &a.questions.name;
邮件列表能够给您带来很多有用的信息。
与 Jail 相关的一些术语
为了帮助您更好地理解与 jail 有关的 &os; 系统知识,
以及它们如何与 &os; 的其它部分相互作用, 您应理解下列术语:
&man.chroot.2; (命令)
&os; 的一个系统调用, 其作用是改变进程及其衍生进程所能看到的根目录。
&man.chroot.2; (环境)
在 chroot
中运行的进程环境。
这包括类似文件系统中的可见部分、 可用的用户及用户组 ID、
网络接口以及其他 IPC 机制等资源。
&man.jail.8; (命令)
用以在 jail 环境中运行进程的系统管理工具。
宿主 (系统、 进程、 用户等等)
能够控制 jail 环境的系统。 宿主系统能够访问全部可用的硬件资源,
并能够控制 jail 环境内外的进程。 宿主系统与 jail 的一项重要区别是,
在宿主系统中的超级用户进程, 并不像在
jail 中那样受到一系列限制。
hosted (系统、 进程、 用户等等)
可访问资源受 &os; jail 限制的进程、 用户或其他实体。
介绍
由于系统管理是一项困难而又令人费解的任务, 因此人们开发了一系列强大的工具,
来让管理员的工作变得更加简单。 这些改进通常是让系统能够以更简单的方式安装、
配置, 并毫无问题地持续运转。 这其中, 许多管理员希望能够为系统正确地进行安全方面的配置,
使其能够用于真正的用途, 而阻止安全方面的风险。
&os; 系统提供的一项用于改善安全的工具就是 jail。
- jail 是在 &os;-4.X 中由 &a.phk; 引入的, 它在
- &os;-5.X 中又进行了一系列改进, 使得它称为一个强大而灵活的系统。
+ jail 是在 &os; 4.X 中由 &a.phk; 引入的, 它在
+ &os; 5.X 中又进行了一系列改进, 使得它称为一个强大而灵活的系统。
目前仍然在对其进行持续的开发, 以提高其可用性、 性能和安全性。
Jail 是什么
BSD-类的操作系统从 4.2BSD 开始即提供了 &man.chroot.8;。
&man.chroot.2; 工具能够改变一组进程的根目录的位置,
从而建立一个与系统中其他部分相隔离的安全环境: 在 chroot 环境中的进程,
将无法访问其外的文件或其他资源。 正是由于这种能力,
即使攻击者攻破了某一个运行于 chroot 环境的服务, 也不能攻破整个系统。
&man.chroot.8; 对于哪些不需要很多灵活性或复杂的高级功能的简单应用而言相当好用。
另外, 在引入 chroot 概念的过程中, 曾经发现过许多跳出
chroot 环境的方法, 尽管这些问题在较新的 &os; 版本中已经修正, 但很明显地,
&man.chroot.8; 并不是一项用于加固服务安全的理想解决方案。
因此, 必须实现一个新的子系统来解决这些问题。
这就是为什么要开发
jail 最主要的原因。
Jail 以多种方式改进了传统的
&man.chroot.2; 环境概念。 在传统的
&man.chroot.2; 环境中, 只限制了进程能够访问文件系统的哪些部分。
其他部分的系统资源 (例如系统用户、 正在运行的进程, 以及网络子系统)
是由 chroot 进程与宿主系统中的其他进程共享的。 jail 扩展了这个模型,
它不仅将文件系统的访问虚拟化, 而且还将用户、 &os; 的网络子系统,
以及一些其他系统资源虚拟化。 关于这些精细控制以及调整 jail
环境访问能力的更具体的介绍, 可参见 。
jail 具有以下四项特点:
目录子树 — 进入 jail 的起点。 一旦进入了 jail,
进程就不再被允许访问这棵子树以外的对象。 传统上影响到最初
&man.chroot.2; 设计的安全问题不会影响 &os; jail。
主机名 — 将用于 jail 的主机名。 jail 主要用于存放网络服务,
因此在每个 mail 上能够标注一个有意义的主机名,
能够在很大程度上简化系统管理员的工作。
IP 地址 — 这个地址是指定给 jail 的,
在 jail 的生命周期内都无法改变。 通常 jail 的 IP 地址是某一个网络接口上的别名地址,
但这并不是必需的。
命令 — 准备在 jail 中执行的可执行文件的完整路径名。
这个命令是相对于 jail 环境的根目录的, 随 jail 环境的类型不同,
可能会有很多不同之处。
除了这些之外, jail 也可以拥有自己的用户和自己的
root 用户。 自然, 这里的 root
用户的权力会受限于 jail 环境, 并且, 从宿主系统的观点看来,
jail root 用户并不是一个无所不能的用户。
此外, jail 中的 root 用户不能执行除了其对应 &man.jail.8;
环境之外的系统中的一些关键操作。 关于
root 用户的能力和限制, 在后面的 中将加以介绍。
建立和控制 jail
一些系统管理员喜欢将 jail 分为两类:
完整的
jail, 通常包含真正的 &os; 系统,
以及 服务
jail, 专用于执行一个可能使用特权的应用或服务。
这只是一种概念上的区分, 并不影响如何建立 jail 的过程。
在联机手册 &man.jail.8; 中对如何创建 jail 进行了清晰的阐述:
&prompt.root; setenv D /here/is/the/jail
&prompt.root; mkdir -p $D
&prompt.root; cd /usr/src
&prompt.root; make world DESTDIR=$D
&prompt.root; cd etc/ This step
is not required on &os; 6.0 and later.
&prompt.root; make distribution DESTDIR=$D
&prompt.root; mount_devfs devfs $D/dev
为 jail 选择一个位置是建立它的第一步。 这个路径是在宿主系统中 jail
的物理位置。 一种常用的选择是 /usr/jail/jailname,
此处 jailname 是 jail 的主机名。 /usr/ 文件系统通常会有足够的空间来保存 jail
文件系统, 对于 完整
的 jail 而言,
这通常包含 &os; 默认安装的基本系统中每个文件的副本。
这个命令将在 jail 目录中安装所需的可执行文件、 函数库以及联机手册等。
这些是以传统的 &os; 风格的方式完成的 — 首先联编所有的文件,
然后将其安装到目标路径。
distribution 这个
make target 将安装全部配置文件,
或者换句话说, 就是将
/usr/src/etc/ 复制到 jail 环境中的
/etc:
$D/etc/。
在 jail 中挂接 &man.devfs.8; 文件系统并不是必需的。
而另一方面, 几乎所有的应用程序都会需要访问至少一个设备,
这主要取决于应用程序的性质和目的。 控制 jail 中能够访问的设备非常重要,
因为不正确的配置, 很可能允许攻击者在
jail 中进行一些恶意的操作。 通过 &man.devfs.8; 实施的控制,
可以通过由联机手册 &man.devfs.8; 和
&man.devfs.conf.5; 介绍的规则集配置来实现。
一旦装好了 jail, 就可以使用
&man.jail.8; 工具来安装它了。 &man.jail.8; 工具需要四个必填参数,
这些参数在 小节中进行了介绍。 除了这四个参数之外,
您还可以指定一些其他参数, 例如, 以特定用户身份来在 jail 中运行程序等等。
这里, command 参数取决于您希望建立的 jail
的类型; 对于 虚拟系统, 可以选择
/etc/rc, 因为它会完成真正的 &os; 系统启动所需的操作。 对于
服务 jail, 执行的命令取决于将在 jail
中运行的应用程序。
Jail 通常应在系统启动时启动, 因此, &os;
rc 机制提供了一些很方便的机制来简化这些工作。
在引导时需要启动的 jail 列表应写入 &man.rc.conf.5; 文件:
jail_enable="YES" # 如果设为 NO 则表示不自动启动 jail
jail_list="www" # 以空格分隔的 jail 名字列表
对于 jail_list 中列出的 jail,
还应指定一系列对应的 &man.rc.conf.5; 设置, 用以描述具体的 jail:
jail_www_rootdir="/usr/jail/www" # jail 的根目录
jail_www_hostname="www.example.org" # jail 的主机名
jail_www_ip="192.168.0.10" # jail 的 IP 地址
jail_www_devfs_enable="YES" # 在 jail 中挂接 devfs
jail_www_devfs_ruleset="www_ruleset" # 在 jail 中应用的devfs 规则集
默认情况下, 在
&man.rc.conf.5; 中配置启动的 jail 会执行其中的 /etc/rc
脚本, 也就是说, 默认情况下将 jail 作为虚拟系统方式来启动。
对于服务 jail, 您应另外指定启动命令, 方法是设置对应的
jail_jailname_exec_start
配置。
如欲了解全部可用的选项, 请参阅联机手册
&man.rc.conf.5;。
/etc/rc.d/jail 脚本也可以用于手工启动或停止
rc.conf 中配置的 jail:
&prompt.root; /etc/rc.d/jail start www
&prompt.root; /etc/rc.d/jail stop www
目前, 尚没有一项方法来很干净地关闭 &man.jail.8;。
这是因为通常用于正常关闭系统的命令, 目前尚不能在 jail 中使用。
目前, 关闭 jail 最好的方式, 是在 jail 外通过 &man.jexec.8; 工具,
在 jail 中执行下列命令:
&prompt.root; sh /etc/rc.shutdown
更进一步的详细说明, 请参见联机手册 &man.jail.8;。
微调和管理
您可以为 jail 设置许多不同的选项, 并让 &os; 宿主系统以不同的方式与 jail 交互,
以支持更高级别的应用。 这一节将介绍:
一些用于微调 jail 行为和安全限制的选项。
一些可以通过 &os; Ports 套件安装的高级 jail 管理应用程序,
这些程序可以用于实现一般的基于 jail 的解决方案。
&os; 提供的用于微调 jail 的系统工具
对于 jail 的配置微调, 基本上都是通过设置 &man.sysctl.8; 变量来完成的。
系统提供了一个特殊的 sysctl 子树, 全部相关的选项均在这棵子树中; 这就是 &os; 内核的
security.jail.* 选项子树。 下面是与 jail 有关的主要 sysctl,
以及这些变量的默认值。 这些名字都比较容易理解, 如欲了解进一步的详情,
请参阅联机手册 &man.jail.8; 和 &man.sysctl.8;。
security.jail.set_hostname_allowed:
1
security.jail.socket_unixiproute_only:
1
security.jail.sysvipc_allowed:
0
security.jail.enforce_statfs:
2
security.jail.allow_raw_sockets:
0
security.jail.chflags_allowed:
0
security.jail.jailed: 0
系统管理员可以在中 宿主系统 中,
透过设置这些变量的值来默认为
root 用户增加或取消限制。 需要注意的是,
某些限制是不能够取消的。 在 &man.jail.8; 中的
root 用户, 无法挂载或卸下文件系统, 此外在 jail 中的
root 用户也不能加载或卸载
&man.devfs.8; 规则集、 配置防火墙规则, 或执行其他需要修改内核数据的管理操作,
例如设置内核的 securelevel 等等。
&os; 的基本系统包含一系列用于查看目前在用的 jail 信息, 以及接入
jail 并执行管理命令所需的基本工具。 &man.jls.8; 和
&man.jexec.8; 都是 &os; 基本系统的一部分, 并可用于执行简单的任务:
列出在用的 jail 以及对应的
jail 标识 (JID)、
IP 地址、 主机名和路径。
从宿主系统中接入正在运行的 jail, 并在其中执行命令, 以完成一系列
jail 管理任务。 这在
root 希望干净地关闭
jail 时非常有用。 &man.jexec.8; 工具也可以用于在 jail 中启动
shell 以便对其进行管理; 例如:
&prompt.root; jexec 1 tcsh
由 &os; Ports 套件提供的高级管理工具
在众多第三方 jail 管理工具中, 最完整和好用的一个是 sysutils/jailutils。 这是一系列方便 &man.jail.8;
管理的小工具。 请参见其网站以了解进一步的详情。
diff --git a/zh_CN.GB2312/books/handbook/virtualization/chapter.sgml b/zh_CN.GB2312/books/handbook/virtualization/chapter.sgml
index fb3b70ce67..fc5ce573c5 100644
--- a/zh_CN.GB2312/books/handbook/virtualization/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/virtualization/chapter.sgml
@@ -1,475 +1,533 @@
Murray
Stokely
原作
虚拟化
概述
虚拟化软件能够让同一台机器上同时运行多个操作系统。
在 PC 上, 这种系统通常由一个运行虚拟化软件的宿主操作系统,
以及一系列客户操作系统组成。
读完这章, 您将了解:
宿主操作系统与客户操作系统的区别。
如何在包含 &xen; 的 Linux 上安装 FreeBSD。
如何在采用 &intel; 处理器的 &apple; &macintosh;
计算机上安装 FreeBSD。
如何为虚拟化对 FreeBSD 系统进行性能调优。
在阅读这章之前, 您应:
理解 &unix; 和 FreeBSD 的基础知识 ()。
了解如何安装 FreeBSD ()。
了解如何配置网络连接 ()。
了解如何安装第三方软件
().
作为客户 OS 的 FreeBSD
MacOS 上的 Parallels
为 &mac; 设计的 Parallels Desktop 是一种可用于采用 &intel; 处理器, 并运行 &macos;
10.4.6 或更高版本的 &apple; &mac; 计算机的商业软件。 在 &macos;
X 上安装了这个软件之后, 用户需要配置虚拟机并安装所需的客户操作系统。
在 Parallels/&macos; X 上安装 FreeBSD
在 &macos;
X/Parallels 上安装 FreeBSD 的第一步是创建一个新的虚拟机。
在系统提示选择客户 OS 类型 (Guest OS Type) 时选择 FreeBSD,
- 并根据您使用 FreeBSD 虚拟实例的需要分配磁盘和内存。 对多数在 Parallels 上使用
- FreeBSD 的情形而言, 4GB 磁盘空间和 512MB 的 RAM 就够用了。
+ 并根据您使用 FreeBSD 虚拟实例的需要分配磁盘和内存:
+
+
+
+
+
+
+
+ 对多数在 Parallels 上使用
+ FreeBSD 的情形而言, 4GB 磁盘空间和 512MB 的 RAM 就够用了:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
在创建了 FreeBSD 虚拟机之后, 还需要在其中安装 FreeBSD。
最好的做法是使用官方的 FreeBSD CDROM 或从官方 FTP 站点下载的 ISO 镜像来完成这个任务。
如果您的本地 &mac; 文件系统中有 ISO 映像文件, 或您的 &mac; 的 CD 驱动器中有
CDROM, 就可以在 FreeBSD Parallels 窗口的右下角点击光盘图标。
之后, 系统将给出一个窗口, 供您完成将虚拟机中的
CDROM 驱动器连接到本地的 ISO 文件或真正的 CDROM 驱动器上。
+
+
+
+
+
+
在完成了将 CDROM 与您的安装源完成关联之后,
就可以按重启 (reboot) 图标来重启 FreeBSD 虚拟机了。 Parallels 将配合一个特殊的
- BIOS 启动, 后者能够像普通的 BIOS 一样检查系统中是否有 CDROM 驱动器。
- 此时, 它就能够找到 FreeBSD 安装介质并开始
- 中所介绍的标准的基于 sysinstall 安装的过程。 此时您可以安装 X11,
+ BIOS 启动, 后者能够像普通的 BIOS 一样检查系统中是否有 CDROM 驱动器。
+
+
+
+
+
+
+
+ 此时, 它就能够找到 FreeBSD 安装介质并开始
+ 中所介绍的标准的基于 sysinstall 安装的过程。
+
+
+
+
+
+
+
+ 此时您可以安装 X11,
但暂时不要对它进行配置。 在完成安装之后, 重启并进入新安装的 FreeBSD 虚拟机。
+
+
+
+
+
在 &macos; X/Parallels 上配置 FreeBSD
在您将 FreeBSD 安装到 &macos;
X 的 Parallels 上之后, 还需要进行一系列的配置,
以便为系统的虚拟化操作进行优化。
配置引导加载器变量
最重要的一步是通过调低
变量来降低 Parallels 环境中的 FreeBSD
对 CPU 的使用。 这可以通过在
/boot/loader.conf 中增加下述配置来完成:
kern.hz=100
如果不使用这个配置, 闲置的 FreeBSD Parallels 客户
OS 会在单处理器的 &imac; 上使用大约 15% 的 CPU。 如此修改之后,
空闲时的使用量就减少到大约 5% 了。
创建新的内核配置文件
您可以删去全部 SCSI、 FireWire, 以及 USB
设备驱动程序。 Parallels 提供了一个由 &man.ed.4; 驱动的虚拟网卡,
因此, 除了
&man.ed.4; 和 &man.miibus.4;
之外的其他网络接口驱动都可以从内核中删去。
配置网络
最基本的网络配置, 是通过使用 DHCP 来将您的虚拟机与宿主 &mac;
接入同一个局域网。 这可以通过在
/etc/rc.conf 中加入
ifconfig_ed0="DHCP" 来完成。
更高级一些的网络配置方法, 请参见 中的介绍。
福康
陈 (Loader)
原作
在 Linux 上通过 &xen; 运行 FreeBSD
&xen; hypervisor 是一个开放源代码的并行虚拟化产品,
并由商业的 XenSource 公司提供支持。 在这种系统中, 客户操作系统称为 domU 域,
而宿主系统则称为 dom0。 在 Linux 上运行 FreeBSD 虚拟机实例的第一步, 是安装用于
Linux dom0 的
&xen;。 在这个例子中,
宿主系统采用的发行版本是 Slackware Linux。
在 Linux dom0 上安装 &xen; 3
从 XenSource 下载 &xen; 3.0
从 下载 xen-3.0.4_1-src.tgz。
解压缩源代码包
&prompt.root; cd xen-3.0.4_1-src
&prompt.root; KERNELS="linux-2.6-xen0 linux-2.6-xenU" make world
&prompt.root; make install
为 dom0 重新编译内核:
&prompt.root; cd xen-3.0.4_1-src/linux-2.6.16.33-xen0
&prompt.root; make menuconfig
&prompt.root; make
&prompt.root; make install
对于较早版本的 &xen;, 可能需要指定
make ARCH=xen menuconfig
在 Grub 的 menu.lst 中增加一个对应的菜单项
编辑 /boot/grub/menu.lst
并在其中增加下列配置:
title Xen-3.0.4
root (hd0,0)
kernel /boot/xen-3.0.4-1.gz dom0_mem=262144
module /boot/vmlinuz-2.6.16.33-xen0 root=/dev/hda1 ro
重新启动计算机并进入 &xen;
首先, 编辑
/etc/xen/xend-config.sxp,
并在其中增加下列配置:
(network-script 'network-bridge netdev=eth0')
接下来就可以运行
&xen; 了:
&prompt.root; /etc/init.d/xend start
&prompt.root; /etc/init.d/xendomains start
现在 dom0 已经开始运行:
&prompt.root; xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 256 1 r----- 54452.9
FreeBSD 7-CURRENT domU
从 http://www.fsmware.com/
下载用于 &xen; 3.0 的 FreeBSD domU 内核。
kernel-current
mdroot-7.0.bz2
xmexample1.bsd
将配置文件 xmexample1.bsd
放到 /etc/xen/ 并修改与内核及磁盘映像位置有关的配置项。
下面是一个示范的例子:
kernel = "/opt/kernel-current"
memory = 256
name = "freebsd"
vif = [ '' ]
disk = [ 'file:/opt/mdroot-7.0,hda1,w' ]
#on_crash = 'preserve'
extra = "boot_verbose"
extra += ",boot_single"
extra += ",kern.hz=100"
extra += ",vfs.root.mountfrom=ufs:/dev/xbd769a"
其中, mdroot-7.0.bz2 应是未压缩的。
接下来, 您需要修改 kernel-current 中的 __xen_guest
小节, 并加入 &xen; 3.0.3 所需要的 VIRT_BASE:
&prompt.root; objcopy kernel-current -R __xen_guest
&prompt.root; perl -e 'print "LOADER=generic,GUEST_OS=freebsd,GUEST_VER=7.0,XEN_VER=xen-3.0,BSD_SYMTAB,VIRT_BASE=0xC0000000\x00"' > tmp
&prompt.root; objcopy kernel-current --add-section __xen_guest=tmp
&prompt.root; objdump -j __xen_guest -s kernel-current
kernel-current: file format elf32-i386
Contents of section __xen_guest:
0000 4c4f4144 45523d67 656e6572 69632c47 LOADER=generic,G
0010 55455354 5f4f533d 66726565 6273642c UEST_OS=freebsd,
0020 47554553 545f5645 523d372e 302c5845 GUEST_VER=7.0,XE
0030 4e5f5645 523d7865 6e2d332e 302c4253 N_VER=xen-3.0,BS
0040 445f5359 4d544142 2c564952 545f4241 D_SYMTAB,VIRT_BA
0050 53453d30 78433030 30303030 3000 SE=0xC0000000.
现在可以创建并运行 domU 了:
&prompt.root; xm create /etc/xen/xmexample1.bsd -c
Using config file "/etc/xen/xmexample1.bsd".
Started domain freebsd
WARNING: loader(8) metadata is missing!
Copyright (c) 1992-2006 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 7.0-CURRENT #113: Wed Jan 4 06:25:43 UTC 2006
kmacy@freebsd7.gateway.2wire.net:/usr/home/kmacy/p4/freebsd7_xen3/src/sys/i386-xen/compile/XENCONF
WARNING: DIAGNOSTIC option enabled, expect reduced performance.
Xen reported: 1796.927 MHz processor.
Timecounter "ixen" frequency 1796927000 Hz quality 0
CPU: Intel(R) Pentium(R) 4 CPU 1.80GHz (1796.93-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0xf29 Stepping = 9
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,
DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
Features2=0x4400<CNTX-ID,<b14>>
real memory = 265244672 (252 MB)
avail memory = 255963136 (244 MB)
xc0: <Xen Console> on motherboard
cpu0 on motherboard
Timecounters tick every 10.000 msec
[XEN] Initialising virtual ethernet driver.
xn0: Ethernet address: 00:16:3e:6b:de:3a
[XEN]
Trying to mount root from ufs:/dev/xbd769a
WARNING: / was not properly dismounted
Loading configuration files.
No suitable dump device was found.
Entropy harvesting: interrupts ethernet point_to_point kickstart.
Starting file system checks:
/dev/xbd769a: 18859 files, 140370 used, 113473 free (10769 frags, 12838 blocks, 4.2% fragmentation)
Setting hostname: demo.freebsd.org.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
Additional routing options:.
Mounting NFS file systems:.
Starting syslogd.
/etc/rc: WARNING: Dump device does not exist. Savecore not run.
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/X11R6/lib /usr/local/lib
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout
Starting usbd.
usb: Kernel module not available: No such file or directory
Starting local daemons:.
Updating motd.
Starting sshd.
Initial i386 initialization:.
Additional ABI support: linux.
Starting cron.
Local package initialization:.
Additional TCP options:.
Starting background file system checks in 60 seconds.
Sun Apr 1 02:11:43 UTC 2007
FreeBSD/i386 (demo.freebsd.org) (xc0)
login:
现在 domU 应该能运行 &os; 7.0-CURRENT
内核了:
&prompt.root; uname -a
FreeBSD demo.freebsd.org 7.0-CURRENT FreeBSD 7.0-CURRENT #113: Wed Jan 4 06:25:43 UTC 2006
kmacy@freebsd7.gateway.2wire.net:/usr/home/kmacy/p4/freebsd7_xen3/src/sys/i386-xen/compile/XENCONF i386
接下来可以在 domU 中配置网络了。 &os;
domU 会使用一种称做
xn0 的专用网络接口:
&prompt.root; ifconfig xn0 10.10.10.200 netmask 255.0.0.0
&prompt.root; ifconfig
xn0: flags=843<UP,BROADCAST,RUNNING,SIMPLEX> mtu 1500
inet 10.10.10.200 netmask 0xff000000 broadcast 10.255.255.255
ether 00:16:3e:6b:de:3a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
在 dom0 Slackware 上 会出现一些 &xen;
专用的网络接口:
&prompt.root; ifconfig
eth0 Link encap:Ethernet HWaddr 00:07:E9:A0:02:C2
inet addr:10.10.10.130 Bcast:0.0.0.0 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:815 errors:0 dropped:0 overruns:0 frame:0
TX packets:1400 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:204857 (200.0 KiB) TX bytes:129915 (126.8 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:99 errors:0 dropped:0 overruns:0 frame:0
TX packets:99 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9744 (9.5 KiB) TX bytes:9744 (9.5 KiB)
peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:1853349 errors:0 dropped:0 overruns:0 frame:0
TX packets:952923 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2432115831 (2.2 GiB) TX bytes:86528526 (82.5 MiB)
Base address:0xc000 Memory:ef020000-ef040000
vif0.1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:1400 errors:0 dropped:0 overruns:0 frame:0
TX packets:815 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:129915 (126.8 KiB) TX bytes:204857 (200.0 KiB)
vif1.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:157 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:140 (140.0 b) TX bytes:158 (158.0 b)
xenbr1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:112 (112.0 b) TX bytes:0 (0.0 b)
&prompt.root; brctl show
bridge name bridge id STP enabled interfaces
xenbr1 8000.feffffffffff no vif0.1
peth0
vif1.0
运行于 &windows;/&mac;/&linux; 的 VMware
本节尚未开始撰写。
作为宿主 OS 的 FreeBSD
目前, 还没有任何一种虚拟化软件包官方支持 FreeBSD 作为宿主操作系统,
但很多人使用较早版本的 VMware 提供的这项能力。 目前,
已经有人在为让 &xen; 能够在 FreeBSD 上作为宿主环境而进行相关的开发工作。