树莓派在Raspbian系统(Bookworm)中无法获取RJ45网口eth0或end0的IP地址(没有IPv4的地址无法操作)

news/2024/7/23 21:59:45 标签: 树莓派, bookworm

由于 Raspbian 上个月刚好从 Bullseye 升级到 Bookworm 版本了,所以出现了很多修改,截止写博客的时候过去还没三十天,当然也没那么多解决方案参考,只能参考之前版本或者靠自己了,未来或许官方会进行修复,也可能会出现其他的问题,如果我再遇到,会写一篇新的并且在这里贴上连接的。

某些设置下,网口的名称为end1这种,而不是eth1,需要按自己的情况进行替换。

上一篇文章中提到了我在尝试的时候试了一下 Ubuntu Server 22.04.3 LTS,虽然画面正常显示了,但是不显示eth0(主板上的 RJ45)的地址,如下是开机启动时显示所有接口 IP 的部分(ifconfig的情况没拍):
请添加图片描述

可以看到只有无线网络wlan0的地址。

我又回到 Raspbian 的时候发现虽然有eth0,但是却没有显示 IP 地址inetinet6,如下:

$ ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether xxxxxxxxxxxxx  txqueuelen 1000  (Ethernet)
        RX packets 75  bytes 20834 (20.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 58  bytes 9199 (8.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

虽然使用无线也行,毕竟树莓派 4 的 Micro SD 接口跑满也就 46MB/s,但是外接固态或者需要传大文件速度距离峰值差不少(能到四分之一就算好了)。如果是使用网口,那么可以稳定在 45MB/s。

然后我尝试了很多方法,下面是记录。

本文中的环境为:树莓派 4B 4GB + Raspbian 2023-10-10 版本

三次失败的尝试

下面三种方法虽然失败了,但是对于其他情况下可能会起作用,所以还是记录了。

关闭再激活eth0

$ ifconfig eth0 down
$ ifconfig eth0 up

最简单的“重启法”,没成功。

设置eth0静态ip激活

$ ifconfig eth0 xxx.xxx.x.x netmask 255.255.255.0 up

偶尔能成功,但是重启树莓派之后就又不行了。重启之后显示内容如下:

$ ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 xxxxxxxxxxxxxxx  prefixlen 64  scopeid 0x20<link>
        ether xxxxxxxxxxxx  txqueuelen 1000  (Ethernet)
        RX packets 75  bytes 20834 (20.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 58  bytes 9199 (8.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到显示了 IPv6 的地址,但是 IPv4 的地址无论怎么设置,重启之后都没了。

将eth0速率设置为100Mbps

$ ethtool -s eth0 speed 100 duplex full

设置 eth0 速率为 100 Mbps 可能会对于某些线缆不足千兆的情况起到作用,不过这里也是没起作用。

解决方案

按照目前进展来说,走的最远的是第二个方案。于是重装系统来确定没有任何修改,再进行探索。重装之后显示的内容和第二个方案重启之后的结果一样:只显示 IPv6 的地址,还是不显示 IPv4 的地址。

由于第二个方案是和网络设置有关,我就往这个方向多研究了一下,发现 Raspbian 对此进行了大更新,最终找到了解决方案。

GUI方法

GUI 操作更直观一些。

首先选择下图中选中的“Edit Connection…”(可能需要等一会儿才会弹出窗口):

请添加图片描述

然后选择下图中的“Wired connection 1”(这里的第二个是我用来测试的 USB 网卡):

请添加图片描述

那么会看到下面这样的一个界面:

请添加图片描述

将上图中的“-999”修改成01。这部分是连接优先级,wlan 部分默认是 0,-999就是默认不连这个接口的。虽然实际测试上这个修改有时可能不会影响结果,但是还是修改保险。

接下来选择“IPv4 Settings”标签页,然后将“Method”部分修改成Link_Local Only

请添加图片描述

就可以发现ifconfig显示 IPv4 的地址了(不行的话重启)。

CLI方法

CLI 方法比较快速,如下(这个命令等价于上面那一系列操作):

sudo nmcli c a ifname eth0 type ethernet ipv4.method link-local ipv6.method link-local

需要注意你的是eth0还是end0

希望能帮到有需要的人~


http://www.niftyadmin.cn/n/5157454.html

相关文章

【Rust 日报】2023-11-05 xAI使用Rust

马斯克xAI正式使用Rust 在深度学习研究的前沿&#xff0c;必须像构建数据集和学习算法一样谨慎地构建可靠的基础设施。为了创建 Grok&#xff08;一个类ChatGPT的产品&#xff09;&#xff0c;xAI构建了一个基于 Kubernetes、Rust 和 JAX 的自定义训练和推理套件。 xAI认为&…

Qt 继承QAbstractListModel实现自定义ListModel

1.简介 QAbstractListModel类提供了一个抽象模型&#xff0c;可以将其子类化以创建一维列表模型。 QAbstractListModel为将其数据表示为简单的非层次项目序列的模型提供了一个标准接口。它不直接使用&#xff0c;但必须进行子类化。 由于该模型提供了比QAbstractItemModel更…

虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令

目录 1、虚拟机Linux-Centos系统网络配置常用命令2、Docker 的常用命令2.1 安装docker步骤命令2.2 在docker容器中安装和运行mysql 2、dockerfile关键字区别(ADD/COPY,CMD/ENTRYPOINT) 1、虚拟机Linux-Centos系统网络配置常用命令 进入网络配置文件目录 cd /etc/sysconfig/ne…

第十二章 Python正则表达式

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…

【Matplotlib】plt.plot() X轴横坐标展示完整整数坐标

比如说&#xff0c;我的数据应该是 x轴从2到21的20个整数 y轴对应值 但是直接plot的话x轴显示居然有小数点什么鬼 可以这样改

Leetcode Daily Challenge 1845. Seat Reservation Manager

1845. Seat Reservation Manager 题目要求&#xff1a;初始化一个SeatManager类包括默认构造函数和类函数&#xff0c;所有的seat初始化为true。reverse函数返回最小的true&#xff0c;然后把这个编号的椅子赋值为false。unreverse(seatNumber)函数把编号为seatNumber的椅子恢…

vscode设置pycharm中的项目路径和debug方法

命令行运行&#xff1a; export PYTHONPATH:pwd:/home/bennie/bennie/bennie_project/AI_Lab python main.py 当关闭此命令行时&#xff0c;临时路径会清除&#xff0c;可以将上述export的整条语句&#xff0c;加入~/.bashrc中 该命令中&#xff0c;以&#xff1a;分隔两个不同…

Pytorch tensor 数据类型快速转换三种方法

目录 1 通用,简单&#xff0c;CPU/GPU tensor 数据类型转换 2 tensor.type()方法 CPU tensor 数据类型转换 GPU tensor 数据类型转换 3 tensor.to() 方法,CPU/GPU tensor 数据类型转换 1 通用,简单&#xff0c; CPU/GPU tensor 数据类型转换 tensor.double()&#xff1a;…