这个问题也是十分诡谲莫测,在我的服务器重启之后,莫名奇妙的发现
ifconfig -a
这个命令告诉我,有线网卡的驱动没了,我直接满头问号。只剩下之前安装的docker
的默认驱动docker0
和回环网络lo
,而按理来说,应该存在一个eth0
或者什么的(后来我知道高版本里的网卡驱动改名了,我的叫eno1
,所以这个关键词不好用了)
nvidia-smi
同时显卡驱动报错,驱动版本和library版本不一致。
然后检查网络问题
cat /etc/network/interface
提示我不存在这个文件
systemctl status network
systemctl status networkd
service network status
service networkd status
提示我Unit network.service could not be found.
反正不存在这个东西。
还好,我后来百度,告诉我这个服务在高版本的ubuntu中被NetworkManager
替代了
systemctl status NetworkManager
# 告诉我运行正常,并且没有有线网卡的驱动的运行信息
# 查到有一些方法是重启这个服务,显然无效
然后再检查一下netplan
的设置,这也是高版本的ubuntu里的网络配置工具。
cat /etc/netplan/01-network-manager-all.yaml
# 下面的是文件内容
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
没啥有效信息,就是表示让NetworkManager
管理网络,这个东西还有两个管理工具,分别叫nmtui
和nmcli
,前者是伪图形化工具,后者是命令行工具,反正检查下来对我也没用,怎么使用你们可以自己百度。
这里其实就已经陷入误区了,问题很明显,没有驱动就去检查驱动啊。但是在此之前,我还是先检查了系统日志
dmesg
cat /var/log/kern.log
读了半天的系统报错,没看懂。
然后去分别检查驱动是否加载和驱动的名字
lsmod|grep -i realtek
lspci|grep -i ethernet
# 07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
完事之后就去屁颠屁颠的下载驱动安装驱动力,这里就有一个问题,就是,我没有网卡,所以我上不了网。我得用U盘,在我的本地机器上下载然后用U盘给服务器安装。
然后客服重重困难,在安装的过程中,逐渐发现不对劲,首先,因为这个文件是压缩包,需要我自己编译,在编译过程中,报错/lib/module/$(shell uname -a)
下没有build
文件夹,无法构建,其中$(shell uname -a)
的意思就是用默认的shell
调用后面的命令,也就是输出内核名称,然后去到这个文件夹下,发现果然没有,查了一下。告诉我需要安装headers
文件,好,我去找,结果找的时候发现更不对劲了,这个版本的头文件怎么这么难找?查了一下发现当前的内核intel-iotg
系列是物联网系统的内核,此时我还没有反应过来,只是接着找头文件,安装驱动,但是这个头文件也需要make
,make
的过程中又出现了一系列的依赖缺失,然后尝试去下载dkms
的安装方法,安装完之后还是不对。构建版本有问题。
此时我已经开始考虑重装了,毕竟这成本有点高了。
然后偶然间我想着能不能内核降级,降到其他版本说不定就可以了,然后我在想,既然是内核文件,为什么的我这个目录下有三个内核文件?
检查一下
grep menuentry /boot/grub/grub.cfg
输出
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-39f884f3-56ae-4cb3-ba78-341a4c781f7f' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-39f884f3-56ae-4cb3-ba78-341a4c781f7f' {
menuentry 'Ubuntu, with Linux 5.15.0-1035-intel-iotg' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-1035-intel-iotg-advanced-39f884f3-56ae-4cb3-ba78-341a4c781f7f' {
menuentry 'Ubuntu, with Linux 5.15.0-1035-intel-iotg (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-1035-intel-iotg-recovery-39f884f3-56ae-4cb3-ba78-341a4c781f7f' {
menuentry 'Ubuntu, with Linux 5.15.0-76-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-76-generic-advanced-39f884f3-56ae-4cb3-ba78-341a4c781f7f' {
menuentry 'Ubuntu, with Linux 5.15.0-76-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-76-generic-recovery-39f884f3-56ae-4cb3-ba78-341a4c781f7f' {
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
显然我有两个内核。此时我有一个合理猜测,因为一些不确定的原因,系统里有一个并不适配硬件的系统内核,本来这个内核并不影响,但是在ubuntu自动更新的时候,这个错误的内核版本比正常的内核版本高了,所以默认进入的变成了这个错误的内核,所以进去之后各种驱动都出现问题,因为这些驱动本来就不是为这个内核安装的。
所以修改grub设置,进入新的内核,一切就正常了。
nano /etc/default/grub
主要修改还以下内容,从后往前说,第三个是系统启动时进入GRUB界面有几秒时间考虑是否进入,第二个在某些系统里是HIDDEN,也就是默认隐藏进入GRUB界面的选项,这里改成菜单,在系统启动过程就会有一个菜单界面用于选择内核或者设置。第一个不要急着改,它对应的是grep menuentry /boot/grub/grub.cfg
这句里的菜单排布,从0计数,因此这里这个default
的意思就是如果用户没有选择,默认进入显示的菜单中的第二个(因为从0开始,1对应第二个)下的第三个子选项。也就是我这里的Ubuntu, with Linux 5.15.0-76-generic
在之前的版本里这里的default是可以直接写内核名字的,但是要求完全对应,有点困难。如果这里不确定的话,这个选项可以不改,等 重启之后先看一眼再改。
GRUB_DEFAULT="1> 2"
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=1
改完配置文件之后要以下命令更新配置
update-grub
然后进入原来内核发现,里面的网络也不对了,
nano /etc/network/interfaces
# 在上面这个文件里加入这一行,用于开机自动启动有线网卡驱动
auto eno1
nano /etc/netplan/01-network-manager-all.yaml
# 在这个文件里只要让他管理网络就行,其他不用写,然后运行下面的重新生成计划并应用。
netplan generate
netplan apply
如果发现还是启动还是不能远程链接,那可能需要设置一下System-connection对所有用户开放
最后检查
lspci -vv
正常
dhclient en01
RTNETLINK answers: File exists
正常
lshw -C network
*-network
description: Ethernet interface
product: RTL8125 2.5GbE Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:07:00.0
logical name: eno1
version: 05
serial: 08:bf:b8:81:82:bb
size: 100Mbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=5.15.0-76-generic duplex=full firmware=rtl8125b-2_0.0.2 07/13/20 ip=100.100.21.237 latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s
resources: irq:18 ioport:4000(size=256) memory:86f00000-86f0ffff memory:86f10000-86f13fff
正常
uname -a
Linux 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
正常