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 ...
Linux内核模块加载及更新问题
Linux内核模块加载及更新问题背景最近碰到了一个Linux内核模块更新问题,比较有意思,特此记录。
问题: 一款我们内核已经适配过的蓝牙模块在一台机器上用不了,驱动加载不起来,看内核日志报一堆的符号问题:
29.784454] rtk_btusb: Unknown symbol hci_free_dev(err -22)
29.784483] rtk_btusb: disagrees about version of symbol hci_alloc_dev_priv
29.784484] rtk_btusb: Unknown symbol hci_alloc_dev_priv(err-22)
29.784571] rtk_btusb: disagrees about version of symbol hci_unregister_dev
29.784573] rtk_btusb: unknown symbol hci_unregister_dev (err -22)
29.784583] rtk_btusb: disagrees about version of symbol h ...
Linux之设备管理器及热插拔处理
Linux之设备管理器及热插拔处理前言Linux内核设备管理器主要来管理/dev 中的设备节点,并在添加或删除设备时处理所有用户空间操作,比如U盘SD卡等热插拔的处理–自动挂载与卸载。
Linux内核设备管理器主要有mdev,udev和eudev等,今天就简单来看看它们。
mdev是udev的简化版本,是busybox的一部分,最适合用在简单的嵌入式系统,使用 busybox 的地方。
udev是systemd的设备管理器,相对mdev来说要复杂些,一般用在PC上的linux或比较高端点的嵌入式系统,使用 systemd 的地方。
eudev是 udev 的fork版本,所以很多规则这些都是和udev类似,主要是为了独立于systemd等initx系统和Linux发行版。
udev 和 mdev 是两个使用 uevent 机制处理热插拔问题的用户空间程序,两者的实现机理不同。
udev 基于 netlink 机制
mdev 基于 uevent_helper 机制每当设备状态发生变化时,内核都会发出一个 uevent 事件,设备管理器会接收到该事件,根据 uevent 中包含的信息 ...
RISC-V开篇及特权模式等一些概念
RISC-V开篇及特权模式等一些概念
Simplicity is the ultimate sophistication(大道至简)。
概述现在 RISC-V 很火,一直想系统地学习了解下,弄个系列,以前零碎地记了一点。今天算个开篇,主要看看 RISC-V 相关的一些概念,主要的官方文档及书籍等。
RISC-V架构主要由美国加州大学伯克利分校发明,相比于x86和ARM架构,RISC-V开源采用BSD协议,它允许用户自由地使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。计算机体系结构的传统方法是增量ISA,新处理器不仅必须实现新的ISA扩展,还必须实现过去的所有扩展。目的是为了保持向后的二进制兼容性,这样几十年前程序的二进制版本仍然可以在最新的处理器上正确运行。导致了传统ISA的体量随时间大幅增长。而RISC-V是模块化的。它的核心是一个名为RV32I的基础ISA,支持运行一个完整的软件栈。RV32I是固定的,永远不会改变。这为编译器编写者,操作系统开发人员和汇编语言程序员提供了稳定的目标。模块化来源于可选的标准扩展,根据应用程序的需要,硬件可以包含或不包含这些扩 ...
Linux下利用shell简单调试udp和tcp
Linux下利用shell简单调试udp和tcp背景Linux环境下,有时候需要简单地进行下udp和tcp的测试,又不想去写C之类的代码,可以尝试下用Python或者直接用Shell来处理,简单方便,高效快捷。这里主要讲讲使用Shell的方式。
服务端主要使用 nc (netcat) 。
客户端主要使用/dev/tcp、/dev/udp。
nc: — arbitrary TCP and UDP connections and listens
The nc (or netcat) utility is used for just about anything under the sun involving TCP, UDP, or UNIX-domain sockets. It can open TCP connections, send UDP packets, listen on arbitrary TCP and UDP ports, do port scan‐ ning, and deal with both IPv4 and IPv6.
/dev ...
使用Gstreamer进行RTSP推流
使用Gstreamer进行RTSP推流背景以前使用 Gstreamer 推过RTP流,主要涉及到 rtph264pay 插件:
gst-launch-1.0 videotestsrc ! video/x-raw,framerate=30/1 ! clockoverlay ! mpph264enc ! queue ! h264parse ! rtph264pay ! udpsink host=192.168.1.104 port=1234
使用vlc打开需要配置sdp文件,前面有提到过:https://notes.z-dd.online/2024/06/08/RTP%E8%A7%86%E9%A2%91%E6%B5%81%E7%9A%84SDP%E6%96%87%E4%BB%B6/
最近尝试了推RTSP流,要稍微麻烦点:
# 1. 运行mediamtx流媒体服务器
./mediamtx &
# 2. 运行gstreamer命令
gst-launch-1.0 videotestsrc ! video/x-raw, ...
Linux内核之blktests简单介绍
Linux内核之blktests简单介绍blktests最近遇到了个补丁引起的blktests测试问题,顺便了解了下blktests。
blktests是Linux内核块设备和存储堆栈的一个测试框架。它的灵感来自于xfstests文件系统测试框架。
blktests is a test framework for the Linux kernel block layer and storage stack. It is inspired by the xfstests filesystem testing framework. It was originally written by Omar Sandoval and announced in 2017.
简单使用安装依赖确保安装相关依赖:
bash (>= 4.2)
GNU coreutils
GNU awk
util-linux
fio
gcc
make
有些测试可能要求更多组件:
e2fsprogs and xfsprogs
multipath-tools (Debian, openSUSE, Arch Linu ...
RTP视频流的SDP文件
RTP视频流的SDP文件背景直接通过URL地址(rtp://192.168.1.104:1234)用vlc打开RTP网络流的时候报错:
SDP required:
A description in SDP format is required to receive the RTP stream. Note that rtp:// URIs cannot work with dynamic RTP payload format (96).
后来才想起是需要写sdp文件,所以顺便记录下。
SDP文件
会话描述协议(Session Description Protocol或简写SDP)描述的是流媒体的初始化参数。此协议由IETF发表为 RFC 2327。– 来自百度百科
SDP(Session Description Protocol) 是一种通用的会话描述协议,例如在音视频通话前通话双方需要进行媒体能力协商,比如协商双方都可支持的编解码类型,交换候选地址等,因此通话前都会发送一个 SDP,描述自己的会话和媒体等信息。– 来自CSDN :https://blog.c ...
Linux之多媒体应用接口v4l-utils及摄像头简单使用
Linux之多媒体应用接口v4l-utils及摄像头简单使用简述V4LV4L(Video For Linux, or Video4Linux):
The V4L API is essentially a kernel interface for analog video capture and output drivers, and is applicable to most video streams that are not related to DVB devices (see explanation below) or graphics cards – though, the V4L API also entails a few oddities such as analog radio and RDS services. Examples of devices which fall within the scope of V4L are, amongst others, webcams, MPEG encoders/decoders, digital video strea ...