V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wex
V2EX  ›  问与答

关于 LINUX 的 IP 配置问题

  •  
  •   wex · 2016-01-05 23:59:24 +08:00 · 1700 次点击
    这是一个创建于 3278 天前的主题,其中的信息可能已经有所发展或是发生改变。
    测试环境是虚拟机,装的是 CENTOS7
    我删除了 /etc/sysconfig/network-scripts/ifcfg-eth0(源文件是 eto166777714x,改名字成了 eth0),为什么还可以正常上网?虚拟机设置的网络环境是 NAT
    6 条回复    2016-01-06 12:20:18 +08:00
    lhbc
        1
    lhbc  
       2016-01-06 00:03:53 +08:00 via Android
    UUID
    msg7086
        2
    msg7086  
       2016-01-06 02:07:47 +08:00
    因为你的网卡叫 eto16777714 。用 ip l 看看你网卡是不是叫这名字。
    mzer0
        3
    mzer0  
       2016-01-06 04:24:05 +08:00
    @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  
       2016-01-06 09:55:14 +08:00 via iPhone
    @mzer0 有理有据 深入浅出赞一个
    wex
        5
    wex  
    OP
       2016-01-06 12:19:39 +08:00 via Android
    @mzer0 感谢,我的电脑是 7 64 位,虚拟机版本 vm12
    wex
        6
    wex  
    OP
       2016-01-06 12:20:18 +08:00 via Android
    @msg7086 我都说把名字改成了 ethO 了,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1067 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:08 · PVG 03:08 · LAX 11:08 · JFK 14:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.