负责网络的引导脚本通常根据 /etc/sysconfig
中配置文件的内容,判定需要启用或禁用哪些网络接口。对于每个需要配置的网络接口,该目录中都应该包含一个文件,文件名类似
ifconfig.xyz
,这里“xyz”应该能够描述该网卡。使用接口名 (如
eth0) 一般比较合适。文件中包含该网络接口的属性,如 IP 地址、子网掩码等。文件名必须以 ifconfig 开头。
如果没有使用前一节描述的自定义命名策略,udev 会根据系统物理特征命名网卡接口,例如 enp2s1。如果您不能确定接口名,可以在引导您的 LFS 系统后使用 ip link 或 ls /sys/class/net 命令确认。
接口名依赖于系统正在运行的 udev 守护进程的实现和配置。LFS 的 udev 守护进程 (在第 8.76 节 “Systemd-256.4 中的 Udev”中安装) 直到 LFS 系统引导时才会运行。因此,在宿主系统中使用上述命令未必能确定 LFS 系统将会使用的接口名,即使在 chroot 环境中仍然如此。
例如,以下命令为 eth0 设备创建一个静态 IP 地址配置:
cd /etc/sysconfig/ cat > ifconfig.eth0
<< "EOF"ONBOOT=
EOFyes
IFACE=eth0
SERVICE=ipv4-static
IP=192.168.1.2
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=192.168.1.255
您必须修改每个文件中用斜体显示的设定值,以正确设置网络接口。
如果 ONBOOT
变量被设置为yes
,则 System V 网络脚本会在引导系统时启用该网络接口卡 (NIC)。如果设定的值不是
yes
,网络脚本会忽略该 NIC,不自动启用它。您可以使用
ifup 和 ifdown 命令,手动启用或禁用网络接口。
IFACE
变量指定网络接口名,例如
eth0。所有网络设备配置文件都需要它。配置文件扩展名必须与该变量的值相同。
SERVICE
变量定义获取 IP 地址的方法。LFS-Bootscripts
软件包使用模块化 IP 配置格式,在 /lib/services/
目录中新建一些文件,即可使用其他 IP 分配方法,这一般被用于动态主机配置协议 (DHCP) 配置,具体方法在 BLFS 手册中说明。
如果默认网关存在,GATEWAY
变量应该包含默认网关的 IP
地址。如果默认网关不存在,应该将这一行完全注释掉。
PREFIX
变量指定子网使用的 IP 地址位数。IP
地址中的每一段都是二进制为 8 位的数,如果子网掩码是 255.255.255.0,说明 IP 地址中前三段 (24 位)
表示子网编号。如果子网掩码是 255.255.255.240,则使用了前 28 位表示子网编号。子网前缀比 24 长的情况一般见于基于
DSL 或同轴电缆的 Internet 服务提供商 (ISP)。在我们的例子中,子网掩码是
255.255.255.0。您应该根据您所处的子网调整 PREFIX
变量。如果忽略它,则默认值为 24。
参考 ifup 的手册页获得更多信息。
系统需要某种方式,获取域名服务 (DNS),以将 Internet 域名解析成 IP
地址,或进行反向解析。为了达到这一目的,最好的方法是将 ISP 或网络管理员提供的 DNS 服务器的 IP 地址写入
/etc/resolv.conf
。执行以下命令创建该文件:
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain <您的域名>
nameserver <您的主要域名服务器 IP 地址>
nameserver <您的次要域名服务器 IP 地址>
# End /etc/resolv.conf
EOF
可以省略 domain
语句,或使用一条 search
语句代替它。阅读 resolv.conf 的手册页了解更多细节。
将 <域名服务器 IP 地址>
替换为您的网络环境下最合适的 DNS 服务器 IP 地址。这里往往会写入不止一个 DNS 服务器
(需要提供后备功能的次要服务器)。如果您只需要或只希望使用一个 DNS 服务器,可以删除文件中的第二个 nameserver 行。也可以写入本地路由器的 IP 地址。
Google 公用 DNS 服务器的 IP 地址是 8.8.8.8 和 8.8.4.4。
在引导过程中,/etc/hostname
被用于设定系统主机名。
执行以下命令,创建 /etc/hostname
文件,并输入一个主机名:
echo "<lfs>
" > /etc/hostname
<lfs>
需要被替换为赋予该计算机的名称。不要在这里输入全限定域名 (FQDN)。FQDN 应该被写入 /etc/hosts
文件。
选择一个全限定域名 (FQDN),和可能的别名,以供 /etc/hosts
文件使用。如果使用静态 IP 地址,您还需要确定要使用的 IP 地址。hosts 文件条目的语法是:
IP_地址 主机名.域名 别名
除非该计算机可以从 Internet 访问 (即拥有一个注册域名,并分配了一个有效的 IP 地址段 —— 多数用户没有分配公网 IP),则使用的 IP 地址必须属于私网 IP 范围。有效的范围是:
私网地址范围 公共前缀长度
10.0.0.1 - 10.255.255.254 8
172.x.0.1 - 172.x.255.254 16
192.168.y.1 - 192.168.y.254 24
x 可以是 16-31 之间的任何数字。y 可以是 0-255 之间的任何数字。
例如,192.168.1.1 是有效的私网 IP 地址。
如果计算机要被配置为能够从 Internet 访问,则可以使用注册域名本身作为有效的 FQDN,或者在其之前用“.”符号连接一个前缀 (前缀通常是主机名) 得到 FQDN。另外,您需要联系域名提供商,以将 FQDN 解析到您的公网 IP 地址。
即使计算机无法从 Internet 访问,一些程序,如 MTA,仍然需要一个 FQDN 才能正常工作。此时可以使用一个特殊的 FQDN
localhost.localdomain
。
执行以下命令,创建 /etc/hosts
:
cat > /etc/hosts << "EOF"
# Begin /etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.1.1 <FQDN>
<HOSTNAME>
<192.168.1.1>
<FQDN>
<HOSTNAME>
[alias1] [alias2 ...]
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# End /etc/hosts
EOF
其中 <192.168.0.2>
,<FQDN>
,以及<主机名>
的值需要为特定使用环境和需求进行修改(如果系统或网络管理员分配了 IP 地址,且本机将被连接到现有的网络中)。可以跳过别名
(alias),它们不是必要的。