V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
wex
V2EX  ›  问与答

关于 LINUX 的 IP 配置问题

  •  
  •   wex · Jan 5, 2016 · 2027 views
    This topic created in 3773 days ago, the information mentioned may be changed or developed.
    测试环境是虚拟机,装的是 CENTOS7
    我删除了 /etc/sysconfig/network-scripts/ifcfg-eth0(源文件是 eto166777714x,改名字成了 eth0),为什么还可以正常上网?虚拟机设置的网络环境是 NAT
    6 replies    2016-01-06 12:20:18 +08:00
    lhbc
        1
    lhbc  
       Jan 6, 2016 via Android
    UUID
    msg7086
        2
    msg7086  
       Jan 6, 2016
    因为你的网卡叫 eto16777714 。用 ip l 看看你网卡是不是叫这名字。
    mzer0
        3
    mzer0  
       Jan 6, 2016
    @msg7086 @wex

    这个是 CentOS 7 在 VMware 上已知的一个 BUG, 这个 BUG 会导致自动安装时网卡配置错误.

    这个 BUG 是怎么来的呢? 储存网卡 ID 的变量有 24 位, 取值范围是 0 ~ 2^24 - 1. 错误配置的网卡名为 eto166777714x, 可见其 ID 为 166777714 = 2^24 - 2, 因此, 可以推断, 错误的代码大致为:

    int24_t get_eth_id(void) { return (uint24_t) (-1); }

    uint24_t eth_id = get_eth_id();
    if(eth_id == (uint24_t) (-1)) { /* Error */ }

    开发人员不小心把本应该是 uint24(无符号 24 位整数)的返回值类型写成了 int24_t(有符号 24 位整数), 换而言之, 他少打了一个字母 u.

    已经有人把这个 bug 上报给 VMware 了(不是我), 不过我估计是 CentOS 的安装程序的问题. 楼主 @wex 你用的操作系统是不是 Win10? 因为 Win10 重写了硬件虚拟层的代码, 这样会导致安装网卡驱动的时候, 安装程序跳到一个不常见的分支(你的网卡驱动+虚拟硬件层+VMware), 而那个分支写错了返回值......

    如果确定这个 Bug 只在 Win10 下出现, 我会考虑给 CentOS 发 PR, 毕竟我懂怎么修......
    k9982874
        4
    k9982874  
       Jan 6, 2016 via iPhone
    @mzer0 有理有据 深入浅出赞一个
    wex
        5
    wex  
    OP
       Jan 6, 2016 via Android
    @mzer0 感谢,我的电脑是 7 64 位,虚拟机版本 vm12
    wex
        6
    wex  
    OP
       Jan 6, 2016 via Android
    @msg7086 我都说把名字改成了 ethO 了,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3708 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 10:39 · PVG 18:39 · LAX 03:39 · JFK 06:39
    ♥ Do have faith in what you're doing.