busybox:启动阶段的静态 IP 配置过程
文章目录
- 1. 前言
- 2. 启动阶段 busybox 配置静态 IP 过程
1. 前言
限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。
2. 启动阶段 busybox 配置静态 IP 过程
编辑 /etc/network/interfaces 文件内容如下:
auto lo
iface lo inet loopbackauto eth0
iface eth0 inet static
address 192.168.1.188
netmask 255.255.255.0
gateway 192.168.1.1
启动时用命令 /sbin/ifup eth0 配置网络,该命令调用 busybox/networking/ifupdown.c 中的函数 ifupdown_main() 解析 /etc/network/interfaces 对网络进行配置:
/* busybox/networking/ifupdown.c */ifupdown_main()...static_up()static int FAST_FUNC static_up(struct interface_defn_t *ifd, execfn *exec)
{int result;
# if ENABLE_FEATURE_IFUPDOWN_IPresult = execute("ip addr add %address%/%bnmask%[[ broadcast %broadcast%]] ""dev %iface%[[ peer %pointopoint%]][[ label %label%]]", ifd, exec);result += execute("ip link set[[ mtu %mtu%]][[ addr %hwaddress%]] %iface% up", ifd, exec);result += execute("[[ip route add default via %gateway% dev %iface%[[ metric %metric%]]]]", ifd, exec);return ((result == 3) ? 3 : 0);
# else/* ifconfig said to set iface up before it processes hw %hwaddress%,* which then of course fails. Thus we run two separate ifconfig */result = execute("ifconfig %iface%[[ hw %hwaddress%]][[ media %media%]][[ mtu %mtu%]] up",ifd, exec);result += execute("ifconfig %iface% %address% netmask %netmask%""[[ broadcast %broadcast%]][[ pointopoint %pointopoint%]]",ifd, exec);result += execute("[[route add default gw %gateway%[[ metric %metric%]] %iface%]]", ifd, exec);return ((result == 3) ? 3 : 0);
# endif
}
