diff options
Diffstat (limited to 'documentation/content/zh-cn')
46 files changed, 1127 insertions, 1127 deletions
diff --git a/documentation/content/zh-cn/articles/contributing/_index.adoc b/documentation/content/zh-cn/articles/contributing/_index.adoc index a750850b93..f87cdeb7e2 100644 --- a/documentation/content/zh-cn/articles/contributing/_index.adoc +++ b/documentation/content/zh-cn/articles/contributing/_index.adoc @@ -116,14 +116,14 @@ link:https://www.FreeBSD.org/projects/ideas/[FreeBSD 志愿者项目和点子清 例如: -[source,bash] +[source,shell] .... % diff -c oldfile newfile .... 或者 -[source,bash] +[source,shell] .... % diff -c -r olddir newdir .... @@ -132,14 +132,14 @@ link:https://www.FreeBSD.org/projects/ideas/[FreeBSD 志愿者项目和点子清 类似地, -[source,bash] +[source,shell] .... % diff -u oldfile newfile .... 或 -[source,bash] +[source,shell] .... % diff -u -r olddir newdir .... diff --git a/documentation/content/zh-cn/articles/leap-seconds/_index.adoc b/documentation/content/zh-cn/articles/leap-seconds/_index.adoc index 7588f57bd1..2903bc3496 100644 --- a/documentation/content/zh-cn/articles/leap-seconds/_index.adoc +++ b/documentation/content/zh-cn/articles/leap-seconds/_index.adoc @@ -65,7 +65,7 @@ https://tools.ietf.org/html/rfc7164#section-3[RFC 7164] 描述了闰秒的标准 测试是否将使用闰秒是可行的。由于 NTP 的性质,测试可能要运行到闰秒前24小时。有些主要的参考时钟来源只在闰秒事件前一小时公告。查询 NTP 守护进程: -[source,bash] +[source,shell] .... % ntpq -c 'rv 0 leap' .... diff --git a/documentation/content/zh-cn/articles/linux-users/_index.adoc b/documentation/content/zh-cn/articles/linux-users/_index.adoc index 220e08c4dd..faa013d6e3 100644 --- a/documentation/content/zh-cn/articles/linux-users/_index.adoc +++ b/documentation/content/zh-cn/articles/linux-users/_index.adoc @@ -58,14 +58,14 @@ toc::[] Packages 是预编译好的应用程序,在 FreeBSD 中等价于基于 Debian/Ubuntu 的系统中的 [.filename]#.deb# 软件包以及基于 Red Hat/Fedora 的系统中的 [.filename]#.rpm# 软件包。 Packages使用 man:pkg_add[1] 来进行安装。 例如,下面的命令将用来安装 Apache 2.2: -[source,bash] +[source,shell] .... # pkg_add /tmp/apache-2.2.6_2.tbz .... 使用 `-r` 操作将告诉 man:pkg_add[1] 来自动获取并安装一个软件包,以及解决所有的依赖关系: -[source,bash] +[source,shell] .... # pkg_add -r apache22 Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/apache22.tbz... Done. @@ -93,7 +93,7 @@ Ports 套件,常被称作 ports 树,可以在 [.filename]#/usr/ports# 下找 安装一个 port 就像进入 port 的目录并开始构建过程一样简单(通常情况下), 下面是从 Ports 套件安装 Apache 2.2 的例子: -[source,bash] +[source,shell] .... # cd /usr/ports/www/apache22 # make install clean @@ -101,7 +101,7 @@ Ports 套件,常被称作 ports 树,可以在 [.filename]#/usr/ports# 下找 使用 ports 安装软件的最大好处就是能够自定义安装选项。 例如,从 ports 安装 Apache 2.2 时你可以通过设置 `WITH_LDAP` man:make[1] 变量来启用 mod_ldap: -[source,bash] +[source,shell] .... # cd /usr/ports/www/apache22 # make WITH_LDAP="YES" install clean @@ -151,14 +151,14 @@ apache22_flags="-DSSL" 一旦服务已经在 [.filename]#/etc/rc.conf# 中启用,服务将能够从命令行启动(不需要重新启动系统): -[source,bash] +[source,shell] .... # /etc/rc.d/sshd start .... 如果服务还没有被启用,可以使用 `forcestart` 来从命令行启动: -[source,bash] +[source,shell] .... # /etc/rc.d/sshd forcestart .... @@ -171,7 +171,7 @@ apache22_flags="-DSSL" 代替 Linux(R) 中所使用的标识网络接口所常用的 _ethX_ 格式的是,FreeBSD 使用驱动名字后跟一个数字来标识。下面 man:ifconfig[8] 的输出显示了两个 Intel(R) Pro 1000 的网络接口([.filename]#em0# 和 [.filename]#em1#): -[source,bash] +[source,shell] .... % ifconfig em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 @@ -273,7 +273,7 @@ Linux(R) 中,你可能会通过看一看 [.filename]#/proc/sys/net/ipv4/ip_for 在 IP 转发样例中,你应该使用下列内容来确定 FreeBSD 系统中是否已经开启了 IP 转发: -[source,bash] +[source,shell] .... % sysctl net.inet.ip.forwarding net.inet.ip.forwarding: 0 @@ -281,7 +281,7 @@ net.inet.ip.forwarding: 0 `-a` 标志用来列出所有的系统设置: -[source,bash] +[source,shell] .... % sysctl -a kern.ostype: FreeBSD @@ -309,7 +309,7 @@ kern.posix1version: 200112 需要 procfs 的情况是,运行一些较老的软件,使用 man:truss[1] 来跟踪系统信号,以及 link:{handbook}#linuxemu[Linux® 二进制兼容]. (尽管,Linux(R) 二进制兼容性使用其本身的 procfs,man:linprocfs[5]。) 如果你需要挂载 procfs 你可以在 [.filename]#/etc/fstab# 中加入如下内容: -[source,bash] +[source,shell] .... proc /proc procfs rw,noauto 0 0 .... @@ -321,7 +321,7 @@ proc /proc procfs rw,noauto 0 0 然后使用如下命令挂载 procfs: -[source,bash] +[source,shell] .... # mount /proc .... diff --git a/documentation/content/zh-cn/articles/nanobsd/_index.adoc b/documentation/content/zh-cn/articles/nanobsd/_index.adoc index e10c4722e5..e58690019b 100644 --- a/documentation/content/zh-cn/articles/nanobsd/_index.adoc +++ b/documentation/content/zh-cn/articles/nanobsd/_index.adoc @@ -69,7 +69,7 @@ NanoBSD 提供的功能包括: [example] ==== -[source,bash] +[source,shell] .... # vi /etc/resolv.conf [...] @@ -93,7 +93,7 @@ NanoBSD 映像是通过使用非常简单的 [.filename]#nanobsd.sh# shell 脚 构建 NanoBSD 映像所需的命令是: -[source,bash] +[source,shell] .... # cd /usr/src/tools/tools/nanobsd <.> # sh nanobsd.sh <.> @@ -115,7 +115,7 @@ NanoBSD 映像是通过使用非常简单的 [.filename]#nanobsd.sh# shell 脚 执行下面的命令将使 [.filename]#nanobsd.sh# 从当前目录中的 [.filename]#myconf.nano# 文件读取配置: -[source,bash] +[source,shell] .... # sh nanobsd.sh -c myconf.nano .... @@ -263,7 +263,7 @@ customize_cmd cust_nobeastie 如果传输速度是第一要务, 采用下面的例子: -[source,bash] +[source,shell] .... # ftp myhost get _.disk.image "| sh updatep1" @@ -273,7 +273,7 @@ get _.disk.image "| sh updatep1" 如果更倾向于安全传输, 应参考下面的例子: -[source,bash] +[source,shell] .... # ssh myhost cat _.disk.image.gz | zcat | sh updatep1 .... @@ -285,7 +285,7 @@ get _.disk.image "| sh updatep1" [.procedure] . 开始时, 在提供映像的主机上开启 TCP 监听, 并令其将映像文件发给客户机: + -[source,bash] +[source,shell] .... myhost# nc -l 2222 < _.disk.image .... @@ -296,7 +296,7 @@ myhost# nc -l 2222 < _.disk.image ==== . 连接到提供新映像服务的主机, 并执行 [.filename]#updatep1# 脚本: + -[source,bash] +[source,shell] .... # nc myhost 2222 | sh updatep1 .... diff --git a/documentation/content/zh-cn/articles/rc-scripting/_index.adoc b/documentation/content/zh-cn/articles/rc-scripting/_index.adoc index 9e50a51c37..0ad14c6126 100644 --- a/documentation/content/zh-cn/articles/rc-scripting/_index.adoc +++ b/documentation/content/zh-cn/articles/rc-scripting/_index.adoc @@ -93,7 +93,7 @@ run_rc_command "$1" <.> ➊ 一个解释性的脚本应该以一行魔幻的 "shebang" 行开头。 该行指定了脚本的解析程序。由于 shebang 行的作用, 假如再有可执行位的设置, 脚本就能象一个二进制程序一样被精确地调用执行。 (请参考 man:chmod[1]。) 例如, 一个系统管理员可以从命令行手动运行我们的脚本: -[source,bash] +[source,shell] .... # /etc/rc.d/dummy start .... @@ -192,7 +192,7 @@ run_rc_command "$1" ==== 你可以通过将开关变量设置为 ON 来使 man:rc.subr[8] 有效, 使用 `one` 或 `force` 为脚本的参数加前缀,如 `onestart` 或 `forcestop` 这样,会忽略其当前的设置。 切记 `force` 在我们下面要提到的情况下有额外的危险后果,那就是当用 `one` 改写了 ON/OFF 开关变量。例如, 假定 `dummy_enable` 是 `OFF` 的,而下面的命令将忽略系统设置而强行运行 `start` 方法: -[source,bash] +[source,shell] .... # /etc/rc.d/dummy onestart .... @@ -374,7 +374,7 @@ _永远不要_ 在 `command_args` 包含破折号选项, 类似 `-X` 或 `--fo 全部可用命令的列表,当脚本不加参数地调用时,在 man:rc.subr[8] 打印出的使用方法中能够找到。例如, 这就是供学习的脚本用法的内容: -[source,bash] +[source,shell] .... # /etc/rc.d/mumbled Usage: /etc/rc.d/mumbled [fast|force|one](start|stop|restart|rcvar|reload|plugh|xyzzy|status|poll) @@ -559,7 +559,7 @@ run_rc_command "$@" <.> ➊ 你输入的所有在 `start` 之后的参数可以被当作各自方法的定位参数一样被终结。 我们可以根据我们的任务、技巧和想法来以任何方式使用他们。 在当前的例子中,我们只是以下行中字符串的形式传递参数给 man:echo[1] 程序 - 注意 `$*` 是有双引号的。这里是脚本如何被调用的: -[source,bash] +[source,shell] .... # /etc/rc.d/dummy start Nothing started. @@ -570,7 +570,7 @@ Greeting message: Hello world! ➋ 同样用于我们脚本提供的任何方法,并不仅限于标准的方法。 我们已经添加了一个自定义的叫做 `kiss` 的方法, 并且它给附加参数带来的戏耍决不亚于 `start`。 例如: -[source,bash] +[source,shell] .... # /etc/rc.d/dummy kiss A ghost gives you a kiss. diff --git a/documentation/content/zh-cn/articles/remote-install/_index.adoc b/documentation/content/zh-cn/articles/remote-install/_index.adoc index 64778b1042..b14208aefa 100644 --- a/documentation/content/zh-cn/articles/remote-install/_index.adoc +++ b/documentation/content/zh-cn/articles/remote-install/_index.adoc @@ -77,7 +77,7 @@ mfsBSD 设置工具能够被用来构建一个微小的 FreeBSD 映像。如 mfs 下载并解压出最新的 mfsBSD 版本,并改变自己的当前工作目录到存在 mfsBSD 脚本文件的目录: -[source,bash] +[source,shell] .... # fetch http://people.freebsd.org/~mm/mfsbsd/mfsbsd-latest.tar.gz # tar xvzf mfsbsd-1.0-beta1.tar.gz @@ -129,7 +129,7 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0" 第一步是挂载 FreeBSD 的安装 CD, 或者挂载安装 ISO 文件到 [.filename]#/cdrom#。 因为例子的缘故,在文章中我们将假定你下载的是 FreeBSD 7.0-RELEASE ISO 文件。使用 man:mdconfig[8] 实用程序挂载 ISO 映像文件到 [.filename]#/cdrom# 目录非常简单: -[source,bash] +[source,shell] .... # mdconfig -a -t vnode -u 10 -f 7.0-RELEASE-amd64-disc1.iso # mount_cd9660 /dev/md10 /cdrom @@ -137,7 +137,7 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0" 紧接着,构建可启动的 mfsBSD 映像: -[source,bash] +[source,shell] .... # make BASE=/cdrom/7.0-RELEASE .... @@ -151,14 +151,14 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0" 现在 mfsBSD 映像已经准备好了, 必须把它上传到远程的一个正在运行的急救系统上或者一个预安装了 Linux(R) 发行版的系统上。最适合做这个工作的工具是 scp: -[source,bash] +[source,shell] .... # scp disk.img root@192.168.0.2:. .... 想要正确的引导 mfsBSD 映像, 必须把它安放在机器的第一块(可启动)设备上。 这可能会和使用的例子我们假定的一样,第一块可启动磁盘设备是 [.filename]#sda#: -[source,bash] +[source,shell] .... # dd if=/root/disk.img of=/dev/sda bs=1m .... @@ -176,7 +176,7 @@ mfsBSD 成功被引导后它就应该能够通过 man:ssh[1] 登入了。这一 在开始时,将所有磁盘都标记成空的, 在每个磁盘上重复如下命令: -[source,bash] +[source,shell] .... # dd if=/dev/zero of=/dev/ad0 count=2 .... @@ -185,7 +185,7 @@ mfsBSD 成功被引导后它就应该能够通过 man:ssh[1] 登入了。这一 下面的例子会描述如何去创建 slices 和 labels, 在每个 partition 上初始化 man:gmirror[8] 并如何在每个被镜像过的 partition 上创建 UFS2 文件系统: -[source,bash] +[source,shell] .... # fdisk -BI /dev/ad0 <.> # fdisk -BI /dev/ad1 @@ -220,7 +220,7 @@ mfsBSD 成功被引导后它就应该能够通过 man:ssh[1] 登入了。这一 这是最重要的一部分。 此节将描述如何在我们上一小节已经准备好的磁盘上安装一个最小的 FreeBSD 版本。要达成这个目的,所有的文件安系统需要被挂载乃至于 Sysinstall 可以把 FreeBSD 系统的内容写到磁盘上: -[source,bash] +[source,shell] .... # mount /dev/mirror/root /mnt # mkdir /mnt/var /mnt/usr @@ -252,7 +252,7 @@ FreeBSD 操作系统现在应该安装完毕了;通常情况下, 安装过 你现在必须 man:chroot[8] 到刚安装的全新的系统中来完成安装。 使用如下命令: -[source,bash] +[source,shell] .... # chroot /mnt .... @@ -261,7 +261,7 @@ FreeBSD 操作系统现在应该安装完毕了;通常情况下, 安装过 * 拷贝 `GENERIC`(通用)内核到 [.filename]#/boot/kernel# 目录: + -[source,bash] +[source,shell] .... # cp -Rp /boot/GENERIC/* /boot/kernel .... @@ -286,7 +286,7 @@ zfs_load="YES" .... * 执行下面的命令,使得 ZFS 在下次启动后可用: + -[source,bash] +[source,shell] .... # echo 'zfs_enable="YES"' >> /etc/rc.conf .... @@ -303,14 +303,14 @@ zfs_load="YES" 最后还剩下的步骤是配置 man:zpool[8] 并创建一些 man:zfs[8] 文件系统。建立并管理 ZFS 非常简单。 首先,创建一个镜像的pool: -[source,bash] +[source,shell] .... # zpool create tank mirror /dev/ad[01]s1f .... 再接着,创建一些文件系统: -[source,bash] +[source,shell] .... # zfs create tank/ports # zfs create tank/src diff --git a/documentation/content/zh-cn/books/arch-handbook/boot/chapter.adoc b/documentation/content/zh-cn/books/arch-handbook/boot/chapter.adoc index d03f8d2e6c..dd04c67c9f 100644 --- a/documentation/content/zh-cn/books/arch-handbook/boot/chapter.adoc +++ b/documentation/content/zh-cn/books/arch-handbook/boot/chapter.adoc @@ -60,7 +60,7 @@ toc::[] |BIOS(固件)消息 a| -[source,bash] +[source,shell] .... F1 FreeBSD F2 BSD @@ -70,7 +70,7 @@ F5 Disk 2 |`boot0` a| -[source,bash] +[source,shell] .... >>FreeBSD/i386 BOOT Default: 1:ad(1,a)/boot/loader @@ -80,7 +80,7 @@ boot: |`boot2` a| -[source,bash] +[source,shell] .... BTX loader 1.0 BTX version is 1.01 BIOS drive A: is disk0 @@ -97,7 +97,7 @@ Booting [kernel] in 9 seconds..._ |loader a| -[source,bash] +[source,shell] .... Copyright (c) 1992-2002 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 @@ -641,7 +641,7 @@ __asm(".previous"); 用objdump察看一个内核二进制文件, 也许你会注意到里面有这么几个小的节: -[source,bash] +[source,shell] .... % objdump -h /kernel 7 .set.cons_set 00000014 c03164c0 c03164c0 002154c0 2**2 diff --git a/documentation/content/zh-cn/books/arch-handbook/driverbasics/chapter.adoc b/documentation/content/zh-cn/books/arch-handbook/driverbasics/chapter.adoc index 7fd0a183f3..8175cbfb6d 100644 --- a/documentation/content/zh-cn/books/arch-handbook/driverbasics/chapter.adoc +++ b/documentation/content/zh-cn/books/arch-handbook/driverbasics/chapter.adoc @@ -118,7 +118,7 @@ KMOD=skeleton 简单地用这个makefile运行``make``就能够创建文件 [.filename]#skeleton.ko#,键入如下命令可以把它加载到内核: -[source,bash] +[source,shell] .... # kldload -v ./skeleton.ko .... @@ -467,14 +467,14 @@ DEV_MODULE(echo,echo_loader,NULL); 在FreeBSD 4.X上安装此驱动程序,你将首先需要用如下命令在 你的文件系统上创建一个节点: -[source,bash] +[source,shell] .... # mknod /dev/echo c 33 0 .... 驱动程序被加载后,你应该能够键入一些东西,如: -[source,bash] +[source,shell] .... # echo -n "Test Data" > /dev/echo # cat /dev/echo diff --git a/documentation/content/zh-cn/books/arch-handbook/pccard/chapter.adoc b/documentation/content/zh-cn/books/arch-handbook/pccard/chapter.adoc index 2067ae782c..490f28334b 100644 --- a/documentation/content/zh-cn/books/arch-handbook/pccard/chapter.adoc +++ b/documentation/content/zh-cn/books/arch-handbook/pccard/chapter.adoc @@ -173,7 +173,7 @@ product BUFFALO WLI2_CF_S11G 0x030c BUFFALO AirStation ultra 802.11b CF 目前,需要一个手动步骤来 重新产生[.filename]##pccarddevs.h##,用来将这些标识符转换 到客户驱动程序。你在驱动程序中使用它们之前必须完成下面步骤: -[source,bash] +[source,shell] .... # cd src/sys/dev/pccard # make -f Makefile.pccarddevs diff --git a/documentation/content/zh-cn/books/handbook/advanced-networking/_index.adoc b/documentation/content/zh-cn/books/handbook/advanced-networking/_index.adoc index 3b35e7cc97..6ac14ab388 100644 --- a/documentation/content/zh-cn/books/handbook/advanced-networking/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/advanced-networking/_index.adoc @@ -79,7 +79,7 @@ toc::[] 为了说明路由选择的各个部分, 首先来看看下面的例子。 这是 `netstat` 命令的输出: -[source,bash] +[source,shell] .... % netstat -r Routing tables @@ -202,7 +202,7 @@ defaultrouter="10.20.30.1" 也可以直接在命令行使用 man:route[8] 命令: -[source,bash] +[source,shell] .... # route add default 10.20.30.1 .... @@ -247,7 +247,7 @@ image::static-routes.png[] 如果我们查看一下``RouterA``的路由表, 我们就会看到如下一些内容: -[source,bash] +[source,shell] .... % netstat -nr Routing tables @@ -262,7 +262,7 @@ default 10.0.0.1 UGS 0 49378 xl0 使用当前的路由表,`RouterA` 是不能到达我们的内网――Internal Net 2 的。它没有到 `192.168.2.0/24` 的路由。 一种可以接受的方法是手工增加这条路由。以下的命令会把 Internal Net 2 网络加入到 `RouterA` 的路由表中,使用``192.168.1.2`` 做为下一个跳跃: -[source,bash] +[source,shell] .... # route add -net 192.168.2.0/24 192.168.1.2 .... @@ -282,7 +282,7 @@ route_internalnet2="-net 192.168.2.0/24 192.168.1.2" 配置变量 `static_routes` 是一串以空格隔开的字符串。每一串表示一个路由名字。 在上面的例子中我们中有一个串在 `static_routes` 里。这个字符串中 _internalnet2_。 然后我们新增一个配置变量 `route_internalnet2`, 这里我们把所有传给 man:route[8]命令的参数拿了过来。 在上面的实例中的我使用的命令是: -[source,bash] +[source,shell] .... # route add -net 192.168.2.0/24 192.168.1.2 .... @@ -433,7 +433,7 @@ device wlan_scan_sta # 802.11 STA mode scanning 在系统启动之后, 您会在引导时给出的信息中, 找到类似下面这样的关于无线设备的信息: -[source,bash] +[source,shell] .... ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus1 ath0: [ITHREAD] @@ -450,7 +450,7 @@ ath0: AR2413 mac 7.9 RF2413 phy 4.5 您可以通过使用 `ifconfig` 命令来扫描网络。 由于系统需要在操作过程中切换不同的无线频率并探测可用的无线访问点, 这种请求可能需要数分钟才能完成。 只有超级用户才能启动这种扫描: -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev ath0 # ifconfig wlan0 up scan @@ -468,7 +468,7 @@ freebsdap 00:11:95:c3:0d:ac 1 54M -83:96 100 EPS WPA ==== 在 FreeBSD 7.X 中, 会直接适配器设备, 例如 [.filename]#ath0#, 而不是 [.filename]#wlan0# 设备。 因此您需要把前面的命令行改为: -[source,bash] +[source,shell] .... # ifconfig ath0 up scan .... @@ -502,7 +502,7 @@ freebsdap 00:11:95:c3:0d:ac 1 54M -83:96 100 EPS WPA 要显示目前已知的网络, 可以使用下面的命令: -[source,bash] +[source,shell] .... # ifconfig wlan0 list scan .... @@ -591,14 +591,14 @@ ifconfig_wlan0="DHCP" 现在您已经完成了启用无线网络接口的全部准备工作了, 下面的操作将启用它: -[source,bash] +[source,shell] .... # /etc/rc.d/netif start .... 一旦网络接口开始运行, 就可以使用 `ifconfig` 来查看网络接口 [.filename]#ath0# 的状态了: -[source,bash] +[source,shell] .... # ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 @@ -664,7 +664,7 @@ ifconfig_wlan0="WPA DHCP" 下面启用无线网络接口: -[source,bash] +[source,shell] .... # /etc/rc.d/netif start Starting wpa_supplicant. @@ -688,7 +688,7 @@ wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 除此之外, 您也可以手动地使用 <<network-wireless-wpa-wpa-psk,above>> 中那份 [.filename]#/etc/wpa_supplicant.conf# 来配置, 方法是执行: -[source,bash] +[source,shell] .... # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf Trying to associate with 00:11:95:c3:0d:ac (SSID='freebsdap' freq=2412 MHz) @@ -699,7 +699,7 @@ CTRL-EVENT-CONNECTED - Connection to 00:11:95:c3:0d:ac completed (auth) [id=0 id 接下来的操作, 是运行 `dhclient` 命令来从 DHCP 服务器获取 IP: -[source,bash] +[source,shell] .... # dhclient wlan0 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 @@ -725,7 +725,7 @@ wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 如果不打算使用 DHCP 或者 DHCP 不可用, 您可以在 `wpa_supplicant` 为通讯站完成了身份认证之后, 指定静态 IP 地址: -[source,bash] +[source,shell] .... # ifconfig wlan0 inet 192.168.0.100 netmask 255.255.255.0 # ifconfig wlan0 @@ -743,7 +743,7 @@ wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 如果没有使用 DHCP, 还需要手工配置默认网关, 以及域名服务器: -[source,bash] +[source,shell] .... # route add default your_default_router # echo "nameserver your_DNS_server" >> /etc/resolv.conf @@ -803,7 +803,7 @@ ifconfig_wlan0="WPA DHCP" 下一步是使用 [.filename]#rc.d# 机制来启用网络接口: -[source,bash] +[source,shell] .... # /etc/rc.d/netif start Starting wpa_supplicant. @@ -866,7 +866,7 @@ ifconfig_wlan0="WPA DHCP" 下一步是启用网络接口: -[source,bash] +[source,shell] .... # /etc/rc.d/netif start Starting wpa_supplicant. @@ -938,7 +938,7 @@ ifconfig_wlan0="WPA DHCP" 下一步是启用网络接口: -[source,bash] +[source,shell] .... # /etc/rc.d/netif start Starting wpa_supplicant. @@ -966,7 +966,7 @@ WEP (有线等效协议) 是最初 802.11 标准的一部分。 其中没有提 WEP 可以通过 `ifconfig` 配置: -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev ath0 # ifconfig wlan0 inet 192.168.1.100 netmask 255.255.255.0 \ @@ -997,7 +997,7 @@ network={ 接着: -[source,bash] +[source,shell] .... # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf Trying to associate with 00:13:46:49:41:76 (SSID='dlinkap' freq=2437 MHz) @@ -1010,7 +1010,7 @@ IBSS 模式, 也称为 ad-hoc 模式, 是为点对点连接设计的。 例 在计算机 `A` 上: -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev ath0 wlanmode adhoc # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap @@ -1029,7 +1029,7 @@ IBSS 模式, 也称为 ad-hoc 模式, 是为点对点连接设计的。 例 此时, 在 `B` 上应该能够检测到 `A` 的存在了: -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev ath0 wlanmode adhoc # ifconfig wlan0 up scan @@ -1039,7 +1039,7 @@ IBSS 模式, 也称为 ad-hoc 模式, 是为点对点连接设计的。 例 在输出中的 `I` 再次确认了 `A` 机是以 ad-hoc 模式运行的。 我们只需给 `B` 配置一不同的 IP 地址: -[source,bash] +[source,shell] .... # ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap # ifconfig wlan0 @@ -1072,7 +1072,7 @@ FreeBSD 可以作为一个(无线)访问接入点(AP), 这样可以不 一旦装载了无线网络的支持, 你就可以检查一下看看你的无线设备是否支持基于主机的无线访问接入模式 (通常也被称为 hostap 模式): -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev ath0 # ifconfig wlan0 list caps @@ -1084,14 +1084,14 @@ cryptocaps=1f<WEP,TKIP,AES,AES_CCM,TKIPMIC> 只有创建网络伪设备时能够配置无线设备是否以 hostap 模式运行, 如果之前已经存在了相应的设备, 则需要首先将其销毁: -[source,bash] +[source,shell] .... # ifconfig wlan0 destroy .... 接着, 在配置其它参数前, 以正确的选项重新生成设备: -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev ath0 wlanmode hostap # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1 @@ -1099,7 +1099,7 @@ cryptocaps=1f<WEP,TKIP,AES,AES_CCM,TKIPMIC> 再次使用 `ifconfig` 检查 [.filename]#wlan0# 网络接口的状态: -[source,bash] +[source,shell] .... # ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 @@ -1129,7 +1129,7 @@ ifconfig_wlan0="inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g c 一旦 AP 被配置成了我们前面所展示的那样, 就可以在另外一台无线机器上初始化一次扫描来找到这个 AP: -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev ath0 # ifconfig wlan0 up scan @@ -1139,7 +1139,7 @@ freebsdap 00:11:95:c3:0d:ac 1 54M -66:-96 100 ES WME 在客户机上能看到已经连接上了(无线)访问接入点: -[source,bash] +[source,shell] .... # ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap # ifconfig wlan0 @@ -1208,12 +1208,12 @@ wpa_pairwise=CCMP TKIP <.> 接下来的一步就是运行 hostapd: -[source,bash] +[source,shell] .... # /etc/rc.d/hostapd forcestart .... -[source,bash] +[source,shell] .... # ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2290 @@ -1234,7 +1234,7 @@ wpa_pairwise=CCMP TKIP <.> 在设置了正确的 SSID 和 IP 地址后,无线设备就可以进入 hostap 模式了: -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev ath0 wlanmode hostap # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 \ @@ -1246,7 +1246,7 @@ wpa_pairwise=CCMP TKIP <.> 再使用一次 `ifconfig` 命令查看 [.filename]#wlan0# 接口的状态: -[source,bash] +[source,shell] .... # ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 @@ -1261,7 +1261,7 @@ wpa_pairwise=CCMP TKIP <.> 现在可以从另外一台无线机器上初始化一次扫描来找到这个 AP 了: -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev ath0 # ifconfig wlan0 up scan @@ -1290,7 +1290,7 @@ freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS `wpa_supplicant` 提供了许多调试支持; 尝试手工运行它, 在启动时指定 `-dd` 选项, 并察看输出结果。 * 除此之外还有许多其它的底层调试工具。 您可以使用 [.filename]#/usr/src/tools/tools/net80211# 中的 `wlandebug` 命令来启用 802.11 协议支持层的调试功能。 例如: + -[source,bash] +[source,shell] .... # wlandebug -i ath0 +scan+auth+debug+assoc net.wlan.0.debug: 0 => 0xc80000<assoc,auth,scan> @@ -1315,7 +1315,7 @@ Bluetooth (蓝牙) 是一项无线技术, 用于建立带宽为 2.4GHZ,波 默认的 Bluetooth 设备驱动程序已存在于内核模块里。 接入设备前,您需要将驱动程序加载入内核: -[source,bash] +[source,shell] .... # kldload ng_ubt .... @@ -1329,7 +1329,7 @@ ng_ubt_load="YES" 插入USB dongle。控制台(console)(或syslog中)会出现类似如下的信息: -[source,bash] +[source,shell] .... ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2 ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2 @@ -1339,7 +1339,7 @@ ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3, 脚本 [.filename]#/etc/rc.d/bluetooth# 是用来启动和停止 Bluetooth stack (蓝牙栈)的。 最好在拔出设备前停止 stack(stack),当然也不是非做不可。 启动 stack (栈) 时,会得到如下的输出: -[source,bash] +[source,shell] .... # /etc/rc.d/bluetooth start ubt0 BD_ADDR: 00:02:72:00:d4:1a @@ -1363,7 +1363,7 @@ Number of SCO packets: 8 最常见的任务是发现在 RF proximity 中的蓝牙 (Bluetooth) 设备。这个就叫做 _质询(inquiry)_。质询及 HCI 相关的操作可以由 man:hccontrol[8] 工具来完成。 以下的例子展示如何找出范围内的蓝牙设备。 在几秒钟内您应该得到一张设备列表。 注意远程主机只有被置于 _discoverable(可发现)_ 模式才能答应质询。 -[source,bash] +[source,shell] .... % hccontrol -n ubt0hci inquiry Inquiry result, num_responses=1 @@ -1379,7 +1379,7 @@ Inquiry complete. Status: No error [00] `BD_ADDR` 是蓝牙设备的特定地址, 类似于网卡的 MAC 地址。需要用此地址与某个设备进一步地通信。 可以为 BD_ADDR 分配由人可读的名字 (human readable name)。 文件 [.filename]#/etc/bluetooth/hosts# 包含已知蓝牙主机的信息。 下面的例子展示如何获得分配给远程设备的可读名。 -[source,bash] +[source,shell] .... % hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4 BD_ADDR: 00:80:37:29:19:a4 @@ -1390,7 +1390,7 @@ Name: Pav's T39 蓝牙系统提供点对点连接 (只有两个蓝牙设备参与) 和点对多点连接。在点对多点连接中,连接由多个蓝牙设备共享。 以下的例子展示如何取得本地设备的活动基带 (baseband) 连接列表。 -[source,bash] +[source,shell] .... % hccontrol -n ubt0hci read_connection_list Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State @@ -1399,7 +1399,7 @@ Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State _connection handle(连接柄)_ 在需要终止基带连接时有用。注意:一般不需要手动完成。 栈 (stack) 会自动终止不活动的基带连接。 -[source,bash] +[source,shell] .... # hccontrol -n ubt0hci disconnect 41 Connection handle: 41 @@ -1418,7 +1418,7 @@ L2CAP 基于 _通道(channel)_ 的概念。 通道 (Channel) 是位于基带 (ba 一个有用的命令是 man:l2ping[8], 它可以用来 ping 其它设备。 一些蓝牙实现可能不会返回所有发送给它们的数据, 所以下例中的 `0 bytes` 是正常的。 -[source,bash] +[source,shell] .... # l2ping -a 00:80:37:29:19:a4 0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0 @@ -1429,7 +1429,7 @@ L2CAP 基于 _通道(channel)_ 的概念。 通道 (Channel) 是位于基带 (ba man:l2control[8] 工具用于在 L2CAP 上进行多种操作。 以下这个例子展示如何取得本地设备的逻辑连接 (通道) 和基带连接的列表: -[source,bash] +[source,shell] .... % l2control -a 00:02:72:00:d4:1a read_channel_list L2CAP channels: @@ -1443,7 +1443,7 @@ Remote BD_ADDR Handle Flags Pending State 另一个诊断工具是 man:btsockstat[1]。 它完成与 man:netstat[1] 类似的操作, 只是用了蓝牙网络相关的数据结构。 以下这个例子显示与 man:l2control[8] 相同的逻辑连接。 -[source,bash] +[source,shell] .... % btsockstat Active L2CAP sockets @@ -1514,7 +1514,7 @@ SDP 包括 SDP 服务器和 SDP 客户端之间的通信。 服务器维护一 蓝牙 SDP 服务端 man:sdpd[8] 和命令行客户端 man:sdpcontrol[8] 都包括在了标准的 FreeBSD 安装里。 下面的例子展示如何进行 SDP 浏览查询。 -[source,bash] +[source,shell] .... % sdpcontrol -a 00:01:03:fc:6e:ec browse Record Handle: 00000000 @@ -1543,7 +1543,7 @@ Bluetooth Profile Descriptor List: 等等。注意每个服务有一个属性 (比如 RFCOMM 通道)列表。 根据服务您可能需要为一些属性做个注释。 有些"蓝牙实现 (Bluetooth implementation)"不支持服务浏览, 可能会返回一个空列表。这种情况,可以搜索指定的服务。 下面的例子展示如何搜索 OBEX Object Push (OPUSH) 服务: -[source,bash] +[source,shell] .... % sdpcontrol -a 00:01:03:fc:6e:ec search OPUSH .... @@ -1557,7 +1557,7 @@ sdpd_enable="YES" 然后用下面的命令来启动 sdpd 服务: -[source,bash] +[source,shell] .... # /etc/rc.d/sdpd start .... @@ -1566,7 +1566,7 @@ sdpd_enable="YES" 使用本地 SDP 进程注册的服务列表,可以通过本地控制通道发出 SDP 浏览查询获得: -[source,bash] +[source,shell] .... # sdpcontrol -l browse .... @@ -1588,14 +1588,14 @@ sdpd_enable="YES" 在下面的例子中,man:rfcomm_pppd[8] 用来在 NUN RFCOMM 通道上打开一个到 BD_ADDR 为 00:80:37:29:19:a4 的设备的 RFCOMM 连接。具体的 RFCOMM 通道号要通过 SDP 从远端设备获得。也可以手动指定通 RFCOMM,这种情况下 man:rfcomm_pppd[8] 将不能执行 SDP 查询。使用 man:sdpcontrol[8] 来查找远端设备上的 RFCOMM 通道。 -[source,bash] +[source,shell] .... # rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup .... 为了提供 PPP(LAN) 网络接入服务,必须运行 man:sdpd[8] 服务。一个新的 LAN 客户端条目必须在 [.filename]#/etc/ppp/ppp.conf# 文件中建立。 想要实例请参考 man:rfcomm_pppd[8]。 最后,在有效地通道号上开始 RFCOMM PPP 服务。 RFCOMM PPP 服务会使用本地 SDP 进程自动注册蓝牙 LAN 服务。下面的例子展示如何启动 RFCOMM PPP 服务。 -[source,bash] +[source,shell] .... # rfcomm_pppd -s -C 7 -l rfcomm-server .... @@ -1608,7 +1608,7 @@ OBEX 服务器和客户端由第三方软件包 obexapp实现,它可以从 pac OBEX 客户端用于向 OBEX 服务器推入或接出对象。 一个对像可以是(举个例子)商业卡片或约会。 OBEX 客户能通过 SDP 从远程设备取得 RFCOMM 通道号。这可以通过指定服务名代替 RFCOMM 通道号来完成。支持的服务名是有:IrMC、FTRN 和 OPUSH。 也可以用数字来指定 RFCOMM 通道号。下面是一个 OBEX 会话的例子,一个设备信息对像从手机中被拉出, 一个新的对像被推入手机的目录。 -[source,bash] +[source,shell] .... % obexapp -a 00:80:37:29:19:a4 -C IrMC obex> get telecom/devinfo.txt devinfo-t39.txt @@ -1621,7 +1621,7 @@ Success, response: OK, Success (0x20) 为了提供 OBEX 推入服务,man:sdpd[8] 必须处于运行状态。必须创建一个根目录用于存放所有进入的对象。 根文件夹的默认路径是 [.filename]#/var/spool/obex#。 最后,在有效的 RFCOMM 通道号上开始 OBEX 服务。OBEX 服务会使用 SDP 进程自动注册 OBEX 对象推送 (OBEX Object Push) 服务。 下面的例子展示如何启动 OBEX 服务。 -[source,bash] +[source,shell] .... # obexapp -s -C 10 .... @@ -1632,7 +1632,7 @@ Success, response: OK, Success (0x20) 工具 man:rfcomm_sppd[1] 来实现串口层。 "Pseudo tty" 用来作为虚拟的串口。 下面的例子展示如何连接远程设备的串口服务。 注意您不必指定 RFCOMM 通道――man:rfcomm_sppd[1] 能够通过 SDP 从远端设备那里获得。 如果您想代替它的话,可以在命令行里指定 RFCOMM 通道来实现: -[source,bash] +[source,shell] .... # rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6 rfcomm_sppd[94692]: Starting on /dev/ttyp6... @@ -1640,7 +1640,7 @@ rfcomm_sppd[94692]: Starting on /dev/ttyp6... 一旦连接上,"pseudo tty"就可以充当串口了: -[source,bash] +[source,shell] .... # cu -l ttyp6 .... @@ -1651,7 +1651,7 @@ rfcomm_sppd[94692]: Starting on /dev/ttyp6... 一些较老的蓝牙设备并不支持角色转换 (role switching)。默认情况下,FreeBSD 接受一个新的连接时, 它会尝试进行角色转换并成为主控端 (master)。 不支持角色转换的设备将无法连接。 注意角色转换是在新连接建立时运行的, 因此如果远程设备不支持角色转换,就不可能向它发出请求。 一个 HCI 选项用来在本地端禁用角色转换。 -[source,bash] +[source,shell] .... # hccontrol -n ubt0hci write_node_role_switch 0 .... @@ -1713,7 +1713,7 @@ rfcomm_sppd[94692]: Starting on /dev/ttyp6... 网桥是通过接口复制来创建的。 您可以使用 man:ifconfig[8] 来创建网桥接口, 如果内核不包括网桥驱动, 则它会自动将其载入。 -[source,bash] +[source,shell] .... # ifconfig bridge create bridge0 @@ -1729,7 +1729,7 @@ bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 将成员网络接口加入网桥。 为了让网桥能够为所有网桥成员接口转发包, 网桥接口和所有成员接口都需要处于启用状态: -[source,bash] +[source,shell] .... # ifconfig bridge0 addm fxp0 addm fxp1 up # ifconfig fxp0 up @@ -1748,7 +1748,7 @@ ifconfig_fxp1="up" 如果网桥主机需要 IP 地址, 则应将其绑在网桥设备本身, 而不是某个成员设备上。 这可以通过静态设置或 DHCP 来完成: -[source,bash] +[source,shell] .... # ifconfig bridge0 inet 192.168.0.1/24 .... @@ -1767,7 +1767,7 @@ ifconfig_fxp1="up" 使用 `stp` 命令可以在成员接口上启用生成树。 对包含 [.filename]#fxp0# 和 [.filename]#fxp1# 的网桥, 可以用下列命令启用 STP: -[source,bash] +[source,shell] .... # ifconfig bridge0 stp fxp0 stp fxp1 bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 @@ -1787,7 +1787,7 @@ bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 另一个网桥也启用了生成树: -[source,bash] +[source,shell] .... bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 96:3d:4b:f1:79:7a @@ -1812,7 +1812,7 @@ bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 如果希望将四个网络接口上的输入转成一个流: -[source,bash] +[source,shell] .... # ifconfig bridge0 addm fxp0 addm fxp1 addm fxp2 addm fxp3 monitor up # tcpdump -i bridge0 @@ -1824,7 +1824,7 @@ bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 如果希望将所有帧发到名为 [.filename]#fxp4# 的接口上: -[source,bash] +[source,shell] .... # ifconfig bridge0 span fxp4 .... @@ -1839,7 +1839,7 @@ bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 另一种用法是将网桥与 VLAN 功能连用, 这样客户网络会被隔离在一边, 而不会浪费 IP 地址空间。 考虑 `CustomerA` 在 `vlan100` 上, 而 `CustomerB` 则在 `vlan101` 上。 网桥地址为 `192.168.0.1`, 同时作为 internet 路由器使用。 -[source,bash] +[source,shell] .... # ifconfig bridge0 addm vlan100 sticky vlan100 addm vlan101 sticky vlan101 # ifconfig bridge0 inet 192.168.0.1/24 @@ -1849,7 +1849,7 @@ bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 在 VLAN 之间的通讯可以通过专用接口 (或防火墙) 来阻断: -[source,bash] +[source,shell] .... # ifconfig bridge0 private vlan100 private vlan101 .... @@ -1862,7 +1862,7 @@ bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 下面的例子是设置 `CustomerA` 在 `vlan100` 上可连接的以太网设备最大值为 10。 -[source,bash] +[source,shell] .... # ifconfig bridge0 ifmaxaddr vlan100 10 .... @@ -1883,7 +1883,7 @@ mibs +BRIDGE-MIB:RSTP-MIB:BEGEMOT-MIB:BEGEMOT-BRIDGE-MIB 通过 IETF BRIDGE-MIB(RFC4188) 监测一个单独的网桥 -[source,bash] +[source,shell] .... % snmpwalk -v 2c -c public bridge1.example.com mib-2.dot1dBridge BRIDGE-MIB::dot1dBaseBridgeAddress.0 = STRING: 66:fb:9b:6e:5c:44 @@ -1907,7 +1907,7 @@ RSTP-MIB::dot1dStpVersion.0 = INTEGER: rstp(2) 监测多个网桥接口可以使用 private BEGEMOT-BRIDGE-MIB: -[source,bash] +[source,shell] .... % snmpwalk -v 2c -c public bridge1.example.com enterprises.fokus.begemot.begemotBridge @@ -1928,7 +1928,7 @@ BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge2" = Hex-STRING: 80 00 通过 `mib-2.dot1dBridge` 子树改变正在被监测的网桥接口: -[source,bash] +[source,shell] .... % snmpset -v 2c -c private bridge1.example.com BEGEMOT-BRIDGE-MIB::begemotBridgeDefaultBridgeIf.0 s bridge2 @@ -1972,7 +1972,7 @@ Round-robin (轮转):: 在 Cisco(R) 交换机上将 _FastEthernet0/1_ 和 _FastEthernet0/2_ 这两个网口添加到 channel-group _1_: -[source,bash] +[source,shell] .... interface FastEthernet0/1 channel-group 1 mode active @@ -1985,7 +1985,7 @@ interface FastEthernet0/2 使用 _fxp0_ 和 _fxp1_ 创建 man:lagg[4] 接口, 启用这个接口并配置 IP 地址 _10.0.0.3/24_: -[source,bash] +[source,shell] .... # ifconfig fxp0 up # ifconfig fxp1 up @@ -1995,14 +1995,14 @@ interface FastEthernet0/2 用下面的命令查看接口状态: -[source,bash] +[source,shell] .... # ifconfig lagg0 .... 标记为 _ACTIVE_ 的接口是激活据合组的部分, 这表示它们已经完成了与远程交换机的协商, 同时, 流量将通过这些接口来收发。 在 man:ifconfig[8] 的详细输出中会给出 LAG 的标识。 -[source,bash] +[source,shell] .... lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> @@ -2016,7 +2016,7 @@ lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 如果需要查看交换机上的端口状态, 则应使用 `show lacp neighbor` 命令: -[source,bash] +[source,shell] .... switch# show lacp neighbor Flags: S - Device is requesting Slow LACPDUs @@ -2053,7 +2053,7 @@ ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 10.0.0.3/24" ==== 故障转移模式中, 当首选链路发生问题时, 会自动切换到备用端口。 首先启用成员接口, 接着是配置 man:lagg[4] 接口, 其中, 使用 _fxp0_ 作为首选接口, _fxp1_ 作为备用接口, 并在整个接口上配置 IP 地址 _10.0.0.15/24_: -[source,bash] +[source,shell] .... # ifconfig fxp0 up # ifconfig fxp1 up @@ -2063,7 +2063,7 @@ ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 10.0.0.3/24" 创建成功之后, 接口状态会是类似下面这样, 主要的区别是 MAC 地址和设备名: -[source,bash] +[source,shell] .... # ifconfig lagg0 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 @@ -2101,7 +2101,7 @@ ifconfig_lagg0="laggproto failover laggport fxp0 laggport fxp1 10.0.0.15/24" 在这个配置中, 我们将优先使用有线网络接口 _bge0_ 作为主网络接口, 而将无线网络接口 _wlan0_ 作为备用网络接口。 这里的 _wlan0_ 使用的物理设备是 _iwn0_, 我们需要将它的 MAC 地址修改为与有线网络接口一致。 为了达到这个目的首先要得到有线网络接口上的 MAC 地址: -[source,bash] +[source,shell] .... # ifconfig bge0 bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 @@ -2115,21 +2115,21 @@ bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 您可能需要将 _bge0_ 改为您系统上实际使用的接口, 并从输出结果中的 `ether` 这行找出有线网络的 MAC 地址。 接着是修改物理的无线网络接口, _iwn0_: -[source,bash] +[source,shell] .... # ifconfig iwn0 ether 00:21:70:da:ae:37 .... 启用无线网络接口, 但不在其上配置 IP 地址: -[source,bash] +[source,shell] .... # ifconfig wlan0 create wlandev iwn0 ssid my_router up .... 启用 _bge0_ 接口。 创建 man:lagg[4] 接口, 其中 _bge0_ 作为主网络接口, 而以 _wlan0_ 作为备选接口: -[source,bash] +[source,shell] .... # ifconfig bge0 up # ifconfig lagg0 create @@ -2138,7 +2138,7 @@ bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 新创建的接口的状态如下, 您系统上的 MAC 地址和设备名等可能会有所不同: -[source,bash] +[source,shell] .... # ifconfig lagg0 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 @@ -2153,7 +2153,7 @@ lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 接着用 DHCP 客户端来获取 IP 地址: -[source,bash] +[source,shell] .... # dhclient lagg0 .... @@ -2316,7 +2316,7 @@ http://etherboot.sourceforge.net[Etherboot 的网站] 包含有link:http://ether 想要使用启动软盘,先插入一张软盘到安装有 Etherboot 的机器的驱动器里, 然后把当前路径改到 [.filename]#src# 目录――在 Etherboot 树下, 接着输入: -[source,bash] +[source,shell] .... # gmake bin32/devicetype.fd0 @@ -2353,7 +2353,7 @@ tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot + . 让 inetd 重读其配置文件。 要正确执行这个命令, 在 [.filename]#/etc/rc.conf# 文件中必须加入 `inetd_enable="YES"`: + -[source,bash] +[source,shell] .... # /etc/rc.d/inetd restart .... @@ -2381,7 +2381,7 @@ nfs_server_enable="YES" + . 让 mountd 重读它的配置文件。如果您真的需要启用第一步的 [.filename]#/etc/rc.conf# 里 NFS, 您可能就要重启系统了。 + -[source,bash] +[source,shell] .... # /etc/rc.d/mountd restart .... @@ -2449,7 +2449,7 @@ cd /usr/src/etc; make distribution 内核并不支持在引导时启用 NFS 交换区。 交换区必须通过启动脚本启用, 其过程是挂接一个可写的文件系统, 并在其上创建并启用交换文件。 要建立尺寸合适的交换文件, 可以这样做: -[source,bash] +[source,shell] .... # dd if=/dev/zero of=/path/to/swapfile bs=1k count=1 oseek=100000 .... @@ -2489,7 +2489,7 @@ Intel(R) 预启动执行环境 (PXE) 能让操作系统从网络启动。 + 选择一个可被用户 NFS 挂载并安装有 FreeBSD 的目录。 比如可以使用像 [.filename]#/b/tftpboot/FreeBSD/install# 这样的一个目录。 + -[source,bash] +[source,shell] .... # export NFSROOTDIR=/b/tftpboot/FreeBSD/install # mkdir -p ${NFSROOTDIR} @@ -2505,7 +2505,7 @@ Intel(R) 预启动执行环境 (PXE) 能让操作系统从网络启动。 + . 重起 NFS 服务: + -[source,bash] +[source,shell] .... # /etc/rc.d/nfsd restart .... @@ -2520,14 +2520,14 @@ tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /b/tftpboot + . 重启 inetd: + -[source,bash] +[source,shell] .... # /etc/rc.d/inetd restart .... + . crossref:cutting-edge[makeworld,重新编译 FreeBSD 内核和用户态]: + -[source,bash] +[source,shell] .... # cd /usr/src # make buildworld @@ -2536,7 +2536,7 @@ tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /b/tftpboot + . 把 FreeBSD 安装到 NFS 挂载目录: + -[source,bash] +[source,shell] .... # make installworld DESTDIR=${NFSROOTDIR} # make installkernel DESTDIR=${NFSROOTDIR} @@ -2545,7 +2545,7 @@ tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /b/tftpboot + . 测试 TFTP 服务是否能下载将从 PXE 获取的引导加载器: + -[source,bash] +[source,shell] .... # tftp localhost tftp> get FreeBSD/install/boot/pxeboot @@ -2564,7 +2564,7 @@ myhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro 用你的 NFS 服务器主机名或者 IP 地址替换 _myhost.example.com_。 在此例中, 根文件系统是以"``只读``"的方式挂载用来防止 NFS 客户端可能意外删除根文件系统上的文件。 . 设置 man:chroot[8] 环境中的 root 密码。 + -[source,bash] +[source,shell] .... # chroot ${NFSROOTDIR} # passwd @@ -2574,7 +2574,7 @@ myhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro . 允许 ssh root 登录从 PXE 启动的客户机, 编辑 [.filename]#${NFSROOTDIR}/etc/ssh/sshd_config# 并开启 `PermitRootLogin` 选项。 关于此选项的说明请参阅 man:sshd_config[5]。 . 对 ${NFSROOTDIR} 的 man:chroot[8] 环境做些其他的定制。 这可以是像使用 man:pkg_add[1] 安装二进制包, 使用 man:vipw[8] 修改密码, 或者编辑 man:amd.conf[8] 映射自动挂载等。例如: + -[source,bash] +[source,shell] .... # chroot ${NFSROOTDIR} # pkg_add -r bash @@ -2585,7 +2585,7 @@ myhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro 如果你从一个 NFS 根卷启动, [.filename]#/etc/rc# 如果检测到是从 NFS 启动便会运行 [.filename]#/etc/rc.initdiskless# 脚本。 请阅读此脚本中的注释部分以便了解到底发生了什么。 我们需要把 [.filename]#/etc# 和 [.filename]#/var# 做成内存文件系统的原因是这些目录需要能被写入, 但 NFS 根文件系统是只读的。 -[source,bash] +[source,shell] .... # chroot ${NFSROOTDIR} # mkdir -p conf/base @@ -2638,7 +2638,7 @@ subnet 192.168.0.0 netmask 255.255.255.0 { . 使用 package:net/wireshark[] port 查看 DHCP 和 TFTP 的网络流量来调试各种问题。 . 确保 [.filename]#pxeboot# 能从 TFTP 获取。 在你的 TFTP 服务器上检查 [.filename]#/var/log/xferlog# 日志确保 [.filename]#pxeboot# 被从正确的位置获取。 可以这样测试上面例子 [.filename]#dhcpd.conf# 中所设置的: + -[source,bash] +[source,shell] .... # tftp 192.168.0.1 tftp> get FreeBSD/install/boot/pxeboot @@ -2648,7 +2648,7 @@ Received 264951 bytes in 0.1 seconds 请阅读 man:tftpd[8] 和 man:tftp[1]。 其中的 `BUGS` 列出了 TFTP 的一些限制。 . 确保根文件系统能够从 NFS 挂载。 可以这样测试上面例子 [.filename]#dhcpd.conf# 中所设置的: + -[source,bash] +[source,shell] .... # mount -t nfs 192.168.0.1:/b/tftpboot/FreeBSD/install /mnt .... @@ -3094,7 +3094,7 @@ DATA4 BUSY 首先,您需要一根 laplink 线。然后, 确认两台计算机的内核都有对 man:lpt[4] 驱动程序的支持: -[source,bash] +[source,shell] .... # grep lp /var/run/dmesg.boot lpt0: Printer on ppbus0 @@ -3111,7 +3111,7 @@ hint.ppc.0.irq="7" 然后检查内核配置文件中是否有一行 `device plip` 或加载了 [.filename]#plip.ko# 内核模块。 这两种情况下, 在使用 man:ifconfig[8] 命令时都会显示并口对应的网络接口, 类似这样: -[source,bash] +[source,shell] .... # ifconfig plip0 plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 @@ -3129,14 +3129,14 @@ IP Address 10.0.0.1 10.0.0.2 配置 `host1` 上的网络接口,照此做: -[source,bash] +[source,shell] .... # ifconfig plip0 10.0.0.1 10.0.0.2 .... 配置 `host2` 上的网络接口,照此做: -[source,bash] +[source,shell] .... # ifconfig plip0 10.0.0.2 10.0.0.1 .... @@ -3154,7 +3154,7 @@ IP Address 10.0.0.1 10.0.0.2 要确认连接是否工作,可以到每一台机子上,然后 ping 另外一台。例如,在 `host1` 上: -[source,bash] +[source,shell] .... # ifconfig plip0 plip0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500 @@ -3281,7 +3281,7 @@ IPv4 广播地址 (通常为 `xxx.xxx.xxx.255`) 由 IPv6 的 multicast 地址来 到现在,读者应该能理解下面的内容了: -[source,bash] +[source,shell] .... # ifconfig .... @@ -3479,7 +3479,7 @@ Classical IP over ATM (CLIP) 是一种最简单的使用带 IP 的 ATM 的方法 在每一个连接端 VPI 和 VCI 的值都可能会不同, 只是为了简单起见,我们假定它们是一样的。 下一步我们需要配置每一个主机上的 ATM 接口: -[source,bash] +[source,shell] .... hostA# ifconfig hatm0 192.168.173.1 up hostB# ifconfig hatm0 192.168.173.2 up @@ -3489,7 +3489,7 @@ hostD# ifconfig hatm0 192.168.173.4 up 假定所有主机上的 ATM 接口都是 [.filename]#hatm0#。 现在 PVC 需要配置到 `hostA` 上 (我们假定它们都已经配置在了 ATM 交换机上,至于怎么做的, 您就需要参考一下该交换机的手册了)。 -[source,bash] +[source,shell] .... hostA# atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr hostA# atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr @@ -3510,7 +3510,7 @@ hostD# atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubr 当然,除 UBR 外其它的通信协定也可让 ATM 适配器支持这些。 此种情况下,通信协定的名字要跟人通信参数后边。工具 man:atmconfig[8] 的帮助可以这样得到: -[source,bash] +[source,shell] .... # atmconfig help natm add .... @@ -3531,7 +3531,7 @@ route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr" 所有 CLIP 路由的当前状态可以使用如下命令获得: -[source,bash] +[source,shell] .... hostA# atmconfig natm show .... @@ -3581,7 +3581,7 @@ if_carp_load="YES" CARP 设备可以通过 `ifconfig` 命令来创建。 -[source,bash] +[source,shell] .... # ifconfig carp0 create .... @@ -3634,7 +3634,7 @@ ifconfig_carp1="vhid 2 advskew 100 pass testpass 192.168.1.51/24" ==== 默认的 FreeBSD 内核 _可能_ 启用了主机间抢占。 如果是这样的话, `provider.example.org` 可能在正式的内容服务器恢复时不释放 IP 地址。 此时, 管理员必须手工强制 IP 回到原来内容服务器。 具体做法是在 `provider.example.org` 上使用下面的命令: -[source,bash] +[source,shell] .... # ifconfig carp0 down ifconfig carp0 up .... diff --git a/documentation/content/zh-cn/books/handbook/audit/_index.adoc b/documentation/content/zh-cn/books/handbook/audit/_index.adoc index e862bc6bf9..cef5f5e8f0 100644 --- a/documentation/content/zh-cn/books/handbook/audit/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/audit/_index.adoc @@ -229,7 +229,7 @@ www:fc,+ex:no 例如, `praudit` 工具会将指定的审计记帐转存为简单文本格式的审计日志: -[source,bash] +[source,shell] .... # praudit /var/audit/AUDITFILE .... @@ -257,7 +257,7 @@ trailer,133 由于审计日志可能会很大, 管理员可能会希望选择记录的一个子集来使用, 例如与特定用户相关的记录: -[source,bash] +[source,shell] .... # auditreduce -u trhodes /var/audit/AUDITFILE | praudit .... @@ -272,7 +272,7 @@ trailer,133 审计管道是位于设备文件系统中的自动复制 (cloning) 的虚拟设备, 用于让应用程序控制正在运行的审计记录流, 这主要是为了满足入侵检测和系统监控软件作者的需要。 不过, 对管理员而言, 审计管道设备也提供了一种无需冒审计记帐文件属主出现问题的麻烦, 或由于日志翻转而打断事件流的麻烦, 而实现实时监控的方便途径。 要跟踪实时事件流, 使用下面的命令行: -[source,bash] +[source,shell] .... # praudit /dev/auditpipe .... @@ -296,7 +296,7 @@ add path 'auditpipe*' mode 0440 group audit 审计计账只由内核写入, 且只能由 auditd 管理。 管理员不应尝试使用 man:newsyslog.conf[5] 或其它工具来完成审计日志的轮转工作。 您可以使用 `audit` 管理工具来关闭审计、 重新配置审计系统, 并完成日志轮转。 下面的命令将让审计服务创建新的审计日志, 并发信号给内核要求其使用新的日志。 旧日志将终止并被改名, 此时, 管理员就可以操作它了。 -[source,bash] +[source,shell] .... # audit -n .... diff --git a/documentation/content/zh-cn/books/handbook/basics/_index.adoc b/documentation/content/zh-cn/books/handbook/basics/_index.adoc index 51dc02974f..4d36561a57 100644 --- a/documentation/content/zh-cn/books/handbook/basics/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/basics/_index.adoc @@ -74,7 +74,7 @@ toc::[] 假如您没有设置 FreeBSD 在启动期间开启图形登录界面, 那么系统将在引导和启动脚本正确运行完成后,给您一个登录的提示。 您会看到类似这样的界面: -[source,bash] +[source,shell] .... Additional ABI support:. Local package initialization:. @@ -114,14 +114,14 @@ FreeBSD是一个多用户多任务的系统, 换句话来说就是一个系统 当 FreeBSD 引导并运行完启动脚本之后, , 它会给出一个提示, 并要求输入有效的用户名: -[source,bash] +[source,shell] .... login: .... 举个例子更容易理解,我们假设您的用户名叫 `john`。 在提示符下输入 `john` 并按 kbd:[Enter], 此时您应该看到这个提示 "password": -[source,bash] +[source,shell] .... login: john Password: @@ -203,14 +203,14 @@ options SC_PIXEL_MODE 在内核用这2个选项编译完成后,你就可以使用 man:vidcontrol[1] 工具来测定你的硬件支持何种显示模式了。 以 root 身份在控制台键入以下命令来获得一份所支持的显示模式列表。 -[source,bash] +[source,shell] .... # vidcontrol -i mode .... 这个命令的输出是一份你的硬件所支持的显示模式列表。 你可以在以 root 身份在控制台上键入 man:vidcontrol[1] 命令来改变显示模式: -[source,bash] +[source,shell] .... # vidcontrol MODE_279 .... @@ -271,7 +271,7 @@ FreeBSD,是 BSD UNIX(R) 的延续, 并基于几个关键的 UNIX(R) 观念 使用命令的 `-l` (man:ls[1]) 参数可以显示出文件的所属者、 所属组和其他人等属性。 请看以下的例子: -[source,bash] +[source,shell] .... % ls -l total 530 @@ -283,7 +283,7 @@ total 530 使用 `ls -l` 在每行的开始出现了: -[source,bash] +[source,shell] .... -rw-r--r-- .... @@ -360,14 +360,14 @@ total 530 这些数值 man:chmod[1] 以习惯标定的。 举个例子,用以下命令阻止其他人访问 __FILE__文件: -[source,bash] +[source,shell] .... % chmod go= FILE .... 如果需要对文件一次进行多项变动, 则可用逗号分开, 在下面的例子中, 将去掉 _FILE_ 文件的群体和 "全体其他用户" 可写权限, 并为所有人增加可执行权限: -[source,bash] +[source,shell] .... % chmod go-w,a+x FILE .... @@ -380,21 +380,21 @@ total 530 文件标志可以通过使用 man:chflags[1] 工具来修改, 其用户界面很简单。 例如, 要在文件 [.filename]#file1# 上应用系统禁删标志, 应使用下述命令: -[source,bash] +[source,shell] .... # chflags sunlink file1 .... 要禁用系统禁删标志, 只需在前述命令中的 `sunlink` 标志前加 "no"。 例如: -[source,bash] +[source,shell] .... # chflags nosunlink file1 .... 要显示文件上的标志, 应使用命令 man:ls[1] 的 `-lo` 参数: -[source,bash] +[source,shell] .... # ls -lo file1 .... @@ -423,7 +423,7 @@ man:mount[8] 的 `nosuid` 选项可以令系统在不给出任何错误提示的 setuid 权限可以通过在普通权限前面加上一个数字四 (4) 来设置, 如下面的例子所示: -[source,bash] +[source,shell] .... # chmod 4755 suidexample.sh .... @@ -441,7 +441,7 @@ setuid 权限可以通过在普通权限前面加上一个数字四 (4) 来设 在终端 A 中: -[source,bash] +[source,shell] .... Changing local password for trhodes Old Password: @@ -449,12 +449,12 @@ Old Password: 在终端 B 中: -[source,bash] +[source,shell] .... # ps aux | grep passwd .... -[source,bash] +[source,shell] .... trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd @@ -466,14 +466,14 @@ root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd 如果需要在文件上配置 `setgid` 权限, 可以在权限数值前面增加数字二 (2) 来运行 `chmod` 命令, 如下面的例子所示: -[source,bash] +[source,shell] .... # chmod 2755 sgidexample.sh .... 可以用与前面类似的方法来检视新设定的生效情况, 在组权限的地方的 `s` 表示这一配置已经生效: -[source,bash] +[source,shell] .... -rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh .... @@ -487,19 +487,19 @@ root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd 当在目录上设置了 `sticky bit` 之后, 其下的文件就只能由文件的所有者删除了。 这个权限设置能够防止用户删除类似 [.filename]#/tmp# 这样的公共目录中不属于他们的文件。 要应用这种权限, 可以在权限设置前面加上数字一 (1)。 例如: -[source,bash] +[source,shell] .... # chmod 1777 /tmp .... 现在, 可以用 `ls` 命令来查看效果: -[source,bash] +[source,shell] .... # ls -al / | grep tmp .... -[source,bash] +[source,shell] .... drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp .... @@ -837,7 +837,7 @@ man:dump[8] 使用这项去决定那个文件系统必须移贮。 假如缺少 [example] ==== -[source,bash] +[source,shell] .... # mount device mountpoint .... @@ -901,7 +901,7 @@ FreeBSD 是一个多任务操作系统。 这就意味着好像一次可以运 默认情况下, ``ps``仅显示出您自己所运行的命令。 例如: -[source,bash] +[source,shell] .... % ps PID TT STAT TIME COMMAND @@ -929,7 +929,7 @@ man:ps[1]支持使用各种选项去改变显示出来的内容, 最有用的 下面和从man:top[1]输出是类似的,一个示例式对话就象这样子: -[source,bash] +[source,shell] .... % top last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 @@ -986,7 +986,7 @@ man:top[1] 每两秒自动刷新一次,您可以用``s``改变刷新的秒数 . 寻找您要发送信号的进程ID,可以用man:ps[1] 加 man:grep[1]来完成。 man:grep[1]命令被用在搜索输出方面,搜索您指定的字符串。 这命令是由普通用户来执行的,而man:inetd[8]是``root``用户运行的, 所以必须给man:ps[1]带上``ax``选项。 + -[source,bash] +[source,shell] .... % ps -ax | grep inetd 198 ?? IWs 0:00.00 inetd -wW @@ -995,7 +995,7 @@ man:top[1] 每两秒自动刷新一次,您可以用``s``改变刷新的秒数 得出 man:inetd[8] PID号是198。 有时 `grep inetd` 命令也出现在输出中, 这是因为在这方面 man:ps[1] 也是寻找列表中运行进程。 . 使用 man:kill[1] 去发送信号。 因为 man:inetd[8] 是由 ``root``启动的, 您必须使用 man:su[1] 去 变为 `root` 用户。 + -[source,bash] +[source,shell] .... % su Password: @@ -1075,14 +1075,14 @@ Password: 不同的shell设置环境变量也不相同。举个例子, 在如``tcsh`` 和 ``csh``这样的C-Style shell, 您必须使用``setenv``去设置环境变量。 而在如``sh``和``bash``这样的Bourne shell, 您必须使用``export``去设置当前环境变量。 再举个例子,要去设置或改变``EDITOR``环境变量, 在``csh``或``tcsh``下将``EDITOR``设为 [.filename]#/usr/local/bin/emacs#: -[source,bash] +[source,shell] .... % setenv EDITOR /usr/local/bin/emacs .... 而在Bourne shell下,则是: -[source,bash] +[source,shell] .... % export EDITOR="/usr/local/bin/emacs" .... @@ -1100,7 +1100,7 @@ shell里有许多特别的字符代表着特别的资料,我们把叫做meta-c 您可使用``chsh`` 的``-s``选项, 这样就能设置您的shell却又不用编辑器。假如您想把shell改为``bash`` 可用下面的技巧。 -[source,bash] +[source,shell] .... % chsh -s /usr/local/bin/bash .... @@ -1111,7 +1111,7 @@ shell里有许多特别的字符代表着特别的资料,我们把叫做meta-c 举个例了子,假如您手工把 ``bash``装到 [.filename]##/usr/local/bin##里,您还要进行这一步: -[source,bash] +[source,shell] .... # echo "/usr/local/bin/bash" >> /etc/shells .... @@ -1188,14 +1188,14 @@ ELF格式比[.filename]##a.out##格式开销要大些,同时也 允许基础 最详细的使用说明文档莫过于 FreeBSD 里的联机手册了。 几乎每一个程序都会附上一份简短说明, 以介绍这个程序的的基本功能以及参数的用法。 我们能通过 `man` 命令来阅读这些说明, 而使用 `man` 命令却是简单的事情: -[source,bash] +[source,shell] .... % man command .... `command` 就是您要了解的命令命称。 举个例子,想了解 `ls` 命令就输入: -[source,bash] +[source,shell] .... % man ls .... @@ -1214,7 +1214,7 @@ ELF格式比[.filename]##a.out##格式开销要大些,同时也 允许基础 在某些情况下,同样的主题也会出现在在线手册的不同章节。 举个例子,系统里有``chmod``这个用户命令,而又有个 `chmod()` 系统调用。 在这种情形下,您应当向 `man` 命令指定需要的内容: -[source,bash] +[source,shell] .... % man 1 chmod .... @@ -1223,7 +1223,7 @@ ELF格式比[.filename]##a.out##格式开销要大些,同时也 允许基础 如果您已经知道命令的名字,只是不知道要怎样使用的话,那就比较好办。 但您连名字都不知道呢?这个时候您就可以利用 `man` 的搜寻功能, 它会在手册的介绍部份找寻您要搜寻的关键字,它的选项是 `-k`: -[source,bash] +[source,shell] .... % man -k mail .... @@ -1232,7 +1232,7 @@ ELF格式比[.filename]##a.out##格式开销要大些,同时也 允许基础 有时您会看到[.filename]##/usr/bin## 下有许多命令但不知他们的用途, 您只需这样做: -[source,bash] +[source,shell] .... % cd /usr/bin % man -f * @@ -1240,7 +1240,7 @@ ELF格式比[.filename]##a.out##格式开销要大些,同时也 允许基础 或者这样做 -[source,bash] +[source,shell] .... % cd /usr/bin % whatis * @@ -1255,7 +1255,7 @@ FreeBSD许多应用软件以及实用工具来自Free软件基金会(FSF)。 作 使用 man:info[1] 这个命令只需简单地输入: -[source,bash] +[source,shell] .... % info .... diff --git a/documentation/content/zh-cn/books/handbook/boot/_index.adoc b/documentation/content/zh-cn/books/handbook/boot/_index.adoc index 3e8dff1864..109dbeebd3 100644 --- a/documentation/content/zh-cn/books/handbook/boot/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/boot/_index.adoc @@ -98,7 +98,7 @@ toc::[] [example] ==== -[source,bash] +[source,shell] .... F1 DOS F2 FreeBSD @@ -113,7 +113,7 @@ Default: F2 目前已经知道一些其它操作系统,特别是 Windows(R) , 会以自己的 MBR 覆盖现有 MBR。 如果发生了这种事情, 或者您想用 FreeBSD 的 MBR 覆盖现有的 MBR,您可以使用以下的命令: -[source,bash] +[source,shell] .... # fdisk -B -b /boot/boot0 device .... @@ -150,7 +150,7 @@ label=FreeBSD [example] ==== -[source,bash] +[source,shell] .... >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader @@ -161,7 +161,7 @@ boot: 如果您要更改已安装的 [.filename]#boot1# 和 [.filename]#boot2#,请使用命令 man:bsdlabel[8]。 -[source,bash] +[source,shell] .... # bsdlabel -B diskslice .... @@ -241,14 +241,14 @@ unload:: * 只是简单的引导默认内核,不同的是进入单用户模式: + -[source,bash] +[source,shell] .... boot -s .... * 卸载默认内核和模块,然后加载旧的 (或者其它) 的内核: + -[source,bash] +[source,shell] .... unload @@ -261,7 +261,7 @@ unload:: ==== 使用以下命令加载常用的模块和另一个内核: -[source,bash] +[source,shell] .... unload set kernel="kernel.old" @@ -272,7 +272,7 @@ boot-conf * 加载内核配置脚本: + -[source,bash] +[source,shell] .... load -t userconfig_script /boot/kernel.conf .... @@ -389,14 +389,14 @@ Device hints 也可以在 <<boot-loader, 第三阶段的boot loader>> 的命令 文件 [.filename]#/boot/device.hints# 的语法是一行一个变量, 使用"#"作为注释标记。 每行是按照如下方式组织的: -[source,bash] +[source,shell] .... hint.driver.unit.keyword="value" .... 第三阶段 boot loader 的语法是: -[source,bash] +[source,shell] .... set hint.driver.unit.keyword=value .... diff --git a/documentation/content/zh-cn/books/handbook/bsdinstall/_index.adoc b/documentation/content/zh-cn/books/handbook/bsdinstall/_index.adoc index d5ba85a9f0..ca5a3f7f9f 100644 --- a/documentation/content/zh-cn/books/handbook/bsdinstall/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/bsdinstall/_index.adoc @@ -246,7 +246,7 @@ FreeBSD 9.0-RELEASE 和更高版本的记忆棒映像文件可以在 `ftp://ftp. + 扩展名为 [.filename]#.img# 的映像文件 _不是_ 一种普通的文件。 它是对记忆棒上完整内容所做的 _映像_, 因此 _不能_ 只是像普通文件一样简单的复制, 而应使用 man:dd[1] 将其直接写入目标设备: + -[source,bash] +[source,shell] .... # dd if=FreeBSD-9.0-RELEASE-i386-memstick.img of=/dev/da0 bs=64k .... @@ -312,7 +312,7 @@ commit your changes? . FreeBSD 将开始启动。 如果使用的是CDROM, 则会看到类似这样的显示(版本信息可以忽略): + -[source,bash] +[source,shell] .... Booting from CD-ROM... 645MB medium detected @@ -350,7 +350,7 @@ image::bsdinstall-boot-loader-menu.png[] 在大多数机器上, 开机时按住 kbd:[C] 键可以从 CD 启动。 除此之外, 按住 kbd:[Command+Option+O+F], 在非 Apple(R) 键盘上是 kbd:[Windows+Alt+O+F], 然后在出现的提示符 `0 >` 下输入 -[source,bash] +[source,shell] .... boot cd:,\ppc\loader cd:0 .... @@ -363,7 +363,7 @@ image::bsdinstall-boot-loader-menu.png[] 重启系统后等待引导信息出现, 虽然其具体内容取决于机器型号, 但应该会类似: -[source,bash] +[source,shell] .... Sun Blade 100 (UltraSPARC-IIe), Keyboard Present Copyright 1998-2001 Sun Microsystems, Inc. All rights reserved. @@ -373,7 +373,7 @@ Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4. 如果此时系统已经开始从硬盘启动, 那么请按下 kbd:[L1+A] 或 kbd:[Stop+A] 或在串口控制台发送 `BREAK`(在 man:tip[1] 或 man:cu[1] 中是 `~#`)以进入 PROM 提示符, 它应该如下所示: -[source,bash] +[source,shell] .... ok <.> ok {0} <.> @@ -395,7 +395,7 @@ ok {0} <.> [[bsdinstall-dev-probe]] .典型的设备探测结果 -[source,bash] +[source,shell] .... Copyright (c) 1992-2011 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 @@ -1134,7 +1134,7 @@ FreeBSD 启动时会显示许多相关信息, 正常情况下屏幕会不断 典型的启动信息(此处略去了版本信息): -[source,bash] +[source,shell] .... Copyright (c) 1992-2011 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 @@ -1337,7 +1337,7 @@ FreeBSD 默认情况下并不会安装图形环境, 但提供了多种不同 在 i386、 amd64 和 ia64 平台的启动过程中, FreeBSD 广泛使用了 ACPI 服务来检测系统配置, 不幸的是 ACPI 驱动和主板 BIOS 中仍存在一些 bug。 在第三阶段引导加载器中, 可以通过设置 `hint.acpi.0.disabled` 来禁用 ACPI: -[source,bash] +[source,shell] .... set hint.acpi.0.disabled="1" .... diff --git a/documentation/content/zh-cn/books/handbook/config/_index.adoc b/documentation/content/zh-cn/books/handbook/config/_index.adoc index efc26ed1bc..c5d53bf63f 100644 --- a/documentation/content/zh-cn/books/handbook/config/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/config/_index.adoc @@ -274,7 +274,7 @@ HOME=/var/log 要安装刚写好的用户 [.filename]#crontab#, 首先使用最习惯的编辑器来创建一个符合要求格式的文件,然后用 `crontab` 程序来完成。最常见的用法是: -[source,bash] +[source,shell] .... % crontab crontab-file .... @@ -292,7 +292,7 @@ HOME=/var/log 在 2002 年, FreeBSD 整合了来自 NetBSD 的 [.filename]#rc.d# 系统, 并通过它来完成系统的初始化工作。 用户要注意在 [.filename]#/etc/rc.d# 目录下的文件。 这里面的许多文件是用来管理基础服务的, 它们可以通过 `start`、 `stop`, 以及 `restart` 选项来控制。 举例来说, man:sshd[8] 可以通过下面的命令来重启: -[source,bash] +[source,shell] .... # /etc/rc.d/sshd restart .... @@ -308,14 +308,14 @@ natd_enable="YES" 由于 [.filename]#rc.d# 系统在系统启动/关闭时首先启动/停止服务,如果设置了适当的 [.filename]#/etc/rc.conf# 变量,标准的 `start`、`stop` 和 `restart` 选项将会执行他们的动作。例如 `sshd restart` 命令只在 [.filename]#/etc/rc.conf# 中的 `sshd_enable` 设置成 `YES` 的时候工作。不管是否在 [.filename]#/etc/rc.conf# 中设置了,要 `start`、`stop` 或者 `restart` 一个服务,命令前可以加上一个"one"前缀。例如要不顾当前 [.filename]#/etc/rc.conf# 的设置重新启动 `sshd`,执行下面的命令: -[source,bash] +[source,shell] .... # /etc/rc.d/sshd onerestart .... 用选项 `rcvar` 可以简单来的检查 [.filename]#/etc/rc.conf# 中用适当的 [.filename]#rc.d# 脚本启动的服务是否被启用。从而管理员可以运行这样的程序来检查 `sshd` 是否真的在 [.filename]#/etc/rc.conf# 中被启动了: -[source,bash] +[source,shell] .... # /etc/rc.d/sshd rcvar # sshd @@ -329,7 +329,7 @@ $sshd_enable=YES 为了确定一个服务是否真的在运行,可以用 `status` 选项。例如验证 `sshd` 是否真的启动了: -[source,bash] +[source,shell] .... # /etc/rc.d/sshd status sshd is running as pid 433. @@ -339,7 +339,7 @@ sshd is running as pid 433. [.filename]#rc.d# 系统不仅用于网络服务, 它也为系统初始化中的多数过程提供支持。 比如 [.filename]#bgfsck# 文件, 当它被执行时, 将会给出下述信息: -[source,bash] +[source,shell] .... Starting background file system checks in 60 seconds. .... @@ -374,7 +374,7 @@ Starting background file system checks in 60 seconds. 如果您的网卡很常见的话, 大多数时候您不需要为驱动浪费精力。 常用的网卡在 [.filename]#GENERIC# 内核中已经支持了, 所以您的网卡在启动时就会显示出来,像是: -[source,bash] +[source,shell] .... dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38 000ff irq 15 at device 11.0 on pci0 @@ -426,21 +426,21 @@ man:ndis[4] 驱动在设计时主要提供了 PCI、 CardBus 和 PCMCIA 设备 接下来的步骤是将二进制形式的驱动程序组装成内核模块。 要完成这一任务, 需要以 `root` 用户的身份执行 man:ndisgen[8]: -[source,bash] +[source,shell] .... # ndisgen /path/to/W32DRIVER.INF /path/to/W32DRIVER.SYS .... man:ndisgen[8] 是一个交互式的程序, 它会提示您输入所需的一些其他的额外信息; 这些工作完成之后, 它会在当前目录生成一个内核模块文件, 这个文件可以通过下述命令来加载: -[source,bash] +[source,shell] .... # kldload ./W32DRIVER_SYS.ko .... 除了刚刚生成的内核模块之外, 还必须加载 [.filename]#ndis.ko# 和 [.filename]#if_ndis.ko# 这两个内核模块, 在您加载需要 man:ndis[4] 的模块时, 通常系统会自动完成这一操作。 如果希望手工加载它们, 则可以使用下列命令: -[source,bash] +[source,shell] .... # kldload ndis # kldload if_ndis @@ -450,7 +450,7 @@ man:ndisgen[8] 是一个交互式的程序, 它会提示您输入所需的一 现在请查看 man:dmesg[8] 来了解是否发生了错误。 如果一切正常, 您会看到类似下面的输出: -[source,bash] +[source,shell] .... ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1 ndis0: NDIS API version: 5.0 @@ -474,7 +474,7 @@ W32DRIVER_SYS_load="YES" 要显示您系统上的网络接口的配置,输入下列命令: -[source,bash] +[source,shell] .... % ifconfig dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 @@ -519,7 +519,7 @@ FreeBSD 使用内核引导时检测到的网卡驱动顺序来命名网卡。例 如果 man:ifconfig[8] 的输出显示了类似于: -[source,bash] +[source,shell] .... dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> @@ -550,7 +550,7 @@ ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP" ==== 如果计划通过这台机器访问 Internet, 您还需要手工配置默认网关和域名解析服务器: -[source,bash] +[source,shell] .... # echo 'defaultrouter="your_default_router"' >> /etc/rc.conf # echo 'nameserver your_DNS_server' >> /etc/resolv.conf @@ -562,7 +562,7 @@ ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP" 对 [.filename]#/etc/rc.conf# 做了必要的修改之后应该重启系统以应用对接口的修改, 并且确认系统重启后没有任何配置错误。 另外您也可以重启网络系统: -[source,bash] +[source,shell] .... # /etc/rc.d/netif restart .... @@ -571,7 +571,7 @@ ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP" ==== 如果在 [.filename]#/etc/rc.conf# 中配置了默认网关, 还需要运行下面的命令: -[source,bash] +[source,shell] .... # /etc/rc.d/routing restart .... @@ -586,7 +586,7 @@ ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP" 首先测试本地接口: -[source,bash] +[source,shell] .... % ping -c5 192.168.1.3 PING 192.168.1.3 (192.168.1.3): 56 data bytes @@ -603,7 +603,7 @@ round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms 现在我们应该 ping 局域网内的其他机器: -[source,bash] +[source,shell] .... % ping -c5 192.168.1.2 PING 192.168.1.2 (192.168.1.2): 56 data bytes @@ -901,14 +901,14 @@ man:sysctl[8] 是一个允许您改变正在运行中的 FreeBSD 系统的接口 查看所有可读变量: -[source,bash] +[source,shell] .... % sysctl -a .... 读一个指定的变量,例如 `kern.maxproc`: -[source,bash] +[source,shell] .... % sysctl kern.maxproc kern.maxproc: 1044 @@ -916,7 +916,7 @@ kern.maxproc: 1044 要设置一个指定的变量,直接用 _variable_=_value_ 这样的语法: -[source,bash] +[source,shell] .... # sysctl kern.maxfiles=5000 kern.maxfiles: 2088 -> 5000 @@ -933,7 +933,7 @@ sysctl 变量的设置通常是字符串、数字或者布尔型。 (布尔型 例如一些膝上型电脑的 man:cardbus[4] 设备不会探测内存范围,并且产生看似于这样的错误: -[source,bash] +[source,shell] .... cbb0: Could not map register memory device_probe_and_attach: cbb0 attach returned 12 @@ -981,7 +981,7 @@ FreeBSD 4.3 中默认将 IDE 的写缓存关掉了。 这会降低到 IDE 磁盘 man:tunefs[8] 程序能够用来很好的调整文件系统。 这个程序有很多不同的选项,但是现在只介绍 Soft Updates 的打开和关闭,这样做: -[source,bash] +[source,shell] .... # tunefs -n enable /filesystem # tunefs -n disable /filesystem @@ -1067,7 +1067,7 @@ vnode 是对文件或目录的一种内部表达。 因此, 增加可以被操 要查看当前在用的 vnode 数量: -[source,bash] +[source,shell] .... # sysctl vfs.numvnodes vfs.numvnodes: 91349 @@ -1075,7 +1075,7 @@ vfs.numvnodes: 91349 要查看最大可用的 vnode 数量: -[source,bash] +[source,shell] .... # sysctl kern.maxvnodes kern.maxvnodes: 100000 @@ -1117,14 +1117,14 @@ device md # Memory "disks" + . 创建一个交换文件([.filename]#/usr/swap0#): + -[source,bash] +[source,shell] .... # dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 .... + . 赋予它([.filename]#/usr/swap0#)一个适当的权限: + -[source,bash] +[source,shell] .... # chmod 0600 /usr/swap0 .... @@ -1138,7 +1138,7 @@ swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired. + . 通过重新启动机器或下面的命令使交换文件立刻生效: + -[source,bash] +[source,shell] .... # mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0 .... @@ -1182,7 +1182,7 @@ ACPI 和 APM 不能共存, 相反, 它们应分开使用。 后加载的驱 ACPI 可以用来让系统进入休眠模式, 方法是使用 man:acpiconf[8] 的 `-s` 参数, 加上一个 `1-5` 的数字。 多数用户会希望使用 `1` 或 `3` (挂起到 RAM)。 而 `5` 则会让系统执行与下列命令效果类似的软关机: -[source,bash] +[source,shell] .... # halt -p .... @@ -1212,7 +1212,7 @@ ACPI 是一种全新的发现设备、 管理电源使用、 以及提供过去 * 来自 ``fsysctl hw.acpi``的输出。 这也是找到您的系统所提供的功能的一种好办法。 * 能够得到您的 _ACPI Source Language_ (ASL) 的 URL。 _不要_ 把 ASL 直接发到邮件列表中, 因为它们可能非常大。 为了得到 ASL 您可以运行这个命令: + -[source,bash] +[source,shell] .... # acpidump -dt > name-system.asl .... @@ -1245,7 +1245,7 @@ ACPI 提供了三种休眠到 RAM (STR) 的状态, `S1`-`S3`, 以及一个 可以使用 `sysctl hw.acpi` 来查看与休眠有关的项目。 这里是我的 Thinkpad 上得到的结果。 -[source,bash] +[source,shell] .... hw.acpi.supported_sleep_state: S3 S4 S5 hw.acpi.s4bios: 0 @@ -1257,7 +1257,7 @@ hw.acpi.s4bios: 0 休眠和唤醒操作最常见的问题是某些设备驱动程序不会保存、 恢复或正确地重新初始化其固件、 寄存器或设备内存。 尝试调试这些问题时, 首先可以尝试: -[source,bash] +[source,shell] .... # sysctl debug.bootverbose=1 # sysctl debug.acpi.suspend_bounce=1 @@ -1301,7 +1301,7 @@ hw.acpi.s4bios: 0 最常见的问题是 BIOS 制造商提供的不正确 (甚至完全错误的!) 字节代码。 这通常会以类似下面这样的内核消息显示在控制台上: -[source,bash] +[source,shell] .... ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\ (Node 0xc3f6d160), AE_NOT_FOUND @@ -1311,7 +1311,7 @@ ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\ 最方便的初步检查是尝试重新编译 ASL 来看看是否有错误。 通常可以忽略这一过程中产生的警告, 但错误一般就都是 bug, 它们通常就是导致 ACPI 无法正常工作的原因。 要重新编译您的 ASL, 可以使用下面的命令: -[source,bash] +[source,shell] .... # iasl your.asl .... @@ -1335,7 +1335,7 @@ ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\ 在定制 [.filename]#your.asl# 之后, 您可以通过下面的命令编译它: -[source,bash] +[source,shell] .... # iasl your.asl .... @@ -1359,7 +1359,7 @@ ACPI 驱动程序提供了非常灵活的调试机制。 这允许您指定一 调试输出默认并不开启。 要起用它, 您需要在内核设置中添加 `options ACPI_DEBUG`, 如果您的内核中编入了 ACPI 的话。 您还可以在 [.filename]#/etc/make.conf# 中加入 `ACPI_DEBUG=1` 来在全局起用它。 如果它只是模块, 您可以用下面的方法来重新编译 [.filename]#acpi.ko#: -[source,bash] +[source,shell] .... # cd /sys/modules/acpi/acpi && make clean && diff --git a/documentation/content/zh-cn/books/handbook/cutting-edge/_index.adoc b/documentation/content/zh-cn/books/handbook/cutting-edge/_index.adoc index e8c28a4ad9..1d5090f28f 100644 --- a/documentation/content/zh-cn/books/handbook/cutting-edge/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/cutting-edge/_index.adoc @@ -151,7 +151,7 @@ MergeChanges /etc/ /var/named/etc/ 安全补丁存储在远程的机器上, 可以使用如下的命令下载并安装: -[source,bash] +[source,shell] .... # freebsd-update fetch # freebsd-update install @@ -168,7 +168,7 @@ MergeChanges /etc/ /var/named/etc/ 如果出现了错误,可以使用下面的 `freebsd-update` 命令回退到上一次的修改: -[source,bash] +[source,shell] .... # freebsd-update rollback .... @@ -194,7 +194,7 @@ MergeChanges /etc/ /var/named/etc/ 这个过程会删除旧的目标文件和库, 这将使大部分的第三方应用程序无法删除。 建议将所有安装的 ports 先删除然后重新安装,或者稍后使用 package:ports-mgmt/portupgrade[] 工具升级。 大多数用户将会使用如下命令尝试编译: -[source,bash] +[source,shell] .... # portupgrade -af .... @@ -206,7 +206,7 @@ MergeChanges /etc/ /var/named/etc/ * 如果只联编过一次内核, 则位于 [.filename]#/boot/kernel.old# 中的内核, 就是 [.filename]#GENERIC# 的那一个。 只需将这个目录改名为 [.filename]#/boot/GENERIC# 即可。 * 假如能够直接接触机器, 则可以通过 CD-ROM 介质来安装 [.filename]#GENERIC# 内核。 将安装盘插入光驱, 并执行下列命令: + -[source,bash] +[source,shell] .... # mount /cdrom # cd /cdrom/X.Y-RELEASE/kernels @@ -216,7 +216,7 @@ MergeChanges /etc/ /var/named/etc/ 您需要将 [.filename]#X.Y-RELEASE# 替换为您正在使用的版本。 [.filename]#GENERIC# 内核默认情况下会安装到 [.filename]#/boot/GENERIC#。 * 如果前面的方法都不可用, 还可以使用源代码来重新联编和安装 [.filename]#GENERIC# 内核: + -[source,bash] +[source,shell] .... # cd /usr/src # env DESTDIR=/boot/GENERIC make kernel @@ -230,14 +230,14 @@ MergeChanges /etc/ /var/named/etc/ 重大和次要的更新可以由 `freebsd-update` 命令后指定一个发行版本来执行, 举例来说,下面的命令将帮助你升级到 FreeBSD 8.1: -[source,bash] +[source,shell] .... # freebsd-update -r 8.1-RELEASE upgrade .... 在执行这个命令之后,`freebsd-update` 将会先解析配置文件和评估当前的系统以获得更新系统所需的必要信息。 然后便会显示出一个包含了已检测到与未检测到的组件列表。 例如: -[source,bash] +[source,shell] .... Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.0-RELEASE from update1.FreeBSD.org... done. @@ -261,7 +261,7 @@ Does this look reasonable (y/n)? y 当使用定制内核时, 前面的步骤会产生类似下面的警告: -[source,bash] +[source,shell] .... WARNING: This system is running a "MYKERNEL" kernel, which is not a kernel configuration distributed as part of FreeBSD 8.0-RELEASE. @@ -280,14 +280,14 @@ before running "/usr/sbin/freebsd-update install" 一旦这个步骤完成后,使用如下的命令将升级后的文件安装到磁盘上。 -[source,bash] +[source,shell] .... # freebsd-update install .... 内核和内核模块会首先被打上补丁。 此时必须重新启动计算机。 如果您使用的是定制的内核, 请使用 man:nextboot[8] 命令来将下一次用于引导系统的内核 [.filename]#/boot/GENERIC# (它会被更新): -[source,bash] +[source,shell] .... # nextboot -k GENERIC .... @@ -300,14 +300,14 @@ before running "/usr/sbin/freebsd-update install" 现在可以用更新后的内核引导系统了: -[source,bash] +[source,shell] .... # shutdown -r now .... 在系统重新上线后,需要再次运行 `freebsd-update`。 升级的状态被保存着,这样 `freebsd-update` 就无需重头开始,但是会删除所有旧的共享库和目标文件。 执行如下命令继续这个阶段的升级: -[source,bash] +[source,shell] .... # freebsd-update install .... @@ -319,7 +319,7 @@ before running "/usr/sbin/freebsd-update install" 现在需要重新编译和安装第三方软件。 这么做的原因是某些已安装的软件可能依赖于在升级过程中已删除的库。 可使用 package:ports-mgmt/portupgrade[] 自动化这个步骤,以如下的命令开始: -[source,bash] +[source,shell] .... # portupgrade -f ruby # rm /var/db/pkg/pkgdb.db @@ -330,7 +330,7 @@ before running "/usr/sbin/freebsd-update install" 一旦这个完成了以后,再最后一次运行 `freebsd-update` 来结束升级过程。 执行如下命令处理升级中的所有细节: -[source,bash] +[source,shell] .... # freebsd-update install .... @@ -344,7 +344,7 @@ before running "/usr/sbin/freebsd-update install" `freebsd-update` 工具也可被用来对着一个已知完好的 FreeBSD 拷贝测试当前的版本。 这个选项评估当前的系统工具,库和配置文件。 使用以下的命令开始对照: -[source,bash] +[source,shell] .... # freebsd-update IDS >> outfile.ids .... @@ -359,7 +359,7 @@ before running "/usr/sbin/freebsd-update install" 这个文件中有非常长的行,但输出的格式很容易分析。 举例来说,要获得一份与发行版中不同哈希值的文件列表, 已可使用如下的命令: -[source,bash] +[source,shell] .... # cat outfile.ids | awk '{ print $1 }' | more /etc/master.passwd @@ -377,7 +377,7 @@ before running "/usr/sbin/freebsd-update install" FreeBSD 基本系统也包括了一个更新 Ports Collection 的工具: man:portsnap[8]。在运行之后,它会连上一个远程网站, 校验安全密钥,然后下载一份 Ports Collection 的拷贝。 密钥是用来校验所有下载文件的完整性,确保它们在传输是未被修改。 使用以下的命令下载最新的 Ports Collection: -[source,bash] +[source,shell] .... # portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found. @@ -396,7 +396,7 @@ Fetching 133 new ports or files... done. 在 man:portsnap[8] 成功地完成一次 `fetch` 操作之后, 会将校验过的 Ports 套件和后续的补丁保存在本地。 首次执行 `portsnap` 之后, 你必须使用 `extract` 安装下载的文件: -[source,bash] +[source,shell] .... # portsnap extract /usr/ports/.cvsignore @@ -415,7 +415,7 @@ Fetching 133 new ports or files... done. 使用 `portsnap update` 命令更新已安装的 Ports: -[source,bash] +[source,shell] .... # portsnap update .... @@ -424,7 +424,7 @@ Fetching 133 new ports or files... done. `fetch` 和 `extract` 或 `update` 可以作为连续的动作执行, 如下例所示: -[source,bash] +[source,shell] .... # portsnap fetch update .... @@ -465,7 +465,7 @@ FreeBSD 文档的源代码和安装版本都可以通过 CVSup 来以与基本 CVSup 工具能够下载文档源代码的原始副本, 您可使用 [.filename]#/usr/shared/examples/cvsup/doc-supfile# 文件作为配置模板来修改。 在 [.filename]#doc-supfile# 中的默认主机名是一个无效的占位主机名, 但 man:cvsup[1] 能够通过命令行来指定主机名, 因此文档源代码可以使用下面的命令从 CVSup 服务器获得: -[source,bash] +[source,shell] .... # cvsup -h cvsup.FreeBSD.org -g -L 2 /usr/shared/examples/cvsup/doc-supfile .... @@ -478,7 +478,7 @@ CVSup 工具能够下载文档源代码的原始副本, 您可使用 [.filenam 在签出源代码之后, 还可以使用另一种由 [.filename]#/usr/doc# 目录中的 [.filename]#Makefile# 支持的方法来更新它。 通过在 [.filename]#/etc/make.conf# 中配置 `SUP_UPDATE`、 `SUPHOST` 和 `DOCSUPFILE`, 可以通过运行: -[source,bash] +[source,shell] .... # cd /usr/doc # make update @@ -528,7 +528,7 @@ FreeBSD 文档的更新和联编系统支持一些方便只更新一部分文档 要更新全部 `DOC_LANG` 中定义的语言的文档, 需要执行下面的命令: -[source,bash] +[source,shell] .... # cd /usr/doc # make install clean @@ -536,7 +536,7 @@ FreeBSD 文档的更新和联编系统支持一些方便只更新一部分文档 如果在 [.filename]#make.conf# 中配置了正确的 `DOCSUPFILE`、 `SUPHOST` 和 `SUP_UPDATE` 选项, 则可以将更新源代码和安装一步完成: -[source,bash] +[source,shell] .... # cd /usr/doc # make update install clean @@ -544,7 +544,7 @@ FreeBSD 文档的更新和联编系统支持一些方便只更新一部分文档 如果只需要更新某个特定语言的文档, 可以在 [.filename]#/usr/doc# 中与之对应的目录中运行 man:make[1]: -[source,bash] +[source,shell] .... # cd /usr/doc/en_US.ISO8859-1 # make update install clean @@ -552,7 +552,7 @@ FreeBSD 文档的更新和联编系统支持一些方便只更新一部分文档 此外, 还可以透过 make 变量 `FORMATS` 来控制输出格式, 例如: -[source,bash] +[source,shell] .... # cd /usr/doc # make FORMATS='html html-split' install clean @@ -586,7 +586,7 @@ FreeBSD 文档的更新和联编系统支持一些方便只更新一部分文档 以 `root` 用户身份运行如下的命令安装文档: -[source,bash] +[source,shell] .... # cd /usr/ports/misc/freebsd-doc-en # make install clean @@ -616,7 +616,7 @@ FreeBSD 文档的更新和联编系统支持一些方便只更新一部分文档 这是一份简短的关于如何使用以上提到变量来安装 PDF 格式的匈牙利文档: -[source,bash] +[source,shell] .... # cd /usr/ports/misc/freebsd-doc-hu # make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean @@ -636,7 +636,7 @@ FreeBSD 文档的更新和联编系统支持一些方便只更新一部分文档 举例来说, 以下的命令将安装最新预编译的匈牙利语文档: -[source,bash] +[source,shell] .... # pkg_add -r hu-freebsd-doc .... @@ -651,7 +651,7 @@ FreeBSD 文档的更新和联编系统支持一些方便只更新一部分文档 任何用于更新 ports 的工具都可以被用来更新已安装的文档 port。 举例来说, 下面的命令通过 package:ports-mgmt/portupgrade[] 工具来更新已安装的匈牙利语文档二进制包。 -[source,bash] +[source,shell] .... # portupgrade -PP hu-freebsd-doc .... @@ -870,7 +870,7 @@ FreeBSD-STABLE 和 FreeBSD-CURRENT 分支自然是 _发展中的_。为 FreeBSD 总结一下, 目前推荐的从源代码升级 FreeBSD 的方法是: -[source,bash] +[source,shell] .... # cd /usr/src # make buildworld @@ -886,7 +886,7 @@ FreeBSD-STABLE 和 FreeBSD-CURRENT 分支自然是 _发展中的_。为 FreeBSD 在 `installkernel` 成功完成之后, 您需要引导到单用户模式 (举例而言, 可以在加载器提示后输入 `boot -s`)。 接下来执行: -[source,bash] +[source,shell] .... # adjkerntz -i # mount -a -t ufs @@ -936,7 +936,7 @@ FreeBSD-STABLE 和 FreeBSD-CURRENT 分支自然是 _发展中的_。为 FreeBSD 解决办法是通过使用 `-p` 选项以构建前 (pre-buildworld) 模式运行 man:mergemaster[8]。 这表示只对比那些对于成功执行 `buildworld` 或 `installworld` 起关键作用的文件。 在第一次这样做时, 如果使用的是早期的不支持 `-p` 的 `mergemaster` 版本的话, 使用源码中的新版本即可。 -[source,bash] +[source,shell] .... # cd /usr/src/usr.sbin/mergemaster # ./mergemaster.sh -p @@ -947,7 +947,7 @@ FreeBSD-STABLE 和 FreeBSD-CURRENT 分支自然是 _发展中的_。为 FreeBSD 如果您是个偏执狂 (paranoid), 您可以检查您的系统看看哪个文件属于您已更名或删除了的那个组。 -[source,bash] +[source,shell] .... # find / -group GID -print .... @@ -964,7 +964,7 @@ FreeBSD-STABLE 和 FreeBSD-CURRENT 分支自然是 _发展中的_。为 FreeBSD 从运行的系统里,以超级用户方式执行: -[source,bash] +[source,shell] .... # shutdown now .... @@ -973,7 +973,7 @@ FreeBSD-STABLE 和 FreeBSD-CURRENT 分支自然是 _发展中的_。为 FreeBSD 除此之外, 也可以重启系统, 并在启动菜单处选择 "single user"(单用户) 选项。 这样系统将以单用户模式启动。 接着, 在 shell 提示符处执行: -[source,bash] +[source,shell] .... # fsck -p # mount -u / @@ -987,7 +987,7 @@ FreeBSD-STABLE 和 FreeBSD-CURRENT 分支自然是 _发展中的_。为 FreeBSD ==== 如果您的 CMOS 时钟是设置为本地时间,而不是 GMT (如果 man:date[1] 命令输出不能显示正确的时间和地区也确有其事), 您可能也需要执行下边的命令: -[source,bash] +[source,shell] .... # adjkerntz -i .... @@ -1004,7 +1004,7 @@ FreeBSD-STABLE 和 FreeBSD-CURRENT 分支自然是 _发展中的_。为 FreeBSD [.filename]#/usr/obj# 中的某些文件可能设置了不可改标记 (详情参见 man:chflags[1]), 需要首先去掉这些标志。 -[source,bash] +[source,shell] .... # cd /usr/obj # chflags -R noschg * @@ -1020,7 +1020,7 @@ FreeBSD-STABLE 和 FreeBSD-CURRENT 分支自然是 _发展中的_。为 FreeBSD 这样做最简单的办法是使用 man:script[1] 命令,同是带上参数指定存放输出的文件名。 您应在重建系统之前立即这样做,然后在过程完成时输入 `exit`。 -[source,bash] +[source,shell] .... # script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out @@ -1037,7 +1037,7 @@ Script done, … 您必须在[.filename]##/usr/src##目录里边: -[source,bash] +[source,shell] .... # cd /usr/src .... @@ -1048,7 +1048,7 @@ Script done, … 输入的一般命令格式如下: -[source,bash] +[source,shell] .... # make -x -DVARIABLE target .... @@ -1057,7 +1057,7 @@ Script done, … `-D_VARIABLE_` 传递一个变量给 [.filename]#Makefile#。这些变量控制了 [.filename]#Makefile# 的行为。这些同 [.filename]#/etc/make.conf# 设置的变量一样, 只是提供了另一种设置它们的方法。 -[source,bash] +[source,shell] .... # make -DNO_PROFILE target .... @@ -1077,7 +1077,7 @@ _目标 (target)_ 告诉 man:make[1] 什么该做。每个 [.filename]#Makefile# 大部分的时间不需要向 man:make[1] 传递参数,因此您的命令看起来可能象这样: -[source,bash] +[source,shell] .... # make target .... @@ -1094,7 +1094,7 @@ _目标 (target)_ 告诉 man:make[1] 什么该做。每个 [.filename]#Makefile# 运行 -[source,bash] +[source,shell] .... # make buildworld .... @@ -1103,7 +1103,7 @@ _目标 (target)_ 告诉 man:make[1] 什么该做。每个 [.filename]#Makefile# 对典型的单 CPU 机器, 可以使用: -[source,bash] +[source,shell] .... # make -j4 buildworld .... @@ -1129,7 +1129,7 @@ _目标 (target)_ 告诉 man:make[1] 什么该做。每个 [.filename]#Makefile# ==== 如果您想建立一个定制内核,而且已经有了配置文件, 只需象这样使用 `KERNCONF=MYKERNEL:` -[source,bash] +[source,shell] .... # cd /usr/src # make buildkernel KERNCONF=MYKERNEL @@ -1152,7 +1152,7 @@ _目标 (target)_ 告诉 man:make[1] 什么该做。每个 [.filename]#Makefile# 执行 -[source,bash] +[source,shell] .... # cd /usr/src # make installworld @@ -1164,14 +1164,14 @@ _目标 (target)_ 告诉 man:make[1] 什么该做。每个 [.filename]#Makefile# 举例,您执行了: -[source,bash] +[source,shell] .... # make -DNO_PROFILE buildworld .... 您就必须使用: -[source,bash] +[source,shell] .... # make -DNO_PROFILE installworld .... @@ -1218,7 +1218,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 ==== 虽然,理论上,没有什么会自动访问这个目录, 事情还是做稳操胜当一点。复制已有 [.filename]#/etc# 到一个安全的地方,如: -[source,bash] +[source,shell] .... # cp -Rp /etc /etc.old .... @@ -1228,7 +1228,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 您需要建立一个虚目录 (a dummy set of directories) 来安装新的 [.filename]#/etc# 和其它文件。 [.filename]#/var/tmp/root# 是个不错的选择, 除此之外,还有一些子目录是需要的。 -[source,bash] +[source,shell] .... # mkdir /var/tmp/root # cd /usr/src/etc @@ -1237,7 +1237,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 这样就建好了需要的目录结构,然后安装文件。在 [.filename]#/var/tmp/root# 下建立的大部分子目录是空的, 而且要删除掉。最简单的方式是: -[source,bash] +[source,shell] .... # cd /var/tmp/root # find -d . -type d | xargs rmdir 2>/dev/null @@ -1251,7 +1251,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 最简单的方式是使用 man:diff[1] 去比较两个文件: -[source,bash] +[source,shell] .... # diff /etc/shells /var/tmp/root/etc/shells .... @@ -1270,7 +1270,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 . 像平常一样建立系统 (Make the world)。当您想更新 [.filename]#/etc# 和其它目录里, 给目标目录一个含有当前日期的名字。假如您是 1998 年 2 月 14 日做的,您可以执行下边的: + -[source,bash] +[source,shell] .... # mkdir /var/tmp/root-19980214 # cd /usr/src/etc @@ -1284,7 +1284,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 . 在您下载了最新版的源码并改过后,执行第一步。 这样将得到一个新的目录,可能叫做 [.filename]#/var/tmp/root-19980221# (如果等了一周做的升级)。 . 您现在能看到两个目录间的不同了---在隔周的时间里使用 man:diff[1] 建立递归 diff 产生的不同: + -[source,bash] +[source,shell] .... # cd /var/tmp # diff -r root-19980214 root-19980221 @@ -1293,7 +1293,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 一般情况下,这两种间的不同处比 [.filename]#/var/tmp/root-19980221/etc# 和 [.filename]#/etc# 之间的不同要小很多。 因为不同点更小,也就更容易把这些变化移到您的 [.filename]#/etc# 目录里边。 . 您现在可以删除早先的两个 [.filename]#/var/tmp/root-*# 目录: + -[source,bash] +[source,shell] .... # rm -rf /var/tmp/root-19980214 .... @@ -1303,7 +1303,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 您可以使用 man:date[1] 自动产生目录的名称: -[source,bash] +[source,shell] .... # mkdir /var/tmp/root-`date "+%Y%m%d"` .... @@ -1315,7 +1315,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 现在完成了。在您检查所有内容都放置正确后, 您可以重启系统了。只是简单的 man:shutdown[8] 可以这样做: -[source,bash] +[source,shell] .... # shutdown -r now .... @@ -1326,7 +1326,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 如果还有轻微的错误,可以轻易地重建系统的选定部分。 例如,在部分升级或合并 [.filename]#/etc# 时,您不小心删除了 [.filename]#/etc/magic#,man:file[1] 命令就会停止工作。这种情况下,执行下边进行修复: -[source,bash] +[source,shell] .... # cd /usr/src/usr.bin/file # make all install @@ -1339,7 +1339,7 @@ man:mergemaster[8] 会给您显示每个文件的不同处, 这样您就可以 这个不好说,因为要看变化的情况。如,如果您刚运行了 CVSup,并得到下边更新的文件: -[source,bash] +[source,shell] .... src/games/cribbage/instr.c src/games/sail/pl_main.c @@ -1378,7 +1378,7 @@ _一般而言_ (当然这并不是硬性规定), `make buildworld` 的过程 如果您正处于最后一个阶段, 并且了解它 (因为您已经看过了所保存的输出) 则可以 (相当安全地) 做: -[source,bash] +[source,shell] .... … 问题修复 … # cd /usr/src @@ -1389,7 +1389,7 @@ _一般而言_ (当然这并不是硬性规定), `make buildworld` 的过程 在"make buildworld"的输出中如果看到如下信息: -[source,bash] +[source,shell] .... -------------------------------------------------------------- Building everything.. @@ -1410,7 +1410,7 @@ Building everything.. * 传递 `-j__n__` 选项给 man:make[1] 以便并发运行多个进程。 这样就不会考虑您的是否是单个或多个处理器机器。 * 存放 [.filename]#/usr/src# 的文件系统可以使用 `noatime` 选项来挂接 (或重新挂接)。 这样会防止文件系统记录文件的存取时间。 您可能并不需要这些信息。 + -[source,bash] +[source,shell] .... # mount -u -o noatime /usr/src .... @@ -1431,7 +1431,7 @@ Building everything.. 如果在这个文件系统里 [.filename]#/usr/obj# 是很关键的,这不是问题。如果您有其它有价值的数据在同一个文件系统, 那么在您使用这个选项这前,确认备份一下。 ==== + -[source,bash] +[source,shell] .... # mount -u -o async /usr/obj .... @@ -1446,7 +1446,7 @@ Building everything.. 绝对确信您的环境没有先前 build 留下的残余。这点够简单。 -[source,bash] +[source,shell] .... # chflags -R noschg /usr/obj/usr # rm -rf /usr/obj/usr @@ -1468,7 +1468,7 @@ Building everything.. 我们假定您已经按照 <<canonical-build>> 介绍的步骤完成了更新操作。 在 `make installworld` 和 `mergemaster` 命令完成之后, 您应使用下面的命令检查系统中是否存在过时的文件或库: -[source,bash] +[source,shell] .... # cd /usr/src # make check-old @@ -1476,7 +1476,7 @@ Building everything.. 如果有过时的文件, 则可以用下面的命令来删除: -[source,bash] +[source,shell] .... # make delete-old .... @@ -1489,14 +1489,14 @@ Building everything.. 在删除文件时, 系统会针对每个文件都给出提示。 您可以跳过这些提示, 并让系统自动完成删除操作, 方法是使用 make 变量 `BATCH_DELETE_OLD_FILES`, 具体做法如下: -[source,bash] +[source,shell] .... # make -DBATCH_DELETE_OLD_FILES delete-old .... 您也可以用 `yes` 命令和管道来达到类似的目的: -[source,bash] +[source,shell] .... # yes|make delete-old .... @@ -1510,7 +1510,7 @@ Building everything.. 过时的动态连接库可能会与新库冲突, 导致类似这样的警告消息: -[source,bash] +[source,shell] .... /usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 /usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5 @@ -1518,7 +1518,7 @@ Building everything.. 要解决这样的问题, 需要确认安装这个库的 port: -[source,bash] +[source,shell] .... # pkg_info -W /usr/local/lib/libtiff.so /usr/local/lib/libtiff.so was installed by package tiff-3.9.4 @@ -1528,7 +1528,7 @@ Building everything.. 接着卸载、 重新联编并安装 port。 您可以使用 package:ports-mgmt/portmaster[] 或 package:ports-mgmt/portupgrade[] 工具来自动完成这些操作。 在确认所有的 port 都重新联编, 并且不再使用旧库以后, 您就可以用下面的命令来删除它们了: -[source,bash] +[source,shell] .... # make delete-old-libs .... diff --git a/documentation/content/zh-cn/books/handbook/desktop/_index.adoc b/documentation/content/zh-cn/books/handbook/desktop/_index.adoc index e56c8a7cf3..cf50b594f0 100644 --- a/documentation/content/zh-cn/books/handbook/desktop/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/desktop/_index.adoc @@ -114,21 +114,21 @@ Firefox 是一个现代, 自由, 开放源代码稳定的浏览器, 并完 您可以通过输入下面的命令来安装预编译的包: -[source,bash] +[source,shell] .... # pkg_add -r firefox .... 这将会安装 Firefox 7.0, 如果希望运行 Firefox 3.6, 则应使用下面的命令: -[source,bash] +[source,shell] .... # pkg_add -r firefox36 .... 如果你希望从源代码编译的话, 可以通过 Ports Collection 安装: -[source,bash] +[source,shell] .... # cd /usr/ports/www/firefox # make install clean @@ -146,7 +146,7 @@ Firefox 是一个现代, 自由, 开放源代码稳定的浏览器, 并完 通过 Ports 套件来安装 OpenJDK 6, 输入下面的命令: -[source,bash] +[source,shell] .... # cd /usr/ports/java/openjdk6 # make install clean @@ -154,7 +154,7 @@ Firefox 是一个现代, 自由, 开放源代码稳定的浏览器, 并完 接下来安装 package:java/icedtea-web[] port: -[source,bash] +[source,shell] .... # cd /usr/ports/java/icedtea-web # make install clean @@ -166,7 +166,7 @@ Firefox 是一个现代, 自由, 开放源代码稳定的浏览器, 并完 如果浏览器找不到插件, 则用户可能必须运行下面的命令, 并重启浏览器: -[source,bash] +[source,shell] .... % ln -s /usr/local/lib/IcedTeaPlugin.so \ $HOME/.mozilla/plugins/ @@ -200,7 +200,7 @@ Adobe(R) Flash(TM) 插件并没有直接提供其 FreeBSD 版本。 不过, + 这个版本需要创建一个符号链接: + -[source,bash] +[source,shell] .... # ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so \ /usr/local/lib/browser_plugins/ @@ -211,14 +211,14 @@ Adobe(R) Flash(TM) 插件并没有直接提供其 FreeBSD 版本。 不过, 按照 FreeBSD 版本, 在安装了正确的 Flash(TM) port 之后, 插件必须由每个用户运行 `nspluginwrapper` 安装: -[source,bash] +[source,shell] .... % nspluginwrapper -v -a -i .... 如果希望播放 Flash(TM) 动画的话,Linux(R) 的进程文件系统, man:linprocfs[5] 必须挂载于 [.filename]#/usr/compat/linux/proc#。 可以通过以下的命令实现: -[source,bash] +[source,shell] .... # mount -t linprocfs linproc /usr/compat/linux/proc .... @@ -239,14 +239,14 @@ Swfdec 是一个用以解码和渲染 Flash(TM) 动画的库。 Swfdec-Mozilla 如果你不能或者不想编译安装,可以通过网络安装二进制包: -[source,bash] +[source,shell] .... # pkg_add -r swfdec-plugin .... 如果二进制包还不可用,你可以通过 Ports Collection 编译安装: -[source,bash] +[source,shell] .... # cd /usr/ports/www/swfdec-plugin # make install clean @@ -260,14 +260,14 @@ Opera 是一个功能齐全, 并符合标准的浏览器。 它还提供了内 要使用 Opera 的 FreeBSD 版本来浏览网页,安装以下的 package: -[source,bash] +[source,shell] .... # pkg_add -r opera .... 有些 FTP 站点没有所有版本的 package, 但仍然可以通过 Ports 套件来安装 Opera: -[source,bash] +[source,shell] .... # cd /usr/ports/www/opera # make install clean @@ -277,7 +277,7 @@ Opera 是一个功能齐全, 并符合标准的浏览器。 它还提供了内 Adobe(R) Flash(TM) 插件目前并没有提供 FreeBSD 专用的版本。 不过, 可以使用其 Linux(R) 版本的插件。 要安装这个版本, 需要安装 package:www/linux-f10-flashplugin10[] port, 以及 package:www/opera-linuxplugins[]: -[source,bash] +[source,shell] .... # cd /usr/ports/www/linux-f10-flashplugin10 # make install clean @@ -346,14 +346,14 @@ KDE 社区提供了一套办公套件, 它能用在桌面环境。它包含四 使用 package 来安装 KOffice,安装细节如下: -[source,bash] +[source,shell] .... # pkg_add -r koffice .... 如果没有可用的 package,您可以使用 Ports Collection 安装。 安装 KDE3 的 KOffice 版本,如下: -[source,bash] +[source,shell] .... # cd /usr/ports/editors/koffice-kde3 # make install clean @@ -367,14 +367,14 @@ AbiWord 可以导入或输出很多文件格式, 包括一些象 Microsoft(R) AbiWord 也有 package 的安装方式。您可以用以下方法安装: -[source,bash] +[source,shell] .... # pkg_add -r abiword .... 如果没有可用的 package,它也可以从 Ports Collection 编译。ports collection 应该是最新的。它的安装方式如下: -[source,bash] +[source,shell] .... # cd /usr/ports/editors/abiword # make install clean @@ -386,14 +386,14 @@ AbiWord 也有 package 的安装方式。您可以用以下方法安装: 您可以用下列命令安装: -[source,bash] +[source,shell] .... # pkg_add -r gimp .... 如果您在 FTP 站点没有找到这个 package,您也可以使用 Ports Collection 的方法安装。ports 的 http://www.FreeBSD.org/ports/graphics.html[graphics] 目录也包含有 Gimp 手册。 以下是安装它们的方法: -[source,bash] +[source,shell] .... # cd /usr/ports/graphics/gimp # make install clean @@ -414,7 +414,7 @@ OpenOffice.org 的字处理程序使用 XML 文件格式使它增加了可移植 安装 OpenOffice.org 方法如下: -[source,bash] +[source,shell] .... # pkg_add -r openoffice.org .... @@ -426,7 +426,7 @@ OpenOffice.org 的字处理程序使用 XML 文件格式使它增加了可移植 装好 package 之后, 您只需输入下面的命令就能运行 OpenOffice.org 了: -[source,bash] +[source,shell] .... % openoffice.org .... @@ -438,7 +438,7 @@ OpenOffice.org 的字处理程序使用 XML 文件格式使它增加了可移植 如果没有可用的 OpenOffice.org package,您仍旧可以选择编译 port。然而, 您必须记住它的要求以及大量的磁盘空间和相当长的时间编译。 -[source,bash] +[source,shell] .... # cd /usr/ports/editors/openoffice.org-3 # make install clean @@ -448,7 +448,7 @@ OpenOffice.org 的字处理程序使用 XML 文件格式使它增加了可移植 ==== 如果希望联编一套进行过本地化的版本, 将前述命令行改为: -[source,bash] +[source,shell] .... # make LOCALIZED_LANG=your_language install clean .... @@ -458,7 +458,7 @@ OpenOffice.org 的字处理程序使用 XML 文件格式使它增加了可移植 一旦完成上述操作, 就可以通过下面的命令来运行 OpenOffice.org 了: -[source,bash] +[source,shell] .... % openoffice.org .... @@ -471,7 +471,7 @@ LibreOffice 的字处理程序使用了内建的 XML 文件格式, 以期获 如果希望通过预编译的二进制包安装 LibreOffice, 执行: -[source,bash] +[source,shell] .... # pkg_add -r libreoffice .... @@ -483,7 +483,7 @@ LibreOffice 的字处理程序使用了内建的 XML 文件格式, 以期获 装好软件包之后, 需要用下面的命令来安装 LibreOffice: -[source,bash] +[source,shell] .... % libreoffice .... @@ -495,7 +495,7 @@ LibreOffice 的字处理程序使用了内建的 XML 文件格式, 以期获 如果 LibreOffice 软件包不可用, 您还是可以通过 port 安装。 不过, 请注意编译它需要相当多的磁盘空间和时间。 -[source,bash] +[source,shell] .... # cd /usr/ports/editors/libreoffice # make install clean @@ -505,7 +505,7 @@ LibreOffice 的字处理程序使用了内建的 XML 文件格式, 以期获 ==== 如果希望编译本地化的版本, 把前面的命令换成: -[source,bash] +[source,shell] .... # make LOCALIZED_LANG=your_language install clean .... @@ -515,7 +515,7 @@ LibreOffice 的字处理程序使用了内建的 XML 文件格式, 以期获 完成联编和安装之后, 就可以用下面的命令运行 LibreOffice 了: -[source,bash] +[source,shell] .... % libreoffice .... @@ -562,7 +562,7 @@ UNIX(R) 系统出现以来, 一些新的文档格式开始流行起来; 它 要从 Ports collection 安装 Acrobat Reader(R) 8, 只需: -[source,bash] +[source,shell] .... # cd /usr/ports/print/acroread8 # make install clean @@ -576,14 +576,14 @@ gv 是 PostScript(R) 和 PDF 文件格式查看器。它源自 ghostview 因为 安装 gv package,如下: -[source,bash] +[source,shell] .... # pkg_add -r gv .... 如果您无法获取预编译的包, 则可以使用 Ports Collection: -[source,bash] +[source,shell] .... # cd /usr/ports/print/gv # make install clean @@ -595,14 +595,14 @@ gv 是 PostScript(R) 和 PDF 文件格式查看器。它源自 ghostview 因为 安装 Xpdf package,使用如下命令: -[source,bash] +[source,shell] .... # pkg_add -r xpdf .... 如果 package 不可用或者您宁愿使用 Ports Collection,如下: -[source,bash] +[source,shell] .... # cd /usr/ports/graphics/xpdf # make install clean @@ -616,14 +616,14 @@ GQview 是一个图片管理器。 您可以单击鼠标来观看一个文件、 如果您想要安装 GQview package,如下: -[source,bash] +[source,shell] .... # pkg_add -r gqview .... 如果您没有可用的 package 或者您宁愿使用 Ports Collection,如下: -[source,bash] +[source,shell] .... # cd /usr/ports/graphics/gqview # make install clean @@ -673,14 +673,14 @@ GnuCash 提供一个智能化的注册、帐户分级系统、 很多键盘快 在您的系统中安装 GnuCash 所需的命令如下: -[source,bash] +[source,shell] .... # pkg_add -r gnucash .... 如果 package 不可用,您可以使用 Ports Collection 安装: -[source,bash] +[source,shell] .... # cd /usr/ports/finance/gnucash # make install clean @@ -692,14 +692,14 @@ Gnumeric 是一个电子表格程序, GNOME 桌面环境的一部分。 它以 以 package 方式安装 Gnumeric 的方法如下: -[source,bash] +[source,shell] .... # pkg_add -r gnumeric .... 如果 package 不可用,您可以使用 Ports Collection 安装: -[source,bash] +[source,shell] .... # cd /usr/ports/math/gnumeric # make install clean @@ -711,14 +711,14 @@ Abacus 是一个小巧易用的电子表格程序。 它包含许多嵌入函数 以 package 的方式安装 Abacus 的方法如下: -[source,bash] +[source,shell] .... # pkg_add -r abacus .... 如果 package 不可用,您可以使用 Ports Collection 安装: -[source,bash] +[source,shell] .... # cd /usr/ports/deskutils/abacus # make install clean @@ -730,14 +730,14 @@ KMyMoney 是一个 KDE环境下的个人财务管理软件。 KMyMoney 旨在提 以 package 的方式安装 KMyMoney 的方法如下: -[source,bash] +[source,shell] .... # pkg_add -r kmymoney2 .... 如果 package 不可用,您可以使用 Ports Collection 安装: -[source,bash] +[source,shell] .... # cd /usr/ports/finance/kmymoney2 # make install clean diff --git a/documentation/content/zh-cn/books/handbook/disks/_index.adoc b/documentation/content/zh-cn/books/handbook/disks/_index.adoc index d7fb0febf4..d5fd9c14ba 100644 --- a/documentation/content/zh-cn/books/handbook/disks/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/disks/_index.adoc @@ -152,7 +152,7 @@ sysinstall 的标签编辑器用 `e` 表示非 root 和非 swap 分区。在标 这步安装将允许磁盘与可能安装在您计算机上的其它操作系统一起 正确工作,而不会搞乱其它操作系统的分区。推荐使用这种方法来安装 新磁盘,除非您有更好的理由再使用 `dedicated` 模式! -[source,bash] +[source,shell] .... # dd if=/dev/zero of=/dev/da1 bs=1k count=1 # fdisk -BI da1 #初始化新磁盘 @@ -170,7 +170,7 @@ sysinstall 的标签编辑器用 `e` 表示非 root 和非 swap 分区。在标 如果您并没有安装其它的操作系统,可以使用 `dedicated` 模式。记住这种模式可能会弄乱 Microsoft 的操作系统,但不会对它进行破坏。 它不识别找到的 IBM OS/2(R) 的 "appropriate" 分区。 -[source,bash] +[source,shell] .... # dd if=/dev/zero of=/dev/da1 bs=1k count=1 # bsdlabel -Bw da1 auto @@ -183,7 +183,7 @@ sysinstall 的标签编辑器用 `e` 表示非 root 和非 swap 分区。在标 另一种方法: -[source,bash] +[source,shell] .... # dd if=/dev/zero of=/dev/da1 count=2 # bsdlabel /dev/da1 | bsdlabel -BR da1 /dev/stdin @@ -369,7 +369,7 @@ ar0: WARNING - mirror lost 使用 man:atacontrol[8],查看更多的信息: -[source,bash] +[source,shell] .... # atacontrol list ATA channel 0: @@ -397,7 +397,7 @@ ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED . 首先您应将包含故障盘的 ata 通道卸下, 以便安全地将其拆除: + -[source,bash] +[source,shell] .... # atacontrol detach ata3 .... @@ -405,7 +405,7 @@ ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED . 换上磁盘 . 重新挂接 ata 通道: + -[source,bash] +[source,shell] .... # atacontrol attach ata3 Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 @@ -414,21 +414,21 @@ Slave: no device present + . 将新盘作为热备盘加入阵列: + -[source,bash] +[source,shell] .... # atacontrol addspare ar0 ad6 .... + . 重建阵列: + -[source,bash] +[source,shell] .... # atacontrol rebuild ar0 .... + . 可以通过下面的命令来查看进度: + -[source,bash] +[source,shell] .... # dmesg | tail -10 [output removed] @@ -482,7 +482,7 @@ device cd 配置好后准备进行测试:插入您的 USB 设备, 在系统信息中 (man:dmesg[8]), 应该会出现像下面的设备: -[source,bash] +[source,shell] .... umass0: USB Solid state disk, rev 1.10/1.00, addr 2 GEOM: create disk da0 dp=0xc2d74850 @@ -496,7 +496,7 @@ da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C) 因为 USB 设备被看作 SCSI 设备中的一个, `camcontrol` 命令也能够用来列出 USB 存储设备和系统的关联: -[source,bash] +[source,shell] .... # camcontrol devlist <Generic Traveling Disk 1.11> at scbus0 target 0 lun 0 (da0,pass0) @@ -548,7 +548,7 @@ vfs.usermount=1 最后一步是创建将要挂接文件系统的目录。 这个目录必须是属于将要挂接文件系统的用户的。 以 `root` 身份为用户建立属于该用户的 [.filename]#/mnt/username# (此处 _username_ 应替换成用户的登录名, 并把 _usergroup_ 替换成用户所属的组): -[source,bash] +[source,shell] .... # mkdir /mnt/username # chown username:usergroup /mnt/username @@ -556,14 +556,14 @@ vfs.usermount=1 假设已经插入了一个 USB 读卡设备, 并且系统将其识别为 [.filename]#/dev/da0s1#, 由于这些设备通常是 FAT 文件系统, 用户可以这样挂接它们: -[source,bash] +[source,shell] .... % mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/username .... 如果拔出设备 (必须首先将其对应的磁盘卷卸下), 则您会在系统消息缓冲区中看到类似下面的信息: -[source,bash] +[source,shell] .... umass0: at uhub0 port 1 (addr 2) disconnected (da0:umass-sim0:0:0:0): lost device @@ -598,7 +598,7 @@ package:sysutils/[] port 包括了 man:mkisofs[8], 这是一个可以用来生 man:mkisofs[8] 程序作为 package:sysutils/cdrtools[] port 的一部分, 将生成 ISO 9660 文件系统,其中包含 UNIX(R) 命名空间中的文件名。 最简单的用法是: -[source,bash] +[source,shell] .... # mkisofs -o imagefile.iso /path/to/tree .... @@ -611,14 +611,14 @@ man:mkisofs[8] 程序作为 package:sysutils/cdrtools[] port 的一部分, 将 最后一个常用的选项是 `-b`。 它用来指定启动映像的位置, 用以生成 "El Torito" 启动 CD。 这个选项使用一个参数, 用以指定将写入 CD 的目录的根。 默认情况下, man:mkisofs[8] 会以常说的 "软盘模拟" 方式来创建 ISO, 因此它希望引导映像文件的尺寸恰好是 1200, 1440 或 2880 KB。 某些引导加载器, 例如 FreeBSD 发行版磁盘, 并不使用模拟模式; 这种情况下, 需要使用 `-no-emul-boot` 选项。 因此, 如果 [.filename]#/tmp/myboot# 是一个包含了启动映像文件 [.filename]#/tmp/myboot/boot/cdboot# 的可引导的 FreeBSD 系统, 您就可以使用下面的命令生成 ISO 9660 文件系统映像 [.filename]#/tmp/bootable.iso#: -[source,bash] +[source,shell] .... # mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot .... 完成这些工作之后, 如果您的内核中配置了 [.filename]#md#, 就可以用下列命令来挂接文件系统了: -[source,bash] +[source,shell] .... # mdconfig -a -t vnode -f /tmp/bootable.iso -u 0 # mount -t cd9660 /dev/md0 /mnt @@ -633,7 +633,7 @@ man:mkisofs[8] 程序作为 package:sysutils/cdrtools[] port 的一部分, 将 如果用的是 ATAPI 的 CD 刻录机,可以使用 `burncd` 命令来刻录您的 CD ISO 映像文件。 `burncd` 命令是基本 系统的一部分,中以使用 [.filename]#/usr/sbin/burncd# 来安装。 用法如下: -[source,bash] +[source,shell] .... # burncd -f cddevice data imagefile.iso fixate .... @@ -647,14 +647,14 @@ man:mkisofs[8] 程序作为 package:sysutils/cdrtools[] port 的一部分, 将 `cdrecord` 有许多选项,基本用法与 `burncd` 相似。刻录一个 ISO 9660 映像文件只需这样做: -[source,bash] +[source,shell] .... # cdrecord dev=device imagefile.iso .... 使用 `cdrecord` 的比较巧妙的方法是找到使用的 `dev` 。要找到正确的设置,可以使用 `cdrecord` 的 `-scanbus` 标记,这会产生这样的结果: -[source,bash] +[source,shell] .... # cdrecord -scanbus Cdrecord-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling @@ -692,14 +692,14 @@ scsibus1: . 使用 `cdda2wav` 来解压缩音频。 + -[source,bash] +[source,shell] .... % cdda2wav -vall -D2,0 -B -Owav .... + . 使用 `cdrecord` 来写 [.filename]#.wav# 文件。 + -[source,bash] +[source,shell] .... % cdrecord -v dev=2,0 -dao -useinfo *.wav .... @@ -720,14 +720,14 @@ scsibus1: + 请务必确认在 [.filename]#/dev# 中出现了对应的文件。 如果您发现有某些项目缺失, 则应强制系统重新识别介质: + -[source,bash] +[source,shell] .... # dd if=/dev/acd0 of=/dev/null count=1 .... + . 使用 man:dd[1] 解压缩每个轨道。当解压缩文件的时候您也必须使用 一个特殊的块大小。 + -[source,bash] +[source,shell] .... # dd if=/dev/acd0t01 of=track1.cdr bs=2352 # dd if=/dev/acd0t02 of=track2.cdr bs=2352 @@ -736,7 +736,7 @@ scsibus1: + . 使用 `burncd` 把解压缩的文件刻录到光盘上。您必须指定 这些文件是音频文件,这样 `burncd` 会在刻录完成时 结束光盘。 + -[source,bash] +[source,shell] .... # burncd -f /dev/acd0 audio track1.cdr track2.cdr ... fixate .... @@ -747,7 +747,7 @@ scsibus1: 您可以把数据 CD 复制成一个与之等价的映像文件, 可以使用 man:mkisofs[8] 创建这种文件, 或使用它来复制任何数据 CD。 这里给出的例子假定您的 CDROM 设备是 [.filename]#acd0#, 您应将其替换为您实际使用的 CDROM 设备。 -[source,bash] +[source,shell] .... # dd if=/dev/acd0 of=file.iso bs=2048 .... @@ -759,21 +759,21 @@ scsibus1: 现在您已经创建了一张标准的数据 CDROM,您或许想要 挂载来读取上面的设备。 默认情况下,man:mount[8] 假定文件系统是 `ufs` 类型的。如果您尝试下面的命令: -[source,bash] +[source,shell] .... # mount /dev/cd0 /mnt .... 您会得到一条 `Incorrect super block` 的错误信息,没有挂载成功。CDROM 不是 `UFS` 文件系统,所以试图这样挂载它是 是不行的。您需要告诉 man:mount[8] 文件系统是 `ISO9660` 类型的,这样 就可以了。只需要指定 man:mount[8] 的 `-t cd9660` 选项。例如, 如果您想要挂载 CDROM 设备, [.filename]#/dev/cd0# 到 [.filename]#/mnt# 目录,您需要执行: -[source,bash] +[source,shell] .... # mount -t cd9660 /dev/cd0 /mnt .... 注意您的设备名 (在这个例子中是 [.filename]#/dev/cd0#)可能 有所不同,取决于您的 CDROM 使用的接口。另外, `-t cd9660` 选项等同于执行 man:mount_cd9660[8]。上面的例子可以缩短 为: -[source,bash] +[source,shell] .... # mount_cd9660 /dev/cd0 /mnt .... @@ -808,14 +808,14 @@ options SCSI_DELAY=15000 您可以选择把一个文件目录刻录到 CD 上而不用 创建 ISO 9660 文件系统。有些人这么做是为了备份的 目的。这个运行的比刻录一个标准 CD 速度要快得多: -[source,bash] +[source,shell] .... # burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate .... 要重新找回这样刻录到 CD 上的数据, 您必须从原始设备节点读取数据: -[source,bash] +[source,shell] .... # tar xzvf /dev/acd1 .... @@ -860,7 +860,7 @@ device pass 在引导过程中, 您的刻录机将会出现在内核的提示信息中, 就像这样: -[source,bash] +[source,shell] .... acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 @@ -871,14 +871,14 @@ cd0: Attempt to query device size failed: NOT READY, Medium not present - tray c 驱动器现在可以通过 [.filename]#/dev/cd0# 设备名访问了,例如要 挂载 CD-ROM 到 [.filename]#/mnt#,只需要键入下面的 命令: -[source,bash] +[source,shell] .... # mount -t cd9660 /dev/cd0 /mnt .... 作为 `root`,您可以运行下面的 命令来得到刻录机的 SCSI 地址: -[source,bash] +[source,shell] .... # camcontrol devlist <MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0) @@ -936,7 +936,7 @@ man:growisofs[1] 命令是 <<mkisofs,mkisofs>> 的前端,它会调用 man:mkis 要把 [.filename]#/path/to/data# 目录的数据刻录到 DVD+R 或者 DVD-R 上面,使用下面的命令: -[source,bash] +[source,shell] .... # growisofs -dvd-compat -Z /dev/cd0 -J -R /path/to/data .... @@ -947,7 +947,7 @@ man:growisofs[1] 命令是 <<mkisofs,mkisofs>> 的前端,它会调用 man:mkis 也可以刻录成一个 pre-mastered 映像, 例如记录一个映像文件 _imagefile.iso_, 我们可以运行: -[source,bash] +[source,shell] .... # growisofs -dvd-compat -Z /dev/cd0=imagefile.iso .... @@ -960,14 +960,14 @@ man:growisofs[1] 命令是 <<mkisofs,mkisofs>> 的前端,它会调用 man:mkis 要创建这样的 ISO 文件: -[source,bash] +[source,shell] .... % mkisofs -R -J -udf -iso-level 3 -o imagefile.iso /path/to/data .... 直接将文件刻录到光盘上: -[source,bash] +[source,shell] .... # growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /path/to/data .... @@ -983,7 +983,7 @@ DVD-Video 是一种特殊的基于 ISO 9660 和 micro-UDF (M-UDF) 规范的文 如果您已经有了 DVD-Video 文件系统的映像, 就可以以同样的方式制作另一个映像,可以参看前面章节的例子。 如果您想制作 DVD 并想放在特定的目录中,如在目录 [.filename]#/path/to/video# 中, 可以使用下面的命令来刻录 DVD-Video: -[source,bash] +[source,shell] .... # growisofs -Z /dev/cd0 -dvd-video /path/to/video .... @@ -994,7 +994,7 @@ DVD-Video 是一种特殊的基于 ISO 9660 和 micro-UDF (M-UDF) 规范的文 不像 CD-RW, 一个空白的 DVD+RW 在每一次使用前必须先格式化。 man:growisofs[1] 程序将会适时的自动对其进行适当的处理, 这是 _recommended_ 的方式。您也可以使用 `dvd+rw-format` 来对 DVD+RW 进行格式化: -[source,bash] +[source,shell] .... # dvd+rw-format /dev/cd0 .... @@ -1003,7 +1003,7 @@ DVD-Video 是一种特殊的基于 ISO 9660 和 micro-UDF (M-UDF) 规范的文 如果您想刻录新的数据 (刻录一个新的完整的文件系统 而不仅仅是追加一些数据) 到 DVD+RW,您不必再将其格式化成空白盘, 您只须要直接覆盖掉以前的记录即可。 (执行一个新的初始化对话), 像这样: -[source,bash] +[source,shell] .... # growisofs -Z /dev/cd0 -J -R /path/to/newdata .... @@ -1012,7 +1012,7 @@ DVD+RW 格式化程序为简单的向以前的记录追加数据提供了可能 例如,我们想追加一些数据到到我们以前的 DVD+RW 上,我们可以使用下面的命令: -[source,bash] +[source,shell] .... # growisofs -M /dev/cd0 -J -R /path/to/nextdata .... @@ -1026,7 +1026,7 @@ DVD+RW 格式化程序为简单的向以前的记录追加数据提供了可能 如果出于某种原因您真的想要空白介质盘, 可以执行下面的命令: -[source,bash] +[source,shell] .... # growisofs -Z /dev/cd0=/dev/zero .... @@ -1039,7 +1039,7 @@ DVD+RW 格式化程序为简单的向以前的记录追加数据提供了可能 要格式化一张 DVD-RW 为顺序写入模式,运行: -[source,bash] +[source,shell] .... # dvd+rw-format -blank=full /dev/cd0 .... @@ -1048,7 +1048,7 @@ DVD+RW 格式化程序为简单的向以前的记录追加数据提供了可能 ==== 一次完全的格式化 (`-blank=full`) 在 1x 倍速的介质上将会花费大约 1 个小时。快速格式化可以使用 `-blank` 选项来进行,如果 DVD-RW 要以 Disk-At-Once (DAO) 模式刻录的话。要以 DAO 模式刻录 DVD-RW,使用命令: -[source,bash] +[source,shell] .... # growisofs -use-the-force-luke=dao -Z /dev/cd0=imagefile.iso .... @@ -1060,7 +1060,7 @@ DVD+RW 格式化程序为简单的向以前的记录追加数据提供了可能 在一张顺序 DVD-RW 上写入数据,使用和其他 DVD 格式相同的指令: -[source,bash] +[source,shell] .... # growisofs -Z /dev/cd0 -J -R /path/to/data .... @@ -1071,14 +1071,14 @@ DVD+RW 格式化程序为简单的向以前的记录追加数据提供了可能 要把 DVD-RW 置于受限式覆写格式, 必须使用下面的命令: -[source,bash] +[source,shell] .... # dvd+rw-format /dev/cd0 .... 更改回顺序写入模式使用: -[source,bash] +[source,shell] .... # dvd+rw-format -blank=full /dev/cd0 .... @@ -1089,7 +1089,7 @@ DVD+RW 格式化程序为简单的向以前的记录追加数据提供了可能 在 DVD+R、DVD-R 或者 DVD-RW 的顺序写入格式下, 一次初始化 (未关闭) 区段之后使用下面的命令, 将会在光盘上添加一个新的区段: -[source,bash] +[source,shell] .... # growisofs -M /dev/cd0 -J -R /path/to/nextdata .... @@ -1128,7 +1128,7 @@ hw.ata.atapi_dma="1" 如本章前面的介绍所言, DVD-RAM 可以视为一移动硬盘。 与任何其它型号的移动硬盘类似, 首次使用它之前, 应首先 "初始化" DVD-RAM。 在下面的例子中, 我们将在全部空间上使用标准的 UFS2 文件系统: -[source,bash] +[source,shell] .... # dd if=/dev/zero of=/dev/acd0 bs=2k count=1 # bsdlabel -Bw acd0 @@ -1141,7 +1141,7 @@ hw.ata.atapi_dma="1" 一旦您在 DVD-RAM 上完成了前面的操作, 就可以像普通的硬盘一样挂接它了: -[source,bash] +[source,shell] .... # mount /dev/acd0 /mnt .... @@ -1173,7 +1173,7 @@ hw.ata.atapi_dma="1" 使用 [.filename]#/dev/fdN# 设备来格式化软盘。插入一张新的 3.5 英寸的软盘在你的设备中: -[source,bash] +[source,shell] .... # /usr/sbin/fdformat -f 1440 /dev/fd0 .... @@ -1186,7 +1186,7 @@ hw.ata.atapi_dma="1" 现在可以用下面的方法来使用 man:bsdlabel[8] 了: -[source,bash] +[source,shell] .... # /sbin/bsdlabel -B -w /dev/fd0 fd1440 .... @@ -1199,7 +1199,7 @@ hw.ata.atapi_dma="1" 要制作新的文件系统在软盘上,可以使用下面的命令: -[source,bash] +[source,shell] .... # /sbin/newfs_msdos /dev/fd0 .... @@ -1271,7 +1271,7 @@ AIT 是 Sony 开发的一种新格式,每个磁带最高可以存储 50 GB。 当在一块完全空白的磁带上尝试定入数据时,会得到类似下面这样的错误信息: -[source,bash] +[source,shell] .... sa0(ncr1:4:0): NOT READY asc:4,1 sa0(ncr1:4:0): Logical unit is in process of becoming ready @@ -1313,14 +1313,14 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready 要备份当前目录中所有的文件可以使用这个命令 (需要有 ``root``权限): -[source,bash] +[source,shell] .... # tar Mcvf /dev/fd0 * .... 当第一张盘满的时候, man:tar[1] 会指示您插入下一张盘,插入第二张盘之后就按回车。 -[source,bash] +[source,shell] .... Prepare volume 2 for /dev/fd0 and hit return: .... @@ -1337,14 +1337,14 @@ Prepare volume 2 for /dev/fd0 and hit return: 要恢复所有文件: -[source,bash] +[source,shell] .... # tar Mxvf /dev/fd0 .... 有两种方法来恢复软盘中的个别文件。首先,就要用第一张软盘启动: -[source,bash] +[source,shell] .... # tar Mxvf /dev/fd0 filename .... @@ -1393,7 +1393,7 @@ man:tar[1] 程序会提示您插入后面的软盘,直到它找到所需要的 `rdump` 和 `rrestore` 可以通过网络在另一台计算机的磁带机上备份数据。 这两个程序都是依靠 man:rcmd[3] 和 man:ruserok[3] 来访问远程的磁带机。 因此,运行备份的用户必须要有远程主机的 [.filename]#.rhosts# 访问权。 `rdump` 和 `rrestore` 的参数必须适用于远程主机 例如,当您从 FreeBSD 连到一台 SUN 工作站 knomodo 去使用磁带机时,使用: -[source,bash] +[source,shell] .... # /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1 .... @@ -1406,7 +1406,7 @@ man:tar[1] 程序会提示您插入后面的软盘,直到它找到所需要的 [example] ==== -[source,bash] +[source,shell] .... # /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \ targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz @@ -1420,7 +1420,7 @@ man:tar[1] 程序会提示您插入后面的软盘,直到它找到所需要的 [example] ==== -[source,bash] +[source,shell] .... # RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0 /usr .... @@ -1433,7 +1433,7 @@ man:tar[1] 也同样是在第 6 版 AT&T UNIX (大约是 1975 前后) 出现的 要 `tar` 到连接在名为 `komodo` 的 Sun 机器上的 Exabyte 磁带机, 可以使用: -[source,bash] +[source,shell] .... # tar cf - . | rsh komodo dd of=tape-device obs=20b .... @@ -1446,7 +1446,7 @@ man:cpio[1] 是 UNIX(R) 最早用来作文件交换的磁带机程序。它有 `cpio` 不支持通过网络的备份方式。可以使用 pipeline 和 `rsh` 来传送数据给远程的磁带机。 -[source,bash] +[source,shell] .... # for f in directory_list; do find $f >> backup.list @@ -1541,7 +1541,7 @@ man:mdconfig[8] 命令支持三种类型的虚拟文件系统: 使用 man:mall [example] ==== -[source,bash] +[source,shell] .... # mdconfig -a -t vnode -f diskimage -u 0 # mount /dev/md0 /mnt @@ -1555,7 +1555,7 @@ man:mdconfig[8] 命令支持三种类型的虚拟文件系统: 使用 man:mall [example] ==== -[source,bash] +[source,shell] .... # dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in @@ -1583,7 +1583,7 @@ man:mdconfig[8] 功能很强大, 但在将映像文件作为文件系统挂载 [example] ==== -[source,bash] +[source,shell] .... # dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in @@ -1607,7 +1607,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on [example] ==== -[source,bash] +[source,shell] .... # mdconfig -a -t swap -s 5m -u 1 # newfs -U md1 @@ -1628,7 +1628,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on [example] ==== -[source,bash] +[source,shell] .... # mdmfs -s 5m md2 /mnt # df /mnt @@ -1644,7 +1644,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on 例如, 要分离并释放所有 [.filename]#/dev/md4# 使用的资源, 应使用命令: -[source,bash] +[source,shell] .... # mdconfig -d -u 4 .... @@ -1662,21 +1662,21 @@ FreeBSD 提供了一个和 crossref:cutting-edge[soft-updates,Soft Updates] 关 快照可以通过 man:mount[8] 命令创建。 将文件系统 [.filename]#/var# 的快照放到 [.filename]#/var/snapshot/snap# 可以使用下面的命令: -[source,bash] +[source,shell] .... # mount -u -o snapshot /var/snapshot/snap /var .... 作为选择,你也可以使用 man:mksnap_ffs[8] 来创建一个快照: -[source,bash] +[source,shell] .... # mksnap_ffs /var /var/snapshot/snap .... 可以查找文件系统中的快照文件 (例如 [.filename]#/var#), 方法是使用 man:find[1] 命令: -[source,bash] +[source,shell] .... # find /var -flags snapshot .... @@ -1688,7 +1688,7 @@ FreeBSD 提供了一个和 crossref:cutting-edge[soft-updates,Soft Updates] 关 * 在快照上运行 man:dump[8] 程序。 dump 将返回包含文件系统和快照的时间戳。man:dump[8] 也能够抓取快照,使用 `-L` 标志可以首先创建快照, 完成 dump 映像之后再自动删除它。 * 用 man:mount[8] 来挂接快照作为文件系统的一个冻结的镜像。 要 man:mount[8] 快照 [.filename]#/var/snapshot/snap# 运行: + -[source,bash] +[source,shell] .... # mdconfig -a -t vnode -f /var/snapshot/snap -u 4 # mount -r /dev/md4 /mnt @@ -1696,7 +1696,7 @@ FreeBSD 提供了一个和 crossref:cutting-edge[soft-updates,Soft Updates] 关 现在你就可以看到挂接在 [.filename]#/mnt# 目录下的 [.filename]#/var# 文件系统的快照。 每一样东西都保存的像它创建时的状态一样。 唯一例外的是更早的快照文件将表现为长度为 0 的文件。 用完快照文件之后可以把它卸下,使用: -[source,bash] +[source,shell] .... # umount /mnt # mdconfig -d -u 4 @@ -1760,7 +1760,7 @@ check_quotas="NO" 一旦您配置好了启用配额的系统,可以检查一下它们是真的有用。 可以这样做: -[source,bash] +[source,shell] .... # quota -v .... @@ -1777,7 +1777,7 @@ check_quotas="NO" 下面是一个运行 man:edquota[8] 时看到的例子。当 man:edquota[8] 命令被调用时,会被转移进 `EDITOR` 环境变量指派的编辑 器中,允许编辑配额限制。如果环境变量没有设置,默认在 vi 编辑器上进行。 -[source,bash] +[source,shell] .... # edquota -u test .... @@ -1809,7 +1809,7 @@ to: 有时,在 UIDs 的范围上设置配额限制是非常必要的。这可以通过在 man:edquota[8] 命令后面加上 `-p` 选项来完成。首先, 给用户分配所需要的配额限制,然后运行命令 `edquota -p protouser startuid-enduid`。例如,如果 用户 `test` 已经有了所需要的配额限制,下面的命令 可以被用来复制那些 UIDs 为10,000 到 19,999 的配额限制: -[source,bash] +[source,shell] .... # edquota -p test 10000-19999 .... @@ -1847,7 +1847,7 @@ rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad 现在重启 `inetd`: -[source,bash] +[source,shell] .... # /etc/rc.d/inetd restart .... @@ -1867,7 +1867,7 @@ FreeBSD 提供了极好的数据保护措施,防止未受权的数据访问。 + 配置 gbde 需要超级用户的权力。 + -[source,bash] +[source,shell] .... % su - Password: @@ -1884,7 +1884,7 @@ Password: 重新引导进入新的内核。 . 另一种无需重新编译内核的方法, 是使用 `kldload` 来加载 man:gbde[4]: + -[source,bash] +[source,shell] .... # kldload geom_bde .... @@ -1901,7 +1901,7 @@ Password: + 添加新的硬盘到系统中可以查看在 <<disks-adding>> 中的说明。 这个例子的目的是说明一个新的硬盘分区已经添加到系统中如: [.filename]#/dev/ad4s1c#。在例子中 [.filename]#/dev/ad0s1*# 设备代表系统中存在的标准 FreeBSD 分区。 + -[source,bash] +[source,shell] .... # ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 @@ -1911,7 +1911,7 @@ Password: + . 创建一个目录来保存 gbde Lock 文件 + -[source,bash] +[source,shell] .... # mkdir /etc/gbde .... @@ -1921,7 +1921,7 @@ gbde lock 文件包含了 gbde 需要访问的加密分区的信息。 没有 lo + 一个 gbde 分区在使用前必须被初始化, 这个初始化过程只需要执行一次: + -[source,bash] +[source,shell] .... # gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock .... @@ -1953,14 +1953,14 @@ gbde lock 文件 _必须_ 和加密分区上的内容同时备份。 如果发 + . 把加密分区和内核进行关联 + -[source,bash] +[source,shell] .... # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock .... + 在加密分区的初始化过程中您将被要求提供一个密码短语。 新的加密设备将在 [.filename]#/dev# 中显示为 [.filename]#/dev/device_name.bde#: + -[source,bash] +[source,shell] .... # ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 @@ -1972,7 +1972,7 @@ gbde lock 文件 _必须_ 和加密分区上的内容同时备份。 如果发 + 当加密设备和内核进行关联后, 您就可以使用 man:newfs[8] 在此设备上创建文件系统, 使用 man:newfs[8] 来初始化一个 UFS2 文件系统比初始化一个 UFS1 文件系统还要快,摧荐使用 `-O2` 选项。 + -[source,bash] +[source,shell] .... # newfs -U -O2 /dev/ad4s1c.bde .... @@ -1986,14 +1986,14 @@ man:newfs[8] 命令必须在一个 gbde 分区上执行, 这个分区通过一 + 为加密文件系统创建一个挂接点。 + -[source,bash] +[source,shell] .... # mkdir /private .... + 挂接加密文件系统。 + -[source,bash] +[source,shell] .... # mount /dev/ad4s1c.bde /private .... @@ -2002,7 +2002,7 @@ man:newfs[8] 命令必须在一个 gbde 分区上执行, 这个分区通过一 + 加密的文件系统现在对于 man:df[1] 应该可见并可以使用。 + -[source,bash] +[source,shell] .... % df -H Filesystem Size Used Avail Capacity Mounted on @@ -2024,7 +2024,7 @@ Filesystem Size Used Avail Capacity Mounted on . 关联 gbde 分区到内核 + -[source,bash] +[source,shell] .... # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock .... @@ -2034,14 +2034,14 @@ Filesystem Size Used Avail Capacity Mounted on + 加密文件系统不能列在 [.filename]#/etc/fstab# 文件中进行自动加载, 在加载前必须手动运行 man:fsck[8] 命令对文件系统进行错误检测。 + -[source,bash] +[source,shell] .... # fsck -p -t ffs /dev/ad4s1c.bde .... + . 挂接加密文件系统 + -[source,bash] +[source,shell] .... # mount /dev/ad4s1c.bde /private .... @@ -2072,7 +2072,7 @@ man:gbde[8] 采用 CBC 模式的 128-位 AES 来加密扇区数据。 磁盘上 man:sysinstall[8] 是和 gbde 加密设备不兼容的。 在启动 man:sysinstall[8] 时必须将 [.filename]#*.bde# 设备和内核进行分离,否则在初始化探测设备时将引起冲突。 与加密设备进行分离在我们的例子中使用如下的命令: -[source,bash] +[source,shell] .... # gbde detach /dev/ad4s1c .... @@ -2130,7 +2130,7 @@ man:geli[8] 现在应该已经为内核所支持了。 + 主密钥将由口令字保护, 而密钥文件的数据来源则将是 [.filename]#/dev/random#。 我们称之为 provider 的 [.filename]#/dev/da2.eli# 的扇区尺寸将是 4kB。 + -[source,bash] +[source,shell] .... # dd if=/dev/random of=/root/da2.key bs=64 count=1 # geli init -s 4096 -K /root/da2.key /dev/da2 @@ -2142,14 +2142,14 @@ Reenter new passphrase: + 如果密钥文件写作 "-", 则表示使用标准输入。 下面是关于如何使用多个密钥文件的例子: + -[source,bash] +[source,shell] .... # cat keyfile1 keyfile2 keyfile3 | geli init -K - /dev/da2 .... + . 将 provider 与所生成的密钥关联 + -[source,bash] +[source,shell] .... # geli attach -k /root/da2.key /dev/da2 Enter passphrase: @@ -2157,7 +2157,7 @@ Enter passphrase: + 新的明文设备将被命名为 [.filename]#/dev/da2.eli#。 + -[source,bash] +[source,shell] .... # ls /dev/da2* /dev/da2 /dev/da2.eli @@ -2165,7 +2165,7 @@ Enter passphrase: + . 创建新的文件系统 + -[source,bash] +[source,shell] .... # dd if=/dev/random of=/dev/da2.eli bs=1m # newfs /dev/da2.eli @@ -2174,7 +2174,7 @@ Enter passphrase: + 现在加密的文件系统应该已经可以被 man:df[1] 看到, 并处于可用状态了: + -[source,bash] +[source,shell] .... # df -H Filesystem Size Used Avail Capacity Mounted on @@ -2190,7 +2190,7 @@ Filesystem Size Used Avail Capacity Mounted on + 一旦在加密分区上的工作完成, 并且不再需要 [.filename]#/private# 分区, 就应考虑将其卸下并将 `geli` 加密分区从内核上断开。 + -[source,bash] +[source,shell] .... # umount /private # geli detach da2.eli @@ -2233,7 +2233,7 @@ FreeBSD 提供了易于配置的交换区加密机制。 随所用的 FreeBSD 到目前为止, 交换区仍是未加密的。 很可能其中已经存有明文形式的口令或其他敏感数据。 要纠正这一问题, 首先应使用随机数来覆盖交换分区的数据: -[source,bash] +[source,shell] .... # dd if=/dev/random of=/dev/ad0s1b bs=1m .... @@ -2277,7 +2277,7 @@ geli_swap_flags="-e blowfish -l 128 -s 4096 -d" 如果使用了 man:gbde[8], 则: -[source,bash] +[source,shell] .... % swapinfo Device 1K-blocks Used Avail Capacity @@ -2286,7 +2286,7 @@ Device 1K-blocks Used Avail Capacity 如果使用了 man:geli[8], 则: -[source,bash] +[source,shell] .... % swapinfo Device 1K-blocks Used Avail Capacity @@ -2404,7 +2404,7 @@ resource test { 现在在两个节点上都有同样的配置了, 接下来我们需要创建 HAST 存储池。 在两个节点上分别运行下面的命令来初始化本地此怕, 并启动 man:hastd[8] 服务: -[source,bash] +[source,shell] .... # hastctl create test # /etc/rc.d/hastd onestart @@ -2417,14 +2417,14 @@ _没有_ 办法使用已经包含文件系统的 GEOM 设备来创建存储池 ( HAST 并不负责选择节点的角色 (`主` 或 `从`)。 节点的角色是由管理员手工, 或由类似 Heartbeat 这样的软件通过 man:hastctl[8] 来完成配置的。 在希望成为主节点的系统 (`hasta`) 上运行下面的命令令其成为主节点: -[source,bash] +[source,shell] .... # hastctl role primary test .... 类似地, 用下面的命令来指明从节点 (`hastb`): -[source,bash] +[source,shell] .... # hastctl role secondary test .... @@ -2437,7 +2437,7 @@ HAST 并不负责选择节点的角色 (`主` 或 `从`)。 节点的角色是 接下来, 可以在两个节点上分别用 man:hastctl[8] 工具来验证节点身份是否正确: -[source,bash] +[source,shell] .... # hastctl status test .... @@ -2446,7 +2446,7 @@ HAST 并不负责选择节点的角色 (`主` 或 `从`)。 节点的角色是 最后一步是在 GEOM 设备 [.filename]#/dev/hast/test# 上创建文件系统。 这项工作必须在 `主` 节点上进行 (因为 [.filename]#/dev/hast/test# 只在 `主` 节点上出现), 随硬盘尺寸的不同, 这可能需要花费数分钟的时间: -[source,bash] +[source,shell] .... # newfs -U /dev/hast/test # mkdir /hast/test @@ -2491,7 +2491,7 @@ notify 30 { 为使编辑的配置生效, 需要在两个节点上执行下面的命令: -[source,bash] +[source,shell] .... # /etc/rc.d/devd restart .... @@ -2626,7 +2626,7 @@ HAST 通常都能够无故障地运行, 不过, 和任何其他软件产品 从这种状态中恢复时, 管理员必须决定哪一个节点包含最重要的数据变动 (或者手工合并这些改动) 并让 HAST 进行一次完整的同步操作, 覆盖有问题的那个节点的数据。 要完成这个工作,在有问题的节点上执行下面的命令: -[source,bash] +[source,shell] .... # hastctl role init <resource> # hastctl create <resource> diff --git a/documentation/content/zh-cn/books/handbook/dtrace/_index.adoc b/documentation/content/zh-cn/books/handbook/dtrace/_index.adoc index 316f8fbf28..4d88ba5b81 100644 --- a/documentation/content/zh-cn/books/handbook/dtrace/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/dtrace/_index.adoc @@ -111,7 +111,7 @@ options KDTRACE_FRAME 所有的源代码都必须重新使用 CTF 选项编译安装。重新编译 FreeBSD 源代码可以通过以下的命令完成: -[source,bash] +[source,shell] .... # cd /usr/src @@ -129,14 +129,14 @@ options KDTRACE_FRAME 在使用 DTrace 的功能之前,DTrace 设备必须存在。 使用如下的命令装载此设备: -[source,bash] +[source,shell] .... # kldload dtraceall .... DTrace 支持现在应该可以使用了。 管理员现在可以使用如下的命令查看所有的探测器: -[source,bash] +[source,shell] .... # dtrace -l | more .... @@ -145,7 +145,7 @@ DTrace 支持现在应该可以使用了。 管理员现在可以使用如下的 工具包是实现写好的一堆脚本,与 DTrace 一起运行来收集系统信息。 有脚本用来检查已打开的文件,内存,CPU 使用率和许多东西。使用如下的命令解开脚本: -[source,bash] +[source,shell] .... # gunzip -c DTraceToolkit* | tar xvf - .... @@ -163,7 +163,7 @@ DTrace 支持现在应该可以使用了。 管理员现在可以使用如下的 [.filename]#hotkernel# 被设计成验明哪个函数占用了内核时间。 正常运行的话,它将生成类似以下的输出: -[source,bash] +[source,shell] .... # ./hotkernel Sampling... Hit Ctrl-C to end. @@ -171,7 +171,7 @@ Sampling... Hit Ctrl-C to end. 系统管理员必须使用 kbd:[Ctrl+C] 组合键停止这个进程。 紧接着中止之后,脚本便会一张内核函数与测定时间的列表, 使用增量排序输出: -[source,bash] +[source,shell] .... kernel`_thread_lock_flags 2 0.0% 0xc1097063 2 0.0% @@ -203,7 +203,7 @@ kernel`sched_idletd 137 0.3% 这个脚本也能与内核模块一起工作。要使用此特性, 用 `-m` 标志运行脚本: -[source,bash] +[source,shell] .... # ./hotkernel -m Sampling... Hit Ctrl-C to end. @@ -225,7 +225,7 @@ kernel 874 0.4% [.filename]#procsystime# 脚本捕捉并打印给定 PID 的系统调用时间。 在下面的例子中,新生成了一个 [.filename]#/bin/csh# 实例。[.filename]#procsystime# 执行后则等待在新运行的 `csh` 上键入一些命令。 这是测试的结果: -[source,bash] +[source,shell] .... # ./procsystime -n csh Tracing... Hit Ctrl-C to end... diff --git a/documentation/content/zh-cn/books/handbook/filesystems/_index.adoc b/documentation/content/zh-cn/books/handbook/filesystems/_index.adoc index 4dd2edd1e4..79d92526d5 100644 --- a/documentation/content/zh-cn/books/handbook/filesystems/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/filesystems/_index.adoc @@ -113,7 +113,7 @@ vfs.zfs.vdev.cache.size="5M" FreeBSD 有一种启动机制能在系统初始化时挂载 ZFS 存储池。 可以通过以下的命令设置: -[source,bash] +[source,shell] .... # echo 'zfs_enable="YES"' >> /etc/rc.conf # /etc/rc.d/zfs start @@ -125,14 +125,14 @@ FreeBSD 有一种启动机制能在系统初始化时挂载 ZFS 存储池。 可 在单个磁盘上创建一个简单, 非冗余的 ZFS, 使用 `zpool` 命令: -[source,bash] +[source,shell] .... # zpool create example /dev/da0 .... 可以通过 `df` 的输出查看新的存储池: -[source,bash] +[source,shell] .... # df Filesystem 1K-blocks Used Avail Capacity Mounted on @@ -144,7 +144,7 @@ example 17547136 0 17547136 0 /example 这份输出清楚的表明了 `example` 存储池不仅创建成功而且被 _挂载_ 了。 我们能像访问普通的文件系统那样访问它, 就像以下例子中演示的那样,用户能够在上面创建文件并浏览: -[source,bash] +[source,shell] .... # cd /example # ls @@ -158,7 +158,7 @@ drwxr-xr-x 21 root wheel 512 Aug 29 23:12 .. 遗憾的是这个存储池并没有利用到 ZFS 的任何特性。 在这个存储池上创建一个文件系统,并启用压缩: -[source,bash] +[source,shell] .... # zfs create example/compressed # zfs set compression=gzip example/compressed @@ -168,14 +168,14 @@ drwxr-xr-x 21 root wheel 512 Aug 29 23:12 .. 使用这个命令可以禁用压缩: -[source,bash] +[source,shell] .... # zfs set compression=off example/compressed .... 使用如下的命令卸载这个文件系统,并用 `df` 工具确认: -[source,bash] +[source,shell] .... # zfs umount example/compressed # df @@ -188,7 +188,7 @@ example 17547008 0 17547008 0 /example 重新挂在这个文件系统使之能被访问, 并用 `df` 确认: -[source,bash] +[source,shell] .... # zfs mount example/compressed # df @@ -202,7 +202,7 @@ example/compressed 17547008 0 17547008 0 /example/compressed 存储池与文件系统也可通过 `mount` 的输出查看: -[source,bash] +[source,shell] .... # mount /dev/ad0s1a on / (ufs, local) @@ -215,7 +215,7 @@ example/compressed on /example/compressed (zfs, local) 正如前面所提到的,ZFS 文件系统, 在创建之后就能像普通的文件系统那样使用。然而, 还有很多其他的特性是可用的。在下面的例子中, 我们将创建一个新的文件系统,`data`。 并要在上面存储些重要的文件, 所以文件系统需要被设置成把每一个数据块都保存两份拷贝: -[source,bash] +[source,shell] .... # zfs create example/data # zfs set copies=2 example/data @@ -223,7 +223,7 @@ example/compressed on /example/compressed (zfs, local) 现在可以再次使用 `df` 查看数据和空间的使用状况: -[source,bash] +[source,shell] .... # df Filesystem 1K-blocks Used Avail Capacity Mounted on @@ -237,7 +237,7 @@ example/data 17547008 0 17547008 0 /example/data 请注意存储池上的每一个文件系统都有着相同数量的可用空间。 这就是我们在这些例子中使用 `df` 的原因, 是为了文件系统都是从相同的存储池取得它们所需的空间。 ZFS 去掉了诸如卷和分区此类的概念, 并允许多个文件系统占用同一个存储池。 不再需要文件系统与存储池的时候能像这样销毁它们: -[source,bash] +[source,shell] .... # zfs destroy example/compressed # zfs destroy example/data @@ -250,7 +250,7 @@ example/data 17547008 0 17547008 0 /example/data 正如前文中所提到的,这一章节将假设存在 3 个 SCSI 设备, [.filename]#da0#, [.filename]#da1# 和 [.filename]#da2# (或者 [.filename]#ad0# 和超出此例使用了 IDE 磁盘)。 使用如下的命令创建一个 RAID-Z 存储池: -[source,bash] +[source,shell] .... # zpool create storage raidz da0 da1 da2 .... @@ -262,14 +262,14 @@ Sun(TM) 推荐在一个 RAID-Z 配置中使用的磁盘数量为 3 至 9 块。 zpool `storage` 至此就创建好了。 可以如前文提到的那样使用 man:mount[8] 和 man:df[1] 确认。 如需配给更多的磁盘设备则把它们加这个列表的后面。 在存储池上创建一个叫 `home` 的文件系统, 用户的文件最终都将被保存在上面: -[source,bash] +[source,shell] .... # zfs create storage/home .... 像前文中提到的那样,用户的目录与文件也可启用压缩并保存多份拷贝, 可通过如下的命令完成: -[source,bash] +[source,shell] .... # zfs set copies=2 storage/home # zfs set compression=gzip storage/home @@ -277,7 +277,7 @@ zpool `storage` 至此就创建好了。 可以如前文提到的那样使用 ma 把用户的数据都拷贝过来并创建一个符号链接, 让他们开始使用这个新的目录: -[source,bash] +[source,shell] .... # cp -rp /home/* /storage/home # rm -rf /home /usr/home @@ -289,42 +289,42 @@ zpool `storage` 至此就创建好了。 可以如前文提到的那样使用 ma 尝试创建一个可日后用来回退的快照: -[source,bash] +[source,shell] .... # zfs snapshot storage/home@08-30-08 .... 请注意快照选项将只会抓取一个真实的文件系统, 而不是某个用户目录或文件。`@` 字符为文件系统名或卷名的分隔符。 当用户目录被损坏时,可用如下命令恢复: -[source,bash] +[source,shell] .... # zfs rollback storage/home@08-30-08 .... 获得所有可用快照的列表,可使用 `ls` 命令查看文件系统的 [.filename]#.zfs/snapshot# 目录。例如,执行如下命令来查看之前抓取的快照: -[source,bash] +[source,shell] .... # ls /storage/home/.zfs/snapshot .... 可以编写一个脚本来每月定期抓取用户数据的快照,久而久之, 快照可能消耗掉大量的磁盘空间。 之前创建的快照可用以下命令删除: -[source,bash] +[source,shell] .... # zfs destroy storage/home@08-30-08 .... 在所有这些测试之后,我们没有理由再把 [.filename]#/store/home# 这样放置了。让它称为真正的 [.filename]#/home# 文件系统: -[source,bash] +[source,shell] .... # zfs set mountpoint=/home storage/home .... 使用 `df` 和 `mount` 命令将显示现在系统把我们的文件系统真正当作了 [.filename]#/home#: -[source,bash] +[source,shell] .... # mount /dev/ad0s1a on / (ufs, local) @@ -344,7 +344,7 @@ storage/home 26320512 0 26320512 0 /home 这样就基本完成了 RAID-Z 的配置了。使用夜间 man:periodic[8] 获取有关文件系统创建之类的状态更新, 执行如下的命令: -[source,bash] +[source,shell] .... # echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf .... @@ -353,21 +353,21 @@ storage/home 26320512 0 26320512 0 /home 每一种软 RAID 都有监测它们 `状态` 的方法。 ZFS 也不例外。 可以使用如下的命令查看 RAID-Z 设备: -[source,bash] +[source,shell] .... # zpool status -x .... 如果所有的存储池处于健康状态并且一切正常的话, 将返回如下信息: -[source,bash] +[source,shell] .... all pools are healthy .... 如果存在问题,可能是一个磁盘设备下线了, 那么返回的存储池的状态将看上去是类似这个样子的: -[source,bash] +[source,shell] .... pool: storage state: DEGRADED @@ -391,21 +391,21 @@ errors: No known data errors 在这个例子中,这是由管理员把此设备下线后的状态。 可以使用如下的命令将磁盘下线: -[source,bash] +[source,shell] .... # zpool offline storage da1 .... 现在切断系统电源之后就可以替换下 [.filename]#da1# 了。 当系统再次上线时,使用如下的命令替换磁盘: -[source,bash] +[source,shell] .... # zpool replace storage da1 .... 至此可用不带 `-x` 标志的命令再次检查状态: -[source,bash] +[source,shell] .... # zpool status storage pool: storage @@ -429,21 +429,21 @@ errors: No known data errors 正如前面所提到的,ZFS 使用 `校验和`(checksum) 来检查存储数据的完整性。 这时在文件系统创建时自动启用的,可使用以下的命令禁用: -[source,bash] +[source,shell] .... # zfs set checksum=off storage/home .... 这不是个明智的选择,因为校验和 不仅非常有用而且只需占用少量的存储空间。 并且启用它们也不会明显的消耗过多资源。 启用后就可以让 ZFS 使用校验和校验来检查数据的完整。 这个过程通常称为 "scrubbing"。 可以使用以下的命令检查 `storage` 存储池里数据的完整性: -[source,bash] +[source,shell] .... # zpool scrub storage .... 这个过程需花费相当长的时间,取决于存储的数据量。 而且 I/O 非常密集, 所以在任何时间只能执行一个这样的操作。 在 scrub 完成之后,状态就会被更新, 可使用如下的命令查看: -[source,bash] +[source,shell] .... # zpool status storage pool: storage diff --git a/documentation/content/zh-cn/books/handbook/firewalls/_index.adoc b/documentation/content/zh-cn/books/handbook/firewalls/_index.adoc index 82da4d7355..56f2a8b48c 100644 --- a/documentation/content/zh-cn/books/handbook/firewalls/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/firewalls/_index.adoc @@ -113,7 +113,7 @@ pf_enable="YES" 然后使用启动脚本来加载模块: -[source,bash] +[source,shell] .... # /etc/rc.d/pf start .... @@ -129,7 +129,7 @@ pf_rules="/path/to/pf.conf" PF 模块也可以手工从命令行加载: -[source,bash] +[source,shell] .... # kldload pf.ko .... @@ -143,7 +143,7 @@ pflog_enable="YES" 然后使用启动脚本来加载模块: -[source,bash] +[source,shell] .... # /etc/rc.d/pflog start .... @@ -333,7 +333,7 @@ ipnat_rules="/etc/ipnat.rules" # 用于 ipnat 的规则定义文件 man:ipf[8] 命令可以用来加载您自己的规则文件。 一般情况下, 您可以建立一个包括您自定义的规则的文件, 并使用这个命令来替换掉正在运行的防火墙中的内部规则: -[source,bash] +[source,shell] .... # ipf -Fa -f /etc/ipf.rules .... @@ -358,7 +358,7 @@ man:ipf[8] 命令假定规则文件是一个标准的文本文件。 它不能 默认的 man:ipfstat[8] 命令输出类似于下面的样子: -[source,bash] +[source,shell] .... input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0 output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0 @@ -387,7 +387,7 @@ input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0 输出和下面的类似: -[source,bash] +[source,shell] .... @1 pass out on xl0 from any to any @2 block out on dc0 from any to any @@ -400,7 +400,7 @@ input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0 输出和下面的类似: -[source,bash] +[source,shell] .... 2451423 pass out on xl0 from any to any 354727 block out on dc0 from any to any @@ -433,7 +433,7 @@ ipmon_flags="-Ds" # D = 作为服务程序启动 Syslogd 使用特殊的方法对日志数据进行分类。 它使用称为 "facility" 和 "level" 的组。 以 `-Ds` 模式运行的 IPMON 采用 `local0` 作为默认的 "facility" 名。 如果需要, 可以用下列 levels 来进一步区分数据: -[source,bash] +[source,shell] .... LOG_INFO - 使用 "log" 关键字指定的通过或阻止动作 LOG_NOTICE - 同时记录通过的那些数据包 @@ -443,7 +443,7 @@ LOG_ERR - 进一步记录含不完整的包头的数据包 要设置 IPFILTER 来将所有的数据记录到 [.filename]#/var/log/ipfilter.log#, 需要首先建立这个文件。 下面的命令可以完成这个工作: -[source,bash] +[source,shell] .... # touch /var/log/ipfilter.log .... @@ -533,7 +533,7 @@ EOF 这就是所需的全部内容。 这个规则本身并不重要, 它们主要是用于体现如何使用符号代换字段, 以及如何完成值的替换。 如果上面的例子的名字是 [.filename]#/etc/ipf.rules.script#, 就可以通过输入下面的命令来重新加载规则: -[source,bash] +[source,shell] .... # sh /etc/ipf.rules.script .... @@ -557,7 +557,7 @@ sh /etc/ipf.rules.script 脚本文件必须设置为属于 `root`, 并且属主可读、 可写、 可执行。 + -[source,bash] +[source,shell] .... # chmod 700 /usr/local/etc/rc.d/ipf.loadrules.sh .... @@ -941,28 +941,28 @@ NAT 规则是通过 `ipnat` 命令加载的。 默认情况下, NAT 规则会 要重新加载 NAT 规则, 可以使用类似下面的命令: -[source,bash] +[source,shell] .... # ipnat -CF -f /etc/ipnat.rules .... 如果想要看看您系统上 NAT 的统计信息, 可以用下面的命令: -[source,bash] +[source,shell] .... # ipnat -s .... 要列出当前的 NAT 表的映射关系, 使用下面的命令: -[source,bash] +[source,shell] .... # ipnat -l .... 要显示详细的信息并显示与规则处理和当前的规则/表项: -[source,bash] +[source,shell] .... # ipnat -v .... @@ -1160,7 +1160,7 @@ IPFW 是基本的 FreeBSD 安装的一部分, 以单独的可加载内核模 如果将 `firewall_enable="YES"` 加入到 [.filename]#rc.conf# 中并重新启动系统, 则下列信息将在启动过程中, 以高亮的白色显示出来: -[source,bash] +[source,shell] .... ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to deny, logging disabled .... @@ -1260,49 +1260,49 @@ add deny out 按顺序列出所有的规则: -[source,bash] +[source,shell] .... # ipfw list .... 列出所有的规则, 同时给出最后一次匹配的时间戳: -[source,bash] +[source,shell] .... # ipfw -t list .... 列出所有的记账信息、 匹配规则的包的数量, 以及规则本身。 第一列是规则的编号, 随后是发出包匹配的数量, 进入包的匹配数量, 最后是规则本身。 -[source,bash] +[source,shell] .... # ipfw -a list .... 列出所有的动态规则和静态规则: -[source,bash] +[source,shell] .... # ipfw -d list .... 同时显示已过期的动态规则: -[source,bash] +[source,shell] .... # ipfw -d -e list .... 将计数器清零: -[source,bash] +[source,shell] .... # ipfw zero .... 只把规则号为 _NUM_ 的计数器清零: -[source,bash] +[source,shell] .... # ipfw zero NUM .... @@ -1466,7 +1466,7 @@ $cmd 00611 allow udp from any to $odns 53 out via $oif $ks 如果把上面的例子保存到 [.filename]#/etc/ipfw.rules# 文件中。 下面的命令来会重新加载规则。 -[source,bash] +[source,shell] .... # sh /etc/ipfw.rules .... @@ -1475,7 +1475,7 @@ $cmd 00611 allow udp from any to $odns 53 out via $oif $ks 也可以手工执行下面的命令来达到类似的目的: -[source,bash] +[source,shell] .... # ipfw -q -f flush # ipfw -q add check-state diff --git a/documentation/content/zh-cn/books/handbook/geom/_index.adoc b/documentation/content/zh-cn/books/handbook/geom/_index.adoc index f8f0c1bdae..7f48a3e3d7 100644 --- a/documentation/content/zh-cn/books/handbook/geom/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/geom/_index.adoc @@ -84,21 +84,21 @@ image::striping.png[磁盘条带图] . 加载 [.filename]#geom_stripe.ko# 模块: + -[source,bash] +[source,shell] .... # kldload geom_stripe .... + . 确信存在合适的挂接点 (mount point)。 如果这个卷将成为根分区, 那么暂时把它挂接到其他位置i, 如 [.filename]#/mnt#: + -[source,bash] +[source,shell] .... # mkdir /mnt .... + . 确定将被做成条带卷的磁盘的设备名, 并创建新的条带设备。 举例而言, 要将两个未用的、 尚未分区的 ATA 磁盘 [.filename]#/dev/ad2# 和 [.filename]#/dev/ad3# 做成一个条带设备: + -[source,bash] +[source,shell] .... # gstripe label -v st0 /dev/ad2 /dev/ad3 Metadata value stored on /dev/ad2. @@ -108,14 +108,14 @@ Done. + . 接着需要写标准的 label, 也就是通常所说的分区表到新卷上, 并安装标准的引导代码: + -[source,bash] +[source,shell] .... # bsdlabel -wB /dev/stripe/st0 .... + . 上述过程将在 [.filename]#/dev/stripe# 目录中的 [.filename]#st0# 设备基础上建立两个新设备。 这包括 [.filename]#st0a# 和 [.filename]#st0c#。 这时, 就可以在 [.filename]#st0a# 设备上用下述 `newfs` 命令来建立文件系统了: + -[source,bash] +[source,shell] .... # newfs -U /dev/stripe/st0a .... @@ -125,14 +125,14 @@ Done. 要挂接刚创建的条带盘: -[source,bash] +[source,shell] .... # mount /dev/stripe/st0a /mnt .... 要在启动过程中自动挂接这个条带上的文件系统, 需要把关于卷的信息放到 [.filename]#/etc/fstab# 文件中。为达到此目的, 需要创建一个叫 [.filename]#stripe# 的永久的挂载点: -[source,bash] +[source,shell] .... # mkdir /stripe # echo "/dev/stripe/st0a /stripe ufs rw 2 2" \ @@ -141,7 +141,7 @@ Done. 此外, [.filename]#geom_stripe.ko# 模块也必须通过在 [.filename]#/boot/loader.conf# 中增加下述设置, 以便在系统初始化过程中自动加载: -[source,bash] +[source,shell] .... # echo 'geom_stripe_load="YES"' >> /boot/loader.conf .... @@ -159,7 +159,7 @@ Done. 在开始构建镜像卷之前, 可以启用更多的调试信息, 并应开放对设备的完全访问。 这可以通过将 man:sysctl[8] 变量 `kern.geom.debugflags` 设置为下面的值来实现: -[source,bash] +[source,shell] .... # sysctl kern.geom.debugflags=17 .... @@ -172,14 +172,14 @@ Done. 在引导用的设备基础上新建镜像时, 有可能会导致保存在磁盘上最后一个扇区的数据丢失。 在新安装 FreeBSD 之后立即创建镜像可以减低此风险。 下面的操作与默认的 FreeBSD 9._X_ 安装过程不兼容, 因为它采用了新的 GPT 分区格式。 GEOM 会覆盖 GPT 元数据, 这会导致数据丢失, 并有可能导致系统无法引导。 ==== -[source,bash] +[source,shell] .... # gmirror label -vb round-robin gm0 /dev/da0 .... 系统应给出下面的回应: -[source,bash] +[source,shell] .... Metadata value stored on /dev/da0. Done. @@ -187,7 +187,7 @@ Done. 初始化 GEOM, 这步操作会加载内核模块 [.filename]#/boot/kernel/geom_mirror.ko#: -[source,bash] +[source,shell] .... # gmirror load .... @@ -199,7 +199,7 @@ Done. 配置在系统初始化过程中自动加载 [.filename]#geom_mirror.ko#: -[source,bash] +[source,shell] .... # echo 'geom_mirror_load="YES"' >> /boot/loader.conf .... @@ -210,7 +210,7 @@ Done. ==== 如果 man:vi[1] 是你喜欢的编辑器, 以下则是完成此项任务的一个简便方法: -[source,bash] +[source,shell] .... # vi /etc/fstab .... @@ -234,14 +234,14 @@ Done. 重启系统: -[source,bash] +[source,shell] .... # shutdown -r now .... 在系统初始化过程中, 新建的 [.filename]#gm0# 会代替 [.filename]#da0# 设备工作。 系统完成初始化之后, 可以通过检查 `mount` 命令的输出来查看效果: -[source,bash] +[source,shell] .... # mount Filesystem 1K-blocks Used Avail Capacity Mounted on @@ -255,21 +255,21 @@ devfs 1 1 0 100% /var/named/dev 这个输出是正常的。 最后, 使用下面的命令将 [.filename]#da1# 磁盘加到镜像卷中, 以开始同步过程: -[source,bash] +[source,shell] .... # gmirror insert gm0 /dev/da1 .... 在构建镜像卷的过程中, 可以用下面的命令查看状态: -[source,bash] +[source,shell] .... # gmirror status .... 一旦镜像卷的构建操作完成, 这个命令的输出就会变成这样: -[source,bash] +[source,shell] .... Name Status Components mirror/gm0 COMPLETE da0 @@ -293,7 +293,7 @@ mountroot> 这种情况应使用电源或复位按钮重启机器。 在引导菜单中, 选择第六 (6) 个选项。 这将让系统进入 man:loader[8] 提示符。 在此处手工加载内核模块: -[source,bash] +[source,shell] .... OK? load geom_mirror OK? boot @@ -314,12 +314,12 @@ options GEOM_MIRROR 考虑前面的 RAID1 配置, 假设 [.filename]#da1# 出现了故障并需要替换, 要替换它, 首先确定哪个磁盘出现了故障, 并关闭系统。 此时, 可以用换上新的磁盘, 并重新启动系统。 这之后可以用下面的命令来完成磁盘的替换操作: -[source,bash] +[source,shell] .... # gmirror forget gm0 .... -[source,bash] +[source,shell] .... # gmirror insert gm0 /dev/da1 .... @@ -347,28 +347,28 @@ RAID3 是一种将多个磁盘组成一个卷的技术, 在这个配置中包 . 首先, 在引导加载器中用下面的命令加载 [.filename]#geom_raid3.ko# 内核模块: + -[source,bash] +[source,shell] .... # graid3 load .... + 此外, 也可以通过命令行手工加载 [.filename]#geom_raid3.ko# 模块: + -[source,bash] +[source,shell] .... # kldload geom_raid3.ko .... + . 创建用于挂载卷的挂点目录: + -[source,bash] +[source,shell] .... # mkdir /multimedia/ .... + . 确定将要加入阵列的磁盘设备名, 并创建新的 RAID3 设备。 最终, 这个设备将代表整个阵列。 下面的例子使用三个未经分区的 ATA 磁盘: [.filename]#ada1# 和 [.filename]#ada2# 保存数据, 而 [.filename]#ada3# 用于校验。 + -[source,bash] +[source,shell] .... # graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3 Metadata value stored on /dev/ada1. @@ -379,7 +379,7 @@ Done. + . 为新建的 [.filename]#gr0# 设备分区, 并在其上创建 UFS 文件系统: + -[source,bash] +[source,shell] .... # gpart create -s GPT /dev/raid3/gr0 # gpart add -t freebsd-ufs /dev/raid3/gr0 @@ -389,7 +389,7 @@ Done. 屏幕上会滚过许多数字, 这个过程需要一段时间才能完成。 此后, 您就完成了创建卷的全部操作, 可以挂载它了。 . 最后一步是挂载文件系统: + -[source,bash] +[source,shell] .... # mount /dev/raid3/gr0p1 /multimedia/ .... @@ -432,14 +432,14 @@ geom_raid3_load="YES" 要导出这个设备, 首先请确认它没有被挂接, 然后是启动 man:ggated[8] 服务: -[source,bash] +[source,shell] .... # ggated .... 现在我们将在客户机上 `mount` 该设备, 使用下面的命令: -[source,bash] +[source,shell] .... # ggatec create -o rw 192.168.1.1 /dev/da0s4d ggate0 @@ -477,7 +477,7 @@ ggate0 要为一个 UFS2 文件系统创建永久性标签, 而不破坏其上的数据,可以使用下面的命令: -[source,bash] +[source,shell] .... # tunefs -L home /dev/da3 .... @@ -502,7 +502,7 @@ ggate0 现在可以像平时一样挂接文件系统了: -[source,bash] +[source,shell] .... # mount /home .... @@ -513,7 +513,7 @@ ggate0 下列命令可以清除标签: -[source,bash] +[source,shell] .... # glabel destroy home .... @@ -527,7 +527,7 @@ ggate0 重启系统,在 man:loader[8] 提示符下键入 kbd:[4] 启动到单用户模式。 然后输入以下的命令: -[source,bash] +[source,shell] .... # glabel label rootfs /dev/ad0s1a GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs @@ -556,7 +556,7 @@ GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap 现在可以重启系统了。 如果一切顺利的话, 系统可以正常启动并且 `mount` 命令显示: -[source,bash] +[source,shell] .... # mount /dev/label/rootfs on / (ufs, local) @@ -570,7 +570,7 @@ devfs on /dev (devfs, local) 从 FreeBSD 7.2 开始, man:glabel[8] class 新增了一种用于 UFS 文件系统唯一标识符, `ufsid` 的标签支持。 这些标签可以在 [.filename]#/dev/ufsid# 目录中找到, 它们会在系统引导时自动创建。 在 [.filename]#/etc/fstab# 机制中, 也可以使用 `ufsid` 标签。 您可以使用 `glabel status` 命令来获得与文件系统对应的 `ufsid` 标签列表: -[source,bash] +[source,shell] .... % glabel status Name Status Components @@ -622,7 +622,7 @@ options GEOM_JOURNAL 现在, 可以为空闲的文件系统创建日志了。 对于新增的 SCSI 磁盘 [.filename]#da4#, 具体的操作步骤为: -[source,bash] +[source,shell] .... # gjournal load # gjournal label /dev/da4 @@ -630,7 +630,7 @@ options GEOM_JOURNAL 这样, 就会出现一个与 [.filename]#/dev/da4# 设备节点对应的 [.filename]#/dev/da4.journal# 设备节点。 接下来, 可以在这个设备上建立文件系统: -[source,bash] +[source,shell] .... # newfs -O 2 -J /dev/da4.journal .... @@ -639,7 +639,7 @@ options GEOM_JOURNAL 然后就可以用 `mount` 命令来挂接设备了: -[source,bash] +[source,shell] .... # mount /dev/da4.journal /mnt .... diff --git a/documentation/content/zh-cn/books/handbook/install/_index.adoc b/documentation/content/zh-cn/books/handbook/install/_index.adoc index 29552bb942..70e652e803 100644 --- a/documentation/content/zh-cn/books/handbook/install/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/install/_index.adoc @@ -305,7 +305,7 @@ FreeBSD 的安装过程开始于将您的电脑开机进入 FreeBSD 安装环境 + 设置 `kern.geom.debugflags` sysctl 为允许写入目标设备的主引导记录。 + -[source,bash] +[source,shell] .... # sysctl kern.geom.debugflags=16 .... @@ -314,7 +314,7 @@ FreeBSD 的安装过程开始于将您的电脑开机进入 FreeBSD 安装环境 + [.filename]#.img# 文件 _不是_ 直接复制到记忆棒中的那种普通文件。 这个映像是一份包含启动盘全部内容的映像。 这意味着简单地从一个地方复制到另一个地方是 _不能_ 赋予其引导系统的能力的。 您必须使用 man:dd[1] 将映像文件直接写入磁盘: + -[source,bash,subs="attributes"] +[source,shell,subs="attributes"] .... # dd if=FreeBSD-{rel120-current}-RELEASE-i386-memstick.img of=/dev/da0 bs=64k .... @@ -358,7 +358,7 @@ FreeBSD 的安装过程开始于将您的电脑开机进入 FreeBSD 安装环境 + 如果您使用的是光盘,假设光盘的驱动器符号为 [.filename]#E:#,那么请执行下面的命令: + -[source,bash] +[source,shell] .... E:\> tools\fdimage floppies\boot.flp A: .... @@ -367,7 +367,7 @@ E:\> tools\fdimage floppies\boot.flp A: + 如果您在 UNIX(R) 系统上制作软盘(例如其它 FreeBSD 机器), 您可以使用 man:dd[1] 命令来将映像文件写到软盘中。 如果您用 FreeBSD,可以执行下面的命令: + -[source,bash] +[source,shell] .... # dd if=boot.flp of=/dev/fd0 .... @@ -429,7 +429,7 @@ We can take no responsibility for lost disk contents! . FreeBSD 即将启动。如果您是从光盘引导, 您会见到类似下面的画面: + -[source,bash] +[source,shell] .... Booting from CD-Rom... 645MB medium detected @@ -456,7 +456,7 @@ Loading /boot/defaults/loader.conf + 如果您从软盘启动, 则应看到类似下面的画面: + -[source,bash] +[source,shell] .... Booting from Floppy... Uncompressing ... done @@ -491,7 +491,7 @@ image::boot-loader-menu.png[] 要完成这项工作,首先需要重启系统,并等待出现引导消息。 具体的信息取决于您使用的型号,不过它应该会是类似下面这样: -[source,bash] +[source,shell] .... Sun Blade 100 (UltraSPARC-IIe), Keyboard Present Copyright 1998-2001 Sun Microsystems, Inc. All rights reserved. @@ -501,7 +501,7 @@ Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4. 如果您的系统此时开始了从硬盘引导的过程,则需要按下 kbd:[L1+A] 或 kbd:[Stop+A], 或者在串口控制台上发送 `BREAK` (例如, 在 man:tip[1] 或 man:cu[1] 中是 `~#`) 以便进入 PROM 提示符。 它应该是类似下面这样: -[source,bash] +[source,shell] .... ok <.> ok {0} <.> @@ -525,7 +525,7 @@ ok {0} <.> [[install-dev-probe]] .典型的设备探测结果 -[source,bash] +[source,shell] .... avail memory = 253050880 (247120K bytes) Preloaded elf kernel "kernel" at 0xc0817000. @@ -610,7 +610,7 @@ image::sysinstall-exit.png[] 在主界面使用方向键选择 [.guimenuitem]#Exit Install# 您会看到 如下的信息: -[source,bash] +[source,shell] .... User Confirmation Requested Are you sure you wish to exit? The system will reboot @@ -753,7 +753,7 @@ Fred 用了这新版本几天后,觉得它很适合用在工程部门... 是 当您在 sysinstall 主菜单选择使用标准安装后,您会看到下面的信息: -[source,bash] +[source,shell] .... Message In the next menu, you will need to set up a DOS-style ("fdisk") @@ -918,7 +918,7 @@ kbd:[Tab] 键可以在您最后选择的硬盘、 btn:[OK] 以及 btn:[Cancel] 分区的配置完成后,您可以用sysinstall. 来建立它们了。您会看到下面的信息: -[source,bash] +[source,shell] .... Message Now, you need to create BSD partitions inside of the fdisk @@ -1018,7 +1018,7 @@ image::dist-set.png[] 安装程序并不会检查您是否有足够的硬盘空间, 在选择这一项之前请先确定您有足够的硬盘空间。 目前 FreeBSD {rel120-current} 版本中, FreeBSD Ports Collection 大约占用 {ports-size} 大小的硬盘空间。 对于近期的版本您可能需要更多一些空间来安装他们。 -[source,bash] +[source,shell] .... User Confirmation Requested Would you like to install the FreeBSD Ports Collection? @@ -1087,7 +1087,7 @@ FTP 透过 HTTP 代理服务器: [.guimenuitem]#透过HTTP代理服务器, 到此为止,可以开始进行安装了, 这也是您避免更动到您的硬盘的最后机会。 -[source,bash] +[source,shell] .... User Confirmation Requested Last Chance! Are you SURE you want to continue the installation? @@ -1106,7 +1106,7 @@ FTP 透过 HTTP 代理服务器: [.guimenuitem]#透过HTTP代理服务器, 当您看到下面的信息表示已经安装完成了: -[source,bash] +[source,shell] .... Message @@ -1127,7 +1127,7 @@ do so by typing: /usr/sbin/sysinstall. 选择 btn:[no] 然后按 kbd:[Enter] 会取消安装,不会对您的系统造成更动。您会看到下面的信息: -[source,bash] +[source,shell] .... Message Installation complete with some errors. You may wish to scroll @@ -1152,7 +1152,7 @@ installation menus to retry whichever operations have failed. 如果想更多的了解网卡或将FreeBSD配置为网关或路由器,请参考 crossref:advanced-networking[advanced-networking,Advanced Networking] 的相关文章。 -[source,bash] +[source,shell] .... User Confirmation Requested Would you like to configure any Ethernet or PPP network devices? @@ -1168,7 +1168,7 @@ image::ed0-conf.png[] 用方向键选择您要配置的网卡接口,然后按kbd:[Enter]。 -[source,bash] +[source,shell] .... User Confirmation Requested Do you want to try IPv6 configuration of the interface? @@ -1180,7 +1180,7 @@ image::ed0-conf.png[] 如果想试试新的IP通信协议 IPv6 , 使用 RA 服务,请选择 btn:[yes] 然后按 kbd:[Enter]。 寻找 RA 服务器将会花费几秒的时间。 -[source,bash] +[source,shell] .... User Confirmation Requested Do you want to try DHCP configuration of the interface? @@ -1223,7 +1223,7 @@ ifconfig 额外参数设定:: 使用 kbd:[Tab] 键选择 btn:[OK]然后按 kbd:[Enter]键。 -[source,bash] +[source,shell] .... User Confirmation Requested Would you like to bring the ed0 interface up right now? @@ -1236,7 +1236,7 @@ ifconfig 额外参数设定:: [[gateway]] === 配置网关 -[source,bash] +[source,shell] .... User Confirmation Requested Do you want this machine to function as a network gateway? @@ -1249,7 +1249,7 @@ ifconfig 额外参数设定:: [[inetd-services]] === 配置网络服务 -[source,bash] +[source,shell] .... User Confirmation Requested Do you want to configure inetd and the network services that it provides? @@ -1263,7 +1263,7 @@ Do you want to configure inetd and the network services that it provides? 如果您想现在就配置这些网络服务,请选择 btn:[yes], 然后会看到下面的信息: -[source,bash] +[source,shell] .... User Confirmation Requested The Internet Super Server (inetd) allows a number of simple Internet @@ -1278,7 +1278,7 @@ With this in mind, do you wish to enable inetd? 选择 btn:[yes] 继续。 -[source,bash] +[source,shell] .... User Confirmation Requested inetd(8) relies on its configuration file, /etc/inetd.conf, to determine @@ -1305,7 +1305,7 @@ image::edit-inetd-conf.png[] [[ssh-login]] === 启用 SSH 登录 -[source,bash] +[source,shell] .... User Confirmation Requested Would you like to enable SSH login? @@ -1317,7 +1317,7 @@ image::edit-inetd-conf.png[] [[ftpanon]] === 匿名 FTP -[source,bash] +[source,shell] .... User Confirmation Requested Do you want to have anonymous FTP access to this machine? @@ -1337,7 +1337,7 @@ image::edit-inetd-conf.png[] 要启用FTP匿名访问,用方向键选择 btn:[yes] 并按 kbd:[Enter]键。 系统会给出进一步的确认信息: -[source,bash] +[source,shell] .... User Confirmation Requested Anonymous FTP permits un-authenticated users to connect to the system @@ -1385,7 +1385,7 @@ Upload Subdirectory:: 当您对一切配置都满意后,请按 kbd:[Enter] 键继续。 -[source,bash] +[source,shell] .... User Confirmation Requested Create a welcome message file for anonymous FTP users? @@ -1411,7 +1411,7 @@ image::ftp-anon2.png[] [[nsf-server-options]] ==== NFS 服务器 -[source,bash] +[source,shell] .... User Confirmation Requested Do you want to configure this machine as an NFS server? @@ -1423,7 +1423,7 @@ image::ftp-anon2.png[] 如果您选择 btn:[yes] 将会出现一个对话框提醒您必须先建立一个 [.filename]#exports# 文件。 -[source,bash] +[source,shell] .... Message Operating as an NFS server means that you must first configure an @@ -1448,7 +1448,7 @@ image::nfs-server-edit.png[] NFS 客户端允许您的机器访问NFS服务器。 -[source,bash] +[source,shell] .... User Confirmation Requested Do you want to configure this machine as an NFS client? @@ -1463,7 +1463,7 @@ NFS 客户端允许您的机器访问NFS服务器。 系统提供了几个选项可以让您配置终端的表现方式。 -[source,bash] +[source,shell] .... User Confirmation Requested Would you like to customize your system console settings? @@ -1506,7 +1506,7 @@ image::console-saver4.png[] 例子中假设此台机器位于美国东部的时区。 请参考您所在的地理位置来配置。 -[source,bash] +[source,shell] .... User Confirmation Requested Would you like to set this machine's time zone now? @@ -1516,7 +1516,7 @@ image::console-saver4.png[] 选择 btn:[yes] 并按下 kbd:[Enter]键以配置时区。 -[source,bash] +[source,shell] .... User Confirmation Requested Is this machine's CMOS clock set to UTC? If it is set to local time @@ -1545,7 +1545,7 @@ image::timezone3.png[] 选择您所在的时区然后按 kbd:[Enter]。 -[source,bash] +[source,shell] .... Confirmation Does the abbreviation 'EDT' look reasonable? @@ -1563,7 +1563,7 @@ image::timezone3.png[] 这节内容只适用于 FreeBSD 7.X 安装过程, 如果您安装的是 FreeBSD 8.X 或更高版本, 系统不会给出这个提示。 ==== -[source,bash] +[source,shell] .... User Confirmation Requested Would you like to enable Linux binary compatibility? @@ -1580,7 +1580,7 @@ image::timezone3.png[] 此选项可以让您在终端上使用三键鼠标剪贴文字。 如果您用的鼠标是两个按钮,请参考手册 man:moused[8]; 以取得有关模拟三键鼠标的信息。范例中使用的鼠标不是USB接口。 (例如ps/2或com接口的鼠标): -[source,bash] +[source,shell] .... User Confirmation Requested Does this system have a PS/2, serial, or bus mouse? @@ -1635,7 +1635,7 @@ Package 是事先编译好的二进制文件, 因此, 这是安装软件的 在这里作为例子我们将给出安装一个 package 所需的过程。 如果需要, 还可以在这一阶段加入其他 package。 安装完成之后, `sysinstall` 依然可以用来安装其他 package。 -[source,bash] +[source,shell] .... User Confirmation Requested The FreeBSD package collection is a collection of hundreds of @@ -1688,7 +1688,7 @@ image::pkg-confirm.png[] 在安装系统的过程中, 您应添加至少一个用户, 以避免直接以 `root` 用户的身份登录。 用以保存其用户数据的根分区通常很小, 因此用 `root` 身份运行程序可能将其迅速填满。 下面的提示信息介绍了这样做可能带来的更大隐患: -[source,bash] +[source,shell] .... User Confirmation Requested Would you like to add any initial user accounts to the system? Adding @@ -1754,7 +1754,7 @@ image::adduser3.png[] [[rootpass]] === 设置 `root` 密码 -[source,bash] +[source,shell] .... Message Now you must set the system manager's password. @@ -1769,7 +1769,7 @@ image::adduser3.png[] 密码必须正确地输入两次。 毋庸讳言, 您需要选择一个不容易忘记的口令。 请注意您输入的口令不会回显, 也不会显示星号。 -[source,bash] +[source,shell] .... New password: Retype new password : @@ -1782,7 +1782,7 @@ Retype new password : 如果您需要设置 <<network-services,其他网络设备>>, 或需要完成其他的配置工作, 可以在此时或者事后通过 `sysinstall` 来进行配置。 -[source,bash] +[source,shell] .... User Confirmation Requested Visit the general configuration menu for a chance to set any last @@ -1799,7 +1799,7 @@ image::mainexit.png[] 选择 btn:[X Exit Install] 然后键入 kbd:[Enter]。您可能需要确认是否真的退出安装: -[source,bash] +[source,shell] .... User Confirmation Requested Are you sure you wish to exit? The system will reboot. @@ -1809,7 +1809,7 @@ image::mainexit.png[] 选择 btn:[yes]。 如果您是从 CDROM 引导的系统, 则会出现下面的提示信息要求您取出光盘: -[source,bash] +[source,shell] .... Message Be sure to remove the media from the drive. @@ -1841,7 +1841,7 @@ image::net-config-menu1.png[] 下一行是 [.guimenuitem]#AMD Flags# 的参数选项。 选择它之后,会弹出一个让您选择 AMD 参数的子菜单。 菜单中包含一系列的选项: -[source,bash] +[source,shell] .... -a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map .... @@ -1912,7 +1912,7 @@ man:rpcbind[8], man:rpc.statd[8] 和 man:rpc.lockd[8] 这三个程序是用来 典型的启动信息:(忽略版本信息) -[source,bash] +[source,shell] .... Copyright (c) 1992-2002 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 @@ -2051,7 +2051,7 @@ Password: 正确的关闭操作系统是很重要的。不要仅仅关闭电源。 首先,您需要成为一个超级用户,通过键入 `su` 命令来实现。然后输入 `root` 密码。这需要用户是 `wheel` 组的一名成员。然后, 以``root``键入 ``shutdown -h now``命令。 -[source,bash] +[source,shell] .... The operating system has halted. Please press any key to reboot. @@ -2103,7 +2103,7 @@ FreeBSD 可以支持基于 MS-DOS(R) 的文件系统 (有时被称为 FAT 文 一个使用 man:mount[8] 挂载 MS-DOS(R) 文件系统的例子: -[source,bash] +[source,shell] .... # mount -t msdosfs /dev/ad0s1 /mnt .... @@ -2123,7 +2123,7 @@ NTFS 分区也可以通过类似 man:mount_ntfs[8] 命令挂接在FreeBSD上。 FreeBSD 在启动过程中广泛使用了 i386、 amd64 及 ia64 平台提供的 ACPI 服务来检测系统配置。 不幸的是, 在 ACPI 驱动和主板 BIOS 中存在一些 bug。 如果遇到这种情况, 可以在系统引导时禁用 ACPI, 其方法是在第三阶段引导加载器时使用 hint `hint.acpi.0.disabled`: -[source,bash] +[source,shell] .... set hint.acpi.0.disabled="1" .... @@ -2140,7 +2140,7 @@ FreeBSD 在启动过程中广泛使用了 i386、 amd64 及 ia64 平台提供的 FreeBSD 位于 BIOS 磁盘 1, 其类型是 `ad` 而 FreeBSD 磁盘编号则是 2, 因此, 您应输入: -[source,bash] +[source,shell] .... 1:ad(2,a)kernel .... @@ -2149,7 +2149,7 @@ FreeBSD 位于 BIOS 磁盘 1, 其类型是 `ad` 而 FreeBSD 磁盘编号则是 第二种情况是从 SCSI 磁盘启动,但系统中安装了一个或多个 IDE 硬盘。这时,FreeBSD 磁盘编号会比 BIOS 磁盘编号小。如果您有两块 IDE 硬盘, 以及一块 SCSI 硬盘,则 SCSI 硬盘将会是 BIOS 磁盘 2, 类型为 `da` 而 FreeBSD 磁盘编号是 0, 因此, 您应输入: -[source,bash] +[source,shell] .... 2:da(0,a)kernel .... @@ -2200,7 +2200,7 @@ FreeBSD 位于 BIOS 磁盘 1, 其类型是 `ad` 而 FreeBSD 磁盘编号则是 + 如果使用刚刚制作的 USB 记忆棒引导系统, 则 FreeBSD 会进入正常的安装模式。 我们希望引导到串口控制台来完成安装。 为了做到这一点, 需要在 FreeBSD 中使用 man:mount[8] 挂载 USB 盘。 + -[source,bash] +[source,shell] .... # mount /dev/da0a /mnt .... @@ -2212,14 +2212,14 @@ FreeBSD 位于 BIOS 磁盘 1, 其类型是 `ad` 而 FreeBSD 磁盘编号则是 + 现在挂好了记忆棒, 您需要对其进行配置令其进入串口控制台。 为此, 需要在 USB 记忆棒中的 [.filename]#loader.conf# 文件中加入下面的这行配置: + -[source,bash] +[source,shell] .... # echo 'console="comconsole"' >> /mnt/boot/loader.conf .... + 这样就完成了对 USB 记忆棒的配置, 您应使用 man:umount[8] 命令将其卸下: + -[source,bash] +[source,shell] .... # umount /mnt .... @@ -2231,7 +2231,7 @@ FreeBSD 位于 BIOS 磁盘 1, 其类型是 `ad` 而 FreeBSD 磁盘编号则是 + 在保存例如 [.filename]#FreeBSD-8.1-RELEASE-i386-disc1.iso# ISO 的 FreeBSD 系统上用 man:tar[1] 工具提取全部文件: + -[source,bash] +[source,shell] .... # mkdir /path/to/headless-iso # tar -C /path/to/headless-iso -pxvf FreeBSD-8.1-RELEASE-i386-disc1.iso @@ -2239,14 +2239,14 @@ FreeBSD 位于 BIOS 磁盘 1, 其类型是 `ad` 而 FreeBSD 磁盘编号则是 + 接下来需要对其进行配置令其进入串口控制台。 为此, 需要在从 ISO 映像中提取的 [.filename]#loader.conf# 文件中加入下面的这行配置: + -[source,bash] +[source,shell] .... # echo 'console="comconsole"' >> /path/to/headless-iso/boot/loader.conf .... + 最后, 从修改好的目录树中创建新的 ISO 映像。 这里我们使用通过 package:sysutils/cdrtools[] port 安装的 man:mkisofs[8] 工具来完成: + -[source,bash] +[source,shell] .... # mkisofs -v -b boot/cdboot -no-emul-boot -r -J -V "Headless_install" \ -o Headless-FreeBSD-8.1-RELEASE-i386-disc1.iso /path/to/headless-iso @@ -2263,14 +2263,14 @@ FreeBSD 位于 BIOS 磁盘 1, 其类型是 `ad` 而 FreeBSD 磁盘编号则是 + 现在您已经通过man:cu[1]连接到了那台机器。 + -[source,bash] +[source,shell] .... # cu -l /dev/cuau0 .... + 在 FreeBSD 7.X 上应使用下面的命令: + -[source,bash] +[source,shell] .... # cu -l /dev/cuad0 .... @@ -2374,7 +2374,7 @@ FreeBSD 光盘的布局和 FTP 站点相同。 这样, 建立局域网 FTP 站 . 在要作为FTP站点的那台FreeBSD机器上, 确定FreeBSD磁盘放入光驱中并将它挂在 [.filename]#/cdrom# 目录中。 + -[source,bash] +[source,shell] .... # mount /cdrom .... @@ -2412,7 +2412,7 @@ _不要_ 指望厂家的预先格式化! 最好还是亲自进行格式化。 如果您在另外一台FreeBSD的机器上做了启动盘的话, 进行格式化是一个不错的主意。 虽然您不需要把每张盘都做成DOS文件系统。您也可以使用 `bsdlabel` 和 `newfs` 命令来创建一个UFS文件系统,具体操作按下面的顺序进行: -[source,bash] +[source,shell] .... # fdformat -f 1440 fd0.1440 # bsdlabel -w fd0.1440 floppy3 @@ -2435,7 +2435,7 @@ _不要_ 指望厂家的预先格式化! 最好还是亲自进行格式化。 如果从 MS-DOS(R) 分区安装, 您需要将发布文件复制到该分区根目录下的 [.filename]#freebsd# 目录中。 例如: [.filename]#c:\freebsd#。 您必须复制一部分 CDROM 或 FTP 上的目录结构, 因此, 如果您从光盘进行复制, 建议使用 DOS 的 `xcopy` 命令。 下面是准备进行 FreeBSD 最小系统安装的例子: -[source,bash] +[source,shell] .... C:\> md c:\freebsd C:\> xcopy e:\bin c:\freebsd\bin\ /s @@ -2452,7 +2452,7 @@ C:\> xcopy e:\manpages c:\freebsd\manpages\ /s 从磁带安装也许是最简单的方式, 比在线使用 FTP 安装或使用 CDROM 还快。安装的程序假设是简单地被压缩在磁带上。 在您得到所有配置文件后,简单地解开它们,用下面的命令: -[source,bash] +[source,shell] .... # cd /freebsd/distdir # tar cvf /dev/rwt0 dist1 ... dist2 diff --git a/documentation/content/zh-cn/books/handbook/jails/_index.adoc b/documentation/content/zh-cn/books/handbook/jails/_index.adoc index 29f8267796..3fcd136ce6 100644 --- a/documentation/content/zh-cn/books/handbook/jails/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/jails/_index.adoc @@ -111,7 +111,7 @@ jail 具有以下四项特点: 一些系统管理员喜欢将 jail 分为两类: "完整的" jail, 通常包含真正的 FreeBSD 系统, 以及 "服务" jail, 专用于执行一个可能使用特权的应用或服务。 这只是一种概念上的区分, 并不影响如何建立 jail 的过程。 在联机手册 man:jail[8] 中对如何创建 jail 进行了清晰的阐述: -[source,bash] +[source,shell] .... # setenv D /here/is/the/jail # mkdir -p $D <.> @@ -173,7 +173,7 @@ jail_www_devfs_ruleset="www_ruleset" # 在 jail 中应用的devfs 规则集 [.filename]#/etc/rc.d/jail# 脚本也可以用于手工启动或停止 [.filename]#rc.conf# 中配置的 jail: -[source,bash] +[source,shell] .... # /etc/rc.d/jail start www # /etc/rc.d/jail stop www @@ -181,7 +181,7 @@ jail_www_devfs_ruleset="www_ruleset" # 在 jail 中应用的devfs 规则集 目前, 尚没有一种方法来很干净地关闭 man:jail[8]。 这是因为通常用于正常关闭系统的命令, 目前尚不能在 jail 中使用。 目前, 关闭 jail 最好的方式, 是在 jail 外通过 man:jexec[8] 工具, 在 jail 中执行下列命令: -[source,bash] +[source,shell] .... # sh /etc/rc.shutdown .... @@ -217,7 +217,7 @@ FreeBSD 的基本系统包含一系列用于查看目前在使用的 jail 信息 * 从宿主系统中接入正在运行的 jail, 并在其中执行命令, 以完成一系列 jail 管理任务。 这在 `root` 希望干净地关闭 jail 时非常有用。 man:jexec[8] 工具也可以用于在 jail 中启动 shell 以便对其进行管理; 例如: + -[source,bash] +[source,shell] .... # jexec 1 tcsh .... @@ -290,7 +290,7 @@ jail 的一个主要问题是如何对它们进行升级和管理。 由于每 . 首先, 需要为将要存放只读的 FreeBSD 执行文件的文件系统建立一个目录, 接着进入 FreeBSD 源代码的目录, 并在其中安装 jail 模板: + -[source,bash] +[source,shell] .... # mkdir /home/j /home/j/mroot # cd /usr/src @@ -299,7 +299,7 @@ jail 的一个主要问题是如何对它们进行升级和管理。 由于每 + . 接着, 准备一份 FreeBSD Ports 套件, 以及用于执行 mergemaster 的 FreeBSD 源代码: + -[source,bash] +[source,shell] .... # cd /home/j/mroot # mkdir usr/ports @@ -309,7 +309,7 @@ jail 的一个主要问题是如何对它们进行升级和管理。 由于每 + . 创建系统中可读写部分的骨架: + -[source,bash] +[source,shell] .... # mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles # mv etc /home/j/skel @@ -321,7 +321,7 @@ jail 的一个主要问题是如何对它们进行升级和管理。 由于每 + . 使用 mergemaster 安装缺失的配置文件。 接下来, 删除 mergemaster 创建的多余目录: + -[source,bash] +[source,shell] .... # mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i # cd /home/j/skel @@ -330,7 +330,7 @@ jail 的一个主要问题是如何对它们进行升级和管理。 由于每 + . 现在, 将可读写文件系统连接到只读文件系统中。 请确保您在 [.filename]#s/# 目录中建立了适当的符号连接。 如果没有建立目录或建立的位置不正确, 可能会导致安装失败。 + -[source,bash] +[source,shell] .... # cd /home/j/mroot # mkdir s @@ -408,14 +408,14 @@ jail_www_devfs_enable="YES" + . 为每个 jail 创建所需的只读文件系统挂接点: + -[source,bash] +[source,shell] .... # mkdir /home/j/ns /home/j/mail /home/j/www .... + . 在 jail 中安装可读写的模板。 注意您需要使用 package:sysutils/cpdup[], 它能够帮助您确保每个目录都是正确地复制的: + -[source,bash] +[source,shell] .... # mkdir /home/js # cpdup /home/j/skel /home/js/ns @@ -425,7 +425,7 @@ jail_www_devfs_enable="YES" + . 这样, 就完成了 jail 的制作, 可以运行了。 首先为 jail 挂接文件系统, 然后使用 [.filename]#/etc/rc.d/jail# 脚本来启动它们: + -[source,bash] +[source,shell] .... # mount -a # /etc/rc.d/jail start @@ -434,7 +434,7 @@ jail_www_devfs_enable="YES" 现在 jail 应该就启动起来了。 要检查它们是否运行正常, 可以使用 man:jls[8] 命令。 它的输出应该类似这样: -[source,bash] +[source,shell] .... # jls JID IP Address Hostname Path @@ -445,7 +445,7 @@ jail_www_devfs_enable="YES" 这时, 就可以登入 jail 并增加用户和配置服务了。 `JID` 列给出了正在运行的 jail 的标识编号。 您可以使用下面的命令来在 `JID` 编号为 3 的 jail 中执行管理任务: -[source,bash] +[source,shell] .... # jexec 3 tcsh .... @@ -460,7 +460,7 @@ jail_www_devfs_enable="YES" . 第一步是按通常的方法升级主机的系统。 接着, 在 [.filename]#/home/j/mroot2# 中建立一个新的临时模板: + -[source,bash] +[source,shell] .... # mkdir /home/j/mroot2 # cd /usr/src @@ -472,7 +472,7 @@ jail_www_devfs_enable="YES" + 在运行 `installworld` 时会创建一些不需要的目录, 应将它们删除: + -[source,bash] +[source,shell] .... # chflags -R 0 var # rm -R etc var root usr/local tmp @@ -480,7 +480,7 @@ jail_www_devfs_enable="YES" + . 重建到主系统中的可读写符号连接: + -[source,bash] +[source,shell] .... # ln -s s/etc etc # ln -s s/root root @@ -493,14 +493,14 @@ jail_www_devfs_enable="YES" + . 现在是时候关闭 jail 了: + -[source,bash] +[source,shell] .... # /etc/rc.d/jail stop .... + . 卸下原先的文件系统: + -[source,bash] +[source,shell] .... # umount /home/j/ns/s # umount /home/j/ns @@ -517,7 +517,7 @@ jail_www_devfs_enable="YES" + . 将先前的只读文件系统挪走, 换成新的系统。 这样做也同时保留了先前系统的备份, 从而可以在出现问题时从中恢复。 这里我们根据新系统的创建时间来命名。 此外我们把先前的 FreeBSD Ports 套件直接移动到新的文件系统中, 以节省磁盘空间和 inode: + -[source,bash] +[source,shell] .... # cd /home/j # mv mroot mroot.20060601 @@ -527,7 +527,7 @@ jail_www_devfs_enable="YES" + . 现在新的只读模板就可以用了, 剩下的事情是重新挂接文件系统并启动 jails: + -[source,bash] +[source,shell] .... # mount -a # /etc/rc.d/jail start diff --git a/documentation/content/zh-cn/books/handbook/kernelconfig/_index.adoc b/documentation/content/zh-cn/books/handbook/kernelconfig/_index.adoc index 0b651d8b5d..d14a138218 100644 --- a/documentation/content/zh-cn/books/handbook/kernelconfig/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/kernelconfig/_index.adoc @@ -114,7 +114,7 @@ ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 还可以传给 man:man[1] 命令 `-k` 选项, 同样能获得有用的信息。例如: -[source,bash] +[source,shell] .... # man -k Atheros .... @@ -165,7 +165,7 @@ following line in man:loader.conf[5]: ==== 如果您的系统中 _没有_[.filename]#/usr/src/sys# 这样一个目录, 则说明没有安装内核源代码。 安装它最简单的方法是通过以 root 身份运行 `sysinstall`, 选择 [.guimenuitem]#Configure#, 然后是 [.guimenuitem]#Distributions#、 [.guimenuitem]#src#, 选中其中的 [.guimenuitem]#base# 和 [.guimenuitem]#sys#。 如果您不喜欢 sysinstall 并且有一张 "官方的" FreeBSD CDROM, 也可以使用下列命令, 从命令行来安装源代码: -[source,bash] +[source,shell] .... # mount /cdrom # mkdir -p /usr/src/sys @@ -178,7 +178,7 @@ following line in man:loader.conf[5]: 接下来, 进入 [.filename]#arch/conf# 目录下面, 复制 [.filename]#GENERIC# 配置文件, 并给这个文件起一个容易辨认的名称, 它就是您的内核名称。例如: -[source,bash] +[source,shell] .... # cd /usr/src/sys/i386/conf # cp GENERIC MYKERNEL @@ -195,7 +195,7 @@ following line in man:loader.conf[5]: 例如: -[source,bash] +[source,shell] .... # cd /usr/src/sys/i386/conf # mkdir /root/kernels @@ -227,21 +227,21 @@ following line in man:loader.conf[5]: . 进入 [.filename]#/usr/src# 目录: + -[source,bash] +[source,shell] .... # cd /usr/src .... + . 编译内核: + -[source,bash] +[source,shell] .... # make buildkernel KERNCONF=MYKERNEL .... + . 安装新内核: + -[source,bash] +[source,shell] .... # make installkernel KERNCONF=MYKERNEL .... @@ -303,7 +303,7 @@ options IPDIVERT ==== 如果您需要一份包含所有选项的文件, 例如用于测试目的, 则应以 `root` 身份执行下列命令: -[source,bash] +[source,shell] .... # cd /usr/src/sys/i386/conf && make LINT .... @@ -1150,7 +1150,7 @@ PAE在FreeBSD下有如下的一些限制: ``config``失败::: 如果 man:config[8] 在给出您的内核描述时失败, 则可能在某些地方引入了一处小的错误。 幸运的是, man:config[8] 会显示出它遇到问题的行号, 这样您就能够迅速地定位错误。 例如, 如果您看到: + -[source,bash] +[source,shell] .... config: line 17: syntax error .... @@ -1169,7 +1169,7 @@ config: line 17: syntax error ==== 如果在编译内核时遇到麻烦, 请务必保留一个 [.filename]#GENERIC# 或已知可用的其他内核, 并命名为别的名字以免在下次启动时被覆盖。 不要依赖 [.filename]#kernel.old# 因为在安装新内核时, [.filename]#kernel.old# 会被上次安装的那个可能不正常的内核覆盖掉。 另外, 尽快把可用的内核挪到 [.filename]#/boot/kernel# 否则类似 man:ps[1] 这样的命令可能无法正常工作。 为了完成这一点, 需要修改目录的名字: -[source,bash] +[source,shell] .... # mv /boot/kernel /boot/kernel.bad # mv /boot/kernel.good /boot/kernel diff --git a/documentation/content/zh-cn/books/handbook/l10n/_index.adoc b/documentation/content/zh-cn/books/handbook/l10n/_index.adoc index 48730f03dc..40779fdf31 100644 --- a/documentation/content/zh-cn/books/handbook/l10n/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/l10n/_index.adoc @@ -212,7 +212,7 @@ german|German Users Accounts:\ 在修改用户的登入类型之前, 应首先执行下面的命令: -[source,bash] +[source,shell] .... # cap_mkdb /etc/login.conf .... @@ -235,14 +235,14 @@ user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh * 在[.filename]##/etc/adduser.conf##里面设置``defaultclass = 语言``。应该记住,您必须为使用其它语言的所有用户设置 ``缺省``类别。 * 每一次使用man:adduser[8]的时候,一个特定语言的可选择性回答会像下面这样给出: + -[source,bash] +[source,shell] .... Enter login class: default []: .... * 如果您打算给每一个用户使用另外一种语言,您应该这样: + -[source,bash] +[source,shell] .... # adduser -class language .... @@ -251,7 +251,7 @@ Enter login class: default []: 如果您使用man:pw[8]来添加新用户,应该这样使用: -[source,bash] +[source,shell] .... # pw useradd user_name -L language .... diff --git a/documentation/content/zh-cn/books/handbook/linuxemu/_index.adoc b/documentation/content/zh-cn/books/handbook/linuxemu/_index.adoc index 1ef6236dfa..bba3a6ced9 100644 --- a/documentation/content/zh-cn/books/handbook/linuxemu/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/linuxemu/_index.adoc @@ -70,7 +70,7 @@ FreeBSD 提供了与 Linux(R) 32-bit 二进制兼容, 允许用户在 FreeBSD 安装 package:emulators/linux-base-f10[] 包或者 port 是最容易在 FreeBSD 系统上获得一套基本的 Linux(R) 库的方法。 使用如下方法安装 port: -[source,bash] +[source,shell] .... # cd /usr/ports/emulators/linux_base-f10 # make install distclean @@ -78,14 +78,14 @@ FreeBSD 提供了与 Linux(R) 32-bit 二进制兼容, 允许用户在 FreeBSD 安装完成以后, 加载 `linux` 模块启用 Linux(R) 二进制兼容模式: -[source,bash] +[source,shell] .... # kldload linux .... 查看模块是否已经被加载: -[source,bash] +[source,shell] .... % kldstat Id Refs Address Size Name @@ -109,7 +109,7 @@ linux_enable="YES" 在 Linux(R) 系统上使用 `ldd` 找出应用程序所需的共享库文件。 比如, 在安装有 Doom 的 Linux(R) 系统上运行如下的命令列出 `linuxdoom` 所需用到的共享库文件: -[source,bash] +[source,shell] .... % ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 @@ -119,7 +119,7 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 然后把上面输出中最后一列中的所有文件从 Linux(R) 系统复制到 FreeBSD 上的 [.filename]#/compat/linux#。 复制完成之后, 建立指向第一栏中文件名的符号链接。 这样在 FreeBSD 系统上将会有如下的文件: -[source,bash] +[source,shell] .... /compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 @@ -133,7 +133,7 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 比如, FreeBSD 系统中现有这些共享库文件: -[source,bash] +[source,shell] .... /compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 @@ -141,14 +141,14 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 并且 `ldd` 指出某个二进制程序需要之后版本: -[source,bash] +[source,shell] .... libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 .... 既然现有文件最后的版本号只相差一到两个版本, 程序应该可以正常使用稍旧些的版本。 不管怎样, 使用新版本替换现有 [.filename]#libc.so# 都是安全的。 -[source,bash] +[source,shell] .... /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29 @@ -160,7 +160,7 @@ libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 ELF 二进制程序有时需要额外的步骤。 当未被标记的 ELF 二进制程序被执行的时候, 会生成如下的错误信息: -[source,bash] +[source,shell] .... % ./my-linux-elf-binary ELF binary type not known @@ -169,7 +169,7 @@ Abort 为了帮助 FreeBSD 内核分辨 FreeBSD ELF 二进制程序和 Linux(R) 二进制程序, 请使用 man:brandelf[1]: -[source,bash] +[source,shell] .... % brandelf -t Linux my-linux-elf-binary .... @@ -180,7 +180,7 @@ Abort 安装基于 Linux(R) RPM 的应用程序, 首先需要安装 package:archivers/rpm[] 包或者 port。 安装好之后 `root` 用户就能使用此命令安装 [.filename]#.rpm# 了: -[source,bash] +[source,shell] .... # cd /compat/linux # rpm2cpio < /path/to/linux.archive.rpm | cpio -id @@ -192,7 +192,7 @@ Abort 如果 DNS 不能正常工作或是出现以下的错误信息: -[source,bash] +[source,shell] .... resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword @@ -227,7 +227,7 @@ FreeBSD 有一份加载器列表而不是一个单一的加载器, 并能回 要运行 Linux(R) 二进制程序, 必须先使用 man:brandelf[1] 命令 _标记_ 为 `Linux` 类型: -[source,bash] +[source,shell] .... # brandelf -t Linux file .... diff --git a/documentation/content/zh-cn/books/handbook/mac/_index.adoc b/documentation/content/zh-cn/books/handbook/mac/_index.adoc index f69c0211b4..a6359e57c4 100644 --- a/documentation/content/zh-cn/books/handbook/mac/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/mac/_index.adoc @@ -156,14 +156,14 @@ __等一下, 这看起来很像 DAC! 但我认为 MAC 确实只将控制权 所有的配置都应该通过 man:setfmac[8] 及 man:setpmac[8] 组件实施。 `setfmac` 命令是用来对系统客体设置 MAC 标签的, 而 `setpmac` 则是用来对系统主体设置标签的。 例如: -[source,bash] +[source,shell] .... # setfmac biba/high test .... 若以上命令不发生错误则会直接返回命令提示符, 只有当发生错误时, 这些命令才会给出提示, 这和 man:chmod[1] 和 man:chown[8] 命令类似。 某些情况下, 以上命令产生的错误可能是 `Permission denied`, 一般在受限客体上设置或修改设置时会产生此错误。 系统管理员可使用以下命令解决此问题: -[source,bash] +[source,shell] .... # setfmac biba/high test Permission denied @@ -255,7 +255,7 @@ default:\ `maclabel` 可以作为 `ifconfig` 的参数用于设置网络接口的 MAC 标签。 例如: -[source,bash] +[source,shell] .... # ifconfig bge0 maclabel biba/equal .... @@ -284,7 +284,7 @@ default:\ 接下来的命令将在需要使用多个标签的文件系统上设置 `multilabel`。 这一操作只能在单用户模式下完成: -[source,bash] +[source,shell] .... # tunefs -l enable / .... @@ -359,7 +359,7 @@ man:mac_bsdextended[4] 模块能够强制文件系统防火墙策略。 这一 在加载了 man:mac_bsdextended[4] 模块之后, 下列命令可以用来列出当前的规则配置: -[source,bash] +[source,shell] .... # ugidfw list 0 slots, 0 rules @@ -367,14 +367,14 @@ man:mac_bsdextended[4] 模块能够强制文件系统防火墙策略。 这一 如希望的那样, 目前还没有定义任何规则。 这意味着一切都还可以访问。 要创建一个阻止所有用户, 而保持 `root` 不受影响的规则, 只需运行下面的命令: -[source,bash] +[source,shell] .... # ugidfw add subject not uid root new object not uid root mode n .... 这本身可能是一个很糟糕的主意, 因为它会阻止所有用户执行哪怕最简单的命令, 例如 `ls`。 更富于爱心的规则可能是: -[source,bash] +[source,shell] .... # ugidfw set 2 subject uid user1 object uid user2 mode n # ugidfw set 3 subject uid user1 object gid user2 mode n @@ -443,7 +443,7 @@ man:mac_portacl[4] 模块可以用来通过一系列 `sysctl` 变量来限制绑 下面的例子更好地展示了前面讨论的内容: -[source,bash] +[source,shell] .... # sysctl security.mac.portacl.port_high=1023 # sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0 @@ -451,21 +451,21 @@ man:mac_portacl[4] 模块可以用来通过一系列 `sysctl` 变量来限制绑 首先我们需要设置使 man:mac_portacl[4] 管理标准的特权端口, 并禁用普通的 UNIX(R) 绑定限制。 -[source,bash] +[source,shell] .... # sysctl security.mac.portacl.suser_exempt=1 .... 您的 `root` 用户不应因此策略而失去特权, 因此请把 `security.mac.portacl.suser_exempt` 设置为一个非零的值。 现在您已经成功地配置了 man:mac_portacl[4] 模块, 并使其默认与 类-UNIX(R) 系统一样运行了。 -[source,bash] +[source,shell] .... # sysctl security.mac.portacl.rules=uid:80:tcp:80 .... 允许 UID 为 80 的用户 (正常情况下, 应该是 `www` 用户) 绑定到 80 端口。 这样 `www` 用户就能够运行 web 服务器, 而不需要使用 `root` 权限了。 -[source,bash] +[source,shell] .... # sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995 .... @@ -493,7 +493,7 @@ man:mac_partition[4] 策略将把进程基于其 MAC 标签放到特定的 "part 要设置或删除 partition 标签中的工具, 需要使用 `setpmac`: -[source,bash] +[source,shell] .... # setpmac partition/13 top .... @@ -504,14 +504,14 @@ man:mac_partition[4] 策略将把进程基于其 MAC 标签放到特定的 "part 下面的命令将显示 partition 标签以及进程列表: -[source,bash] +[source,shell] .... # ps Zax .... 接下来的这个命令将允许察看其他用户的进程 partition 标签, 以及那个用户正在运行的进程: -[source,bash] +[source,shell] .... # ps -ZU trhodes .... @@ -563,14 +563,14 @@ MLS 提供了: 要管理 MLS 标签, 可以使用 man:setfmac[8] 命令。 要在客体上指定标签, 需要使用下面的命令: -[source,bash] +[source,shell] .... # setfmac mls/5 test .... 下述命令用于取得文件 [.filename]#test# 上的 MLS 标签: -[source,bash] +[source,shell] .... # getfmac test .... @@ -619,7 +619,7 @@ Biba 提供了: 要操作系统客体上的 Biba 策略, 需要使用 `setfmac` 和 `getfmac` 命令: -[source,bash] +[source,shell] .... # setfmac biba/low test # getfmac test @@ -655,7 +655,7 @@ MAC LOMAC 策略依赖于系统客体上存在普适的标签, 这样就允许 与 Biba 和 MLS 策略类似; `setfmac` 和 `setpmac` 工具可以用来在系统客体上放置标签: -[source,bash] +[source,shell] .... # setfmac /usr/home/trhodes lomac/high[low] # getfmac /usr/home/trhodes @@ -711,7 +711,7 @@ insecure:\ 一旦完成上述操作, 就需要运行下面的命令来重建数据库: -[source,bash] +[source,shell] .... # cap_mkdb /etc/login.conf .... @@ -730,14 +730,14 @@ mac_seeotheruids_load="YES" 使用下面的命令将 `root` 设为属于默认的 class: -[source,bash] +[source,shell] .... # pw usermod root -L default .... 所有非 `root` 或系统的用户, 现在需要一个登录 class。 登录 class 是必须的, 否则这些用户将被禁止使用类似 man:vi[1] 这样的命令。 下面的 `sh` 脚本应能完成这个工作: -[source,bash] +[source,shell] .... # for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \ @@ -746,12 +746,12 @@ mac_seeotheruids_load="YES" 将 `nagios` 和 `www` 这两个用户归入不安全 class: -[source,bash] +[source,shell] .... # pw usermod nagios -L insecure .... -[source,bash] +[source,shell] .... # pw usermod www -L insecure .... @@ -802,7 +802,7 @@ mac_seeotheruids_load="YES" 接下来可以用下面的命令将其读入系统: -[source,bash] +[source,shell] .... # setfsmac -ef /etc/policy.contexts / # setfsmac -ef /etc/policy.contexts / @@ -845,7 +845,7 @@ maclabel biba/equal 如果一切正常, Nagios、 Apache, 以及 Sendmail 就可以按照适应安全策略的方式启动了。 下面的命令将完成此工作: -[source,bash] +[source,shell] .... # cd /etc/mail && make stop && \ setpmac biba/equal make start && setpmac biba/10\(10-10\) apachectl start && \ @@ -858,7 +858,7 @@ setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestart ==== `root` 用户可以放心大胆地修改安全强制措施, 并编辑配置文件。 下面的命令可以对安全策略进行降级, 并启动一个新的 shell: -[source,bash] +[source,shell] .... # setpmac biba/10 csh .... diff --git a/documentation/content/zh-cn/books/handbook/mail/_index.adoc b/documentation/content/zh-cn/books/handbook/mail/_index.adoc index 220eea4f75..020720d98f 100644 --- a/documentation/content/zh-cn/books/handbook/mail/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/mail/_index.adoc @@ -108,7 +108,7 @@ DNS 负责将主机名映射为 IP 地址, 同时, 也需要保存递送邮 您可以通过 man:host[1] 命令来查找任何域或主机名对应的 MX 记录, 如下面的例子所示: -[source,bash] +[source,shell] .... % host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org @@ -325,7 +325,7 @@ sendmail_enable="NO" 可以向 [.filename]#/etc/rc.conf# 中加入配置项使新的 MTA 在系统启动时运行, 下面是一个 postfix 的例子: -[source,bash] +[source,shell] .... # echo 'postfix_enable=“YES”' >> /etc/rc.conf .... @@ -487,7 +487,7 @@ hostname.customer.com。只要为customer.com在 DNS 有很多方法可以避免这种现象。 最直截了当的方法是把您的 ISP 的地址放到 [.filename]#/etc/mail/relay-domains# 文件中。 完成这项工作的简单的方法是: -[source,bash] +[source,shell] .... # echo "your.isp.example.com" > /etc/mail/relay-domains .... @@ -526,7 +526,7 @@ www.example.org 试试这个: -[source,bash] +[source,shell] .... # hostname example.FreeBSD.org @@ -538,7 +538,7 @@ example.FreeBSD.org has address 204.216.27.XX 如果您看到这些: -[source,bash] +[source,shell] .... # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX @@ -612,7 +612,7 @@ sendmail 的配置,在 FreeBSD 中已经配置好为您的站点直接的连 首先,您必须建立您自己的 [.filename]#.mc# 文件。 [.filename]#/usr/shared/sendmail/cf/cf# 目录包含一些例子。 假定您已经命名自己的文件叫做 [.filename]#foo.mc#, 您要做的只是把它转换成一个有效的 [.filename]#sendmail.cf#: -[source,bash] +[source,shell] .... # cd /etc/mail # make foo.cf @@ -674,7 +674,7 @@ if-bus.UUCP uucp-dom:if-bus 最后提示:如果您不确定某个特定的路径可用, 记得把 `-bt` 选项加到 sendmail。这会将 sendmail 启动在 _地址检测模式_。只要按下 `3,0`,接着输入您希望测试的邮件路径位置。 最后一行告诉您使用邮件代理程序, 代理程序会通知目的主机以及 (可能转换) 地址。 要离开此模式请按 kbd:[Ctrl+D]。 -[source,bash] +[source,shell] .... % sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) @@ -700,7 +700,7 @@ parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . co 满足这些需要最简单的办法是安装 package:mail/ssmtp[] port。 以 `root` 身份执行下面的命令: -[source,bash] +[source,shell] .... # cd /usr/ports/mail/ssmtp # make install replace clean @@ -806,7 +806,7 @@ saslauthd_enable="YES" + 最后启用 saslauthd 服务: + -[source,bash] +[source,shell] .... # /usr/local/etc/rc.d/saslauthd start .... @@ -824,7 +824,7 @@ SENDMAIL_LDADD=-lsasl2 这些配置将告诉系统在联编 sendmail 时使用适当的配置选项来在编译过程中连入 package:cyrus-sasl2[]. 在重新编译 sendmail 之前, 请确认已经安装了 package:cyrus-sasl2[]。 . 重新编译 sendmail 运行如下命令: + -[source,bash] +[source,shell] .... # cd /usr/src/lib/libsmutil # make cleandir && make obj && make @@ -866,14 +866,14 @@ man:mail[1] 是 FreeBSD 中默认的邮件用户代理 (MUA)。 它是一个基 要收发邮件, 只需简单地使用 `mail` 命令, 如下所示: -[source,bash] +[source,shell] .... % mail .... 用户保存在 [.filename]#/var/mail# 中的信箱的内容会被 `mail` 程序自动地读取。 如果信箱是空的, 程序会退出并给出一个消息表示没有邮件。 一旦读完了信箱, 将启动应用程序的界面, 并列出邮件。 所有的邮件会被自动编号, 类似下面的样子: -[source,bash] +[source,shell] .... Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new @@ -884,7 +884,7 @@ Mail version 8.1 6/6/93. Type ? for help. 现在, 您通过使用 `mail` 的 kbd:[t] 命令, 并给出邮件的编号, 就可以看到邮件了。 在这个例子中, 我们将阅读第一封邮件: -[source,bash] +[source,shell] .... & t 1 Message 1: @@ -903,7 +903,7 @@ This is a test message, please reply if you receive it. 如果需要回复邮件, 也可以使用 ``mail`` 来完成, 方法是使用 kbd:[R] 或 kbd:[r] 这两个 ``mail``键。 kbd:[R] 键会要求 ``mail`` 只回复发送邮件的人, 而 kbd:[r] 不仅回复发送邮件的人, 而且也会将回复抄送给原来邮件的其他接收者。 如果需要, 也可以在这些命令后面指定邮件的编号。 做完这些之后, 就可以输入回复了, 在邮件的最后应该有一个只有一个 kbd:[.] 的行, 例如: -[source,bash] +[source,shell] .... & R 1 To: root@localhost @@ -916,7 +916,7 @@ EOT 要发出新邮件, 可以使用 kbd:[m], 后面接收件人的邮件地址。 多个收件人之间, 应该使用 kbd:[,] 隔开。 接下来需要输入邮件的主题, 然后是正文。 同样的, 在邮件最后需要一个只有 kbd:[.] 的空行表示结束。 -[source,bash] +[source,shell] .... & mail root@localhost Subject: I mastered mail @@ -948,7 +948,7 @@ mutt 是一个短小精悍的邮件用户代理, 它提供了许多卓越的 稳定版本的 mutt 可以通过 package:mail/mutt[] port 来安装, 而开发版本, 则可以通过使用 package:mail/mutt-devel[] port 安装。 通过 port 安装之后,可以通过下面的命令来启动 mutt: -[source,bash] +[source,shell] .... % mutt .... @@ -987,7 +987,7 @@ alpine 主要是针对初学者设计的, 但也提供了一些高级功能。 最新版本的 alpine 可以通过使用 package:mail/alpine[] port 来安装。 装好之后, alpine 可以通过下面的命令启动: -[source,bash] +[source,shell] .... % alpine .... @@ -1028,7 +1028,7 @@ fetchmail 是一个全功能的 IMAP 和 POP 客户程序, 它允许用户自 尽管介绍全部 fetchmail 的功能超出了本书的范围, 但这里仍然介绍了其基本的功能。 fetchmail 工具需要一个名为 [.filename]#.fetchmailrc# 的配置文件才能正常工作。 这个文件中包含了服务器信息, 以及登录使用的凭据。 由于这个文件包含敏感内容, 建议将其设置为只有属主所有, 使用下面的命令: -[source,bash] +[source,shell] .... % chmod 600 .fetchmailrc .... @@ -1053,7 +1053,7 @@ user "john", with password "XXXXX", is "myth" here; 另外, fetchmail 也可以通过指定 `-d` 参数, 并给出 fetchmail 在轮询 [.filename]#.fetchmailrc# 文件中列出的服务器的时间间隔, 来以服务程序的方式运行。 下面的例子会让 fetchmail 每 600 秒轮询一次: -[source,bash] +[source,shell] .... % fetchmail -d 600 .... diff --git a/documentation/content/zh-cn/books/handbook/mirrors/_index.adoc b/documentation/content/zh-cn/books/handbook/mirrors/_index.adoc index d578514e7c..63695134b4 100644 --- a/documentation/content/zh-cn/books/handbook/mirrors/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/mirrors/_index.adoc @@ -545,7 +545,7 @@ SSH2 HostKey: 2048 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62 /etc/ssh/ssh_ [example] ==== -[source,bash] +[source,shell] .... % setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs % cvs login @@ -560,7 +560,7 @@ SSH2 HostKey: 2048 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62 /etc/ssh/ssh_ [example] ==== -[source,bash] +[source,shell] .... % cvs -d anoncvs@anoncvs1.FreeBSD.org:/home/ncvs co src The authenticity of host 'anoncvs1.freebsd.org (216.87.78.137)' can't be established. @@ -575,7 +575,7 @@ Warning: Permanently added 'anoncvs1.freebsd.org' (DSA) to the list of known hos [example] ==== -[source,bash] +[source,shell] .... % setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs % cvs login @@ -590,7 +590,7 @@ Warning: Permanently added 'anoncvs1.freebsd.org' (DSA) to the list of known hos [example] ==== -[source,bash] +[source,shell] .... % setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs % cvs login @@ -605,7 +605,7 @@ Warning: Permanently added 'anoncvs1.freebsd.org' (DSA) to the list of known hos [example] ==== -[source,bash] +[source,shell] .... % setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs % cvs login @@ -677,7 +677,7 @@ FTP 访问相关的目录并取得 [.filename]#README# 文件,从那里开始 要应用 deltas,简单的键入: -[source,bash] +[source,shell] .... # cd /where/ever/you/want/the/stuff # ctm -v -v /where/you/store/your/deltas/src-xxx.* @@ -721,7 +721,7 @@ CTM 还有其他的一些参数, 查看手册页或者源代码了解更多信 例如,要从您保存的CTM deltas 集里解压缩出一个最新的 [.filename]#lib/libc/Makefile# 文件,运行这个命令: -[source,bash] +[source,shell] .... # cd /where/ever/you/want/to/extract/it/ # ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.* @@ -929,7 +929,7 @@ src-all [.filename]#refuse# 文件的格式很简单; 它仅仅包含您不希望下载的文件和目录名。 例如,如果您除了英语和德语之外不会讲其他语言, 而且也不打算阅读德文的文档翻译版本, 则可以把下面这些放在您的 [.filename]#refuse# 文件里: -[source,bash] +[source,shell] .... doc/bn_* doc/da_* @@ -959,7 +959,7 @@ doc/zh_* 您现在准备尝试升级了。命令很简单: -[source,bash] +[source,shell] .... # cvsup supfile .... @@ -968,7 +968,7 @@ doc/zh_* 在这个例子里您将要升级您目前的 [.filename]#/usr/src# 树,您将需要 用 `root` 来运行程序,这样 `cvsup` 有需要的权限来更新您的文件。 刚刚创建了您的配置文件,又从来没有使用过这个程序, 紧张不安是可以理解的。有一个简单的方法不改变您当前的文件 来做一次试验性的运行。只要在方便的地方创建一个 空目录,并在命令行上作为一个额外的参数说明: -[source,bash] +[source,shell] .... # mkdir /var/tmp/dest # cvsup supfile /var/tmp/dest @@ -978,7 +978,7 @@ doc/zh_* 如果您没有运行 X11 或者不喜欢 GUI, 当您运行 `cvsup` 的时候需要在命令行添加 两个选项: -[source,bash] +[source,shell] .... # cvsup -g -L 2 supfile .... diff --git a/documentation/content/zh-cn/books/handbook/multimedia/_index.adoc b/documentation/content/zh-cn/books/handbook/multimedia/_index.adoc index a011b4e45b..32110bbd15 100644 --- a/documentation/content/zh-cn/books/handbook/multimedia/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/multimedia/_index.adoc @@ -87,7 +87,7 @@ FreeBSD 广泛地支持各种声卡, 让您可以从容地享受来自您的 要使用声卡, 就应装载正确的驱动程序。完成的方式有两种: 最简单的是使用命令 man:kldload[8] 来装载一个内核模块,在命令行输入 -[source,bash] +[source,shell] .... # kldload snd_emu10k1 .... @@ -101,7 +101,7 @@ snd_emu10k1_load="YES" 上边实例用于 Creative SoundBlaster(R) Live! 声卡。 其它可装载的模块列在文件 [.filename]#/boot/defaults/loader.conf# 里边。 如果不知道应该使用哪个驱动, 您可以尝试加载 [.filename]#snd_driver# module: -[source,bash] +[source,shell] .... # kldload snd_driver .... @@ -160,7 +160,7 @@ hint.sbc.0.flags="0x15" 用修改过的内核重起,或者加载了需要的模块之后, 声卡将会出现在您的系统消息缓存中 (man:dmesg[8]),就像这样: -[source,bash] +[source,shell] .... pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0 pcm0: [GIANT-LOCKED] @@ -169,7 +169,7 @@ pcm0: <Cirrus Logic CS4205 AC97 Codec> 声卡的状态可以通过 [.filename]#/dev/sndstat# 文件来查询: -[source,bash] +[source,shell] .... # cat /dev/sndstat FreeBSD Audio Driver (newpcm) @@ -182,7 +182,7 @@ kld snd_ich (1p/2r/0v channels duplex default) 如果一切正常,您现在应该拥有一个多功能声卡了。 如果您的 CD-ROM 或者 DVD-ROM 驱动器的音频输出线已经与声卡连在一起, 您可以把 CD 放入驱动器并用 man:cdcontrol[1] 来播放: -[source,bash] +[source,shell] .... % cdcontrol -f /dev/acd0 play 1 .... @@ -191,7 +191,7 @@ kld snd_ich (1p/2r/0v channels duplex default) 另一种快速测试声卡的方法, 是将数据发送到 [.filename]#/dev/dsp#, 像这样做: -[source,bash] +[source,shell] .... % cat filename > /dev/dsp .... @@ -260,7 +260,7 @@ pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1 此处显卡 (`NVidia`) 先于真正的声卡 (`Realtek ALC889`) 被探测到。 要使用声卡作为默认的回放设备, 将 `hw.snd.default_unit` 改为对应的设备编号: -[source,bash] +[source,shell] .... # sysctl hw.snd.default_unit=n .... @@ -281,7 +281,7 @@ FreeBSD 可以通过 _虚拟声道(Virtual Sound Channels)_ 来达到这样的 使用三条sysctl命令来设置虚拟声道的数目。 如果您是 `root` 用户, 执行下面的操作: -[source,bash] +[source,shell] .... # sysctl dev.pcm.0.play.vchans=4 # sysctl dev.pcm.0.rec.vchans=4 @@ -326,7 +326,7 @@ package:audio/mpg123[] port 提供了一个命令行界面的 MP3 播放器。 mpg123 可以在执行时通过命令行指定声音设备和要播放的 MP3 文件, 假设你的声音设备是 [.filename]#/dev/dsp1.0# 并且你想要播放的 MP3 文件为 _Foobar-GreatestHits.mp3_ 你可以键入以下的命令: -[source,bash] +[source,shell] .... # mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3. @@ -347,14 +347,14 @@ MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo 把CD放到光驱里,下面的命令可以完成 (作为 `root`用户) 把整张 CD 分割成单个 (每个音轨) 的WAV文件: -[source,bash] +[source,shell] .... # cdda2wav -D 0,1,0 -B .... cdda2wav 支持 ATAPI (IDE)光驱。 从IDE光驱中抓取音轨, 需要用设备名称代替SCSI的单元号。 例如, 想从 IDE 光驱中抓取第7道音轨: -[source,bash] +[source,shell] .... # cdda2wav -D /dev/acd0 -t 7 .... @@ -363,14 +363,14 @@ cdda2wav 支持 ATAPI (IDE)光驱。 从IDE光驱中抓取音轨, 需要用设 抓取单轨,要使用选项 `-t`,如下所示: -[source,bash] +[source,shell] .... # cdda2wav -D 0,1,0 -t 7 .... 这个实例用于抓取第七个音轨。要抓取一定范围的音轨,如从1到7: -[source,bash] +[source,shell] .... # cdda2wav -D 0,1,0 -t 1+7 .... @@ -384,7 +384,7 @@ cdda2wav 支持 ATAPI (IDE)光驱。 从IDE光驱中抓取音轨, 需要用设 利用抓取的WAV文件,下边的命令就可以把 [.filename]#audio01.wav# 转换成 [.filename]#audio01.mp3#: -[source,bash] +[source,shell] .... # lame -h -b 128 \ --tt "Foo Song Title" \ @@ -427,7 +427,7 @@ audio01.wav audio01.mp3 XMMS 输出的文件是波形(WAV)格式, 而 mpg123 则把MP3转换成无压缩的PCM 音频数据。两种格式都支持用 cdrecord 刻录成音乐CD。 使用 man:burncd[8] 您就必须使用无压缩的PCM。 如果选择波形格式, 就要注意在每道开始时的一小点杂音, 这段声音是波形文件的头部份。 可以使用工具 SoX 来轻松去除。 SoX 可从 package:audio/sox[] port 或包(package)中安装得到: -[source,bash] +[source,shell] .... % sox -t wav -r 44100 -s -w -c 2 track.wav track.raw .... @@ -443,7 +443,7 @@ XMMS 输出的文件是波形(WAV)格式, 而 mpg123 则把MP3转换成无压 为了评估各种播放器和设置,您需要有一小段用作测试的MPEG文件。 由于一些DVD播放器会默认地在 [.filename]#/dev/dvd# 里去找DVD文件, 因此, 您会发现建立符号链接到恰当的设备会很有用: -[source,bash] +[source,shell] .... # ln -sf /dev/acd0 /dev/dvd # ln -sf /dev/acd0 /dev/rdvd @@ -487,14 +487,14 @@ Xorg 有种扩展叫做 _XVideo_ (或称Xvideo, Xv, xv), 它可以通过一个 要了解这一扩展是否在正常工作, 使用 `xvinfo` 命令: -[source,bash] +[source,shell] .... % xvinfo .... 如果显示结果如下,那您的显卡就支持XVideo: -[source,bash] +[source,shell] .... X-Video Extension version 2.2 screen #0 @@ -570,7 +570,7 @@ screen #0 如果结果看起来是这样: -[source,bash] +[source,shell] .... X-Video Extension version 2.2 screen #0 @@ -627,7 +627,7 @@ MPlayer 是近来开发的同时也正迅速发展着的一个视频播放器。 MPlayer 可以从 package:multimedia/mplayer[] 找到。 MPlayer 在联编过程中会进行许多硬件检测, 而得到的可执行文件因此将无法移植到其他系统中使用。 因此, 从 ports 完成联编而不是安装预编译的包就很重要。 另外, 在 `make` 命令行还可以指定许多选项, 在 [.filename]#Makefile# 中有所描述, 接下来我们开始联编: -[source,bash] +[source,shell] .... # cd /usr/ports/multimedia/mplayer # make @@ -655,7 +655,7 @@ MPlayer 的 HTML 文档提供了丰富的内容。 如果读者发现本章中 任何 MPlayer 用户必须在其用户主目录下建立一个叫 [.filename]#.mplayer# 的子目录。 输入下边的内容来建立这个必须的子目录: -[source,bash] +[source,shell] .... % cd /usr/ports/multimedia/mplayer % make install-user @@ -665,27 +665,27 @@ MPlayer 的 HTML 文档提供了丰富的内容。 如果读者发现本章中 要播放一个文件,如 [.filename]#testfile.avi#, 可以通过各种视频接口当中的某一个去设置 `-vo` 选项: -[source,bash] +[source,shell] .... % mplayer -vo xv testfile.avi .... -[source,bash] +[source,shell] .... % mplayer -vo sdl testfile.avi .... -[source,bash] +[source,shell] .... % mplayer -vo x11 testfile.avi .... -[source,bash] +[source,shell] .... # mplayer -vo dga testfile.avi .... -[source,bash] +[source,shell] .... # mplayer -vo 'sdl:dga' testfile.avi .... @@ -694,7 +694,7 @@ MPlayer 的 HTML 文档提供了丰富的内容。 如果读者发现本章中 要播放 DVD, 需要把 [.filename]#testfile.avi# 改为 `dvd://_N_ -dvd-device _DEVICE_`。 这里 _N_ 是要播放的节目编号, 而 [.filename]#DEVICE# 则是 DVD-ROM 的设备节点。 例如, 要播放 [.filename]#/dev/dvd# 的第三个节目: -[source,bash] +[source,shell] .... # mplayer -vo xv dvd://3 -dvd-device /dev/dvd .... @@ -719,7 +719,7 @@ zoom=yes 最后,`mplayer` 可以把DVD题目(title)抓取成为 [.filename]#.vob# 文件。为了从DVD中导出第二个题目,请输入: -[source,bash] +[source,shell] .... # mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd .... @@ -731,7 +731,7 @@ zoom=yes 在使用 `mencoder` 之前, 首先熟悉其 HTML 文档中所介绍的选项是一个不错的主意。 它提供了联机手册, 但如果没有 HTML 文档则帮助不大。 有无数种方法来提高视频品质、 降低比特率、 修改格式, 而这些技巧可能会影响性能。 下面是几个例子, 第一个是简单地复制: -[source,bash] +[source,shell] .... % mencoder input.avi -oac copy -ovc copy -o output.avi .... @@ -740,7 +740,7 @@ zoom=yes 转换 [.filename]#input.avi# 成为带有MPEG3音频编码 (要求 package:audio/lame[] ) 的MPEG4编码: -[source,bash] +[source,shell] .... % mencoder input.avi -oac mp3lame -lameopts br=192 \ -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi @@ -763,14 +763,14 @@ xine 播放器仍然很粗糙, 但这很显然与好开头无关。实际上 x 默认情况下,播放器 xine 启动的时候会使用图形界面。那么就可以使用菜单打开指定的文件: -[source,bash] +[source,shell] .... % xine .... 另外,没有图形界面也可以使用如下命令立即打开播放文件: -[source,bash] +[source,shell] .... % xine -g -p mymovie.avi .... @@ -782,7 +782,7 @@ transcode 这个软件并不是播放器, 而是一系列用于对视频和音 在联编 package:multimedia/transcode[] port 时可以指定大量选项, 我们建议使用下面的命令行来构建 transcode: -[source,bash] +[source,shell] .... # make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \ WITH_MJPEG=yes -DWITH_XVID=yes @@ -792,7 +792,7 @@ WITH_MJPEG=yes -DWITH_XVID=yes 为了说明 `transcode` 的功能, 下面的例子展示了如何将 DivX 转换为 PAL MPEG-1 文件 (PAL VCD): -[source,bash] +[source,shell] .... % transcode -i input.avi -V --export_prof vcd-pal -o output_vcd % mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa @@ -869,7 +869,7 @@ options OVERRIDE_TUNER=6 或者,您直接使用man:sysctl[8]: -[source,bash] +[source,shell] .... # sysctl hw.bt848.tuner=6 .... @@ -929,14 +929,14 @@ device uscanner 使用正确的内核重新引导系统之后, 插入 USB 扫描仪。 系统消息缓冲区 (使用 man:dmesg[8] 查看) 中会出现下面的信息, 表示检测到了扫描仪: -[source,bash] +[source,shell] .... ugen0.2: <EPSON> at usbus0 .... 或者, 对于 FreeBSD 7.X 系统而言: -[source,bash] +[source,shell] .... uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2 .... @@ -955,7 +955,7 @@ device pass 在正确地联编并安装了内核之后, 就应该可以在系统启动时, 从系统消息缓冲中看到这些设备: -[source,bash] +[source,shell] .... pass2 at aic0 bus 0 target 2 lun 0 pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device @@ -964,7 +964,7 @@ pass2: 3.300MB/s transfers 如果您的扫描仪没有在系统启动的时候加电, 很可能还需要强制手动检测一下,用 man:camcontrol[8] 命令执行一次 SCSI 总线扫描: -[source,bash] +[source,shell] .... # camcontrol rescan all Re-scan of bus 0 was successful @@ -975,7 +975,7 @@ Re-scan of bus 3 was successful 然后扫描仪就会出现在 SCSI 设备列表里: -[source,bash] +[source,shell] .... # camcontrol devlist <IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0) @@ -992,7 +992,7 @@ SANE 系统分为两部分: 后端 (package:graphics/sane-backends[]) 和前 要做的第一步就是安装 package:graphics/sane-backends[] port 或者 package。然后,使用 `sane-find-scanner` 命令来检查 SANE 系统做的扫描仪检测: -[source,bash] +[source,shell] .... # sane-find-scanner -q found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3 @@ -1007,7 +1007,7 @@ found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3 现在我们需要检查扫描仪是否可以被扫描前端识别。 默认情况下, SANE 后端自带一个叫做 man:sane[1] 的命令行工具。 这个命令允许您列出设备以及从命令行执行图片扫描。 `-L` 选项用来列出扫描仪设备: -[source,bash] +[source,shell] .... # scanimage -L device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner @@ -1015,7 +1015,7 @@ device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner 或者, 如果使用的是 <<scanners-kernel-usb>> 中的 USB 扫描仪: -[source,bash] +[source,shell] .... # scanimage -L device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner @@ -1031,7 +1031,7 @@ device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner 例如, 对于在 <<scanners-kernel-usb>>, 在 FreeBSD 8.X 中, 扫描仪已经被很好地识别并能够正常工作了; 而对于更早版本的 FreeBSD 而言 (使用 man:uscanner[4] 驱动程序) `sane-find-scanner` 则会给出这样的信息: -[source,bash] +[source,shell] .... # sane-find-scanner -q found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0 @@ -1039,7 +1039,7 @@ found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0 扫描仪被正确的探测到了,它使用 USB 接口,连接在 [.filename]#/dev/uscanner0# 设备节点上。 我们现在可以检查看看扫描仪是否被正确的识别: -[source,bash] +[source,shell] .... # scanimage -L No scanners were identified. If you were expecting something different, @@ -1057,7 +1057,7 @@ usb /dev/uscanner0 请确保阅读后端配置文件提供的注释以及后端手册页了解更多细节, 并使用正确的语法。我们现在可以检验扫描仪是否被识别到了: -[source,bash] +[source,shell] .... # scanimage -L device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner @@ -1078,7 +1078,7 @@ Xsane (package:graphics/xsane[])是另一个流行的图形扫描前端。 这 这里作为示例, 我们将会使用名为 `_usb_` 的组。 第一步是借助 man:pw[8] 命令来创建它: -[source,bash] +[source,shell] .... # pw groupadd usb .... @@ -1111,7 +1111,7 @@ devfs_system_ruleset="system" 现在, 只需将用户添加到 `_usb_` 组, 就可以使用扫描仪了: -[source,bash] +[source,shell] .... # pw groupmod usb -m joe .... diff --git a/documentation/content/zh-cn/books/handbook/network-servers/_index.adoc b/documentation/content/zh-cn/books/handbook/network-servers/_index.adoc index 44f14fa2e2..a0a6b07a24 100644 --- a/documentation/content/zh-cn/books/handbook/network-servers/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/network-servers/_index.adoc @@ -100,7 +100,7 @@ inetd_enable="NO" 写入 [.filename]#/etc/rc.conf# 可以启用或禁用系统启动时 inetd 的自动启动。 命令: -[source,bash] +[source,shell] .... # /etc/rc.d/inetd rcvar .... @@ -144,7 +144,7 @@ inetd_enable="NO" [example] ==== -[source,bash] +[source,shell] .... # /etc/rc.d/inetd reload .... @@ -374,14 +374,14 @@ nfs_client_enable="YES" 在修改了 [.filename]#/etc/exports# 文件之后, 就必须让 mountd 服务重新检查它, 以便使修改生效。 一种方法是通过给正在运行的服务程序发送 HUP 信号来完成: -[source,bash] +[source,shell] .... # kill -HUP `cat /var/run/mountd.pid` .... 或指定适当的参数来运行 `mountd` man:rc[8] 脚本: -[source,bash] +[source,shell] .... # /etc/rc.d/mountd onereload .... @@ -392,7 +392,7 @@ nfs_client_enable="YES" 在 NFS 服务器端: -[source,bash] +[source,shell] .... # rpcbind # nfsd -u -t -n 4 @@ -401,14 +401,14 @@ nfs_client_enable="YES" 在 NFS 客户端: -[source,bash] +[source,shell] .... # nfsiod -n 4 .... 现在每件事情都应该就绪,以备挂载一个远端文件系统。 在这些例子里头, 服务器名字将是:`server` ,而客户端的名字将是: `client`。 如果您只打算临时挂载一个远端文件系统或者只是打算作测试配置正确与否, 只要在客户端以 `root` 身份执行下面的命令: -[source,bash] +[source,shell] .... # mount server:/home /mnt .... @@ -436,7 +436,7 @@ rpc_statd_enable="YES" 然后使用下述命令启动该程序: -[source,bash] +[source,shell] .... # /etc/rc.d/lockd start # /etc/rc.d/statd start @@ -466,7 +466,7 @@ amd 通过将自己以 NFS 服务器的形式, 附加到 [.filename]#/host# ==== 您可以通过使用 `showmount` 命令来查看远程主机上导出的文件系统。 例如, 要查看 `foobar` 上导出的文件系统, 可以用: -[source,bash] +[source,shell] .... % showmount -e foobar Exports list on foobar: @@ -519,7 +519,7 @@ fastws:/sharedfs /project nfs rw,-r=1024 0 0 在 `freebox` 上手工挂接: -[source,bash] +[source,shell] .... # mount -t nfs -o -r=1024 fastws:/sharedfs /project .... @@ -533,7 +533,7 @@ freebox:/sharedfs /project nfs rw,-w=1024 0 0 在 `fastws` 上手工挂接的命令是: -[source,bash] +[source,shell] .... # mount -t nfs -o -w=1024 freebox:/sharedfs /project .... @@ -694,7 +694,7 @@ nis_yppasswdd_enable="YES" 设置好前面这些配置之后, 需要以超级用户身份运行 `/etc/netstart` 命令。 它会根据 [.filename]#/etc/rc.conf# 的设置来配置系统中的其他部分。 最后, 在初始化 NIS 映射之前, 还需要手工启动 ypserv 服务程序: -[source,bash] +[source,shell] .... # /etc/rc.d/ypserv start .... @@ -703,7 +703,7 @@ nis_yppasswdd_enable="YES" _NIS 映射_ 是一些数据库文件, 它们位于 [.filename]#/var/yp# 目录中。 这些文件基本上都是根据 NIS 主服务器的 [.filename]#/etc# 目录自动生成的, 唯一的例外是: [.filename]#/etc/master.passwd# 文件。 一般来说, 您会有非常充分的理由不将 `root` 以及其他管理帐号的口令发到所有 NIS 域上的服务器上。 因此, 在开始初始化 NIS 映射之前, 我们应该: -[source,bash] +[source,shell] .... # cp /etc/master.passwd /var/yp/master.passwd # cd /var/yp @@ -719,7 +719,7 @@ _NIS 映射_ 是一些数据库文件, 它们位于 [.filename]#/var/yp# 目 完成这些工作之后, 就可以初始化 NIS 映射了! FreeBSD 提供了一个名为 `ypinit` 的脚本来帮助您完成这项工作 (详细信息, 请见其联机手册)。 请注意, 这个脚本在绝大多数 UNIX(R) 操作系统上都可以找到, 但并不是所有操作系统的都提供。 在 Digital UNIX/Compaq Tru64 UNIX 上它的名字是 `ypsetup`。 由于我们正在生成的是 NIS 主服务器的映射, 因此应该使用 `ypinit` 的 `-m` 参数。 如果已经完成了上述步骤, 要生成 NIS 映射, 只需执行: -[source,bash] +[source,shell] .... ellington# ypinit -m test-domain Server Type: MASTER Domain: test-domain @@ -748,7 +748,7 @@ ellington has been setup as an YP master server without any errors. `ypinit` 应该会根据 [.filename]#/var/yp/Makefile.dist# 来创建 [.filename]#/var/yp/Makefile# 文件。 创建完之后, 这个文件会假定您正在操作只有 FreeBSD 机器的单服务器 NIS 环境。 由于 `test-domain` 还有一个从服务器, 您必须编辑 [.filename]#/var/yp/Makefile#: -[source,bash] +[source,shell] .... ellington# vi /var/yp/Makefile .... @@ -766,7 +766,7 @@ NOPUSH = "True" 配置 NIS 从服务器, 甚至比配置主服务器还要简单。 登录到从服务器上, 并按照前面的方法, 编辑 [.filename]#/etc/rc.conf# 文件。 唯一的区别是, 在运行 `ypinit` 时需要使用 `-s` 参数。 这里的 `-s` 选项, 同时要求提供 NIS 主服务器的名字, 因此我们的命令行应该是: -[source,bash] +[source,shell] .... coltrane# ypinit -s ellington test-domain @@ -884,7 +884,7 @@ nis_client_enable="YES" 想要立即启动 NIS 客户端, 需要以超级用户身份运行执行下列命令: -[source,bash] +[source,shell] .... # /etc/netstart # /etc/rc.d/ypbind start @@ -935,7 +935,7 @@ nis_client_enable="YES" 有一种办法来禁止特定的用户登录机器, 即使他们身处 NIS 数据库之中。 要完成这一工作, 只需要在客户机的 [.filename]#/etc/master.passwd# 文件中加入一些 `-username` 这样的项, 其中, _username_ 是希望禁止登录的用户名。 一般推荐使用 `vipw` 来完成这个工作, 因为 `vipw` 会对您在 [.filename]#/etc/master.passwd# 文件上所作的修改进行合法性检查, 并在编辑结束时重新构建口令数据库。 例如, 如果希望禁止用户 `bill` 登录 `basie`, 我们应该: -[source,bash] +[source,shell] .... basie# vipw [在末尾加入 -bill, 并退出] @@ -1020,7 +1020,7 @@ Netgroups 被设计用来处理大的、 复杂的包含数百用户和机器的 第一步是初始化 NIS 映射 netgroup。 FreeBSD 的 man:ypinit[8] 默认情况下并不创建这个映射, 但它的 NIS 实现能够在创建这个映射之后立即对其提供支持。 要创建空映射, 简单地输入 -[source,bash] +[source,shell] .... ellington# vi /var/yp/netgroup .... @@ -1063,7 +1063,7 @@ BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3 激活并分发新的 NIS 映射非常简单: -[source,bash] +[source,shell] .... ellington# cd /var/yp ellington# make @@ -1071,7 +1071,7 @@ ellington# make 这个操作会生成三个 NIS 映射, 即 [.filename]#netgroup#、 [.filename]#netgroup.byhost# 和 [.filename]#netgroup.byuser#。 用 man:ypcat[1] 可以检查这些 NIS 映射是否可用了: -[source,bash] +[source,shell] .... ellington% ypcat -k netgroup ellington% ypcat -k netgroup.byhost @@ -1199,7 +1199,7 @@ TWO (,hotel,test-domain) * 每次需要在实验室中增加新用户时, 必须 _只_ 在 NIS 服务器上加入用户, 而且 _一定要记得重建 NIS 映射_。 如果您忘记了这样做, 新用户将无法登录除 NIS 主服务器之外的任何其它机器。 例如, 如果要在实验室增加新用户 `jsmith`, 我们需要: + -[source,bash] +[source,shell] .... # pw useradd jsmith # cd /var/yp @@ -1250,7 +1250,7 @@ default:\ 如果修改了 [.filename]#/etc/login.conf#, 就必须重建登录性能数据库, 这是通过以 `root` 身份运行下面的程序来完成的: -[source,bash] +[source,shell] .... # cap_mkdb /etc/login.conf .... @@ -1425,7 +1425,7 @@ dhcpd_ifaces="dc0" 接下来, 可以用下面的命令来启动服务: -[source,bash] +[source,shell] .... # /usr/local/etc/rc.d/isc-dhcpd start .... @@ -1549,7 +1549,7 @@ FreeBSD 在默认情况下使用一个版本的 BIND (Berkeley Internet Name Dom 默认的 named 配置, 是在 man:chroot[8] 环境中提供基本的域名解析服务, 并且只限于监听本地 IPv4 回环地址 (127.0.0.1)。 如果希望启动这一配置, 可以使用下面的命令: -[source,bash] +[source,shell] .... # /etc/rc.d/named onestart .... @@ -2109,28 +2109,28 @@ FreeBSD 被用于运行许多全球最为繁忙的 web 站点。 大多数 Inter 与许多其它网络服务不同, Apache 并不依赖 inetd 超级服务器来运行。 一般情况下会把它配置为一个独立的服务器, 以期在客户的 web 浏览器连入 HTTP 请求时, 能够获得更好的性能。 它提供了一个 shell 脚本来使启动、 停止和重新启动服务器变得尽可能地简单。 首次启动 Apache, 只需执行: -[source,bash] +[source,shell] .... # /usr/local/sbin/apachectl start .... 可以在任何时候使用下面的命令来停止服务: -[source,bash] +[source,shell] .... # /usr/local/sbin/apachectl stop .... 当由于某种原因修改了配置文件之后, 需要重启服务器: -[source,bash] +[source,shell] .... # /usr/local/sbin/apachectl restart .... 要在重启 Apache 服务器时不中断当前的连接, 则应运行: -[source,bash] +[source,shell] .... # /usr/local/sbin/apachectl graceful .... @@ -2173,7 +2173,7 @@ NameVirtualHost * 如果您的 web 服务器的名字是 `www.domain.tld`, 而您希望建立一个 `www.someotherdomain.tld` 的虚拟域, 则应在 [.filename]#httpd.conf# 中加入: -[source,bash] +[source,shell] .... <VirtualHost *> ServerName www.domain.tld @@ -2219,7 +2219,7 @@ Django 依赖与 mod_python, Apache, 和一个可选的 SQL 数据库引擎。 [example] ==== -[source,bash] +[source,shell] .... # cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL .... @@ -2234,7 +2234,7 @@ Django 依赖与 mod_python, Apache, 和一个可选的 SQL 数据库引擎。 ==== 你需要在 Apache 的配置文件 [.filename]#httpd.conf# 加入以下这几行, 把对某些 URL 的请求传给你的 web 应用程序: -[source,bash] +[source,shell] .... <Location "/"> SetHandler python-program @@ -2252,7 +2252,7 @@ Django 依赖与 mod_python, Apache, 和一个可选的 SQL 数据库引擎。 Ruby on Rails 是另外一个开源的 web framework, 提供了一个全面的开发框架,能帮助 web 开发者工作更有成效和快速写出强大的应用。 它能非常容易的从 posts 系统安装。 -[source,bash] +[source,shell] .... # cd /usr/ports/www/rubygem-rails; make all install clean .... @@ -2271,7 +2271,7 @@ PHP, 也称为 "PHP: Hypertext Preprocessor", 是一种特别适合于 Web 在首次安装 package:lang/php5[] port 的时候, 系统会自动显示可用的一系列 `OPTIONS` (配置选项)。 如果您没有看到菜单, 例如由于过去曾经安装过 package:lang/php5[] port 等等, 可以用下面的命令再次显示配置菜单, 在 port 的目录中执行: -[source,bash] +[source,shell] .... # make config .... @@ -2304,7 +2304,7 @@ AddModule mod_php5.c 这些工作完成之后, 还需要使用 `apachectl` 命令来完成一次 graceful restart 以便加载 PHP 模块: -[source,bash] +[source,shell] .... # apachectl graceful .... @@ -2317,7 +2317,7 @@ AddModule mod_php5.c 安装完扩展之后, 必须重新启动 Apache 服务器, 来令其适应新的配置变更: -[source,bash] +[source,shell] .... # apachectl graceful .... @@ -2357,14 +2357,14 @@ ftpd_enable="YES" 在设置了上述变量之后,独立的服务将在下次系统重启的时候启动, 或者通过以 `root` 身份手动执行如下的命令启动: -[source,bash] +[source,shell] .... # /etc/rc.d/ftpd start .... 现在可以通过输入下面的命令来登录您的 FTP 服务器了: -[source,bash] +[source,shell] .... % ftp localhost .... @@ -2437,7 +2437,7 @@ Samba 提供了若干种不同的验证后端模型。 您可以通过 LDAP、 N 假设您使用的是默认的 `smbpasswd` 后端, 则必须首先创建一个 [.filename]#/usr/local/etc/samba/smbpasswd# 文件, 来允许 Samba 对客户进行身份验证。 如果您打算让 UNIX(R) 用户帐号能够从 Windows(R) 客户机上登录, 可以使用下面的命令: -[source,bash] +[source,shell] .... # smbpasswd -a username .... @@ -2446,7 +2446,7 @@ Samba 提供了若干种不同的验证后端模型。 您可以通过 LDAP、 N ==== 目前推荐使用的后端是 `tdbsam`, 您应使用下面的命令来添加用户帐号: -[source,bash] +[source,shell] .... # pdbedit -a -u username .... @@ -2483,7 +2483,7 @@ smbd_enable="YES" 配置好之后, 就可以在任何时候通过下面的命令来启动 Samba 了: -[source,bash] +[source,shell] .... # /usr/local/etc/rc.d/samba start Starting SAMBA: removing stale tdbs : @@ -2497,7 +2497,7 @@ Samba 事实上包含了三个相互独立的服务程序。 您应该能够看 可以在任何时候通过下面的命令来停止运行 Samba: -[source,bash] +[source,shell] .... # /usr/local/etc/rc.d/samba stop .... @@ -2583,7 +2583,7 @@ restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 要在不重新启动机器的前提下启动服务器, 需要手工运行 `ntpd`, 并带上 [.filename]#/etc/rc.conf# 中的 `ntpd_flags` 所指定的参数。 例如: -[source,bash] +[source,shell] .... # ntpd -p /var/run/ntpd.pid .... @@ -2661,14 +2661,14 @@ syslogd_flags="-a logclient.example.com -v -v" 最后, 日志文件应该被创建。 不论你用何种方法创建, 比如 man:touch[1] 能很好的完成此类任务: -[source,bash] +[source,shell] .... # touch /var/log/logclient.log .... 此时, 应该重启并确认一下 `syslogd` 守护进程: -[source,bash] +[source,shell] .... # /etc/rc.d/syslogd restart # pgrep syslog @@ -2707,14 +2707,14 @@ Facility 是描述某个消息由系统的哪部分生成的。 举例来说, 添加后, 必须重启 `syslogd` 使得上述修改生效: -[source,bash] +[source,shell] .... # /etc/rc.d/syslogd restart .... 测试日志消息是否能通过网络发送, 在准备发出消息的客户机上用 man:logger[1] 来向 `syslogd` 发出信息: -[source,bash] +[source,shell] .... # logger "Test message from logclient" .... @@ -2732,14 +2732,14 @@ Facility 是描述某个消息由系统的哪部分生成的。 举例来说, syslogd_flags="-d -a logclien.example.com -v -v" .... -[source,bash] +[source,shell] .... # /etc/rc.d/syslogd restart .... 在重启服务之后, 屏幕上将立刻闪现类似这样的调试数据: -[source,bash] +[source,shell] .... logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart syslogd: restarted @@ -2760,7 +2760,7 @@ syslogd_flags="-d -a logclien.example.com -v -v" 这行应该包涵有 `logclient`, 而不是 `logclien`。 在做了正确的修改并重启之后便能见到预期的效果了: -[source,bash] +[source,shell] .... # /etc/rc.d/syslogd restart logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart diff --git a/documentation/content/zh-cn/books/handbook/ports/_index.adoc b/documentation/content/zh-cn/books/handbook/ports/_index.adoc index 27299bae86..62f98d025c 100644 --- a/documentation/content/zh-cn/books/handbook/ports/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/ports/_index.adoc @@ -128,7 +128,7 @@ FreeBSD中可用的应用程序正在不断地增长着。幸运的是, 有许 * 如果您不知道您想要的应用程序的名字,可以通过 (http://www.freshmeat.net/[http://www.freshmeat.net/]) 网站来查找, 如果找到了应用程序, 您可以回 FreeBSD 的主站去看一下这个应用程序是否已经被 port 进去了。 * 如果您知道一个port的准确名字, 但需要知道在哪个类别里面能找到它,您可以使用 man:whereis[1] 这个命令。简单地输入 `whereis file`, _file_ 就是您想安装的程序名字。 如果系统找到了它, 您将被告知在它在哪里, 例如: + -[source,bash] +[source,shell] .... # whereis lsof lsof: /usr/ports/sysutils/lsof @@ -137,7 +137,7 @@ lsof: /usr/ports/sysutils/lsof 结果告诉我们这个命令``lsof`` (一个系统配置程序)可以在 [.filename]##/usr/ports/sysutils/lsof##目录中找到。 * 你可以使用简单的 man:echo[1] 语句来查找某个 port 是否存在于 ports 树中。 例如: + -[source,bash] +[source,shell] .... # echo /usr/ports/*/*lsof* /usr/ports/sysutils/lsof @@ -148,7 +148,7 @@ Note that this will return any matched files downloaded into the [.filename]#/us 请注意这条命令将会返回下载到 [.filename]#/usr/ports/distfiles# 目录中所有符合条件的文件。 * 还有另外的一个寻找您需要的port的方法--是用ports collecton 内嵌的搜索机制。要使用这个搜索, 您需要先到 [.filename]##/usr/ports##目录下面。 在那个目录里面, 运行``make search name=program-name``, __program-name__ 就是您想寻找的程序名字。 举个例子, 如果您想找 `lsof`: + -[source,bash] +[source,shell] .... # cd /usr/ports # make search name=lsof @@ -183,7 +183,7 @@ R-deps: [example] ==== -[source,bash] +[source,shell] .... # ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. @@ -214,7 +214,7 @@ ftp> exit 如果您没有本地package的安装盘 (如 FreeBSD CD-ROM), 可以执行 man:pkg_add[1] 命令并加上 `-r` 选项。 这将迫使程序自动决定目标文件的正确格式和版本, 然后自动从一个 FTP 站点寻找和安装 package。 -[source,bash] +[source,shell] .... # pkg_add -r lsof .... @@ -234,7 +234,7 @@ ftp> exit man:pkg_info[1] 是用于列出已安装的所有软件包列表和描述的程序。 -[source,bash] +[source,shell] .... # pkg_info cvsup-16.1 A general network file distribution system optimized for CV @@ -244,7 +244,7 @@ docbook-1.2 Meta-port for the different versions of the DocBook DTD man:pkg_version[1]是一个用来统计所有安装的软件包版本的工具。 它可以用来比较本地 package 的版本与 ports 目录中的当前版本是否一致。 -[source,bash] +[source,shell] .... # pkg_version cvsup = @@ -283,14 +283,14 @@ docbook = 要删除先前安装的软件package,只要使用man:pkg_delete[1] 工具。 -[source,bash] +[source,shell] .... # pkg_delete xchat-1.7.1 .... 需要注意的是, man:pkg_delete[1] 需要提供完整的包名; 如果您只是指定了类似 _xchat_ 而不是 _xchat-1.7.1_ 这样的名字, 则它将拒绝执行操作。 不过, 您可以使用 man:pkg_version[1] 来了解安装的 package 的版本。 除此之外, 也可以使用通配符: -[source,bash] +[source,shell] .... # pkg_delete xchat\* .... @@ -328,7 +328,7 @@ docbook = . 运行 `csup`: + -[source,bash] +[source,shell] .... # csup -L 2 -h cvsup.FreeBSD.org /usr/shared/examples/cvsup/ports-supfile .... @@ -346,7 +346,7 @@ docbook = .. 把 _CHANGE_THIS.FreeBSD.org_ 修改成离您较近的 CVSup 服务器。 可以参考 crossref:mirrors[cvsup-mirrors,CVSup 镜像] (crossref:mirrors[cvsup-mirrors,CVSup 站点]) 中的镜像站点完整列表。 .. 接下来按如下的方式运行 `csup`: + -[source,bash] +[source,shell] .... # csup -L 2 /root/ports-supfile .... @@ -364,21 +364,21 @@ Portsnap 是用于发布 Ports 套件的另一套系统。 请参阅 crossref:cu . 下载压缩的 Ports 套件快照到 [.filename]#/var/db/portsnap#。 您可以根据需要在这之后关闭 Internet 连接。 + -[source,bash] +[source,shell] .... # portsnap fetch .... + . 假如您是首次运行 Portsnap, 则需要将快照释放到 [.filename]#/usr/ports#: + -[source,bash] +[source,shell] .... # portsnap extract .... + 如果您已经有装好的 [.filename]#/usr/ports# 而您只想更新, 则应执行下面的命令: + -[source,bash] +[source,shell] .... # portsnap update .... @@ -392,7 +392,7 @@ Portsnap 是用于发布 Ports 套件的另一套系统。 请参阅 crossref:cu . 以 `root` 身份运行 `sysinstall`: + -[source,bash] +[source,shell] .... # sysinstall .... @@ -440,14 +440,14 @@ Ports 套件假定您有可用的 Internet 连接。 如果您没有, 则需 要开始操作, 首先进入要安装 port 的目录: -[source,bash] +[source,shell] .... # cd /usr/ports/sysutils/lsof .... 一旦进入了 [.filename]#lsof# 的目录,您将会看到这个port的结构。 下一步就是 make,或说 "联编" 这个 port。 只需在命令行简单地输入 `make` 命令就可轻松完成这一工作。 做好之后,您可以看到下面的信息: -[source,bash] +[source,shell] .... # make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. @@ -472,7 +472,7 @@ Ports 套件假定您有可用的 Internet 连接。 如果您没有, 则需 注意,一旦编译完成,您就会回到命令行。 下一步安装 port, 要安装它只需要在 `make` 命令后跟上一个单词 `install` 即可: -[source,bash] +[source,shell] .... # make install ===> Installing for lsof-4.57 @@ -492,7 +492,7 @@ Ports 套件假定您有可用的 Internet 连接。 如果您没有, 则需 删除工作目录是个好主意, 这个目录中包含了全部在编译过程中用到的临时文件。 这些文件不仅会占用宝贵的磁盘空间, 而且可能会给升级新版本的 port 时带来麻烦。 -[source,bash] +[source,shell] .... # make clean ===> Cleaning for lsof-4.57 @@ -527,7 +527,7 @@ ports 系统使用 man:fetch[1] 去下载文件, 它有很多可以设置的 在一些罕见的例子中, 用户可能需要在除了 `MASTER_SITES` 以外的一个站点(本地已经下载下来的文件)去获得一个文件包。 您可以用以下命令不使用 `MASTER_SITES`: -[source,bash] +[source,shell] .... # cd /usr/ports/directory # make MASTER_SITE_OVERRIDE= \ @@ -545,14 +545,14 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch 有时, 使用不同的工作临时目录和目标目录可能很有用 (甚至是必要的)。 可以用 `WRKDIRPREFIX` 和 `PREFIX` 这两个变量来改变默认的目录。 例如: -[source,bash] +[source,shell] .... # make WRKDIRPREFIX=/usr/home/example/ports install .... 将在 [.filename]#/usr/home/example/ports# 中编译 port 并把所有的文件安装到 [.filename]#/usr/local#。 -[source,bash] +[source,shell] .... # make PREFIX=/usr/home/example/local install .... @@ -561,7 +561,7 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch 当然, -[source,bash] +[source,shell] .... # make WRKDIRPREFIX=../ports PREFIX=../local install .... @@ -583,7 +583,7 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch 现在您已经了解了如何安装 ports, 并希望进一步了解如何卸载, 特别是在错误地安装了某个 port 之后。我们将卸载前面例子 (假如您没有注意的话, 是 `lsof`) 中安装的 port。 Ports 可以同 packages 以完全相同的方式 (在 <<packages-using,Packages 一节>> 中进行了介绍) 卸载, 方法是使用 man:pkg_delete[1] 命令: -[source,bash] +[source,shell] .... # pkg_delete lsof-4.57 .... @@ -593,7 +593,7 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch 首先, 使用 man:pkg_version[1] 命令来列出 Ports Collection 中提供了更新版本的那些 port: -[source,bash] +[source,shell] .... # pkg_version -v .... @@ -610,7 +610,7 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch portupgrade 工具是设计来简化升级已安装的 port 的操作的。 它通过 package:ports-mgmt/portupgrade[] port 来提供。 您可以像其它 port 那样, 使用 `make install clean` 命令来安装它: -[source,bash] +[source,shell] .... # cd /usr/ports/ports-mgmt/portupgrade # make install clean @@ -620,21 +620,21 @@ portupgrade 工具是设计来简化升级已安装的 port 的操作的。 它 运行 `portupgrade -a` 时, portupgrade 将开始并升级系统中所安装的所有过时的 ports。 如果您希望在每个升级操作时得到确认, 应指定 `-i` 参数。 -[source,bash] +[source,shell] .... # portupgrade -ai .... 如果您只希望升级某个特定的应用程序, 而非全部可用的 port, 应使用 `portupgrade pkgname`。 如果 portupgrade 应首先升级指定应用程序的话, 则应指定 `-R` 参数。 -[source,bash] +[source,shell] .... # portupgrade -R firefox .... 要使用预编译的 package 而不是 ports 来进行安装, 需要指定 `-P`。 如果指定了这个选项, portupgrade 会搜索 `PKG_PATH` 中指定的本地目录, 如果没有找到, 则从远程站点下载。 如果本地没有找到, 而且远程站点也没有成功地下载预编译包, 则 portupgrade 将使用 ports。 要禁止使用 port, 可以指定 `-PP`。 -[source,bash] +[source,shell] .... # portupgrade -PP gnome2 .... @@ -646,7 +646,7 @@ portupgrade 工具是设计来简化升级已安装的 port 的操作的。 它 Portmanager 是另一个用以简化已安装 port 升级操作的工具。 它可以通过 package:ports-mgmt/portmanager[] port 安装: -[source,bash] +[source,shell] .... # cd /usr/ports/ports-mgmt/portmanager # make install clean @@ -654,21 +654,21 @@ Portmanager 是另一个用以简化已安装 port 升级操作的工具。 它 可以通过这个简单的命令来升级所有已安装的 port: -[source,bash] +[source,shell] .... # portmanager -u .... 如果希望 Portmanager 在进行每步操作之前都给出提示, 应使用 `-ui` 参数。 Portmanager 也可以用来在系统中安装新的 ports。 与通常的 `make install clean` 命令不同,它会在联编和安装您所选择的 port 之前升级所有依赖包。 -[source,bash] +[source,shell] .... # portmanager x11/gnome2 .... 如果关于所选 port 的依赖有任何问题, 可以用 Portmanager 来以正确的顺序重新构建它们。 完成之后, 有问题的 port 也将被重新构建。 -[source,bash] +[source,shell] .... # portmanager graphics/gimp -f .... @@ -680,7 +680,7 @@ Portmanager 是另一个用以简化已安装 port 升级操作的工具。 它 Portmaster 是另外一个用来升级已安装的 ports 的工具。 Portmaster 被设计成尽可能使用 "基本" 系统中能找到的工具 (它不依赖于其他的 ports) 和 [.filename]#/var/db/pkg/# 中的信息来检测出需要升级的 ports。你可以在 package:ports-mgmt/portmaster[] 找到它: -[source,bash] +[source,shell] .... # cd /usr/ports/ports-mgmt/portmaster # make install clean @@ -697,7 +697,7 @@ Portmaster 把 ports 分成4类: 你可以使用 `-L` 选项列出所有已安装的 ports 和查找存在更新的 ports: -[source,bash] +[source,shell] .... # portmaster -L ===>>> Root ports (No dependencies, not depended on) @@ -725,7 +725,7 @@ Portmaster 把 ports 分成4类: 可以使用这个简单的命令升级所有已安装的 ports: -[source,bash] +[source,shell] .... # portmaster -a .... @@ -737,14 +737,14 @@ Portmaster 默认在删除一个现有的 port 前会做一个备份包。如果 如果你在升级的过程中发现了错误,你可以使用 `-f` 选项升级/重新编译所有的 ports: -[source,bash] +[source,shell] .... # portmaster -af .... 同样你也可以使用 Portmaster 往系统里安装新的 ports,升级所有的依赖关系之后并安装新的 port: -[source,bash] +[source,shell] .... # portmaster shells/bash .... @@ -756,21 +756,21 @@ Portmaster 默认在删除一个现有的 port 前会做一个备份包。如果 使用 Ports 套件会最终用完磁盘空间。 在通过 ports 联编和安装软件之后,您应记得清理临时的 [.filename]#work# 目录, 其方法是使用 `make clean` 命令。 您可以使用下面的命令来清理整个 Ports 套件: -[source,bash] +[source,shell] .... # portsclean -C .... 随着时间的推移, 您可能会在 [.filename]#distfiles# 目录中积累下大量源代码文件。 您可以手工删除这些文件, 也可以使用下面的命令来删除所有 port 都不引用的文件: -[source,bash] +[source,shell] .... # portsclean -D .... 除此之外, 也可以用下列命令删去目前安装的 port 没有使用的源码包文件: -[source,bash] +[source,shell] .... # portsclean -DD .... @@ -791,7 +791,7 @@ Portmaster 默认在删除一个现有的 port 前会做一个备份包。如果 * 使用 man:pkg_info[1] 命令,它能找到安装了哪些文件,以及装在哪里。 举个例子,如果您安装了 FooPackage version 1.0.0, 那么这个命令 + -[source,bash] +[source,shell] .... # pkg_info -L foopackage-1.0.0 | less .... @@ -800,7 +800,7 @@ Portmaster 默认在删除一个现有的 port 前会做一个备份包。如果 + 如果您不确定已经安装好的软件版本,您可以使用这样的命令 + -[source,bash] +[source,shell] .... # pkg_info | grep -i foopackage .... @@ -809,7 +809,7 @@ Portmaster 默认在删除一个现有的 port 前会做一个备份包。如果 * 一旦一些软件手册已被您确认安装,您可以使用 man:man[1] 查看它。 同样的,如果有的话,您还可以完整的查看一遍配置文件的示例,以及任何额外的文档。 * 如果应用软件有网站, 您还可以从网站上找到文档,常见问题的解答,或其他更多。 如果您不知道它们的网站地址,请使用下面的命令 + -[source,bash] +[source,shell] .... # pkg_info foopackage-1.0.0 .... diff --git a/documentation/content/zh-cn/books/handbook/ppp-and-slip/_index.adoc b/documentation/content/zh-cn/books/handbook/ppp-and-slip/_index.adoc index c096e790f0..1793d2ca0e 100644 --- a/documentation/content/zh-cn/books/handbook/ppp-and-slip/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/ppp-and-slip/_index.adoc @@ -195,7 +195,7 @@ set log phase tun + 登录命令是的语法是chat类型的。 在这个例子中是这样的: + -[source,bash] +[source,shell] .... J. Random Provider login: foo @@ -310,7 +310,7 @@ exec /usr/sbin/ppp -direct $IDENT 这个脚本要有可执行属性。 然后通过如下命令创建一个指向此脚本且名为 [.filename]##ppp-dialup##的符号链接: -[source,bash] +[source,shell] .... # ln -s ppp-shell /etc/ppp/ppp-dialup .... @@ -324,7 +324,7 @@ pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup 创建一个名为 [.filename]#/home/ppp# 的目录作为拨入用户的主目录, 其中包含以下这些空文件: -[source,bash] +[source,shell] .... -r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin -r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts @@ -338,7 +338,7 @@ pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup 例如, 如果您希望为三个拨号用户, `fred`, `sam`, 和 `mary` 路由 /24 CIDR 的网络, 则需要键入以下内容: -[source,bash] +[source,shell] .... # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam @@ -603,7 +603,7 @@ sendmail_flags="-bd" 替代的做法是当每次 PPP 连接建立时您必须通过键入以下命令强制 `sendmail` 重新检查邮件队列: -[source,bash] +[source,shell] .... # /usr/sbin/sendmail -q .... @@ -622,14 +622,14 @@ sendmail_flags="-bd" 现在您唯一要做的事是重新启动计算机。 重启之后,可以输入: -[source,bash] +[source,shell] .... # ppp .... 然后是``dial provider``以开启 PPP会话。 或者如果您想让``ppp``自动建立会话, 因为您有一条广域网连接 (且没有创建 [.filename]#start_if.tun0# 脚本), 键入: -[source,bash] +[source,shell] .... # ppp -auto provider .... @@ -716,7 +716,7 @@ defaultroute # put this if you want that PPP server will be your . 退出 Kermit (并不挂断连接)。 . 键入下面这行: + -[source,bash] +[source,shell] .... # /usr/sbin/pppd /dev/tty01 19200 .... @@ -861,7 +861,7 @@ ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTphone.number 一旦这些被安装且修改正确, 您所要做的就是运行``pppd``, 就像这样: -[source,bash] +[source,shell] .... # pppd .... @@ -1108,7 +1108,7 @@ device uart 默认的 `GENERIC` 内核中包含了 [.filename]#uart# 设备, 因此如果您使用的是它的话, 就不需要担心了。 只要查看 `dmesg` 输出中是否有 modem 设备: -[source,bash] +[source,shell] .... # dmesg | grep uart .... @@ -1119,35 +1119,35 @@ device uart 通过手动控制``ppp``来连接Internet 是诊断连接及获知ISP处理PPP客户端方式的一个快速, 简单的方法。 让我们从PPP 命令行开始, 在所有的例子中我们使用 _example_ 表示运行 PPP 服务的主机名。 键入``ppp`` 命令打开 ``ppp``: -[source,bash] +[source,shell] .... # ppp .... 现在我们已经打开了``ppp``。 -[source,bash] +[source,shell] .... ppp ON example> set device /dev/cuau1 .... 设置modem设备, 在本例子中是 [.filename]#cuau1#。 -[source,bash] +[source,shell] .... ppp ON example> set speed 115200 .... 设置连接速度, 在本例中我们使用15,200 kbps。 -[source,bash] +[source,shell] .... ppp ON example> enable dns .... 使``ppp``配置域名服务, 在文件[.filename]##/etc/resolv.conf##中添加域名服务器行。 如果 ``ppp``不能确定我们的主机名, 可以在稍后设置。 -[source,bash] +[source,shell] .... ppp ON example> term .... @@ -1160,7 +1160,7 @@ deflink: Entering terminal mode on /dev/cuau1 type '~h' for help .... -[source,bash] +[source,shell] .... at OK @@ -1169,56 +1169,56 @@ atdt123456789 使用命令``at``初始化modem, 然后使用``atdt``和ISP给您的号码进行拨号。 -[source,bash] +[source,shell] .... CONNECT .... 连接配置, 如果我们遇到了与硬件无关的连接问题, 可以在这里尝试解决。 -[source,bash] +[source,shell] .... ISP Login:myusername .... 这里提示您输入用户名, 输入ISP提供的用户名然后按回车。 -[source,bash] +[source,shell] .... ISP Pass:mypassword .... 这时提示我们输入密码, 输入 ISP提供的密码。 如同登录入FreeBSD, 密码不会显示。 -[source,bash] +[source,shell] .... Shell or PPP:ppp .... 由于ISP的不同, 这个提示符可能不会出现。 这里我们需要考虑: 是使用运行于提供商端的 Shell, 还是启动 `ppp`? 这本例中, 我们选择使用 `ppp`, 因为我们希望得到 Internet 连接。 -[source,bash] +[source,shell] .... Ppp ON example> .... 注意在这个例子中, 第一个 ``p``已经大写。 这表示我们已经成功地连接上了 ISP。 -[source,bash] +[source,shell] .... PPp ON example> .... 我们已经成功通过了 ISP的验证, 正在等待分配IP地址。 -[source,bash] +[source,shell] .... PPP ON example> .... 我们得到了一个 IP 地址, 成功地完成了连接。 -[source,bash] +[source,shell] .... PPP ON example>add default HISADDR .... @@ -1237,14 +1237,14 @@ PPP 可能并不返回命令模式, 这通常是 ISP 等待您这一端发起 如果您没有看到登录提示, 则很可能需要使用 PAP 或 CHAP 验证来代替前面例子中的 UNIX(R) 风格验证。 要使用 PAP 或 CHAP 只需在进入终端模式之前把下面的选项加入 PPP: -[source,bash] +[source,shell] .... ppp ON example> set authname myusername .... 此处 _myusername_ 应改为您的 ISP 分配给您的用户名。 -[source,bash] +[source,shell] .... ppp ON example> set authkey mypassword .... @@ -1304,7 +1304,7 @@ name_of_service_provider: 以 `root` 身份执行: -[source,bash] +[source,shell] .... # ppp -ddial name_of_service_provider .... @@ -1359,7 +1359,7 @@ net.graph.nonstandard_pppoe=1 或者, 也可以直接执行下面的命令: -[source,bash] +[source,shell] .... # sysctl net.graph.nonstandard_pppoe=1 .... @@ -1461,14 +1461,14 @@ adsl: 初始化连接: -[source,bash] +[source,shell] .... # mpd -b adsl .... 您可以通过以下命令查看连接状态: -[source,bash] +[source,shell] .... % ifconfig ng0 ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500 @@ -1504,7 +1504,7 @@ adsl: 由于您必须将帐号密码以明文的方式放入[.filename]##ppp.conf## 您应该确保没有任何人能看到此文件的内容。 以下一系列命令将会确保此文件只对 ``root``用户可读。 请参见 man:chmod[1] 和 man:chown[8] 的联机手册以了解有关如何操作的进一步信息。 -[source,bash] +[source,shell] .... # chown root:wheel /etc/ppp/ppp.conf # chmod 600 /etc/ppp/ppp.conf @@ -1514,7 +1514,7 @@ adsl: 以下将为到 DSL 路由器的会话打开一个 tunnel。 以太网DSL modem有一个设置的局域网IP地址。 以 Alcatel SpeedTouch(TM) Home 为例, 这个地址是 `10.0.0.138`。 路由器的文档应该会告诉您它使用的地址。 执行以下命令以打开 tunnel 并开始会话: -[source,bash] +[source,shell] .... # pptp address adsl .... @@ -1527,7 +1527,7 @@ adsl: 要创建一个 [.filename]##tun##虚拟设备用于进程pptp 和ppp 之间的交互。 一旦您回到了命令行, 或者 pptp 进程确认了一个连接, 您可以这样检查tunnel设备: -[source,bash] +[source,shell] .... % ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 @@ -1656,7 +1656,7 @@ output ***\x0d, echo \x0aCONNECTED\x0a + . 在这里退出 Kermit (也可以用 kbd:[Ctrl+z] 将其挂起), 以 `root` 用户键入: + -[source,bash] +[source,shell] .... # slattach -h -c -s 115200 /dev/modem .... @@ -1668,7 +1668,7 @@ output ***\x0d, echo \x0aCONNECTED\x0a 按下面的步骤做: -[source,bash] +[source,shell] .... # kill -INT `cat /var/run/slattach.modem.pid` .... @@ -1687,7 +1687,7 @@ output ***\x0d, echo \x0aCONNECTED\x0a * 使用``s10``替换 ``sl0`` (在一些字体下很难看出不同)。 * 试试``ifconfig sl0``来查看您的接口状态。 例如, 您可以这样做: + -[source,bash] +[source,shell] .... # ifconfig sl0 sl0: flags=10<POINTOPOINT> @@ -1696,7 +1696,7 @@ sl0: flags=10<POINTOPOINT> * 如果在使用 man:ping[8] 时得到了 `no route to host` 这样的提示, 则说明您的路由表可能有问题。 可以用 `netstat -r` 命令来显示当前的路由: + -[source,bash] +[source,shell] .... # netstat -r Routing tables @@ -1770,7 +1770,7 @@ device sl 要立即应用这些配置, 可以 `root` 的身份运行: -[source,bash] +[source,shell] .... # /etc/rc.d/routing start .... @@ -1858,7 +1858,7 @@ Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp 当使用以上的例子时, 一定要将 以太网MAC地址 (``00:11:22:33:44:55``) 替换成您系统网卡的MAC地址, 否则"ARP代理" 将完全无法工作! 您可以查看 ``netstat -i`` 输出结果以取得以太网 MAC 地址; 输出的第二行应该是这样: -[source,bash] +[source,shell] .... ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116 .... diff --git a/documentation/content/zh-cn/books/handbook/preface/_index.adoc b/documentation/content/zh-cn/books/handbook/preface/_index.adoc index 1731627e1b..949c29505a 100644 --- a/documentation/content/zh-cn/books/handbook/preface/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/preface/_index.adoc @@ -231,21 +231,21 @@ kbd:[Ctrl+X], kbd:[Ctrl+S] 以 [.filename]#E:\># 开头的例子代表一个 MS-DOS(R) 命令。除非另有说明,这些命令都可以在一个现代的 Microsoft(R) Windows(R) "命令行"窗口环境被执行。 -[source,bash] +[source,shell] .... E:\> tools\fdimage floppies\kern.flp A: .... 以 # 开头的例子代表必须以 FreeBSD 超级用户身份执行的命令。您可以用 `root` 身份登录来输入这些命令,或者以普通账号登录然后用 man:su[1] 来获得超级用户权限。 -[source,bash] +[source,shell] .... # dd if=kern.flp of=/dev/fd0 .... 以 % 开头的例子代表命令应该被普通账号执行。 除非另有说明, 在设置环境变量和使用的其他 shell 命令均为 C-shell 语法。 -[source,bash] +[source,shell] .... % top .... diff --git a/documentation/content/zh-cn/books/handbook/printing/_index.adoc b/documentation/content/zh-cn/books/handbook/printing/_index.adoc index 51c10bafb2..b09ff30d0b 100644 --- a/documentation/content/zh-cn/books/handbook/printing/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/printing/_index.adoc @@ -188,14 +188,14 @@ PostScript(R) 任务事实上由程序发送给打印机; 但它并不进行 要想知道您现在使用的内核是否支持串口, 输入: -[source,bash] +[source,shell] .... # grep sioN /var/run/dmesg.boot .... 其中 _N_ 是串口的 编号, 从0开始。 如果您看到 类似下面的输出: -[source,bash] +[source,shell] .... sio2 at port 0x3e8-0x3ef irq 5 on isa sio2: type 16550A @@ -205,14 +205,14 @@ sio2: type 16550A 要想知道您现在使用的内核是否支持并口, 输入: -[source,bash] +[source,shell] .... # grep ppcN /var/run/dmesg.boot .... 其中 _N_ 是并口的 编号, 同样从0开始。 如果得到类似 下面的输出: -[source,bash] +[source,shell] .... ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode @@ -253,7 +253,7 @@ hint.ppc.0.irq="N" + 它在 [.filename]#/boot/device.hints# 这个文件中, 其中 _N_ 用正确的中断 编号代替。 同时, 核心配置文件也必须 包括 man:ppc[4] 的驱动: + -[source,bash] +[source,shell] .... device ppc .... @@ -277,7 +277,7 @@ _使用_ man:lptcontrol[8] _设置通讯模式_: . 输入: + -[source,bash] +[source,shell] .... # lptcontrol -i -d /dev/lptN .... @@ -285,7 +285,7 @@ _使用_ man:lptcontrol[8] _设置通讯模式_: 将 `lptN` 设置成中断方式。 . 输入: + -[source,bash] +[source,shell] .... # lptcontrol -p -d /dev/lptN .... @@ -335,7 +335,7 @@ _要测试并口上的打印机:_ + ** 如果打印机可以直接打印纯文本, 可以用 man:lptest[1]。 输入: + -[source,bash] +[source,shell] .... # lptest > /dev/lptN .... @@ -343,7 +343,7 @@ _要测试并口上的打印机:_ 其中 _N_ 是并口的编号, 从0开始。 ** 如果打印机支持 PostScript(R) 或其他打印机语言, 可以发送一段小程序到打印机。 输入: + -[source,bash] +[source,shell] .... # cat > /dev/lptN .... @@ -352,7 +352,7 @@ _要测试并口上的打印机:_ + 另外一种办法, 您可以把这段程序写在一个文件里, 并输入: + -[source,bash] +[source,shell] .... # cat file > /dev/lptN .... @@ -391,7 +391,7 @@ printer:dv=/dev/ttyu2:br#19200:pa=none + . 用 man:tip[1] 连接打印机。 输入: + -[source,bash] +[source,shell] .... # tip printer .... @@ -401,7 +401,7 @@ printer:dv=/dev/ttyu2:br#19200:pa=none + ** 如果打印机可以直接打印纯文本, 则用 man:lptest[1]。 输入: + -[source,bash] +[source,shell] .... % $lptest .... @@ -410,7 +410,7 @@ printer:dv=/dev/ttyu2:br#19200:pa=none + 或者, 您同样也可以把程序存储在一个文件里 并输入: + -[source,bash] +[source,shell] .... % >file .... @@ -504,14 +504,14 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ 通常, 我们习惯将目录名起成和 打印机一样的名字, 像下面 这样: -[source,bash] +[source,shell] .... # mkdir /var/spool/printer-name .... 然而, 如果您有很多网络打印机, 您可能想要把这些后台打印的队列目录目录放在一个单独的专为使用 LPD 打印而准备的目录里。 我们将用我们的两台打印机 `rattan` 和 `bamboo` 作为例子: -[source,bash] +[source,shell] .... # mkdir /var/spool/lpd # mkdir /var/spool/lpd/rattan @@ -522,7 +522,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ ==== 如果担心用户任务的保密性, 可能会希望保护相应的后台打印队列目录, 使之不能被其他用户访问。 后台打印的队列目录的属主应该是 daemon 用户, 而 `daemon` 用户和 `daemon` 组拥有读写和搜索的权限,但其他用户没有。 接下来用我们的两台打印机作为例子: -[source,bash] +[source,shell] .... # chown daemon:daemon /var/spool/lpd/rattan # chown daemon:daemon /var/spool/lpd/bamboo @@ -628,7 +628,7 @@ exit 2 使这个文件可以被执行: -[source,bash] +[source,shell] .... # chmod 555 /usr/local/libexec/if-simple .... @@ -666,7 +666,7 @@ lpd_enable="YES" 到 [.filename]#/etc/rc.conf# 文件当中, 然后既可以重启您的 机器, 也可以直接运行 man:lpd[8]。 -[source,bash] +[source,shell] .... # lpd .... @@ -682,7 +682,7 @@ _要测试简单 LPD 设置:_ 输入: -[source,bash] +[source,shell] .... # lptest 20 5 | lpr -Pprinter-name .... @@ -691,7 +691,7 @@ _要测试简单 LPD 设置:_ 对于一台 PostScript(R) 打印机, 您应该得到那段程序的 结果。 而如果您使用的 man:lptest[1], 则您得到的 结果应该看起来像下面这样: -[source,bash] +[source,shell] .... !"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 @@ -918,7 +918,7 @@ exit 2 转换过滤器使打印众多格式的文件变得很容易。 比如, 假设我们大量使用 TeX 排版系统, 并且有一台 PostScript(R) 打印机。 每次从 TeX 生成一个 DVI 文件, 我们都不能直接打印它直到我们将 DVI 文件转换成 PostScript(R)。 转换的命令应该是下面的样子: -[source,bash] +[source,shell] .... % dvips seaweed-analysis.dvi % lpr seaweed-analysis.ps @@ -926,7 +926,7 @@ exit 2 通过安装 DVI 文件的转换过滤器, 我们可以跳过每次手动转换这一步, 而让 LPD 来完成这个步骤。 现在, 每次要打印 DVI 文件, 我们只需要一步就可以打印它: -[source,bash] +[source,shell] .... % lpr -d seaweed-analysis.dvi .... @@ -1291,7 +1291,7 @@ LPD 在报头页之后发出一个换纸字符。 如果您的打印机使用一 通过启用报头页, LPD 将生成出一个 _长报头_, 一整页的大字母, 标着用户, 主机和任务名。 下面是一个例子 (`kelly` 从主机 `rose` 打印了一个叫做 "outline" 的任务): -[source,bash] +[source,shell] .... k ll ll k l l @@ -1331,7 +1331,7 @@ LPD 会附加一个换页符在这段文本之后, 所以任务会在新的一 如果您喜欢, LPD 可以生成一个 _短报头_; 指定 `sb` (短 banner) 在文件 [.filename]#/etc/printcap# 中。 报头页就会看起来像下面这样: -[source,bash] +[source,shell] .... rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995 .... @@ -1562,7 +1562,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ 然后, 我们只需要在主机 `orchid` 上建立一个后台打印队列目录: -[source,bash] +[source,shell] .... # mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo # chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo @@ -1571,7 +1571,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ 现在, 主机 `orchid` 上的用户可以打印到 `rattan` 和 `bamboo` 了。 如果, 比如, 一个用户在主机 `orchid` 上输入了: -[source,bash] +[source,shell] .... % lpr -P bamboo -d sushi-review.dvi .... @@ -1638,7 +1638,7 @@ LPD 系统能够简化用户在打印多份副本时的工作。 用户可以用 如果您感觉多份副本会对打印机造成不必要的磨损和损耗, 您可以屏蔽掉 man:lpr[1] 的 `-\#` 选项, 这可以通过在 [.filename]##/etc/printcap## 文件中增加 `sc` 变量来完成。 当用户用 `-#` 选项提交任务时, 他们将看到: -[source,bash] +[source,shell] .... lpr: multiple copies are not allowed .... @@ -1686,7 +1686,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ 通过使用 `sc` 变量, 我们阻止了 `lpr -#` 命令的使用, 但仍然没有禁止用户多次运行 man:lpr[1] , 或者多次提交任务中同样的文件, 像下面这样: -[source,bash] +[source,shell] .... % lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign .... @@ -1700,7 +1700,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ 如果这组以外的用户 (包括 `root`) 试图打印到被限制的打印机,将会得到这样的提示: -[source,bash] +[source,shell] .... lpr: Not a member of the restricted group .... @@ -1816,7 +1816,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + 后台打印队列目录在 `sd` 变量中给出。 我们设置 3 兆字节 (6144 磁盘块) 为文件系统上必须存在的总共剩余空间, 让 LPD 可以接受远程任务: + -[source,bash] +[source,shell] .... # echo 6144 > /var/spool/lpd/bamboo/minfree .... @@ -1863,7 +1863,7 @@ LPD 启动 `lpf` 带着页宽和页长的参数 (通过 `pw` 和 `pl` 变量)。 当您准备对用户的打印进行收费时, 运行 man:pac[8] 程序。 只要转换到要收集信息的这台打印机的后台打印队列目录, 然后输入 `pac`。 您将会得到一个美元计费的摘要像下面这样: -[source,bash] +[source,shell] .... Login pages/feet runs price orchid:kelly 5.00 1 $ 0.10 @@ -1902,7 +1902,7 @@ _名字 ..._:: 在 man:pac[8] 默认产生的摘要中, 可以看到在不同主机上的每个用户打印了多少页。 如果在您这里, 主机不考虑 (因为用户可以使用任何主机), 运行 `pac -m`, 来得到下面的摘要: -[source,bash] +[source,shell] .... Login pages/feet runs price andy 2.00 1 $ 0.04 @@ -1916,7 +1916,7 @@ total 337.00 154 $ 6.74 要以美元计算应付钱数, man:pac[8] 指定 `pc` 变量在 [.filename]#/etc/printcap# 文件中 (默认是 200, 或者 2 分每页). 这个参数的单位是百分之一分, 在这个变量中指定每页或者每尺的价格。 您可以覆盖这个值当运行 man:pac[8] 带着参数 `-p` 的时候。 参数 `-p` 的单位是美元, 而不是百分之一分。 例如, -[source,bash] +[source,shell] .... # pac -p1.50 .... @@ -1970,28 +1970,28 @@ man:lpr[1], man:lprm[1], and man:lpq[1] 这三个命令都接受 `-P _printer-na 要打印文件, 输入: -[source,bash] +[source,shell] .... % lpr filename ... .... 这个命令会打印所有列出的文件到默认打印机。 如果没有列出文件, man:lpr[1] 会从标准输入读取打印数据。 比如, 这个命令打印一些重要的系统文件: -[source,bash] +[source,shell] .... % lpr /etc/host.conf /etc/hosts.equiv .... 要选择一个指定的打印机, 输入: -[source,bash] +[source,shell] .... % lpr -P printer-name filename ... .... 这个例子打印一个当前目录的长长的列表到叫做 `rattan` 的这台打印机: -[source,bash] +[source,shell] .... % ls -l | lpr -P rattan .... @@ -2007,13 +2007,13 @@ man:lpr[1] 命令同样可以接受多种控制格式的选项, 应用文件 要显示默认打印机的队列, 输入 man:lpq[1]。 要指定打印机, 使用 `-P` 选项。 例如, 命令 -[source,bash] +[source,shell] .... % lpq -P bamboo .... 会显示打印机 `bamboo` 的队列。 下面是命令 `lpq` 输出的一个例子: -[source,bash] +[source,shell] .... bamboo is ready and printing Rank Owner Job Files Total Size @@ -2030,7 +2030,7 @@ man:lpq[1] 输出的头一行也很有用: 它告诉我们打印机正在做 man:lpq[1] 命令同样支持 `-l` 选项来生成一个详细的长列表。 下面是一个 `lpq -l` 命令的例子: -[source,bash] +[source,shell] .... waiting for bamboo to become ready (offline ?) kelly: 1st [job 009rose] @@ -2051,14 +2051,14 @@ mary: 3rd [job 011rose] 要从默认打印机中移除一个任务, 首先使用 man:lpq[1] 找到任务编号。 然后输入: -[source,bash] +[source,shell] .... % lprm job-number .... 要从指定打印机中删除任务, 增加 `-P` 选项。 下面的命令会删除编号为 10 的任务从 `bamboo` 这台打印机: -[source,bash] +[source,shell] .... % lprm -P bamboo 10 .... @@ -2076,7 +2076,7 @@ lprm:: 使用参数 `-P` 和上面的快捷方式来用指定打印机替代默认打印机。 例如, 下面的命令会删除当前用户在打印机 `rattan` 队列中的所有任务: -[source,bash] +[source,shell] .... % lprm -P rattan - .... @@ -2085,7 +2085,7 @@ lprm:: ==== 如果您正工作在一个网络环境中, man:lprm[1] 将只允许在提交任务的主机上删除任务, 甚至是同一台打印机也可以在其他主机上使用时。 下面的命令证明了这个: -[source,bash] +[source,shell] .... % lpr -P rattan myfile % rlogin orchid @@ -2117,7 +2117,7 @@ man:lpr[1] 支持许多控制文本格式的参数, 转换图形和其他格 例如, 下面的命令打印一个 DVI 文件 (来自 TeX 排版系统) 文件名为 [.filename]#fish-report.dvi# 到打印 `bamboo`: -[source,bash] +[source,shell] .... % lpr -P bamboo -d fish-report.dvi .... @@ -2170,7 +2170,7 @@ man:lpr[1] 支持许多控制文本格式的参数, 转换图形和其他格 下面是一个例子: 这个命令打印了一个很好的 man:ls[1] 联机手册到默认打印机: -[source,bash] +[source,shell] .... % zcat /usr/shared/man/man1/ls.1.gz | troff -t -man | lpr -t .... @@ -2187,7 +2187,7 @@ man:zcat[1] 命令解压缩 man:ls[1] 的手册并且将内容传给 man:troff[1 + 这个例子打印三份副本的文件 [.filename]#parser.c# 跟着三份副本的文件 [.filename]#parser.h# 到默认打印机: + -[source,bash] +[source,shell] .... % lpr -#3 parser.c parser.h .... @@ -2332,7 +2332,7 @@ exit 2 它的输出产生了 "楼梯效果"。:: 您可能在纸上得到下面这些: + -[source,bash] +[source,shell] .... !"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 diff --git a/documentation/content/zh-cn/books/handbook/security/_index.adoc b/documentation/content/zh-cn/books/handbook/security/_index.adoc index 463e08ce18..9ddf9c9992 100644 --- a/documentation/content/zh-cn/books/handbook/security/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/security/_index.adoc @@ -125,7 +125,7 @@ FreeBSD 提供了一系列工具和机制来保证您的系统和网络的完整 可以使用 man:pw[8] 命令来完全禁止某一个帐号: -[source,bash] +[source,shell] .... # pw lock staff .... @@ -181,7 +181,7 @@ FreeBSD 现在默认在沙盒中运行 ntalkd, comsat, 以及 finger。此外, 内核的安全级别可以通过多种方式来设置。 最简单的设置正在运行的内核安全级的方法, 是使用 `sysctl` 来设置内核变量 `kern.securelevel`: -[source,bash] +[source,shell] .... # sysctl kern.securelevel=1 .... @@ -293,7 +293,7 @@ UNIX(R) 系统上的每个用户都有一个与其帐户关联的口令。 很 第一次初始化 OPIE 时, 可以使用 `opiepasswd` 命令: -[source,bash] +[source,shell] .... % opiepasswd -c [grimreaper] ~ $ opiepasswd -f -c @@ -314,7 +314,7 @@ MOS MALL GOAT ARM AVID COED 如果您需要通过一个不安全的连接来初始化, 则应首先在安全连接上执行过一次 `opiekey`; 您可能希望在可信的机器的 shell 提示符下完成。 此外还需要指定一个迭代轮数 (100 也许是一个较好的选择) 也可以选择一个自己的种子, 或让计算机随机生成一个。 在不安全的连接上 (当然是连到您希望初始化的机器上),使用 `opiepasswd` 命令: -[source,bash] +[source,shell] .... % opiepasswd @@ -333,7 +333,7 @@ LINE PAP MILK NELL BUOY TROY 为了接受默认的种子, 按下 kbd:[Return] (回车)。 在输入访问口令之前, 到一个有安全连接的机器上, 并给它同样的参数: -[source,bash] +[source,shell] .... % opiekey 498 to4268 Using the MD5 algorithm to compute response. @@ -348,7 +348,7 @@ GAME GAG WELT OUT DOWN CHAT 一旦初始化过 OPIE, 当您登录时将看到类似这样的提示: -[source,bash] +[source,shell] .... % telnet example.com Trying 10.0.0.1... @@ -368,7 +368,7 @@ Password: 在可信的系统上: -[source,bash] +[source,shell] .... % opiekey 498 to4268 Using the MD5 algorithm to compute response. @@ -383,7 +383,7 @@ GAME GAG WELT OUT DOWN CHAT 有时,会需要到不能访问可信的机器或安全连接的地方。 这种情形下, 可以使用 `opiekey` 命令来一次生成许多一次性口令。 例如: -[source,bash] +[source,shell] .... % opiekey -n 5 30 zz99999 Using the MD5 algorithm to compute response. @@ -611,7 +611,7 @@ _kerberos IN TXT EXAMPLE.ORG 典型的数据库创建过程如下: -[source,bash] +[source,shell] .... # kstash Master key: xxxxxxxx @@ -630,7 +630,7 @@ Verifying password - Password: xxxxxxxx 现在是启动 KDC 服务的时候了。 运行 `/etc/rc.d/kerberos start` 以及 `/etc/rc.d/kadmind start` 来启动这些服务。 尽管此时还没有任何正在运行的 Kerberos 服务, 但您仍然可以通过获取并列出您刚刚创建的那个 principal (用户) 的 ticket 来验证 KDC 确实在正常工作, 使用 KDC 本身的功能: -[source,bash] +[source,shell] .... % kinit tillman tillman@EXAMPLE.ORG's Password: @@ -645,7 +645,7 @@ Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG 完成所需的操作之后, 可以撤消这一 ticket: -[source,bash] +[source,shell] .... % kdestroy .... @@ -662,7 +662,7 @@ Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG 安装了 [.filename]#/etc/krb5.conf# 文件之后, 您就可以使用 Kerberos 上的 `kadmin` 了。 `add --random-key` 命令可以用于添加主机 principal, 而 `ext` 命令则允许导出服务器的主机 principal 到它的 keytab 中。 例如: -[source,bash] +[source,shell] .... # kadmin kadmin> add --random-key host/myserver.example.org @@ -677,7 +677,7 @@ kadmin> exit 如果您由于没有在 KDC 上运行 `kadmind` (例如基于安全理由) 因而无法远程地使用 `kadmin` 您可以直接在 KDC 上添加主机 principal (`host/myserver.EXAMPLE.ORG`) 随后将其导出到一个临时文件中 (以免覆盖 KDC 上的 [.filename]#/etc/krb5.keytab#), 方法是使用下面的命令: -[source,bash] +[source,shell] .... # kadmin kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org @@ -715,7 +715,7 @@ Heimdal port 则提供了一些默认不安装的客户应用程序, 例如启 用户 home 目录中的 [.filename]#.k5login# 和 [.filename]#.k5users# 这两个文件可以配合 [.filename]#.hosts# 和 [.filename]#.rhosts# 来有效地解决这个问题。 例如, 如果 [.filename]#.k5login# 中有如下内容: -[source,bash] +[source,shell] .... tillman@example.org jdoe@example.org @@ -824,7 +824,7 @@ FreeBSD 中附带的 OpenSSL 版本能够支持 安全套接字层 v2/v3 (SSLv2/ 为了生成证书, 需要使用下面的命令: -[source,bash] +[source,shell] .... # openssl req -new -nodes -out req.pem -keyout cert.pem Generating a 1024 bit RSA private key @@ -859,21 +859,21 @@ An optional company name []:Another Name 如果不需要来自 CA 的签名, 也可以创建自行签名的证书。 首先, 需要生成 RSA 密钥: -[source,bash] +[source,shell] .... # openssl dsaparam -rand -genkey -out myRSA.key 1024 .... 接下来, 生成 CA 密钥: -[source,bash] +[source,shell] .... # openssl gendsa -des3 -out myca.key myRSA.key .... 然后用这个密钥来创建证书: -[source,bash] +[source,shell] .... # openssl req -new -x509 -days 365 -key myca.key -out new.crt .... @@ -907,7 +907,7 @@ define(`confTLS_SRV_OPTIONS', `V')dnl 做一个简单的测试, 使用 man:telnet[1] 来连接邮件服务器: -[source,bash] +[source,shell] .... # telnet example.com 25 Trying 192.0.34.166... @@ -955,7 +955,7 @@ IPsec 既可以用来直接加密主机之间的网络通讯 (也就是 _传输 要把 IPsec 支持放进内核, 应该在配置文件中加入下面的选项: -[source,bash] +[source,shell] .... options IPSEC IP security device crypto @@ -963,7 +963,7 @@ device crypto 如果需要 IPsec 的调试支持, 还应增加: -[source,bash] +[source,shell] .... options IPSEC_DEBUG debug for IP security .... @@ -988,17 +988,17 @@ options IPSEC_DEBUG debug for IP security 下一步是创建两个 man:gif[4] 伪设备用来在两个网络间传输数据包的 "隧道"。 使用 `root` 身份运行以下命令, 并用真实的内部外部网关替换命令中的 _internal_ 和 _external_ 项: -[source,bash] +[source,shell] .... # ifconfig gif0 create .... -[source,bash] +[source,shell] .... # ifconfig gif0 internal1 internal2 .... -[source,bash] +[source,shell] .... # ifconfig gif0 tunnel external1 external2 .... @@ -1052,22 +1052,22 @@ round-trip min/avg/max/stddev = 28.106/94.594/154.524/49.814 ms 正如预期的那样,两边都有从私有地址发送和接受 ICMP 数据包的能力。下面, 两个网关都必须配置路由规则以正确传输两边的网络流量。 下面的命令可以实现这个: -[source,bash] +[source,shell] .... # corp-net# route add 10.0.0.0 10.0.0.5 255.255.255.0 .... -[source,bash] +[source,shell] .... # corp-net# route add net 10.0.0.0: gateway 10.0.0.5 .... -[source,bash] +[source,shell] .... # priv-net# route add 10.246.38.0 10.246.38.1 255.255.255.0 .... -[source,bash] +[source,shell] .... # priv-net# route add host 10.246.38.0: gateway 10.246.38.1 .... @@ -1179,7 +1179,7 @@ spdadd 10.0.0.0/24 10.246.38.0/24 any -P in ipsec esp/tunnel/192.168.1.12-172.16 一旦完成后,便使用下面的命令在两边的网关上都启动 racoon: -[source,bash] +[source,shell] .... # /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log .... @@ -1204,7 +1204,7 @@ Foreground mode. 确认一下 "隧道" 能正常工作, 切换到另外一个控制台用如下的 man:tcpdump[1] 命令查看网络流量。根据需要替换掉下面的 `em0` 网卡界面。 -[source,bash] +[source,shell] .... # tcpdump -i em0 host 172.16.5.4 and dst 192.168.1.12 .... @@ -1274,7 +1274,7 @@ OpenSSH 由 OpenBSD project 维护, 它基于 SSH v1.2.12 并包含了最新 sshd 的启用是作为 FreeBSD 安装中 `Standard` 安装过程中的一步来进行的。 要查看 sshd 是否已被启用, 请检查 [.filename]#rc.conf# 文件中的: -[source,bash] +[source,shell] .... sshd_enable="YES" .... @@ -1290,7 +1290,7 @@ sshd_enable="YES" man:ssh[1] 的工作方式和 man:rlogin[1] 非常类似。 -[source,bash] +[source,shell] .... # ssh user@example.com Host key not found from the list of known hosts. @@ -1307,7 +1307,7 @@ user@example.com's password: ******* man:scp[1] 命令和 man:rcp[1]; 的用法类似, 它用于将文件复制到远程的机器上, 或复制过来, 区别是它是安全的。 -[source,bash] +[source,shell] .... # scp user@example.com:/COPYRIGHT COPYRIGHT user@example.com's password: ******* @@ -1333,7 +1333,7 @@ man:scp[1] 使用的参数同 man:cp[1] 类似。 第一个参数是一个或一 用于取代口令的一种方法是使用 man:ssh-keygen[1] 来生成 DSA 或 RSA 密钥对用于验证用户的身份: -[source,bash] +[source,shell] .... % ssh-keygen -t dsa Generating public/private dsa key pair. @@ -1378,7 +1378,7 @@ man:ssh-agent[1] 工具能够使用加载到其中的私钥来处理验证过程 要在 shell 中使用 man:ssh-agent[1], 首先应把 shell 作为参数来启动它。 随后, 应通过 man:ssh-add[1] 并输入通行字, 来向它提供身份验证信息。 一旦这些步骤都做完了, 用户就应该能够 man:ssh[1] 到任何一个安装了对应公钥的机器了。 例如: -[source,bash] +[source,shell] .... % ssh-agent csh % ssh-add @@ -1403,7 +1403,7 @@ OpenSSH 能够创建隧道以便用加密的会话来封装其他协议。 下面的命令告诉 man:ssh[1] 为 telnet 创建一个隧道: -[source,bash] +[source,shell] .... % ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com % @@ -1436,7 +1436,7 @@ SSH 隧道通过监听 `localhost` 上面指定端口来完成工作。 它将 [example] ==== -[source,bash] +[source,shell] .... % ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com user@mailserver.example.com's password: ***** @@ -1455,7 +1455,7 @@ Escape character is '^]'. 工作时, 有一个允许外来连接的 SSH 服务器。 同一个办公网络中有一个邮件服务器提供 POP3 服务。 这个网络, 或从您家到办公室的网络可能不, 或不完全可信。 基于这样的原因, 您需要以安全的方式来查看邮件。 解决方法是创建一个到办公室 SSH 服务器的连接, 并通过这个连接来访问 POP3 服务: -[source,bash] +[source,shell] .... % ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com user@ssh-server.example.com's password: ****** @@ -1471,7 +1471,7 @@ user@ssh-server.example.com's password: ****** 解决方法是建立一个到您的网络的防火墙之外的网络上的 SSH 服务器, 并通过它提供的通道连接到 Ogg Vorbis 服务器上。 -[source,bash] +[source,shell] .... % ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org user@unfirewalled-system.example.org's password: ******* @@ -1509,7 +1509,7 @@ AllowUsers root@192.168.1.32 admin 在完成对 [.filename]#/etc/ssh/sshd_config# 的修改之后您必须告诉 man:sshd[8] 重新加载其配置文件, 方法是执行: -[source,bash] +[source,shell] .... # /etc/rc.d/sshd reload .... @@ -1570,7 +1570,7 @@ drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html 文件系统 ACL 可以使用 man:getfacl[1] 工具来查看。 例如, 如果想查看 [.filename]#test# 的 ACL 设置, 所用的命令是: -[source,bash] +[source,shell] .... % getfacl test #file: @@ -1583,14 +1583,14 @@ drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html 要修改这个文件上的 ACL 设置, 则需要使用 man:setfacl[1] 工具。 例如: -[source,bash] +[source,shell] .... % setfacl -k test .... `-k` 参数将把所有当前定义的 ACL 从文件或文件系统中删除。 一般来说应该使用 `-b` 因为它会保持让 ACL 正常工作的那些项不变。 -[source,bash] +[source,shell] .... % setfacl -m u:trhodes:rwx,group:web:r--,o::--- test .... @@ -1608,7 +1608,7 @@ package:ports-mgmt/portaudit[] port 会下载一个数据库, 这一数据库 要开始使用 Portaudit, 需要首先从 Ports Collection 安装它: -[source,bash] +[source,shell] .... # cd /usr/ports/ports-mgmt/portaudit && make install clean .... @@ -1617,7 +1617,7 @@ package:ports-mgmt/portaudit[] port 会下载一个数据库, 这一数据库 安装完成之后, 管理员可以通过下面的命令来更新数据库, 并查看目前安装的软件包中所存在的已知安全漏洞: -[source,bash] +[source,shell] .... # portaudit -Fda .... @@ -1629,7 +1629,7 @@ package:ports-mgmt/portaudit[] port 会下载一个数据库, 这一数据库 在任何时候, 如果希望对通过 Ports Collection 安装的第三方软件工具进行审计, 管理员都可以使用下面的命令: -[source,bash] +[source,shell] .... # portaudit -a .... @@ -1745,7 +1745,7 @@ VII. References<.> 在使用进程记帐之前, 必须先启用它。 要完成这项工作, 需要运行下面的命令: -[source,bash] +[source,shell] .... # touch /var/account/acct @@ -1758,7 +1758,7 @@ VII. References<.> 要显示关于刚刚发出的命令的相关信息, 则应使用 man:lastcomm[1] 工具。 `lastcomm` 命令可以用来显示在某一 man:ttys[5] 上的用户信息, 例如: -[source,bash] +[source,shell] .... # lastcomm ls trhodes ttyp1 diff --git a/documentation/content/zh-cn/books/handbook/serialcomms/_index.adoc b/documentation/content/zh-cn/books/handbook/serialcomms/_index.adoc index d7ef9e3260..4887be42da 100644 --- a/documentation/content/zh-cn/books/handbook/serialcomms/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/serialcomms/_index.adoc @@ -347,7 +347,7 @@ FreeBSD默认支持4个串口。 在MS-DOS(R)下,这些是 [.filename]#COM1# 如果想只察看包含 `sio` 一词的消息, 可以使用下面的命令: -[source,bash] +[source,shell] .... # /sbin/dmesg | grep 'sio' .... @@ -356,7 +356,7 @@ FreeBSD默认支持4个串口。 在MS-DOS(R)下,这些是 [.filename]#COM1# 例如,在一个带有4个串口的系统上,这些是串口特定的内核启动信息: -[source,bash] +[source,shell] .... sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A @@ -386,14 +386,14 @@ sio3: type 16550A [.filename]#ttyuN# (或 [.filename]#cuauN#) 设备是您将要打开的应用程序的一般设备。 当进程打开某个设备时, 它将有一个终端 I/O 设置的默认配置。 您可以在命令行看看这些设置: -[source,bash] +[source,shell] .... # stty -a -f /dev/ttyu1 .... 当您修改了这个设备的设置,这个设置会生效,除非设备被关闭。 当它被重新打开时,它将回到默认设置。 要修改默认设置,您可以打开和调整 "初始状态" 设备的设置。例如, 要为[.filename]##ttyu5## 打开 `CLOCAL` 模式,8位通讯和默认的 `XON/XOFF` 流控制, 输入: -[source,bash] +[source,shell] .... # stty -f /dev/ttyu5.init clocal cs8 ixon ixoff .... @@ -402,7 +402,7 @@ sio3: type 16550A 为了防止应用程序修改某些设置, 应修改 "lock state"(锁状态) 设备。 例如, 要把 [.filename]#ttyu5# 的速率锁定为 57600 bps, 输入: -[source,bash] +[source,shell] .... # stty -f /dev/ttyu5.lock 57600 .... @@ -459,7 +459,7 @@ sio3: type 16550A 如果要从运行 FreeBSD 的计算机上通过串口连接到另一系统, 可以使用: -[source,bash] +[source,shell] .... # cu -l 串口设备 .... @@ -537,7 +537,7 @@ ttyu5 "/usr/libexec/getty std.19200" vt100 on insecure 对[.filename]##/etc/ttys##文件做一个必要的修改后,您必须发送一个 SIGHUP 信号给初始化进程来迫使它重新读取配置文件,例如: -[source,bash] +[source,shell] .... # kill -HUP 1 .... @@ -564,14 +564,14 @@ ttyu5 "/usr/libexec/getty std.19200" vt100 on insecure 确定一个 `getty` 进程正在运行和服务终端。 例如, 可以用``ps`` 命令得到运行 `getty` 程序的列表,键入: -[source,bash] +[source,shell] .... # ps -axww|grep getty .... 您将看到一个终端的记录。例如,下面的显示表明一个``getty`` 正在第二个串口 [.filename]#ttyu1# 运行, 正在 [.filename]#/etc/gettytab# 中使用 `std.38400` 的记录: -[source,bash] +[source,shell] .... 22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyu1 .... @@ -653,7 +653,7 @@ FreeBSD支持基于 NS8250, NS16450, NS16550 和 NS16550A 的EIA RS-232C通 对于终端, `init` 会在每个配置串口上为每个拨入连接产生一个 `getty` 进程。 例如, 如果一个 modem 被附带在 [.filename]#/dev/ttyu0# 中,用命令``ps ax``可以显示下面这些: -[source,bash] +[source,shell] .... 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyu0 .... @@ -758,7 +758,7 @@ ttyu0 "/usr/libexec/getty xxx" dialup on 您对[.filename]##/etc/ttys##作修改之后,您可以发送 `init` 进程给一个 HUP 信号来重读文件。您可以使用下面的命令来发送信号: -[source,bash] +[source,shell] .... # kill -HUP 1 .... @@ -871,7 +871,7 @@ AT&B2&W 如果DTR指示灯不亮, 通过控制台登录到 FreeBSD系统,然后执行一个 ``ps ax`` 命令来看 FreeBSD 是否正在正确的端口运行 ``getty``进程。 您将在进程显示中看到像这样的一行: -[source,bash] +[source,shell] .... 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyu0 115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyu1 @@ -879,7 +879,7 @@ AT&B2&W 如果您看到是这样的: -[source,bash] +[source,shell] .... 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyu0 .... @@ -940,7 +940,7 @@ cuau0:dv=/dev/cuau0:br#19200:pa=none 此外, 也可以 `root` 身份执行 `cu` 命令: -[source,bash] +[source,shell] .... # cu -lline -sspeed .... @@ -972,7 +972,7 @@ tip57600|Dial any phone number at 57600 bps:\ 然后, 可以执行: -[source,bash] +[source,shell] .... # tip -115200 5551234 .... @@ -987,7 +987,7 @@ cu115200|Use cu to dial any number at 115200bps:\ 然后键入: -[source,bash] +[source,shell] .... # cu 5551234 -s 115200 .... @@ -1114,7 +1114,7 @@ FreeBSD可以通过一个串口只使用一个哑 (dumb) 终端就可以启动 . 使用串口电缆连接 [.filename]#COM1# 和控制终端。 . 要在串口控制台上显示所有的引导信息, 需要以超级用户的身份执行下面的命令: + -[source,bash] +[source,shell] .... # echo 'console="comconsole"' >> /boot/loader.conf .... @@ -1205,7 +1205,7 @@ device sio0 flags 0x10 + 当您启动您的FreeBSD时,引导块将把 [.filename]#/boot.config# 的内容发给控制台。例如: + -[source,bash] +[source,shell] .... /boot.config: -P Keyboard: no @@ -1242,7 +1242,7 @@ Keyboard: no + 在控制台上按 kbd:[Enter] 以外的任意键就能打断启动进程。 引导块将进入命令行模式。 您将看到: + -[source,bash] +[source,shell] .... >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader @@ -1409,7 +1409,7 @@ device sio1 flags 0x30 其他端口的控制台标记也不要设。 . 重新编译和安装引导块: + -[source,bash] +[source,shell] .... # cd /sys/boot # make clean diff --git a/documentation/content/zh-cn/books/handbook/users/_index.adoc b/documentation/content/zh-cn/books/handbook/users/_index.adoc index d4423f09c9..696c914f45 100644 --- a/documentation/content/zh-cn/books/handbook/users/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/users/_index.adoc @@ -167,7 +167,7 @@ man:adduser[8] 是一个简单的添加新用户的命令. 它为用户创建 [. [example] ==== -[source,bash] +[source,shell] .... # adduser Username: jru @@ -236,7 +236,7 @@ man:rmuser[8] 不能用来删除超级用户的帐户, 因为那样做是对系 [example] ==== -[source,bash] +[source,shell] .... # rmuser jru Matching password entry: jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh Is this the entry you wish to remove? y Remove user's home directory (/home/jru)? y Updating password file, updating databases, done. @@ -268,7 +268,7 @@ man:chpass[1] 可以改变用户的口令, shells, 和包括个人信息在内 [example] ==== -[source,bash] +[source,shell] .... #Changing user database information for jru. Login: jru @@ -295,7 +295,7 @@ Other information: [example] ==== -[source,bash] +[source,shell] .... #Changing user database information for jru. Shell: /usr/local/bin/zsh @@ -327,7 +327,7 @@ man:passwd[1] 是改变您自己作为一个普通用户口令或者作为超级 [example] ==== -[source,bash] +[source,shell] .... % passwd Changing local password for jru. Old password: @@ -343,7 +343,7 @@ passwd: done [example] ==== -[source,bash] +[source,shell] .... # passwd jru Changing local password for jru. New password: @@ -379,7 +379,7 @@ man:pw[8] 是一个用来创建、删除、修改、显示用户和组的命令 ==== 系统并不直接读取 [.filename]#/etc/login.conf# 中的配置, 而是采用数据库文件 [.filename]#/etc/login.conf.db# 以提供更快的查找能力。 要从 [.filename]#/etc/login.conf# 文件生成 [.filename]#/etc/login.conf.db#, 应使用下面的命令: -[source,bash] +[source,shell] .... # cap_mkdb /etc/login.conf .... @@ -444,7 +444,7 @@ man:pw[8] 是一个用来创建、删除、修改、显示用户和组的命令 [example] ==== -[source,bash] +[source,shell] .... # pw groupadd teamtwo # pw groupshow teamtwo @@ -459,7 +459,7 @@ teamtwo:*:1100: [example] ==== -[source,bash] +[source,shell] .... # pw groupmod teamtwo -M jru # pw groupshow teamtwo @@ -474,7 +474,7 @@ teamtwo:*:1100:jru [example] ==== -[source,bash] +[source,shell] .... # pw groupmod teamtwo -m db # pw groupshow teamtwo @@ -489,7 +489,7 @@ teamtwo:*:1100:jru,db [example] ==== -[source,bash] +[source,shell] .... % id jru uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo) diff --git a/documentation/content/zh-cn/books/handbook/vinum/_index.adoc b/documentation/content/zh-cn/books/handbook/vinum/_index.adoc index 68beda92e2..48203be389 100644 --- a/documentation/content/zh-cn/books/handbook/vinum/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/vinum/_index.adoc @@ -425,7 +425,7 @@ Vinum 对象会在 [.filename]#/dev/gvinum# 之下生成设备节点。 前述 要在这个卷上创建文件系统, 则需要使用 man:newfs[8]: -[source,bash] +[source,shell] .... # newfs /dev/gvinum/concat .... @@ -513,7 +513,7 @@ geom_vinum_load="YES" . 使用下面的命令来了解根卷成员子盘的位置 (从设备开始的偏移量) 和尺寸: + -[source,bash] +[source,shell] .... # gvinum l -rv root .... @@ -521,7 +521,7 @@ geom_vinum_load="YES" 需要注意的是, Vinum 偏移量和尺寸的单位是字节。 它们必须是 512 的整数倍, 才能得到 `bsdlabel` 命令所需的块号。 . 在每一个根卷成员设备上, 执行命令: + -[source,bash] +[source,shell] .... # bsdlabel -e devname .... @@ -535,7 +535,7 @@ geom_vinum_load="YES" 这样, 新的 `"a"` 分区, 将创建并覆盖这一设备上的 Vinum 分区的范围。 注意, `bsdlabel` 只有在 Vinum 分区的 fstype 被标记为 `"vinum"` 时, 才允许这样做。 . 这就成了! 所有的 `"a"` 分区现在都已存在, 而且是根卷的一份副本。 强烈建议您再次验证其结果, 方法是: + -[source,bash] +[source,shell] .... # fsck -n /dev/devnamea .... @@ -545,7 +545,7 @@ geom_vinum_load="YES" 在下次重启时, 引导程序需要从新的基于 Vinum 的根文件系统中获取适当的控制信息, 并据此工作。 在内核初始化过程的结尾部分, 在所有的设备都被宣示之后, 如果显示了下面的信息, 则表示配置成功: -[source,bash] +[source,shell] .... Mounting root from ufs:/dev/gvinum/root .... @@ -554,7 +554,7 @@ Mounting root from ufs:/dev/gvinum/root 在 Vinum 根卷配置好之后, `gvinum l -rv root` 的输出可能类似下面的样子: -[source,bash] +[source,shell] .... ... Subdisk root.p0.s0: @@ -574,7 +574,7 @@ Subdisk root.p1.s0: 这些设备的 bsdlabel 类似下面的样子: -[source,bash] +[source,shell] .... ... 8 partitions: diff --git a/documentation/content/zh-cn/books/handbook/virtualization/_index.adoc b/documentation/content/zh-cn/books/handbook/virtualization/_index.adoc index b6d4e031a4..8290ae9952 100644 --- a/documentation/content/zh-cn/books/handbook/virtualization/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/virtualization/_index.adoc @@ -321,7 +321,7 @@ VirtualBox(TM) 是一个开发非常活跃, 完全虚拟化的软件, 并且 VirtualBox(TM) 已作为一个 FreeBSD port 提供, 位于 package:emulators/virtualbox-ose[], 可使用如下的命令安装: -[source,bash] +[source,shell] .... # cd /usr/ports/emulators/virtualbox-ose # make install clean @@ -331,7 +331,7 @@ VirtualBox(TM) 已作为一个 FreeBSD port 提供, 位于 package:emulators/v 在第一次运行 VirtualBox(TM) 之前还需要做一些配置上的修改。port 会安装一个内核模块至 [.filename]#/boot/modules# 目录, 此模块需要事先加载: -[source,bash] +[source,shell] .... # kldload vboxdrv .... @@ -347,7 +347,7 @@ vboxdrv_load="YES" 当使用旧版本的 port 时, 需要使用下面的步骤来挂载 [.filename]#proc#: -[source,bash] +[source,shell] .... # mount -t procfs proc /proc .... @@ -363,7 +363,7 @@ proc /proc procfs rw 0 0 ==== 如果在运行 VirtualBox(TM) 的终端中发现了类似如下的错误消息: -[source,bash] +[source,shell] .... VirtualBox: supR3HardenedExecDir: couldn't read "", errno=2 cchLink=-1 .... @@ -373,14 +373,14 @@ VirtualBox: supR3HardenedExecDir: couldn't read "", errno=2 cchLink=-1 在安装 VirtualBox(TM) 时会自动创建 `vboxusers` 组。 所有需要使用 VirtualBox(TM) 的用户必须被添加为此组中的成员。 可以使用 `pw` 命令添加新的成员: -[source,bash] +[source,shell] .... # pw groupmod vboxusers -m yourusername .... 运行 VirtualBox(TM), 可以通过选择你当前图形环境中的 [.guimenuitem]#Sun VirtualBox#, 也可以在虚拟终端中键入以下的命令: -[source,bash] +[source,shell] .... % VirtualBox .... diff --git a/documentation/content/zh-cn/books/handbook/x11/_index.adoc b/documentation/content/zh-cn/books/handbook/x11/_index.adoc index a221aeb120..e15a822a9b 100644 --- a/documentation/content/zh-cn/books/handbook/x11/_index.adoc +++ b/documentation/content/zh-cn/books/handbook/x11/_index.adoc @@ -143,7 +143,7 @@ Xorg 是 FreeBSD 上的默认 X11 实现。 Xorg 是由 X.Org 基金会发行的 如果需要从 Ports Collection 编译和安装 Xorg: -[source,bash] +[source,shell] .... # cd /usr/ports/x11/xorg # make install clean @@ -158,7 +158,7 @@ Xorg 是 FreeBSD 上的默认 X11 实现。 Xorg 是由 X.Org 基金会发行的 想要从 package 安装 Xorg, 简单地输入下面的命令: -[source,bash] +[source,shell] .... # pkg_add -r xorg .... @@ -193,7 +193,7 @@ Xorg 是 FreeBSD 上的默认 X11 实现。 Xorg 是由 X.Org 基金会发行的 对于 Xorg 7.3 这个版本, 可以不需要任何的配置文件就能运行,在提示符下键如下命令: -[source,bash] +[source,shell] .... % startx .... @@ -217,7 +217,7 @@ dbus_enable="YES" 配置 X11 需要一些步骤。 第一步是以超级用户的身份建立初始的配置文件: -[source,bash] +[source,shell] .... # Xorg -configure .... @@ -226,14 +226,14 @@ dbus_enable="YES" 下一步是测试现存的配置文件, 以确认 Xorg 能够同系统上的图形设备正常工作。 对于 Xorg 7.3 或者之前的版本, 键入: -[source,bash] +[source,shell] .... # Xorg -config xorg.conf.new .... 从 Xorg 7.4 和更高的版本开始, 这个测试将显示出一个黑色的屏幕,对于判断 X11 是否能正常工作会造成一些困扰。 可以通过 `retro` 选项使用旧的模式: -[source,bash] +[source,shell] .... # Xorg -config xorg.conf.new -retro .... @@ -244,7 +244,7 @@ dbus_enable="YES" ==== 在Xorg 7.3 以及更早期的版本中, 应使用 kbd:[Ctrl+Alt+Backspace] 组合键来强制退出 Xorg。 如果需要在 7.4 和之后的版本中启用这个组合键, 可以在任意 X 终端模拟器中输入下面的命令: -[source,bash] +[source,shell] .... % setxkbmap -option terminate:ctrl_alt_bksp .... @@ -308,7 +308,7 @@ Option "AutoAddDevices" "false" 也可以在 X 模拟终端或一个脚本中使用以下的命令达到相同的效果: -[source,bash] +[source,shell] .... % setxkbmap -model pc102 -layout fr .... @@ -367,7 +367,7 @@ EndSection 如果一切准备妥当, 就可以把配置文件放到公共的目录中了。 您可以在 man:Xorg[1] 里面找到具体位置。 这个位置通常是 [.filename]#/etc/X11/xorg.conf# 或 [.filename]#/usr/local/etc/X11/xorg.conf#。 -[source,bash] +[source,shell] .... # cp xorg.conf.new /etc/X11/xorg.conf .... @@ -456,7 +456,7 @@ X11 使用的默认字体不是很理想。 大型的字体显得参差不齐, 如果希望使用 Ports Collection 来安装上面的 Type1 字体, 只需运行下面的命令: -[source,bash] +[source,shell] .... # cd /usr/ports/x11-fonts/urwfonts # make install clean @@ -471,7 +471,7 @@ FontPath "/usr/local/lib/X11/fonts/URW/" 或者,也可以在命令行运行: -[source,bash] +[source,shell] .... % xset fp+ /usr/local/lib/X11/fonts/URW % xset fp rehash @@ -491,7 +491,7 @@ Load "freetype" 现在,为 TrueType(R) 字体创建一个目录 (比如, [.filename]#/usr/local/lib/X11/fonts/TrueType#) 然后把所有的 TrueType(R) 字体复制到这个目录。记住您不能直接从 Macintosh(R) 计算机中提取 TrueType(R) 字体; 能被 X11 使用的必须是 UNIX(R)/MS-DOS(R)/Windows(R) 格式的。 一旦您已经将这些文件复制到了这个目录, 就可以用 ttmkfdir 来创建 [.filename]#fonts.dir# 文件, 以便让X字体引擎知道您已经安装了这些新文件。 `ttmkfdir` 可以在 FreeBSD Ports 套件中的 package:x11-fonts/ttmkfdir[] 中找到。 -[source,bash] +[source,shell] .... # cd /usr/local/lib/X11/fonts/TrueType # ttmkfdir -o fonts.dir @@ -499,7 +499,7 @@ Load "freetype" 现在把 TrueType(R) 字体目录添加到字体路径中。 这和上面 <<type1,Type1>> 字体的步骤是一样的, 那就是,使用 -[source,bash] +[source,shell] .... % xset fp+ /usr/local/lib/X11/fonts/TrueType % xset fp rehash @@ -535,7 +535,7 @@ Load "freetype" 添加了新的字体,尤其是添加了新的字体目录后, 您应该运行下面的命令重建字体缓存: -[source,bash] +[source,shell] .... # fc-cache -f .... @@ -649,7 +649,7 @@ X 显示管理器(XDM) 是一个X视窗系统用于进行登录会话管理的 如果希望使用 XDM 来启动, 首先需要安装 package:x11/xdm[] port (在较新版本的 Xorg 中它并不是默认安装的)。 XDM 服务程序位于 [.filename]#/usr/local/bin/xdm#。 任何时候都可以 `root` 用户的身份来运行它, 以令其管理本地系统的 X 显示。 如果希望让 XDM 在系统每次启动过程中自动运行, 比较方便的做法是把它写到 [.filename]#/etc/ttys# 的配置中。 有关这个文件的具体格式和使用方法请参阅 crossref:serialcomms[term-etcttys,添加一个记录到/etc/ttys]。 在默认的 [.filename]#/etc/ttys# 文件中已经包含了在虚拟终端上运行 XDM 服务的示范配置: -[source,bash] +[source,shell] .... ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure .... @@ -727,7 +727,7 @@ XDM 的配置目录是在 [.filename]##/usr/local/lib/X11/xdm##中。在这个 对于其他客户端来说, 如果希望它们能连接到显示服务器,您就必须编辑访问控制规则, 并启用连接侦听。 默认情况下, 这些都预设为比较保守的值。 要让 XDM 能侦听连接, 首先要在 [.filename]#xdm-config# 文件中注释掉一行: -[source,bash] +[source,shell] .... ! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0 @@ -759,14 +759,14 @@ GNOME 是一个用户界面友好的桌面环境, 能够使用户很容易地 要从网络安装GNOME, 只要键入: -[source,bash] +[source,shell] .... # pkg_add -r gnome2 .... 从源代码编译GNOME,可以使用 ports树: -[source,bash] +[source,shell] .... # cd /usr/ports/x11/gnome2 # make install clean @@ -801,7 +801,7 @@ gnome_enable="YES" GNOME 也可以通过适当地配置名为 [.filename]#.xinitrc# 的文件来启动。 如果已经有了自定义的 [.filename]#.xinitrc#, 将启动当前窗口管理器的那一行改为启动 /usr/local/bin/gnome-session 就可以了。 如果还没有, 那么只需简单地: -[source,bash] +[source,shell] .... % echo "/usr/local/bin/gnome-session" > ~/.xinitrc .... @@ -813,7 +813,7 @@ GNOME 也可以通过适当地配置名为 [.filename]#.xinitrc# 的文件来启 如果之前使用了一些旧式的显示管理器, 例如 XDM, 则这样做是没用的。 此时应建立一个可执行的 [.filename]#.xsession# 文件, 其中包含同样的命令。 要完成这项工作, 需要用 /usr/local/bin/gnome-session 取代现有的窗口管理器: ==== -[source,bash] +[source,shell] .... % echo "#!/bin/sh" > ~/.xsession % echo "/usr/local/bin/gnome-session" >> ~/.xsession @@ -850,14 +850,14 @@ FreeBSD 上提供了两种版本的 KDE。 版本 3 已经推出了很长时间 要从网络安装 KDE3 只需要: -[source,bash] +[source,shell] .... # pkg_add -r kde .... 要从网络安装 KDE4 则需要: -[source,bash] +[source,shell] .... # pkg_add -r kde4 .... @@ -866,7 +866,7 @@ man:pkg_add[1] 就会自动的下载最新版本的应用程序。 要从源代码编译 KDE3, 可以使用 ports 树: -[source,bash] +[source,shell] .... # cd /usr/ports/x11/kde3 # make install clean @@ -874,7 +874,7 @@ man:pkg_add[1] 就会自动的下载最新版本的应用程序。 而从 ports 提供的源代码编译 KDE4, 对应的操作则是: -[source,bash] +[source,shell] .... # cd /usr/ports/x11/kde4 # make install clean @@ -884,14 +884,14 @@ man:pkg_add[1] 就会自动的下载最新版本的应用程序。 对于 KDE3: -[source,bash] +[source,shell] .... % echo "exec startkde" > ~/.xinitrc .... 对于 KDE4: -[source,bash] +[source,shell] .... % echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc .... @@ -951,14 +951,14 @@ Xfce是以被GNOME 使用的 GTK+ 工具包为基础的桌面环境, 但是更 有一个二进制的Xfce 软件包存在(在写作的时候)。要安装的话,执行下面的命令: -[source,bash] +[source,shell] .... # pkg_add -r xfce4 .... 另外, 也可以使用 Ports Collection 从源代码联编: -[source,bash] +[source,shell] .... # cd /usr/ports/x11-wm/xfce4 # make install clean @@ -966,7 +966,7 @@ Xfce是以被GNOME 使用的 GTK+ 工具包为基础的桌面环境, 但是更 现在,要告诉X服务器在下次X启动时执行 Xfce。 只要执行下面的命令: -[source,bash] +[source,shell] .... % echo "/usr/local/bin/startxfce4" > ~/.xinitrc .... diff --git a/documentation/content/zh-cn/books/porters-handbook/plist/chapter.adoc b/documentation/content/zh-cn/books/porters-handbook/plist/chapter.adoc index 4c013f8e9c..ce7378c451 100644 --- a/documentation/content/zh-cn/books/porters-handbook/plist/chapter.adoc +++ b/documentation/content/zh-cn/books/porters-handbook/plist/chapter.adoc @@ -157,7 +157,7 @@ _动态装箱单_ 是指在 port 编译并安装时生成的装箱单。 在下 接下来, 建立一个用于安装您的 port 的临时目录, 并在其中安装它所依赖的所有其他软件包: -[source,bash] +[source,shell] .... # mkdir /var/tmp/`make -V PORTNAME` # mtree -U -f `make -V MTREE_FILE` -d -e -p /var/tmp/`make -V PORTNAME` @@ -166,21 +166,21 @@ _动态装箱单_ 是指在 port 编译并安装时生成的装箱单。 在下 将目录结构保存到一新文件中。 -[source,bash] +[source,shell] .... # (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort > OLD-DIRS .... 建立一空白 [.filename]#pkg-plist# 文件: -[source,bash] +[source,shell] .... # :>pkg-plist .... 如果您的 port 遵循 `PREFIX` (应该如此) 则接下来应安装该 port 并创建装箱单。 -[source,bash] +[source,shell] .... # make install PREFIX=/var/tmp/`make -V PORTNAME` # (cd /var/tmp/`make -V PORTNAME` && find -d * \! -type d) | sort > pkg-plist @@ -188,7 +188,7 @@ _动态装箱单_ 是指在 port 编译并安装时生成的装箱单。 在下 此外还应把新建立的目录加入装箱单。 -[source,bash] +[source,shell] .... # (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort | comm -13 OLD-DIRS - | sort -r | sed -e 's#^#@dirrm #' >> pkg-plist .... @@ -199,14 +199,14 @@ _动态装箱单_ 是指在 port 编译并安装时生成的装箱单。 在下 开始的步骤和上面的前三行一样, 也就是 `mkdir`, `mtree` 并 `make depends`。 然后联编和安装 port: -[source,bash] +[source,shell] .... # make install PREFIX=/var/tmp/`make -V PORTNAME` .... 然后让 `plist` 生成 [.filename]#pkg-plist# 文件: -[source,bash] +[source,shell] .... # /usr/ports/Tools/scripts/plist -Md -m `make -V MTREE_FILE` /var/tmp/`make -V PORTNAME` > pkg-plist .... diff --git a/documentation/content/zh-cn/books/porters-handbook/port-upgrading/chapter.adoc b/documentation/content/zh-cn/books/porters-handbook/port-upgrading/chapter.adoc index 6b2c7b0b9c..b5fb7f9070 100644 --- a/documentation/content/zh-cn/books/porters-handbook/port-upgrading/chapter.adoc +++ b/documentation/content/zh-cn/books/porters-handbook/port-upgrading/chapter.adoc @@ -44,7 +44,7 @@ toc::[] 如果只修改一个文件, 可以直接使用 `diff` 来生成补丁, 将需要修改的文件复制成 _something.orig_, 并将改动放进 _something_, 接着生成补丁: -[source,bash] +[source,shell] .... % /usr/bin/diff something.orig something > something.diff .... @@ -76,7 +76,7 @@ toc::[] 如果可能的话, 请提交man:cvs[1] diff; 这种情形要比直接比较 "新、旧" 目录要容易处理。 此外, 这种方法也让您更容易看出到底改了什么, 并在其他人更新了 Ports Collection 时容易合并这些改动, 在提交之前, 这可以减少维护补丁所需的工作。 -[source,bash] +[source,shell] .... % cd ~/my_wrkdir <.> % cvs -d R_CVSROOT co pdnsd <.> <.> @@ -91,7 +91,7 @@ toc::[] 在工作目录中, 您可以像往常一样进行任何更改。 如果您添加或删除了文件, 则需要告诉 `cvs` 来追踪这些改动: -[source,bash] +[source,shell] .... % cvs add new_file % cvs remove deleted_file @@ -99,7 +99,7 @@ toc::[] 请反复检查 <<porting-testing>> 列出的事项并使用 <<porting-portlint>> 进行检查。 -[source,bash] +[source,shell] .... % cvs status % cvs update <.> @@ -128,7 +128,7 @@ toc::[] 最后一步是以 CVS 中的文件为基础生成 unified man:diff[1]: -[source,bash] +[source,shell] .... % cvs diff -uN > ../`basename ${PWD}`.diff .... diff --git a/documentation/content/zh-cn/books/porters-handbook/security/chapter.adoc b/documentation/content/zh-cn/books/porters-handbook/security/chapter.adoc index 01373f94b2..a2f0b6bbf7 100644 --- a/documentation/content/zh-cn/books/porters-handbook/security/chapter.adoc +++ b/documentation/content/zh-cn/books/porters-handbook/security/chapter.adoc @@ -188,7 +188,7 @@ XML 是一个复杂的语言, 它远远超越了这本书的范围。 不过 首先, 检查一下是否已经有了关于这个漏洞的描述。 如果已经有过这样的记录, 那么它将匹配较早版本的 package, `0.65_6`: -[source,bash] +[source,shell] .... % packaudit % portaudit clamav-0.65_6 @@ -196,7 +196,7 @@ XML 是一个复杂的语言, 它远远超越了这本书的范围。 不过 如果什么都没有发现, 您就可以考虑写一个新的记录来描述这个漏洞了。 现在可以生成一个新的 UUID (假设它是 `74a9541d-5d6c-11d8-80e3-0020ed76ef5a`), 然后将您的新记录加入到 VuXML 数据库中。 接下来, 用下面的命令来检查它是否符合语法: -[source,bash] +[source,shell] .... % cd ${PORTSDIR}/security/vuxml && make validate .... @@ -208,14 +208,14 @@ XML 是一个复杂的语言, 它远远超越了这本书的范围。 不过 接下来从 VuXML 文件重构 `portaudit` 数据库: -[source,bash] +[source,shell] .... % packaudit .... 要验证您新加入的项的 `<affected>` 小节能够正确地匹配希望的 package, 可以使用下面的命令: -[source,bash] +[source,shell] .... % portaudit -f /usr/ports/INDEX -r 74a9541d-5d6c-11d8-80e3-0020ed76ef5a .... @@ -229,7 +229,7 @@ XML 是一个复杂的语言, 它远远超越了这本书的范围。 不过 现在检查您添加的记录所匹配的版本是否正确: -[source,bash] +[source,shell] .... % portaudit clamav-0.65_6 clamav-0.65_7 Affected package: clamav-0.65_6 (matched by clamav<0.65_7) @@ -243,7 +243,7 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-0020e 最后, 验证您从 VuXML 数据库中能够正确地得到预期的网页效果: -[source,bash] +[source,shell] .... % mkdir -p ~/public_html/portaudit % packaudit diff --git a/documentation/content/zh-cn/books/porters-handbook/testing/chapter.adoc b/documentation/content/zh-cn/books/porters-handbook/testing/chapter.adoc index fdb4582f88..f515d6b1cd 100644 --- a/documentation/content/zh-cn/books/porters-handbook/testing/chapter.adoc +++ b/documentation/content/zh-cn/books/porters-handbook/testing/chapter.adoc @@ -60,7 +60,7 @@ toc::[] `port` 是一个能够帮助您简化测试工具的前端脚本。 如果希望对新增的 port 或更新 port 时进行测试, 可以用 `port test` 来完成这些测试工作, 这也包含了 <<testing-portlint,`portlint`>> 检查。 这个命令会检测并列出没有在 [.filename]#pkg-plist# 中列出的文件。 具体用法请参见下面的例子: -[source,bash] +[source,shell] .... # port test /usr/ports/net/csup .... @@ -78,7 +78,7 @@ toc::[] 一定要避免让您的 port 在 [.filename]#/usr/local# 而不是正确的 `PREFIX` 中安装文件。 简单的测试方法是: -[source,bash] +[source,shell] .... # make clean; make package PREFIX=/var/tmp/`make -V PORTNAME` .... |