UML软件工程组织

配置您的网络连接准备安装Gentoo
bekars 的 Blog
内容:

3.a. 您可以不联网安装, 不过...

谁可以不用联网?

取决于您先前选择的用以安装 gentoo 的媒介, 您将可以或不可以不联网安装. 我们可没和您开玩笑哦 =)

普遍而言, 您需要配置网络连接. 不过呢, Gentoo 也提供了离线安装的可能性. 只要您选择使用 Gentoo Universal LiveCDs.

我为啥需要联网?

联网安装的一大好处就是您可以得到一个最新的系统. 您会得到一个基于最新 portage 树 (包含了许许多多的软件包以及我们提供给您的, 用以管理软件包的工具) 的系统. 这也是为什么联网安装方式会更好的原因. 不过, 有些朋友则不能或不想联网安装 Gentoo.

如果您属于这种情况, 请使用 Gentoo Universal LiveCD. 这张 LiveCD 包含了源代码, portage-tree 的 snapshot 以及用以安装 gentoo 基本系统和系统其他部分的一些工具. 这一安装方式的成本是: 您将不能拥有最新的软件, 尽管可能新旧软件间的差别并不大.

如果您打算按照无网络方式安装, 您就需要使用这一 Gentoo Universal LiveCD, 略过以下章节, 直接跳到预备硬盘分区这章. 否则, 请跟随我们下面联网方式安装的部分.

可选: 配置代理服务器

如果您是通过代理服务器连接到网络的, 您将需要在安装过程中设置好代理服务器的信息. 要设置代理服务器其实非常简单: 您仅需要设置一个包含了代理服务器信息的环境变量.

大部分情况下, 您可以直接使用代理服务器的主机名以定义该环境变量. 例如, 我们假设代理服务器的主机名为 proxy.gentoo.org其端口为 8080, 则:

代码清单 1: 设定代理服务器
(如果代理服务器过滤 (允许?) HTTP 流量?)
# export http_proxy="http://proxy.gentoo.org:8080"
(如果代理服务器过滤 FTP 流量?)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(如果代理服务器过滤 RSYNC 流量?)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

如果您的代理服务器要求用户名和密码, 您需要使用以下的表达方式来定义代理服务器变量:

代码清单 2: 往代理服务器变量中添加用户名/密码
http://username:password@server

例如, 以用户名 "john" 和密码 "f00b_r" 使用我们前述的代理服务器, 您需要写成:

代码清单 3: 需用户认证的代理设定
# export http_proxy="http://john:f00b_r@proxy.gentoo.org:8080"

3.b. 自动网络检测

说不定本来就已联网?

如果您的机器是以 DHCP 方式接入以太网, 很有可能的是您的网络已经自动配置好了. 如果是这样, 您将能够享受到如 ssh, scp, ping, irssi, wget 以及 links 等网络相关 (network-aware) 工具带来的诸多便利.

如果您的网络已经自动配置好, 运行 /sbin/ifconfig 应该会列出除 lo 之外的一些其他网络接口 (network interfaces)比如 eth0:

代码清单 4: /sbin/ifconfig 以查看网络配置
# /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
          collisions:1984 txqueuelen:100
          RX bytes:485691215 (463.1 Mb)  TX bytes:123951388 (118.2 Mb)
          Interrupt:11 Base address:0xe800 
测测网络连接

您或许希望 ping 一下您的 ISP 的 DNS 服务器 (在 /etc/resolv.conf 中可以找到) 或者某个网站, 以确保您的机器确实已联网, 而且 DNS 域名解释正常.

代码清单 5: 进一步网络测试
# ping -c 3 www.yahoo.com

您确实可以使用网络么? 如果是, 您就可以略过如下部分, 直接前进到预备硬盘分区. 如果还不行, 那就郁闷啦, 您还需要再跟着我们下面的步骤多努力一点点东西 :)

3.c. 自动网络配置

如果网络未能立即工作起来, 有些安装媒介让您可以使用 net-setup (普通网络设置) 或 adsl-setup (ADSL 用户) 或 pptp (PPTP 用户 - 仅于 x86 上可用) 来配置网络.

如果您的安装媒介上这些工具一个都没有或者您的网络还没起作用, 请跳到手动网络配置.

  • 普通以太网用户请阅读默认: 使用 net-setup
  • ADSL 用户请阅读替代: 使用 RP-PPPoE
  • PPTP 用户请阅读替代: 使用 PPTP
默认: 使用 net-setup

网络要没能自动工作起来, 配置它的最简单办法就是使用 net-setup 脚本:

代码清单 6: 运行 net-setup 脚本
# net-setup eth0

net-setup 会问您一些关于您的网络环境的问题. 完成之后, 您应该可以获得一个可用的网络连接. 使用前面提到过的方法以测试网络连接情况. 如果测试成功, 恭喜! 你可以开始安装 Gentoo 了. 略过下面的内容, 直接跳到预备硬盘分区.

如果您的网络还是不能用, 请阅读手动网络配置.

替代: 使用 RP-PPPoE

假设您得通过 PPPoE 来连接到网络, LiveCD (任何版本) 已带了 rp-pppoe 这一工具来帮您轻松达成目标. 请使用我们提供的 adsl-setup 脚本来配置您的网络连接. 您需要按提示输入您用以连接到 adsl 猫的网络设备, 您的用户名和密码, 您的 DNS 服务器地址, 以及您是否需要防火墙.

代码清单 7: 使用 rp-pppoe
# adsl-setup
# adsl-start

如果出错, 请再次检查 /etc/ppp/pap-secrets 或 /etc/ppp/chap-secrets 俩文件中您是否已正确地输入了用户名和用户密码, 同时确认您使用了正确的网络设备. 如果您的网络设备不存在, 您就需要加载合适的网络模块. 这种情况下, 请跳到手动网络配置, 在那里我们会向您阐释如何加载网络模块.

如果一切工作正常, 请继续预备硬盘分区.

替代: 使用 PPTP

如果您需要 PPTP 支持, 您可以使用 LiveCD 中提供的 pptpclient. 但首先您得确认您的配置是正确的. 编辑 /etc/ppp/pap-secrets 或 /etc/ppp/chap-secrets 来加入用户名和密码:

代码清单 8: 编辑 /etc/ppp/chap-secrets
# nano -w /etc/ppp/chap-secrets

需要的话请调整 /etc/ppp/options.pptp 中的设置:

代码清单 9: 编辑 /etc/ppp/options.pptp
# nano -w /etc/ppp/options.pptp

完成后, 运行 pptp (加上您不能在 options.pptp 中设置的参数) 以连接到服务器:

代码清单 10: 连接到拨入 (dial-in) 服务器
# pptp <服务器地址>

下面请看预备硬盘分区.

3.d. 手动网络配置

加载恰当的网络 模块

Gentoo LiveCD 启动的时候, 它会检测您机器上所有的硬件设备并试图载入合适的内核模块 (驱动) 以支持您的硬件. 大部分情况下, 它都工作良好. 但有时候, 它未必能自动载入您所需的 模块.

如果 net-setup 或 adsl-setup 不成功, 很有可能就是您的网卡没被正确地识别. 于是, 您就需要自己手动载入合适的内核模块.

使用 ls 来看看我们都提供了那些网络内核模块:

代码清单 11: 搜索已提供的模块
# ls /lib/modules/`uname -r`/kernel/drivers/net

如果您找到了网卡驱动, 请用 modprobe 来加载这一内核模块:

代码清单 12: 使用 modprobe 来 加载内核模块
(As an example, we load the pcnet32 module)
# modprobe pcnet32

要检测您的网卡现在能不能被检测到, 请用 ifconfig. 检测到的网卡通常会输出类似如下的结果:

代码清单 13: 测试您的网卡是否可用, 成功例
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr FE:FD:00:00:00:00  
          BROADCAST NOARP 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:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

如果您看到的是下面这样的错误, 那么您的网卡还是没被检测到:

代码清单 14: 测试您的网卡是否可用, 失败例
# ifconfig eth0
eth0: error fetching interface information: Device not found

如果您的系统中有多个网卡, 它们会被命名为 eth0, eth1, 依此类推. 请确保您想用的那个网卡工作正常, 且在整个手册中 (提到网卡的例子里) 都使用 (和您的网卡一致的) 正确的命名. 我们假设使用的是网卡 eth0.

假设您的网卡已被检测到, 您重新运行 net-setup 或 adsl-setup 试试 (这回应该就可以了). 对于 hardcore (Cure: 没合适的词, 郁闷) 用户, 我们将向您阐释如何完全手工地配置网络.

请根据您的网络设置情况选择下面其中一个小节来阅读:

  • 使用 DHCP 自动获取 IP
  • 准备无线连接 -- 如果您有一个无线网卡
  • 理解网络术语向您阐释您需要了解网络中的哪些知识
  • 使用 ifconfig 和 route 向您阐释如何手工配置网络
使用 DHCP

DHCP (Dynamic Host Configuration Protocol - 动态主机配置协议) 让我们的机器可以自动地获取网络信息 (IP 地址, 子网掩码, 广播地址, 网关, 域名服务器等等), 前提是您的网络中有一个 DHCP 服务器 (或者您的提供商提供了 DHCP 服务). 要让网络接口自动获得这些信息, 运行 dhcpcd:

代码清单 15: 使用 dhcpcd
# dhcpcd eth0
有些网络管理员要求您使用
DHCP 服务器所提供的主机名和域名
这种情况下, 使用
# dhcpcd -HD eth0

如果能行 (试着 ping 一些网络服务器, 如 google), 那就搞定了. 跳过下面的内容, 继续预备硬盘分区.

准备无线连接
注: 不是每张 LiveCD 都有 iwconfig 这一命令. 如果您的没有, 您还是可以根据 linux-wlan-ng 项目中的步骤以让无线网卡工作起来.

如果您使用的是无线 (802.11) 网卡, 则需要首先设置好它才能继续后面的步骤. 要查看您当前无线网卡的设置, 运行 iwconfig. 您应该会看到类似如下的输出:

代码清单 16: 显示当前的无线设置
# iwconfig eth0
eth0      IEEE 802.11-DS  ESSID:"GentooNode"                                   
          Mode:Managed  Frequency:2.442GHz  Access Point: 00:09:5B:11:CC:F2    
          Bit Rate:11Mb/s   Tx-Power=20 dBm   Sensitivity=0/65535               
          Retry limit:16   RTS thr:off   Fragment thr:off                       
          Power Management:off                                                  
          Link Quality:25/10  Signal level:-51 dBm  Noise level:-102 dBm        
          Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx          
          excessive retries:237 Invalid misc:350282 Missed beacon:84            

注: 有些无线网卡的设备名可能是 wlan0 而非 eth0.

对于大部分用户来说, 只有两个参数有必要改变, ESSID (即无线网卡的名字) 和 WEP 键. If the ESSID and Access Point address listed are already that of your access point and you are not using WEP, 那么您的无线网卡即已正常工作. 您若需要改变 ESSID, 或 WEP 键, 则运行下面的命令:

代码清单 17: 变更 ESSID 与/或添加 WEP 键 (key)
(下面将网络名称设为 "GentooNode")
# iwconfig eth0 essid GentooNode

(以下设置一个十六进制的 WEP 键 (hex WEP key))
# iwconfig eth0 key 1234123412341234abcd

(以下设置 ASCII 键 - 以 "s:" 为前缀)
# iwconfig eth0 key s:some-password

然后, 您可以用 iwconfig 来确认您的无线网卡配置情况. 当您的无线网卡开始工作了, 您可以继续下一部分 (理解网络术语) 中配置 IP 级别网络参数 (IP level networking options) 的内容, 或是使用前述的 net-setup.

理解网络术语
注: 如果您知道自己的 IP 地址, 广播地址, 子网掩码以及域名服务器. 那么可以跳过以下部分, 直接到使用 ifconfig 和 route

如果上面那些手段都失败了, 您这回就真得全手工配置网络了. 别慌, 没啥难的. 不过我们首先得向您阐释一些必要的网络知识, 以便在您随后有足够能力按需配置网络. 您读完这部分之后, 将会明白网关 (gateway) 是什么, 子网掩码 (netmask) 用来干啥, 广播地址 (broadcast) 是如何构成的以及为啥需要域名服务器 (nameservers).

在一个网络中, 每台主机是通过其 IP 地址 (Internet Protocol address) 来被识别的. 该地址由取值范围为 0 到 255 的四个数字组成. 至少它看起来是这样的. 而实际上, 一个 IP 地址由 32 个比特 (bits) 位 (其值为 0 或 1) 组成. 我们来看个例子:

代码清单 18: IP 地址例
IP Address (numbers):   192.168.0.2
IP Address (bits):      11000000 10101000 00000000 00000010
                        -------- -------- -------- --------
                           192      168       0        2

在可以访问到的所有网络中, 每台主机的 IP 地址都必需是唯一的 (也就是说, 您可以访问到的每台机器都必需拥有唯一的 IP). 为了可以分开一个网络中的主机和网络外的主机, IP 地址被分成两部分: 网络 (network) 部分和主机 (host) 部分.

这样的分割是和由一堆 0 和 1 构成的子网掩码 (netmask) 一起写下来的 (written down). IP 地址中和掩码里的一映射 (mapped on) 在一起的部分即是网络部分 (network-part), 其他的则是主机部分 (host-part). 通常, 子网掩码可以写成 IP 地址那样的形式.

代码清单 19: 网络/主机分割例
IP-address:    192      168      0         2
            11000000 10101000 00000000 00000010
Netmask:    11111111 11111111 11111111 00000000
               255      255     255        0
           +--------------------------+--------+
                    Network              Host

换句话说, 192.168.0.14 是我们示例网络中的一台主机, 而 192.168.1.2 则不是.

广播地址是这样一个 IP 地址: 它的网络部分和您所在的网络相同, 而主机部分则是一堆的一. 您网络中的所有主机都会一直侦听这一 IP 地址. 它确实是用来广播一些数据包 (packets) 的.

代码清单 20: 广播地址
IP-address:    192      168      0         2
            11000000 10101000 00000000 00000010
Broadcast:  11000000 10101000 00000000 11111111
               192      168      0        255
           +--------------------------+--------+
                     Network             Host

要想上网冲浪, 您就得知道到底哪台主机连着因特网. 这台主机就被成为网关. 由于它就是一台普通的主机, 所以它也拥有一个普通的 IP 地址 (如 192.168.0.1).

我们前面说过每台主机都有其唯一的 IP 地址. 如果您想通过该主机的名字 (而非 IP 地址) 访问到它, 您就需要一种可以把名字 (如 dev.gentoo.org) 解释成 IP 地址 (如 64.5.62.82) 的服务. 这样一种服务称之为域名服务. 要使用该服务, 您就得在 /etc/resolv.conf 中定义必需的域名服务器 (name servers).

一些情况下, 您的网关也会充当域名服务器的角色. 否则, 您就得输入 ISP 给提供的域名服务器.

下面的信息作为一次小结, 然后您可以继续后面的部分:

网络相关项 例子
IP 地址 192.168.0.2
子网掩码 255.255.255.0
广播地址 192.168.0.255
网关 192.168.0.1
域名服务器 195.130.130.5, 195.130.130.133
使用 ifconfig 和 route

网络设置由三步组成. 首先我们用 ifconfig 给自己设定一个 IP 地址, 然后我们用 route 设定到网关的路由 (route), 最后我们把域名服务器的 IP 地址写到 /etc/resolv.conf 中.

要设定 IP 地址, 您需要知道自己的 IP 地址, 广播地址以及子网掩码. 然后运行下面的命令, 把其中的 ${IP_ADDR} 换成您的 IP 地址, ${BROADCAST} 换成广播地址, ${NETMASK} 换成子网掩码:

代码清单 21: 使用 ifconfig
# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up

然后用 route 命令来设定路由. 把下面的 ${GATEWAY} 换成您的网关:

代码清单 22: 使用 route
# route add default gw ${GATEWAY}

再用您最喜欢的编辑器 (我们还以 nano 为例) 打开 /etc/resolv.conf:

代码清单 23: 创建 /etc/resolv.conf
# nano -w /etc/resolv.conf

现在模仿下面的 模板填入您的每个域名服务器. 请将 ${NAMESERVER1}, ${NAMESERVER2} 替换成您实际的域名服务器地址.

代码清单 24: /etc/resolv.conf 模板
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

就这么多, 现在 ping 网络上的一些服务器 (比如 google) 来测试一下您的网络情况. 如果运转正常, 恭喜! 您可以开始安装 Gentoo 啦. 我们继续下一章预备硬盘分区.

 

版权所有:UML软件工程组织