在我们的嵌入式 Linux 设置(Leopardboard SBC 上的 Linux SDK)中深入研究网络初始化的过程时,我们在 /etc/network/interfaces 中发现了一行看似奇怪且可能不起作用的内容:
# Wired or wireless interfaces
auto eth0
iface eth0 inet dhcp
pre-up /bin/grep -v -e "ip=[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /proc/cmdline > /dev/null
现在,该系统中的内核命令行可能包含行“ip=192.168.2.1”或其他地址,但这行具体忽略如果它匹配(grep -v= 仅显示不匹配的行)。另外,它会将其重定向到 /dev/null,因此无论哪种方式似乎都是徒劳的。
有没有人见过类似的东西,或者知道除了没有什么?
答案1
从man interfaces
:
pre-up command
Run command before bringing the interface up. If this command
fails then ifup aborts, refraining from marking the interface as
configured, prints an error message, and exits with status 0.
This behavior may change in the future.
从那里,我猜你引用的命令基本上是一个测试,注定要中止 ifup 并重新配置接口,如果已经有和ip=...
行cmdline
。重定向到/dev/null
应用于预先设置的错误消息,而不是 grep。