关于
我的公众号
QQ群:934149291
请喝杯饮料微信:
支付宝:
Linux Kernel之Backports Project
Linux Kernel之Backports Project简介Backports Project:
The Backports Project enables old kernels to run the latest drivers.
官网:https://backports.wiki.kernel.org/index.php/Main_Page
Backports Project始于2007年,当时名为compat-wireless。随着该项目的范围扩大到不仅仅是无线网络驱动程序,它被更名为compat-drivers。现在,该项目简称为 backports。
目前支持的子系统:
Ethernet
Wireless
Bluetooth
NFC
ieee802154
Media
Regulator
每个backports版本都已针对所有支持的内核进行了测试编译,最早的版本是 3.0。
Backports Project支持2种工作流模式:
内核集成模式(kernel integration mode)
future kernel source tree and older ...
Linux核外通过MDIO访问Phy
Linux核外通过MDIO访问Phy前言调试以太网(MAC+PHY)网络问题,我们经常需要获取或配置PHY的寄存器,但又不想一次次去修改内核,在Linux应用层怎么简单方便的去操作PHY的寄存器呢?
众所周知,MAC+PHY的组合下,主要是通过MDIO接口去操作PHY的寄存器,所以也就变成了怎么去操作MDIO。
一般有以下方式:
通过MDIO暴露到核外的接口,比如设备节点,或寄存器直接映射的内存地址。
通过通用的ioctl访问接口。
以上都是要基于SoC的MAC驱动支持才行,特别是第一点,需要对Soc的MAC比较熟悉,而且因SoC厂家不同而差异很大。
这里重点看看第二种通用的方式。
使用ioctl接口访问实现主要是通过ioctl操作以下几个接口来实现对PHY寄存器的读写操作:
SIOCGMIIPHY:read register from the current PHY.
SIOCGMIIREG:read register from the specified PHY.
SIOCSMIIREG:set a register on the specified PHY.
原理一般 ...
千兆以太网接口之RGMII和SGMII
千兆以太网接口之RGMII和SGMII以前,对于千兆以太网,还停留在RGMII接口上,最近才接触到SGMII,对SGMII不是很了解,所以就想对比看看。
RGMII:(Reduced Gigabit Media Independent Interface)
SGMII:(Serial Gigabit Media Independent Interface)
RGMII和SGMII在传输方式、引脚、时钟频率、电气特性等方面都有所不同,下面是一些简单的对比。
传输方式:
RGMII采用并行传输方式,使用8个数据信号线(TXD [0:3]、RXD [0:3])进行数据传输。
SGMII采用串行传输方式,使用差分对信号进行数据传输。
速率:
RGMII支持最高千兆位速率(1 Gbps),并且可以向下兼容100 Mbps和10 Mbps速率。
SGMII同样支持最高千兆位速率(1 Gbps),也可以向下兼容100 Mbps和10 Mbps速率。
引脚:
RGMII需要12个引脚(RGMII并行接口)来实现双向通信。
SGMII使用2对数据差分信号线(RX,TX)和2对时钟差分信号线(RX ...
Linux之DKMS
Linux之DKMSDKMS简介DKMS(Dynamic Kernel Module Support)是由 Dell 公司开发的一套内核模块管理框架,用于在 Linux 操作系统中动态构建和维护内核模块,已经被大多数 Linux 发行版采用。
dkms - Dynamic Kernel Module Support
dkms is a framework which allows kernel modules to be dynamically built for each kernel on your system in a simplified and organized fashion.
官网:https://github.com/dell/dkms
在 DKMS 中,每个内核模块都被视为一个源代码包,并通过一个称为 dkms.conf 的配置文件进行管理。该配置文件指定了源代码的位置、编译和安装模块所需的命令,以及其他必要的信息。当内核更新时,DKMS 会自动重建和安装内核模块,以确保它们与新内核版本兼容。
DKMS配置文件当执行前面的add添加操作时,添加的源码 ...
Linux之手动创建WIFI热点
Linux之手动创建WIFI热点背景之前介绍了Linux下使用无线网卡作为STA手动连接WIFI:Linux手动连接配置wifi
今天介绍下Linux下怎么手动建立AP热点。主要分为2大步骤:
hostapd建立AP热点
DHCP服务分配IP
前提:首先要无线网卡是否支持AP模式使用如下命令,查看网卡属性:
iw list
如果Supported interface modes选项包含 AP 的关键字,则表示支持 AP 模式。如:
Supported interface modes:
* IBSS
* managed
* AP
* P2P-client
* P2P-GO
* P2P-device
hostapdhostapd 和 wpa_supplicant是兄弟,都是由 w1.fi项目共同维护。
hostapd: IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/WPA3/EAP/RADIUS Authenticator
官网:https://w1.fi/hostapd/
hostapd is a user s ...
Linux之WOL网络唤醒
Linux之WOL网络唤醒WOL简介
WOL(Wake-on-LAN)技术是一种计算机局域网唤醒技术,其主要功能是使处于关机或休眠状态的计算机能够通过局域网(通常是以太网)被远程唤醒并恢复到运行状态。具体来说,当一台计算机进入休眠或关机状态时,可以通过局域网中的另一台设备发送特定的网络广播包(magic魔术包)来触发该计算机的唤醒过程。
魔术包(Magic Packet)组成魔术包是一个UDP广播数据包,包含特定的格式和内容。它主要由以下几个部分构成:
固定前缀: 6个字节的0xFF。
目标主机MAC地址: 该地址需要重复多次,通常为16次。
密码(可选): 4-6字节的密码。
FF FF FF FF FF FF FF
MAC 地址 × 16
4-6字节的密码(可选)
Linux下使用WOL能使用WOL的主要前提条件:
硬件支持: 目标主机的网卡和主板必须支持WOL功能!
网络环境: 网络环境应允许通过局域网或互联网进行数据传输,有时还需要适当的路由和防火墙规则来确保数据包能够正确到达目标主机!最简单的环境是操作机器与目标机器在同一网段。
注意:有线连接通常比无线 ...
Linux Wireless之80211(nl80211, cfg80211, mac80211)
Linux Wireless之80211(nl80211, cfg80211, mac80211)前言在Linux无线子系统中,cfg80211、mac80211和nl80211是三个关键的组件,它们共同工作以实现对802.11设备的配置和管理。cfg80211负责内核空间的通用API,mac80211负责具体的MAC层实现,而nl80211则作为用户空间与内核空间之间的桥梁,用于配置管理和通信。
nl80211
nl80211是介于用户空间与内核空间之间的 API ,可以算是 cfg80211 的前端,也会生成 “事件” (events) 信息。该模块依赖 netlink 协议来在两个空间进行信息交互,通过socket接收上层命令,执行对应函数进行配置管理网络接口。Netlink 是一个 Linux 中的 socket 类型,用于在内核与用户空间之间传递事件。
nl80211 is the new 802.11 netlink interface public header. Together with cfg80211 it is intended to replace Wir ...
Linux手动连接配置wifi
Linux手动连接配置wifi背景以前在桌面端或是嵌入式手动连接过wifi,但没有深入也没有详细研究,今天系统地记录下。
wpa_supplicant连接WIFIwpa_supplicant介绍及背景官网:https://w1.fi/wpa_supplicant/.
以下来自man手册,介绍了它的作用、产生背景及由来,保持原汁原味。
wpa_supplicant - Wi-Fi Protected Access client and IEEE 802.1X supplicant
wpa_supplicant is designed to be a “daemon” program that runs in the background and acts as the backend component controlling the wireless connection. wpa_supplicant supports separate frontend programs and an example text-based frontend, wpa_cli, is in ...
Linux中网络命名空间基本操作
Linux中网络命名空间基本操作前言网络命名空间(Network Namespace,简写: netns)是Linux内核提供的一种实现网络资源隔离的方法,允许不同的网络命名空间拥有独立的网络协议栈及网络配置,包括IP地址、路由表、网络设备、iptables规则等。docker便是基于netns实现的网络隔离。
大多数现代Linux发行版默认支持这一特性,主要是内核netns相关配置(如CONFIG_NET_NS)需要打开。
基本操作创建网络命名空间及设备创建网络命名空间demo:
#创建
sudo ip netns add demo
#查看
sudo ip netns list
demo
添加两个端对端的虚拟网络设备(veth peer):veth1、veth2
sudo ip link add veth1 type veth peer name veth2
veth2留在本机,veth1添加到命名空间demo将虚拟网络一端(veth1)添加到命名空间
sudo ip link set veth1 netns demo
配置本机veth2虚拟设备给本机veth2配置IP,并启用
#配 ...
Linux后台运行及不挂断相关命令
Linux后台运行及不挂断相关命令背景我们经常会遇到这种需求:ssh到Linux服务器上,跑一个耗时比较久的任务,比如编译任务等,有时候由于网络不好,网络故障,或者不小心将跑任务的终端关闭了(也有可能是跑终端的机器异常了),导致好不容易跑了很久的任务中断退出,前面跑的白费了,又不得不重新跑!此时的你是不是很郁闷。。。该咋解决呢?就是今天介绍的几个主角:nohup、screen、&。
command &大家可能对这个最为熟悉,&表示将前面的 command 任务放入后台,单独起一个进程来运行,使用Ctrl + C无法中止该任务,此时你可以继续在该终端上做其他事情,但如果关闭该终端,该任务进程会跟着退出。
nohup commandnohup 是 no hung up的缩写,顾名思义就是不挂断,忽略挂起信号运行后面的 command 。所以它并没有后台运行的功能,只是会将任务永久执行,无论是否关闭终端,断开ssh等。nohup 命令,在默认情况下(非重定向时),标准输出会输出到当前目录下 nohup.out 文件中,如果当前目录的 nohup.out 文件不可写,输 ...
Linux内核代码格式审查
Linux内核代码格式审查前言Linux内核代码有一套自己的代码格式规范,相关的规范说明在内核代码树目录:Documentation/CodingStyle或Documentation/process/coding-style.rst。具体细节大家可以自己去看,这里就不贴了。
以前提交内核补丁,一直用scripts/checkpatch.pl来过一遍代码格式,没怎么去研究。最近刚好检查格式报了个错,以前没怎么遇到,于是就去看了下。
报错信息:
ERROR: do not set execute permissions for source files
从提示上看很明显是源码文件权限问题。
Checkpatch 介绍内核官方与它相关的文档:https://www.kernel.org/doc/html/latest/dev-tools/checkpatch.html下面是它的介绍(保持原汁原味):
Checkpatch (scripts/checkpatch.pl) is a perl script which checks for trivial style violations i ...