本节仅适用于需要配置网卡的情况。
如果不使用网卡,就不必创建关联网卡的配置文件,这样的话在所有运行级目录( /etc/rc.d/rc*.d
)删除 network
符号链接。
由于 Udev
和网络驱动的模块化,网络设备接口的加载顺序在每次重启后可能不同,因为驱动是并行加载的,所以顺序会变成随机的。例如,在一台计算机上有两块由
Intel 和 Realtek 生产的网卡。 Intel 制造的网卡可能是 eth0
,Realtek 的网卡是 eth1
,在某些情况下,在重启后网卡的顺序可能反过来。为避免这种情况, 我们应该根据网卡的
MAC 地址或总线位置来为他们命名。
先指定的规则保证了在每次启动时同一设备分配到同一数字。包括第一个:
for NIC in /sys/class/net/* ; do INTERFACE=${NIC##*/} udevadm test --action=add --subsystem=net $NIC done
现在,检查 /etc/udev/rules.d/70-persistent-net.rules
文件,找到与网络设备对应的代号:
cat /etc/udev/rules.d/70-persistent-net.rules
这个文件开始的是一个注释块,紧跟注释块的是针对每个 NIC 的两行。第一行是显示它的硬件 ID 的描述性语句(例如,如果是一块 PCI ,它就的 PCI 生产商和设备 ID),如果驱动可用,圆括号里的是它的驱动。用来决定一个接口名字的既不是硬件 ID 也不是驱动。这里的信息仅作引用。第二行是匹配 NIC 的 Udev 规则,实际是为它命名。
所有的 Udev 规则是由一连串的,由逗号和可选择的空格分开的 keys 组成这个规则的 keys 和解释如下:
SUBSYSTEM=="net"
- 告诉 Udev
忽略不是网卡的设备。
ACTION=="add"
- 告诉 Udev 忽略不作为
"add" 的 uevent 的规则 (移除和改变 uevents 也会发生,但不需要重命名网络接口)。
DRIVERS=="?*"
- 这个存在,以至于 Udev
会忽略 VLAN 或 桥接器子接口( bridge sub-interfaces )(
因为这些子接口没有驱动)。这些子接口被跳过因为已经被分配的名字会和父设备冲突。
ATTR{address}
- 这个关键字的值是 NIC 的
MAC 地址。
ATTR{type}=="1"
-
就某些无线驱动(它们创建多个虚拟接口)来说,这个保证了只匹配主要接口的规则。次要的接口被忽略,原因和 VLAN 与
桥接器子接口被忽略的原因一样:有名字冲突。
KERNEL=="eth*"
- 这个键被添加进 Udev
规则产生器中以处理有多个网络接口(都有同一个 MAC 地址,
PS3就是这种机器)的机器。如果独立的接口有不同的基极名称,这个键允许 Udev 把它们分开。一般来说,它对大多数的
LFS 用户不是必须的,但用了也无害。
NAME
- 这个值是 Udev 将分配给这个接口的名字。
NAME
的值很重要。在继续之前确保你知道哪个名字该分配给哪个网卡,并在创建如下的配置文件时确定 NAME
的值。
network 脚本启用或关闭哪个接口由 /etc/sysconfig/network-devices
目录下的文件决定,这个目录应该包含有各个要配置的端口的子目录,比如 ifconfig.xyz
。这里的 “xyz”
是网络接口名。目录里面将定义接口的属性,比如 IP 地址、子网掩码等等。
在这个目录下新建文件,下面是一个为 eth0 设备创建
ipv4
文件的示例:
cd /etc/sysconfig/network-devices
mkdir -v ifconfig.eth0
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF
每个文件中的这些变量的值都要更改成合适的设置。如果 ONBOOT
变量设置成
“yes” ,network 脚本会在系统启动的时候启动 NIC(Network
Interface Card 网络接口卡,简称网卡)如果设置为 “yes”
以为的值,网卡会被 network 脚本忽略而没有启动。
SERVICE
变量定义获取 IP 地址的方式。LFS-Bootscripts
包有一套模块化的 IP 地址分配格式,并在 /etc/sysconfig/network-devices/services
目录下为其他的 IP
分配方式创建了附加的文件,这通常用做 DHCP ( Dynamic Host Configuration Protocol )方式,在
BLFS 里有详细介绍。
GATEWAY
变量应该设置为默认网关的 IP
地址。如果没有默认网关,就把这个变量完全注释掉。
PREFIX
PREFIX 变量设置为子网使用的位数。IP 地址的每个字节是 8
bit 。如果子网掩码是 255.255.255.0 ,那么它使用前三个字节(24 bit)指定网络号;如果网络掩码是
255.255.255.240 ,它用前 28 bit 来指定网络号。长于 24 bits 的前缀一般由 DSL 和
cable-based ISP(Internet Service Providers)使用,这里的例子里( PREFIX=24
),子网掩码是 255.255.255.0。请根绝您的网络情况调整 PREFIX
变量。
如果系统要连接到 Internet 上,就需要 DNS(Domain Name Service 域名服务)名称解析的手段,来把
Internet 域名解析为 IP 地址,反之亦然。在 /etc/resolv.conf
文件里设置 ISP 或网络管理员提供的域名服务器的 IP
地址就可以达到这个目的了,运行下面的命令创建这个文件:
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain <域名>
nameserver <主域名服务区 IP 地址>
nameserver <副域名服务器 IP 地址>
# End /etc/resolv.conf
EOF
把 <域名服务器 IP 地址>
替换为您的域名服务器的 IP 地址。域名服务器常常不止一项(作为备份用途)。如果您只需要一个域名服务器,把文件里的第二行
nameserver 删除就可以了。在局域网里这个 IP
地址还可能是路由器。