Ubuntu系统关机时将网卡工作模式由千兆自动切换至百兆非自适应

本文介绍如何通过编写脚本在Ubuntu系统中将网卡eth1从千兆自适应模式更改为百兆非自适应模式,并确保该脚本在系统关机时自动执行。主要涉及使用ethtool命令设置网卡工作模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.需要准备的知识点

网卡工作模式设置命令:ethtool -s eth1 autoneg off speed 100 duplex full

网卡状态读取命令:ethtool eth1

用 echo 管道命令给sudo自动输入密码:echo password|sudo -S cmd

用 echo 管道命令将内容content写入指定文件file_name内:echo "content" > file_name

生成链接文件命令:ln -s 


2.思路

创建一个修改网卡工作模式的脚本eth_set_100,脚本内容如下:

#!/bin/bash
echo "admin"|sudo -S ethtool -s eth1 autoneg off speed 100 duplex full
脚本eth_set_100的功能是将Ubuntu系统的网卡eth1由千兆自适应模式改为百兆非自适应模式,

要想让脚本eth_set_100在Ubuntu系统关机时启动,需要进行如下三个操作:

(1)在文件夹/etc/init.d/下创建关机时需要执行的脚本eth_set_100
(2)分别在文件夹/etc/rc0.d/和/etc/rc6.d/下创建该该脚本文件的链接文件K07eth_set_100

(3)在文件夹/var/lock/subsys/下生成与eth_set_100同名的文件。


3.具体实现步骤

现编写另一个脚本autoset_net,运行该脚本可以自动完成上文的所有工作,脚本内容如下:

#!/bin/bash

#(1)creat shell file 
cd /etc/init.d
echo "admin"|sudo -S touch eth_set_100
echo "admin"|sudo -S chmod 777 eth_set_100

#content of the shell file
echo "#!/bin/bash
echo "admin"|sudo -S ethtool -s eth1 autoneg off speed 100 duplex full" > eth_set_100

#(2)creat link
echo "admin"|sudo -S ln -s /etc/init.d/eth_set_100 /etc/rc0.d/K07eth_set_100
echo "admin"|sudo -S ln -s /etc/init.d/eth_set_100 /etc/rc6.d/K07eth_set_100

#(3)creat same file in the /var/lock/subsys/
echo "admin"|sudo -S mkdir -p /var/lock/subsys/
echo "admin"|sudo -S touch /var/lock/subsys/eth_set_100

运行脚本autoset_net的具体操作如下:

(1)在~/目录下新建脚本文件autoset_net

cd ~/
sudo gedit autoset_net

将上方代码写入脚本autoset_net

(2)修改文件权限

sudo chmod 777 autoset_net

(3)运行该文件

./autoset_net

待系统关机后,通过网线将Ubuntu工作站的网口与另一台PC相连,在PC的网络与共享中心的本地连接中,就可查看工作站网口的工作速度,如果设置正常,PC的本地连接网速应该为100Mbps。


4.参考:

(1)ethtool 命令详解 - linfengdu的日志 - 网易博客
http://linfengdu.blog.163.com/blog/static/117710732010112124631684/


在麒麟操作系统中,网卡速率自适应问题通常表现为网卡无法自动识别并适配网络设备(如交换机或路由器)的速率和双工模式,导致连接不稳定或速率受限。解决此类问题需要从系统配置、驱动支持以及硬件兼容性等方面进行排查与调整。 ### 检查网卡当前速率和双工模式 首先可以通过 `ethtool` 工具查看网卡当前的工作状态: ```bash sudo ethtool eth0 # 将 eth0 替换为实际使用的网卡名称 ``` 输出中将显示当前网卡的速度(Speed)、双工模式(Duplex)以及是否启用自动协商(Auto-negotiation)等信息。 如果 Auto-negotiation 被禁用,则需手动开启: ```bash sudo ethtool -s eth0 autoneg on ``` 若启用了自动协商但仍然无法正确识别速率,可尝试强制指定速率和双工模式[^1]。例如设置为 1000M 全双工: ```bash sudo ethtool -s eth0 speed 1000 duplex full autoneg off ``` ### 配置持久化设置 上述命令仅在当前会话生效,重启后失效。为使其持久化,可以编辑网络接口配置文件(如 `/etc/network/interfaces` 或使用 NetworkManager 等工具),添加如下内容(以 Debian/Ubuntu 系统为例): ```bash up ethtool -s eth0 speed 1000 duplex full autoneg off ``` 对于采用 `systemd-networkd` 的系统,可在 `.network` 文件的 `[Link]` 或 `[Network]` 段落中添加执行命令。 ### 更新网卡驱动 某些情况下,网卡驱动版本过旧可能导致速率自适应失败。可通过以下方式更新驱动: - 使用系统自带的软件包管理器安装最新驱动,例如: ```bash sudo apt update sudo apt install linux-firmware ``` - 若为特定品牌网卡(如 Intel、Realtek 等),建议访问官网下载适用于麒麟系统的最新驱动并编译安装。 ### BIOS/UEFI 和固件更新 部分主板或服务器平台存在 BIOS 层面对网卡速率的支持限制,建议检查并升级至最新 BIOS 版本。此外,网卡本身的固件也可能影响速率协商,需确认其版本并更新至最新。 ### 硬件兼容性检查 若问题持续存在,应检查网卡与交换机之间的物理连接是否正常,包括网线类型(Cat5e 及以上)、端口配置等。同时,确保对端设备(如交换机)也开启了自动协商功能,避免因两端配置不一致导致速率协商失败。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snaking616

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值