星期五, 十一月 24, 2006

为 cable modem 接入配置 LFS network dhcp client

...未完...

LFS 可用的 dhcp client 有两个:dhcp 和 dhcpcd,前者包括一个服务器,因为没有必要安装服务,所以我选择后者:
# cat usr/src/dhcpcd/.config
pkgname = "dhcpcd";
version = "1.3.22";
group = "dhcpcd";
user = "dhcpcd";
archive = "dhcpcd-1.3.22-pl4.tar.gz";
patch = "dhcpcd-1.3.22-pl4-fhs-1.patch";
command = "tar xfz dhcpcd-1.3.22-pl4.tar.gz";
command = "cd dhcpcd-1.3.22-pl4";
command = "patch -Np1 -i ../dhcpcd-1.3.22-pl4-fhs-1.patch";
command = "./configure --prefix="" --sysconfdir=/var/lib";
command = "make";
command = "make install";
command = "cd ..";
command = "rm -rf dhcpcd-1.3.22-p14";
time = "20061125 19:34:15 Sat";

然后安装 blfs-bootscripts-6.1 的 dhcpcd script:
# tar xfj blfs-bootscripts-6.1.tar.bz2
# cd blfs-bootscripts-6.1
# make install-service-dhcpcd
这会在 /etc/sysconfig/network-devices/services 下安装一个 dhcpcd 脚本。

然后移除 /etc/sysconfig/network-devices/ifconfig.eth0/ipv4,编写:
cat > /etc/sysconfig/network-devices/ifconfig.eth0/dhcpcd << "EOF"
ONBOOT="yes"
SERVICE="dhcpcd"
# DHCP_START="[insert appropriate start options here]"
# DHCP_STOP="-k [insert additional stop options here]"
DHCP_STOP="-k"

# Set PRINTIP="yes" to have the script print
# the DHCP assigned IP address
PRINTIP="yes"

# Set PRINTALL="yes" to print the DHCP assigned values for
# IP, SM, DG, and 1st NS. This requires PRINTIP="yes".
PRINTALL="no"
EOF

然后运行 /etc/rc.d/init.d/network restart。

其基本机制是,/etc/rc.d/init.d/network 脚本会首先查找 /etc/sysconfig/network-devices/ifconfig.*,针对每个接口运行 /etc/sysconfig/network-devices/ifup,而这个脚本又会查找所有的配置文件逐一启用,例如 ifconfig.eth0,则会查看 ifconfig.eth0/*,所以如果有 ipv4 和 dhcpcd 则都会运行,所以前面移除 ipv4。对 dhcpcd,则会检查 ONBOOT 和 SERVICE 等参数,对 SERVICE="dhcpcd",则会寻找 /etc/sysconfig/network-devices/services/dhcpcd 以运行之。

没有评论: