Dell PowerEdge 820服务器QLogic BCM57800网卡Ubuntu 16.04无链路求助
Let's walk through targeted fixes for your BCM57800 fiber port not establishing a link after switching from SLES 11 SP4 to Ubuntu 16.04. I've tackled similar Broadcom NIC compatibility headaches on older Dell servers, so here's what to check step by step:
1. Validate Driver & Hardware Initialization
First, confirm the system recognizes the NIC and loads the driver without critical errors:
- Run
lspci -vvv | grep -A 20 BCM57800to verify the PCI device is enumerated correctly. Look forKernel driver in use: bnx2xto confirm the right driver is attached. - Check driver load status with
lsmod | grep bnx2x— you should see the module listed with a non-zero use count. - Dig into driver logs with
dmesg | grep bnx2x— watch for red flags like firmware load failures, PCI communication errors, or port initialization crashes. Missing firmware messages are a common culprit here.
2. Rule Out Physical & Link Negotiation Issues
Link problems often start at layer 1 or mismatched settings:
- First, eliminate hardware variables: swap the fiber cable, confirm the connected switch port is enabled/up, and ensure it’s configured for the same speed/duplex as your server port.
- Use
ethtool <interface-name>(replace with your fiber port’s name, e.g.,eth0orenp2s0f0) to inspect:- The
Link detected:line at the bottom — if it saysno, the link isn’t coming up. - Current
Speed:andDuplex:values. If autonegotiation fails, force manual settings matching your switch:
(Adjustethtool -s <interface-name> speed 10000 duplex full autoneg offspeedto your link’s supported rate: 1000 for 1G, 10000 for 10G.)
- The
3. Fix Firmware Compatibility
Broadcom NICs are finicky about firmware versions. Ubuntu 16.04’s default linux-firmware package might not match the working firmware/driver pair from your SLES setup:
- Check your current firmware version with:
dmesg | grep bnx2x | grep firmware - If the version is mismatched or missing, download the correct BCM57800 firmware from Broadcom’s support archive (match it to your NIC’s hardware revision), copy it to
/lib/firmware/, then reload the driver:
Or reboot to apply changes fully.rmmod bnx2x && modprobe bnx2x
4. Adjust Driver Version
Ubuntu 16.04’s kernel (4.4.x) ships with a newer bnx2x driver than the 1.710.51-0 version you used in SLES, which can introduce compatibility gaps:
- Try updating via Ubuntu’s backports repository to get a more refined driver build:
apt-get install linux-generic-lts-xenial-backports - If backports don’t help, manually compile the working 1.710.51-0 driver version:
- Install build dependencies:
apt-get install build-essential linux-headers-$(uname -r) - Download the driver source from Broadcom’s archive, extract it, and follow the included build instructions to compile and install the module.
- Blacklist the default bnx2x module if needed to ensure your compiled version loads instead.
- Install build dependencies:
5. Check BIOS & System Network Configs
Don’t overlook server-level settings:
- Boot into your Dell PowerEdge 820’s BIOS, navigate to the NIC configuration section, and confirm the fiber port is enabled (some servers disable unused ports by default).
- Disable any PXE boot settings for the port that might interfere with normal operation.
- On Ubuntu, verify the interface isn’t disabled: use
ip link show <interface-name>to check if it’s inDOWNstate. If so, bring it up with:
Also ensure NetworkManager or systemd-networkd isn’t overriding your interface settings.ip link set <interface-name> up
内容的提问来源于stack exchange,提问作者mbeyss

