Cable Modem HOWTO

Howard Shane

修订历史
修订 0.92004-07-30修订者:jhs
完成草稿。

本文档旨在帮助 Linux 用户配置电缆调制解调器,以便使用有线网络访问互联网。


目录
1. 简介
1.1. 版权信息
1.2. 免责声明
1.3. 新版本
1.4. 鸣谢
1.5. 反馈
1.6. 本文档中使用的约定
2. 先决条件
2.1. 网络和以太网支持
2.2. 以太网支持
2.3. USB 接口支持
2.4. 调制解调器设备
2.5. DHCP 客户端
3. 配置
3.1. 准备开始使用以太网调制解调器连接
3.2. 抓取特定接口
3.3. 使用 USB 接口代替以太网卡
4. 关于特定硬件的注意事项
4.1. Ambit 调制解调器
4.2. Broadcom 电缆调制解调器
4.3. Ericson PipeRider 调制解调器
4.4. Motorola SurfBoard 调制解调器
4.5. RCA (Tompson) 调制解调器
4.6. Terayon 调制解调器
4.7. Toshiba PCX-XXXX 电缆调制解调器
4.8. Webstar 调制解调器
5. 故障排除
A. GNU 自由文档许可证

1. 简介

本文档旨在帮助 Linux 用户设置他们的电缆调制解调器,并包含有关配置 DHCP 客户端、启用带或不带 USB 支持的设备以及故障排除的信息。我已使用本文中的方法成功配置了 Motorola 和 Toshiba 品牌的电缆调制解调器,其他人也告知我,其他制造商的硬件配置方法几乎相同。第 4 节中介绍了一个几乎完整的硬件特定细节清单;如果您有未列出的工作型号或您认为有用的特定信息,请通过 第 1.5 节中的地址发送给我。


1.1. 版权信息

本文档版权归 Howard Shane 2004 年所有。

根据 GNU 自由文档许可证 1.2 版或自由软件基金会发布的任何后续版本的条款,允许复制、分发和/或修改本文档,无需不变章节、封面文字和封底文字。许可证副本可在附录 A中找到。


1.2. 免责声明

对于本文档的内容,不承担任何责任。 使用文中的概念、示例和其他内容,风险完全由您自行承担。 由于这是一个新版本,可能存在技术或其他不准确之处,可能导致不可替代的数据丢失。 在任何情况下,请谨慎操作,并认识到尽管错误极不可能发生,但作者对这些错误不承担任何责任。

除非另有特别说明,否则所有版权均归各自所有者所有。 本文档中术语的使用不应被视为影响任何商标或服务标记的有效性。

对特定产品或品牌的命名不应被视为认可。


1.3. 新版本

这是初始版本。

本文档的最新版本号可以在这里找到。


1.4. 鸣谢

我要感谢 Linux CDCEther 内核驱动程序的主要作者 Brad Hards,他慷慨地提供了许多有用的信息,还要感谢 Rob McGee 和 Jess Portnoy 鼓励我将本文档改进为新的 Cable-Modem HOWTO 并贡献了有用的建议。

此外,我要感谢 Marla,即使在前景最黯淡和他人不宽容的时候,她也坚定地站在我身边。 我永远属于你。


1.5. 反馈

请将任何与本文档相关的添加或评论发送至以下电子邮件地址.


1.6. 本文档中使用的约定

本文档中使用了以下约定,并在此处概述,供那些可能尚未完全了解如何在 Linux 中访问和控制底层操作系统的人参考,Linux 的底层操作系统几乎总是 bash shell。

首先,文件名在段落中像这样引用/path/file

Linux 中的命令在命令提示符下执行(或“调用”),命令提示符也称为“命令行”。 如果您处于非图形(基于文本)环境中,您通常会看到 bash shell 提示符,这是一个美元符号

$
...或井号
#
...如果您以 root 用户身份登录或已获得 root 权限或“超级用户”权限。 您也可以在 X window 系统(也称为 X 或 X11)中使用 bash shell,使用 xterm 或类似的 X 终端模拟器。 在 bash 提示符下执行的命令,但在本文档的段落中引用,通常如下所示:do this now

命令和/或命令的结果输出也可能在其自己的段落或标题中使用屏幕输出进行概述

$
date Sun Jul 27 22:37:11 CDT 2003

当命令写在 bash 提示符前面时(例如,上面的$ date),则假定在命令后按下了 [Return] 或 [Enter] 键,可能后跟输出(例如,日期)。


2. 先决条件

2.1. 网络和以太网支持

大多数(如果不是全部)电缆调制解调器都很容易配置以与 Linux 一起使用。 大多数电缆调制解调器都有两个可能的接口用于连接到您的计算机:以太网或 USB。 如果您的 Linux 版本与大多数版本一样,那么只要您支持网络并安装了特定网络硬件的驱动程序,您几乎不需要做任何事情就可以使您的电缆调制解调器与以太网接口一起工作。


2.2. 以太网支持

开放的以太网接口是电缆提供商在设置您的有线互联网服务时最有可能使用或推荐的方式。 如果您没有可用的开放式以太网卡,您的 ISP 甚至可能会交付和/或安装新的 NIC 卡以访问调制解调器。电缆连接到调制解调器,然后调制解调器使用普通的 10BaseT/100BaseT 以太网电缆连接到您的 NIC。 如果您对上述任何内容不确定,并且您的调制解调器和/或 NIC 尚未为您物理安装,请在继续操作之前阅读 Ethernet HOWTO 和您的电缆调制解调器说明手册。

Warning

除非您已经熟悉该过程或有人协助您,否则请勿尝试自行安装 NIC。

对于软件支持,大多数 Linux 发行版的基本安装都启用了 TCP/IP 网络和常见的以太网硬件驱动程序,因此如果您使用的是盒装或下载版本的 Linux 发行版中的预配置内核,您可能可以跳过第 2.4 节。 如果您不知道什么是内核和/或对此感到好奇,请参阅 Kernel HOWTO 以获取更多信息。

使用电缆调制解调器的(Linux 内核)网络支持要求包括以下内容,您需要在使用任何内核配置前端应用程序(无论是 make configmake menuconfig 还是 make xconfig)编译自定义内核之前选择这些内容。 对于 2.4.x 和更早版本的内核,在“网络选项”标题下,您将需要“TCP/IP 网络”以及“网络设备支持”,转到“以太网(10 或 100Mbit)支持”并启用您的特定 NIC 驱动程序。 如果您使用 2.6.x 系列,则“驱动程序”标题下有一个子标题“网络支持”,您应该在其中启用“网络设备支持”和“以太网连接支持/以太网(10 或 100Mbit)”,以及您的特定 NIC 硬件驱动程序。

如果您对如何配置 USB 接口感兴趣,请转到 第 2.3 节;否则您可以转到 第 2.4 节


2.3. USB 接口支持

似乎没有关于测试以太网连接与电缆调制解调器的 USB 端口的带宽或性能的可靠数据。 从理论上讲,它们应该是等效的,尽管有些人认为使用 USB 的性能较差(至少在 Linux 中)。 除非您无法使用以太网接口,无法添加廉价的 NIC,或者只是纯粹地决心这样做,否则使用 USB 可能没有任何优势。 如果是这样,您将需要以下内容,除了上面概述的网络支持之外: 1) USB 子系统支持 2) 您的主机控制器驱动程序(UHCI、OHCI 或 EHCI)以及以下之一

内核版本 2.4.x

  • CDC 以太网支持

对于内核 2.6.x,您将需要

  • 多用途 USB 网络框架 (CONFIG_USB_USBNET),带有

  • CDC 以太网支持 (CONFIG_USB_CDCETHER)

有关在测试调制解调器时如何加载模块的说明,请参阅第 3.3 节


2.4. 调制解调器设备

首先,插入并打开电缆调制解调器。 如果尚未为您完成此操作,请使用 10BaseT/100BaseT 电缆将您的以太网卡连接到调制解调器的非 USB 接口。 确保调制解调器未处于待机模式或已关闭; 这应该通过查看 LED 指示灯来判断。 待机按钮位于大多数型号设备顶部。 请注意,您的有线互联网提供商应该能够远程判断您的调制解调器是否已连接并正常工作,这有助于区分您端的硬件问题和配置问题。 他们还需要您的调制解调器的 MAC(媒体访问控制)硬件地址,以允许设备访问他们的网络。 如果您在任何时候用一个调制解调器替换另一个调制解调器,您需要通知他们,以便可以更新 MAC 地址并恢复您对有线网络的访问。

您的调制解调器在首次连接后将被分配一个 IP 地址,该地址可能会保持不变,也可能会定期更改,具体取决于您的 ISP 的 DHCP 服务器的 IP 地址周转率以及您断开连接后保持离线的时间。


2.5. DHCP 客户端

2.5.1. 在 Debian 系统上安装

Debian 要求您安装并运行 DHCP 客户端软件包。 在撰写本文时,有两个用于此目的的用户空间程序。 在 Woody(稳定版)中,有一个 dhcp-client 软件包,作为基本软件包的一部分自动安装为/sbin/dhclient。 对于 Sarge(测试版)及更高版本,这已被 dhcpcd 软件包取代。 后者的配置文件位于/etc/dhcpc下,但如果您只有一张以太网卡将用于有线互联网服务,则实际上无需修改任何内容。 对于那些使用测试分支的用户,可以使用 apt-get install dhcpcd 以 root 用户身份轻松安装 dhcpcd 守护程序。


2.5.2. 在基于 .rpm 或 .tgz 的系统上安装

对于基于 .rpm 或 .tgz 的发行版,我提供以下链接,该链接将引导您完成 DHCP 客户端的设置,在DHCP mini-HOWTO中。

只需运行 /sbin/dhclient 或您使用的任何客户端即可获取动态 IP 地址。


3. 配置


3.1. 准备开始使用以太网调制解调器连接

一旦您插入系统,您的调制解调器已打开,并且您的 dhcp 服务器按照第 2.5 节中的概述运行,您应该获得您自己的 IP 地址,该地址不会更改,除非您在一段时间内放弃租约(即离线)。 要确认 DHCP 客户端正在工作并且您有一个新的 IP 地址,请执行(以 root 用户身份)ifconfig,不带任何其他参数,您应该看到以下内容

eth0 Link encap:Ethernet HWaddr 00:D0:09:DE:D4:6F
	inet addr:66.190.XXX.XXX Bcast:255.255.255.255 Mask:255.255.255.0 UP BROADCAST
	RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2591777 errors:0 dropped:0
	overruns:0 frame:0 TX packets:5589 errors:0 dropped:0 overruns:0 carrier:0
	collisions:0 txqueuelen:100 RX bytes:168673636 (160.8 MiB) TX bytes:1752872
	(1.6 MiB) Interrupt:12 Base address:0xc400

lo Link encap:Local Loopback
	inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX
	packets:5168 errors:0 dropped:0 overruns:0 frame:0 TX packets:5168 errors:0
	dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1695104
	(1.6 MiB) TX bytes:1695104 (1.6 MiB)

...这显示了系统环回设备 lo,以及 eth0,电缆调制解调器已成功获取由我们的有线互联网服务提供商提供的 IP 地址(“inet addr”)。

一个简单的基于以太网的配置应该在此步骤完成。 如果您有多个可用的以太网接口,并且想要为电缆服务选择一个特定的接口,请继续阅读 第 3.2 节


3.2. 抓取特定接口

假设我们要选择一个特定的以太网接口 (ethX) 作为 DHCP 电缆互联网服务的接收者。 如果您以 root 用户身份运行 ifconfig,您将获得打开设备列表

eth0 Link encap:Ethernet
HWaddr 00:D0:09:DE:D4:6F
	inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 BROADCAST RUNNING
	MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0
	TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100
	RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:12 Base address:0xc400

lo Link encap:Local Loopback
	inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX
	packets:5168 errors:0 dropped:0 overruns:0 frame:0 TX packets:5168 errors:0
	dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1695104
	(1.6 MiB) TX bytes:1695104 (1.6 MiB)

...其中 eth0 是一个标准 NIC,我们已将其预配置为 IP 地址 192.168.1.1。

注意第一行上的 HWaddr 字段,或硬件地址。 这与 MAC 或媒体访问控制地址相同,我们将使用它来指定每个操作的接口。


3.2.1. 手动将 MAC 分配给接口名称

无论您使用哪个发行版,您始终可以使用命令行来指定以太网设备(通过 MAC)作为接口“ethX”,无论是否具有特定的 IP 地址。 当您更改设置、更换硬件或仅用于简单测试时,这可能是必要的。 使用 ifconfig

# ifconfig ethX hw ether 00:D0:09:DE:D4:6F up 

您可以通过在下次重新启动后调用不带选项的 ifconfig 来检查它是否有效。 请参阅 man ifconfig 以获取更多选项。


3.2.2. 设备的自动配置

将特定接口名称 ethX 自动分配给特定硬件接口(媒体访问控制地址)的方法因发行版而异。


3.2.2.1. Debian

如果您运行的是 Debian 系统,您可以更改/etc/network/interfaces文件,使其看起来像这样

	# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The
	loopback interface auto lo iface lo inet loopback auto eth0 iface eth0 inet
	static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 hwaddress
	ether 00:D0:09:DE:D4:6F

	auto eth1 iface eth1 inet dhcp hwaddress ether 00:04:BD:DE:42:0B

需要 auto eth0auto eth1 在启动时配置接口。 请注意,某些版本的 dhcp 客户端默认总是抓取 eth0 作为 dhcpc 接口。 因此,即使在完成上述所有操作后,除非您专门运行 /sbin/dhcpcd-bin eth1,否则它将无法工作。 在启动时执行此操作的简单方法是创建一个 init 脚本,将 dhcp 地址加载到正确的接口,该脚本应放置在/etc/init.d中。 然后使用正确的参数以 root 用户身份运行 update-rc.d(请参阅 man update-rc.d)。


3.2.2.2. Red Hat

要编辑的文件将采用以下形式ifcfg-ethX,位于/etc/sysconfig/network-scripts/中。 内容通常采用以下形式

 DEVICE=eth1 
# Device name. This is the interface your cable modem will use.  
ONBOOT=yes 
# load at boot BOOTPROTO=dhcp 
# sets the device to receive an IP address from a DHCP server 
HWADDR=00:04:BD:DE:42:0B 
# the hardware MAC 

使用您喜欢的文本编辑器程序以 root 用户身份编辑相关部分,以反映您的接口名称和 MAC 并保存它。 如果您需要的接口的文件不存在,您可以创建它,例如ifcfg-eth1。 然后,您可以从命令行使用 ifconfig eth1 up 立即使用它。 重新启动后,应自动加载正确的硬件设置。


3.2.2.3. Slackware

Slackware 有一个名为“netconfig”的配置实用程序,您可以在命令行中以 root 用户身份使用它来修改您的网络设置,并通过静态 IP 地址或 dhcp 配置接口。 安装调制解调器后,您可以随时重新运行它来重新配置。


3.2.2.4. 其他发行版

如果您有特定于发行版的信息要添加,请随时贡献; 请参阅第 1.5 节。 请在适当的地方查阅您的发行版文档。


3.3. 使用 USB 接口代替以太网卡

3.3.1. USB CDCEther

如果您希望使用 USB 接口来接收数据,您将需要在内核中支持 USB 子系统,如第 2.1 节中所讨论的,无论是 USB-ohci、USB-ehci 还是您的系统所需的任何 USB 主机控制器驱动程序。 有关此内容的更深入讨论,我建议您访问 Linux-USB 项目站点

此外,还有电缆调制解调器通用的 CDCEther(通信设备类以太网)协议。

您的内核可能通过两种方式支持设备驱动程序:静态(始终启用)编译到该内核中,或作为模块加载(在启动时或稍后通过脚本或手动)。 您可以通过在命令行上使用 dmesg | less 检查启动时的消息日志来了解驱动程序是否静态编译到内核中。 经验丰富的用户可能希望采取更简单的方法,并检查当前运行内核的配置文件,该文件位于/boot中,通常采用以下形式config-2.X.x,这是一个可以进行 grep 的文本文件。 在命令行上,尝试 grep -e,后跟 2.4.x 内核中的 CONFIG_USB_CDCETHER 或 2.6.x 内核中的 CONFIG_USB_ETH,后跟文件名; 您应该看到字符串末尾的“=y=m”,分别表示静态或模块化状态。

dmesg | less 的输出应显示类似于以下内容

 Mar 2 11:00:52 K7 kernel: CDCEther.c:
0.98.6 7 Jan 2002 Brad Hards and another
Mar 2 11:00:52 K7 kernel: usb.c: registered new driver CDCEther 

的情况,即静态编译的驱动程序或在启动时加载的模块。

如果您没有看到它,要了解您的内核是否已将 CDCEther(通信设备类以太网)驱动程序作为模块加载,请在命令行上以 root 用户身份发出 lsmod。 您应该看到 2.4.x 内核列出的模块CDCEther,或者对于 2.6.x 内核,则应该看到usbnet

如果您没有在 lsmod 中看到它列出,请尝试以 root 用户身份直接加载模块; 对于内核 2.4.x,这将采用以下形式

 # modprobe CDCEther 
而对于 2.6.x,命令将是
 # modprobe usbnet

如果一切顺利,您应该在系统日志文件末尾看到类似以下内容(/var/log/messages/var/log/syslog,您可能需要 root 权限才能查看这些文件)或在命令行中 dmesg | less 的末尾看到

 Mar 2 11:00:52 K7 kernel: CDCEther.c:
0.98.6 7 Jan 2002 Brad Hards and another
Mar 2 11:00:52 K7 kernel: usb.c: registered new driver CDCEther 

如果一切顺利,您应该在系统日志文件或 dmesg 的末尾看到类似以下内容

 Mar 2 11:00:52 K7 kernel: CDCEther.c:
0.98.6 7 Jan 2002 Brad Hards and another 
Mar 2 11:00:52 K7 kernel: usb.c: registered new driver CDCEther 

如果您以上任何操作都不成功,并且决心使用此设备的 USB 通道,则需要重新编译内核以支持它。 您将需要 2.4.3 或更高版本的内核。 有关重新编译内核的详细说明,我建议您参阅 Kernel-HOWTO。 要使 USB 接口支持在此设备上工作所需的选项已在 第 2.1 节中介绍。


4. 关于特定硬件的注意事项

感谢 Jess Portnoy 和其他人提供了以下大部分信息。 此外,在 Jess 的网页上,对于居住在以色列的人,有一些专门针对配置电缆调制解调器和有线互联网服务提供商的说明。 我个人已在美国订阅了两家大型有线 ISP,使用上述说明没有任何问题。 本文档的先前版本列出了按地理位置划分的大量 ISP 目录,但通常上游提供商的身份不应影响配置。 如果您的有线 ISP 声称不支持 linux,那不是因为与操作系统相关的任何技术难题。 只是不要期望他们像为大多数其他用户那样在您这边为您配置它(这就是您正在阅读本文档的原因,对吧?)。


4.1. Ambit 调制解调器

以太网和 CDCEther 支持。


4.2. Broadcom 电缆调制解调器

以太网和 CDCEther 支持。


4.3. Ericson PipeRider 调制解调器

以太网和 CDCEther 支持。


4.4. Motorola SurfBoard 调制解调器

该型号已被电缆提供商广泛使用。 有一个单独的 HOWTO, 由您谦逊的作者编写。 以太网和 USB CDCEther 均支持。 有关任何特定于硬件的问题,请参阅该文档。 上述通用说明通常有效。


4.5. RCA (Tompson) 调制解调器

以太网支持,CDCEther 未经测试。


4.6. Terayon 调制解调器

至少已知 tj715 支持使用以太网和 CDCEther。


4.7. Toshiba PCX-XXXX 电缆调制解调器

名称中的四个 X 表示型号。 适用于以太网,CDCEther 未经测试。 使用上述说明“开箱即用”。


4.8. Webstar 调制解调器

以太网支持,CDCEther 未经测试。


5. 故障排除

问:我大约每 4 天会无缘无故地断线一次,并在内核日志中收到以下错误或类似错误

 Feb 20 10:05:12 K7 kernel: CDCEther.c: rx status -110 Feb 20 10:05:12 K7 kernel:
CDCEther.c: no repsonse in BULK IN Feb 20 10:05:12 K7 kernel: CDCEther.c: rx status -110
Feb 20 10:05:12 K7 kernel: CDCEther.c: no repsonse in BULK IN Feb 20 10:05:12 K7 kernel:
CDCEther.c: rx status -110 Feb 20 10:05:12 K7 kernel: CDCEther.c: no repsonse in BULK
IN Feb 20 10:05:12 K7 kernel: CDCEther.c: rx status -110 

答:发生这种情况的原因有很多,并且 CDCEther 驱动程序的未来更新可能会解决其中一些问题。 Linux-USB-user 邮件列表上的至少一位用户注意到,至少在一种情况下,有线提供商从上游发送到调制解调器的数据触发了它。 此外,调制解调器本身对电源中断非常敏感,如果发生电源中断,可能会丢失连接。 解决方法是运行 ifdown ethX,其中 ethX 是以太网接口(eth0、eth1 等),以清除任何剩余的挂起设置,然后使用 rmmod CDCEther 删除模块,重新插入 CDCEther 模块,然后 ifup ethX 。 如果这不能解决问题,则可能需要重新启动。 如果这些方法都无效,则您可能真的遇到了服务中断。

问:我在启动时收到以下消息; 它们是错误吗?

 Can't use
SetEthernetMulticastFilters request Mar 2 11:00:52 K7 kernel: CDCEther.c: Ethernet
information found at device configuration.  Trying to use it anyway.  Mar 2 11:00:52
K7 kernel: CDCEther.c: Imperfect filtering support - need sw hashing 

答:不是。 多播消息与内核中的多播支持有关,这是可选的,对于此调制解调器的正常运行不是必需的。 关于“以太网信息”的消息是调制解调器中的设计错误,可以忽略。 至于“不完善的过滤支持”,引用 Brad Hards 的话

“这有点难以解释 - 我假设您知道什么是多播 - 当您加入多播组时,这可以由网络设备处理,以便其他多播流量不会导致中断。 这称为“完美过滤”。 但是,有时多播地址的数量超过了您拥有的过滤器数量。 这会导致“不完善的过滤”,这可以减少中断次数,但您仍然需要在网络堆栈中做一些工作。 然后您会得到典型的电缆调制解调器实现,根本没有过滤。 每个多播数据包都发送到主机进行过滤。 然而,这通常无关紧要,因为电缆调制解调器是点对点链路。”


A. GNU 自由文档许可证

版本 1.2,2002 年 11 月

版权所有 (C) 2000,2001,2002 自由软件基金会公司,地址:59 Temple Place, Suite 330, Boston, MA 02111-1307 USA。 允许任何人复制和分发此许可证文档的完整副本,但不允许更改它。

0. 前言

本许可证的目的是使手册、教科书或其他功能性和有用的文档在自由的意义上“自由”:确保每个人都有效地自由地复制和重新分发它,无论是否进行修改,无论是商业用途还是非商业用途。 其次,本许可证为作者和出版商保留了一种为其工作获得荣誉的方式,同时又不被视为对他人所做的修改负责。

本许可证是一种“copyleft”,这意味着文档的衍生作品本身必须在相同的意义上是自由的。 它补充了 GNU 通用公共许可证,后者是为自由软件设计的 copyleft 许可证。

我们设计本许可证是为了将其用于自由软件的手册,因为自由软件需要自由文档:一个自由程序应该附带手册,提供与软件相同的自由。 但本许可证不限于软件手册; 它可用于任何文本作品,无论主题 matter 如何,也无论是否作为印刷书籍出版。 我们主要推荐本许可证用于以指导或参考为目的的作品。

1. 适用性和定义

本许可证适用于任何手册或其他作品,以任何媒介形式,其中包含版权持有者放置的声明,声明它可以根据本许可证的条款分发。 这样的声明授予在全球范围内、免版税、无限期的许可,以根据本文所述的条件使用该作品。 下文的“文档”是指任何此类手册或作品。 公众的任何成员都是被许可人,并被称为“您”。 如果您以需要版权法许可的方式复制、修改或分发作品,则您接受本许可证。

文档的“修改版本”是指任何包含文档或其一部分的作品,无论是逐字复制,还是经过修改和/或翻译成另一种语言。

“次要章节”是文档的命名附录或前言部分,专门处理文档的出版商或作者与文档的总体主题(或相关事项)的关系,并且不包含可能直接属于该总体主题的任何内容。 (因此,如果文档部分是数学教科书,则次要章节可能不解释任何数学。) 该关系可能是与主题或相关事项的历史联系,或者是关于它们的法律、商业、哲学、伦理或政治立场的 matter。

“不变章节”是某些次要章节,其标题在声明文档根据本许可证发布的声明中被指定为不变章节的标题。 如果章节不符合上述次要章节的定义,则不允许将其指定为不变章节。 文档可能包含零个不变章节。 如果文档未标识任何不变章节,则不存在不变章节。

“封面文字”是在声明文档根据本许可证发布的声明中列出的某些简短文字段落,作为封面文字或封底文字。 封面文字最多可以有 5 个单词,封底文字最多可以有 25 个单词。

文档的“透明”副本是指机器可读副本,以规范可供公众使用的格式表示,该格式适用于使用通用文本编辑器或(对于由像素组成的图像)通用绘图程序或(对于绘图)一些广泛可用的绘图编辑器直接修改文档,并且适用于输入到文本格式化程序或自动翻译成各种适用于输入到文本格式化程序的格式。 以其他方式以透明文件格式制作的副本,其标记或缺少标记已被安排为阻止或劝阻读者后续修改,则不是透明的。 如果图像格式用于大量文本,则该图像格式不是透明的。 不是“透明”的副本称为“不透明”。

透明副本的合适格式示例包括不带标记的纯 ASCII、Texinfo 输入格式、LaTeX 输入格式、使用公开可用的 DTD 的 SGML 或 XML,以及符合标准的简单 HTML、PostScript 或 PDF,专为人工修改而设计。 透明图像格式的示例包括 PNG、XCF 和 JPG。 不透明格式包括只能由专有字处理器读取和编辑的专有格式,DTD 和/或处理工具不普遍可用的 SGML 或 XML,以及某些字处理器仅为输出目的而生成的机器生成的 HTML、PostScript 或 PDF。

对于印刷书籍,“标题页”是指标题页本身,加上容纳本许可证要求出现在标题页上的材料所需的后续页面。 对于没有标题页格式的作品,“标题页”是指作品标题最突出显示的外观附近的文本,位于正文文本的开头之前。

“标题为 XYZ”的章节是指文档中命名的子单元,其标题恰好为 XYZ,或者在文本后的括号中包含 XYZ,该文本将 XYZ 翻译成另一种语言。(此处 XYZ 代表下面提到的特定章节名称,例如“致谢”、“献词”、“背书”或“历史”)。当您修改文档时,“保留”此类章节的“标题”是指根据此定义,它仍然是一个“标题为 XYZ”的章节。

文档可能在声明本许可证适用于文档的声明旁边包含担保免责声明。这些担保免责声明被认为通过引用包含在本许可证中,但仅限于放弃担保:这些担保免责声明可能具有的任何其他含义均无效,并且对本许可证的含义没有影响。

2. 逐字复制

您可以以任何媒介复制和分发文档,无论是商业用途还是非商业用途,前提是在所有副本中复制本许可证、版权声明以及声明本许可证适用于文档的许可证声明,并且您不得在本许可证的条款之外添加任何其他条件。您不得使用技术措施来阻止或控制您制作或分发的副本的阅读或进一步复制。但是,您可以接受报酬以换取副本。如果您分发足够大量的副本,您还必须遵守第 3 节中的条件。

在上述相同条件下,您也可以出借副本,并且您可以公开展示副本。

3. 大量复制

如果您出版印刷副本(或通常带有印刷封面的媒体副本)的文档,数量超过 100 份,并且文档的许可证声明要求封面文本,您必须将副本装在封面上,这些封面清晰易懂地印有所有这些封面文本:正面封面的正面封面文本,以及背面封面的背面封面文本。两个封面还必须清晰易懂地标明您是这些副本的出版商。正面封面必须以同等突出和可见的方式呈现完整标题的所有单词。您可以在封面上添加其他材料。对封面的更改仅限于保留文档标题并满足这些条件的复制,在其他方面可以被视为逐字复制。

如果任一封面的所需文本过于繁多而无法清晰地容纳,您应将列出的前几个(尽可能合理地容纳)放在实际封面上,并将其余部分继续放在相邻页面上。

如果您出版或分发超过 100 份文档的不透明副本,您必须随每个不透明副本附带一份机器可读的透明副本,或者在每个不透明副本中或随附声明一个计算机网络位置,公众可以通过公共标准网络协议访问该位置以下载完整的文档透明副本,且不包含任何附加材料。如果您使用后一种选项,当您开始大量分发不透明副本时,您必须采取合理谨慎的步骤,以确保该透明副本在声明的位置保持可访问状态,至少在您向公众分发该版本的最后一个不透明副本(直接或通过您的代理商或零售商)后一年。

我们请求(但并非要求)您在重新分发大量副本之前与文档的作者联系,让他们有机会为您提供文档的更新版本。

4. 修改

您可以根据上述第 2 节和第 3 节的条件复制和分发文档的修改版本,前提是您根据本许可证精确发布修改版本,修改版本充当文档的角色,从而向任何拥有其副本的人授予修改版本的发行和修改许可。此外,您必须在修改版本中执行以下操作:

A. 在标题页(以及封面,如果有)上使用与文档标题以及先前版本标题不同的标题(如果存在先前版本,则应在文档的“历史”章节中列出)。如果该版本的原始出版商给予许可,您可以使用与先前版本相同的标题。

B. 在标题页上,将对修改版本的修改负责的一个或多个人员或实体列为作者,以及文档的至少五位主要作者(如果少于五位,则列出其所有主要作者),除非他们免除您的此项要求。

C. 在标题页上声明修改版本的出版商名称作为出版商。

D. 保留文档的所有版权声明。

E. 在其他版权声明旁边添加适用于您的修改的适当版权声明。

F. 在版权声明之后立即包含许可证声明,允许公众根据本许可证的条款使用修改版本,格式如下文附录所示。

G. 在该许可证声明中保留文档许可证声明中给出的不变章节和要求的封面文本的完整列表。

H. 包含本许可证的未修改副本。

I. 保留标题为“历史”的章节,保留其标题,并在其中添加一个项目,至少说明修改版本的标题、年份、新作者和出版商(如标题页上所示)。如果文档中没有标题为“历史”的章节,则创建一个章节,说明文档的标题、年份、作者和出版商(如标题页上所示),然后添加一个项目,描述修改版本,如前一句所述。

J. 保留文档中给出的用于公众访问文档透明副本的网络位置(如果有),以及文档中给出的文档所基于的先前版本的网络位置。这些可以放在“历史”章节中。您可以省略在文档本身至少四年前发布的作品的网络位置,或者如果其引用的版本的原始出版商给予许可。

K. 对于任何标题为“致谢”或“献词”的章节,保留该章节的标题,并在该章节中保留其中给出的每个贡献者致谢和/或献词的所有实质内容和语气。

L. 保留文档的所有不变章节,其文本和标题均未修改。章节编号或等效内容不被视为章节标题的一部分。

M. 删除任何标题为“背书”的章节。修改版本中不得包含此类章节。

N. 不要将任何现有章节重命名为标题为“背书”或与任何不变章节的标题冲突。

O. 保留任何担保免责声明。如果修改版本包含符合次要章节条件的新前言章节或附录,并且不包含从文档复制的材料,您可以选择将其中一些或全部章节指定为不变章节。为此,请将它们的标题添加到修改版本的许可证声明中的不变章节列表中。这些标题必须与任何其他章节标题不同。您可以添加一个标题为“背书”的章节,前提是它仅包含各方对您的修改版本的背书——例如,同行评审声明或文本已被某个组织批准为标准的权威定义的声明。

您可以添加最多五个单词的段落作为正面封面文本,以及最多 25 个单词的段落作为背面封面文本,添加到修改版本中封面文本列表的末尾。任何一个实体(或通过其安排)只能添加一段正面封面文本和一段背面封面文本。如果文档已包含由您或由您代表的同一实体安排先前添加的同一封面的封面文本,则您不得添加另一个;但是,您可以在明确获得添加旧封面的先前出版商的许可后替换旧封面。

文档的作者和出版商不通过本许可证授予使用其姓名进行宣传或声明或暗示认可任何修改版本的许可。

5. 合并文档

您可以根据第 4 节中为修改版本定义的条款,将文档与根据本许可证发布的其他文档合并,前提是您在合并中包含所有原始文档的所有不变章节,且未修改,并在其许可证声明中将它们全部列为合并作品的不变章节,并且您保留它们的所有担保免责声明。

合并后的作品只需要包含本许可证的一个副本,并且多个相同的不变章节可以用单个副本替换。如果存在多个名称相同但内容不同的不变章节,请通过在其末尾括号中添加该章节的原始作者或出版商的姓名(如果已知),或者添加唯一编号,使每个此类章节的标题都是唯一的。对合并作品的许可证声明中的不变章节列表中的章节标题进行相同的调整。

在合并中,您必须合并各个原始文档中标题为“历史”的任何章节,形成一个标题为“历史”的章节;同样合并任何标题为“致谢”的章节和任何标题为“献词”的章节。您必须删除所有标题为“背书”的章节。

6. 文档集合

您可以创建一个由文档和根据本许可证发布的其他文档组成的集合,并将各个文档中的本许可证的单独副本替换为包含在集合中的单个副本,前提是您在所有其他方面都遵循本许可证关于逐字复制每个文档的规则。

您可以从这样的集合中提取单个文档,并根据本许可证单独分发,前提是您在提取的文档中插入本许可证的副本,并在关于该文档的逐字复制的所有其他方面都遵循本许可证。

7. 与独立作品的聚合

在存储或分发介质的卷中或之上,文档或其衍生作品与其他单独和独立的文档或作品的汇编称为“聚合”,如果由汇编产生的版权不用于限制汇编用户的合法权利,超出单个作品允许的范围。当文档包含在聚合中时,本许可证不适用于聚合中不是文档衍生作品的其他作品。

如果第 3 节的封面文本要求适用于这些文档副本,那么如果文档少于整个聚合的一半,则文档的封面文本可以放在括住聚合中文档的封面上,或者如果文档是电子形式,则放在封面的电子等效物上。否则,它们必须出现在括住整个聚合的印刷封面上。

8. 翻译

翻译被视为一种修改,因此您可以根据第 4 节的条款分发文档的翻译版本。用翻译版本替换不变章节需要其版权持有者的特殊许可,但您可以除了这些不变章节的原始版本之外,还包含一些或全部不变章节的翻译版本。您可以包含本许可证的翻译版本,以及文档中的所有许可证声明和任何担保免责声明,前提是您还包含本许可证的原始英文版本以及这些声明和免责声明的原始版本。如果本许可证或声明或免责声明的翻译版本与原始版本之间存在分歧,则以原始版本为准。

如果文档中的章节标题为“致谢”、“献词”或“历史”,则保留其标题的要求(第 4 节)通常需要更改实际标题。

9. 终止

除非本许可证明确规定,否则您不得复制、修改、再许可或分发文档。任何其他尝试复制、修改、再许可或分发文档的行为均属无效,并将自动终止您在本许可证下的权利。但是,根据本许可证从您那里收到副本或权利的当事方,只要这些当事方保持完全合规,其许可证就不会终止。

10. 本许可证的未来修订

自由软件基金会可能会不时发布 GNU 自由文档许可证的新修订版本。此类新版本在精神上将与当前版本相似,但在细节上可能会有所不同,以解决新的问题或疑虑。请参阅 https://gnu.ac.cn/copyleft/。

许可证的每个版本都给出了一个区分版本号。如果文档指定本许可证的特定编号版本“或任何更高版本”适用于它,您可以选择遵循该指定版本或自由软件基金会已发布的任何更高版本(非草案)的条款和条件。如果文档未指定本许可证的版本号,您可以选择自由软件基金会曾经发布的任何版本(非草案)。

附录:如何在您的文档中使用本许可证

要在您编写的文档中使用本许可证,请在文档中包含本许可证的副本,并将以下版权和许可证声明放在标题页之后:

版权所有 (c) 年份 您的姓名。根据 GNU 自由文档许可证 1.2 版或自由软件基金会发布的任何更高版本的条款,授予复制、分发和/或修改本文档的许可;不包含不变章节,不包含正面封面文本,也不包含背面封面文本。许可证的副本包含在标题为“GNU 自由文档许可证”的章节中。

如果您有不变章节、正面封面文本和背面封面文本,请将“不包含...文本。”行替换为:不变章节为列表标题,正面封面文本为列表,背面封面文本为列表。如果您有不包含封面文本的不变章节,或这三者的其他组合,请合并这两种备选项以适应具体情况。

如果您的文档包含重要的程序代码示例,我们建议根据您选择的自由软件许可证(例如 GNU 通用公共许可证)并行发布这些示例,以允许在自由软件中使用它们。