- 博客(248)
- 收藏
- 关注
原创 centos7 安装nginx
Yum(全称为 Yellow dog Updater, Modified)是一个在和RedHat以及中的Shell前端管理器。基于包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
2025-02-10 13:45:44
133
原创 在外部编译内核模块
注释:这个是编译driver module的时候必备的Makefile相当于跳转到-C指定的内核目录,然后执行这个目录的makefile M=xxx modules,相当于在当前系统内核根目录侠执行make M=xxx modules进行模块的编译,编译成xxx.ko。这个M是kbuild的东西呢?按理说它是make的一个参数,应该是make的东西,但是Make的doc里又找不到,如果是kbuild里的东西,它应该怎样来实现呢?,-C 选项的作用是指将当前工作目录转移到你所指定的位置。
2024-11-26 14:36:30
290
原创 载波聚合简介
是一种在中广泛使用的技术,旨在通过结合多个载波频段来增强数据传输速率和频谱效率。载波聚合技术通过将多个频段的载波信号进行捆绑,形成一个更宽的带宽,从而提高数据传输速率和频谱效率,满足用户对高速率数据传输的需求。
2024-11-26 10:42:02
928
转载 RTL8188FU无线网卡驱动移植
将代码放到build_dir/target-mipsel_24kc_musl/linux-ramips_mt7621/linux-4.14.195/drivers/net/wireless/rtl8188ftv目录执行make即可。5、ifconfig wlan0 up ifconfig -a 查看无线网卡。三、wpa_supplicant工具移植。关键的一步,连接wifi命令。4、插入驱动wlan.ko。1、配置wifi芯片型号。如果是获取动态ip地址。如果是设置静态ip地址。
2024-11-22 14:47:56
56
原创 NPCAP和WPCAP
NPCAP是专为Windows开发的一款网络抓包SDK,该SDK提供了被应用程序调用的库文件和系统驱动程序。通过Npcap,我们可以得到原始网络数据,即未经过TCP/IP协议栈的数据,也就是网卡收到的数据,同时呢,我们也可以通过NPCAP设置接收过滤器,这样收到的数据就是我们感兴趣的数据,比如某个端口的数据。而且,Npcap还提供发送原始网络数据的功能。
2024-10-14 17:35:25
1184
原创 iptables和nftables
几乎每个 Linux 管理员都使用过 iptables,它是一个 Linux 系统的防火墙。但是你可能还不太熟悉 nftables,这是一个新的防火墙,可为我们提供一些必需的升级,还有可能会取代 iptables。
2024-09-25 16:16:35
1644
转载 iptables 扩展模块
iptables是Linux系统中用于配置网络流量控制的工具,它通过使用一系列的规则来管理进出网络接口的数据包。这些规则可以基于不同的标准来匹配数据包,并对匹配的数据包执行特定的操作。为了增强iptables的功能,可以使用不同的扩展模块(--module选项,简写为-m)。这个模块提供了连接状态跟踪的功能。它可以根据连接的状态(如NEW、ESTABLISHED、RELATED等)来匹配数据包。这条规则表示将接受所有状态为已建立的进入数据包。
2024-09-25 14:10:12
93
原创 如何杀死僵尸进程
"zombie process"或者"defunct process",是类Unix系统中的概念,指那些实际运行已经完成或终止[如通过exit()系统调用,或者发生错误、收到终止信号],但是在系统进程表中仍然残留着对应的进程项,没有完全被清理的进程。僵尸进程已经释放了除进程表项外的所有内存空间,无法再被调度执行,只是在等待其他进程来收集它的退出状态信息而已。在正常情况下,父进程会通过wait()或waitpid()系统调用进行善后处理,即获取其子进程的退出状态。
2024-09-25 10:28:00
465
原创 linux sigprocmask函数
而信号屏蔽集则是一种用于控制信号传递和处理的机制,可以帮助进程控制哪些信号可以被接收和处理。总的来说,sigprocmask函数是一个非常实用的函数,可以帮助我们更好地控制进程的信号处理机制,确保程序在接收和处理信号时的可靠性和稳定性。1. how:用于指定对信号屏蔽集的操作方式,可以是SIG_BLOCK(添加信号到屏蔽集中)、SIG_UNBLOCK(从屏蔽集中移除信号)或SIG_SETMASK(用指定的信号集替换当前屏蔽集)。1. 要谨慎地处理信号屏蔽集的设置,避免屏蔽过多的信号导致系统出现问题。
2024-09-24 17:17:23
263
转载 linux 内核调试 --- 控制台日志输出等级 /proc/sys/kernel/printk
在宏定义中,数值越小,优先级越高,其紧急和严重程度就越高。输出的字符串前加一个带尖括号的整数来控制的,如。如插入键鼠时弹出设备的输入输出msg信息等。输出的信息具有日志级别,日志级别是通过在。内核中共提供了八种不同的日志级别,在。文件可读取和修改控制台的日志级别。中被定义为整数4,即对应。
2024-09-19 11:41:02
122
转载 linux网口插拔监测
方法一:通过读取"/sys/class/net/xxx/carrier"状态判断网口插入还是断开。方法二:通过SIOCGIFFLAGS获取接口标志。
2024-09-02 09:55:32
142
1
原创 repo简介
repo是Android为了方便管理多个git库而开发的Python脚本。repo的出现,并非为了取代git,而是为了让Android开发者更为有效的利用git。Android源码包含数百个git库,仅仅是下载这么多git库就是一项繁重的任务,所以在下载源码时,Android就引入了repo。repo需要关注当前git库的数量、名称、路径等,有了这些基本信息,才能对这些git库进行操作。通过几种维护所有git库清单,repo可以方便的从清单中获取git库的信息。
2024-08-15 11:07:25
699
原创 内核线程之User-Mode Helpers
无论是内核态还是用户态函数最终都会执行do_execve()。.align 2pushl %eaxdo_execve是真正执行函数,在 0.11/fs/exec.c 中定义/**/if(!在内核态可以通过 call_usermodehelpere() 函数实现对用户态函数的调用,其最终也是通过内核态函数 do_execve() 实现。
2024-07-16 14:39:18
855
原创 Linux workqueue介绍
不是所有的驱动程序都必须有自己的工作队列。驱动程序可以使用内核提供的缺省工作队列。由于这个工作队列由很多驱动程序共享,任务可能会需要比较长一段时间才能开始执行。为了解决这一问题,工作函数中的延迟应该保持最小或者不要延时。
2024-07-08 11:00:37
1029
原创 使用 docker buildx 构建跨平台镜像
buildx是Docker官方提供的一个构建工具,它可以帮助用户快速、高效地构建Docker镜像,并支持多种平台的构建。使用buildx,用户可以在单个命令中构建多种架构的镜像,例如x86和arm架构,而无需手工操作多个构建命令。此外buildx还支持Dockerfile的多阶段构建和缓存,这可以大大提供镜像构建的效率和速度。buildx是一个管理Docker构建的CLI插件,底层使用了BuildKit扩展了Docker构建功能。
2024-07-05 16:35:20
1595
原创 Efuse介绍及安全启动浅析
上面我们也了解过了,eFuse主要用于记录一些OEM的产品信息,并且也会用于安全启动,那么安全启动是什么,为什么要做安全启动?安全启动的主要目的是:限制消费者能力,防止消费者从软硬件层面,对产品的部分关键系统进行读写,调试等高级权限,达到对产品的商业保密,只是产权的保护。刷机安装自定义的操作系统;绕过厂家封闭的支付平台;绕过系统保护,赋值厂家保护的数字产品。使用数字示波器监听CPU和RAM、eMMC之间的数据传输来读取非常底层的数据传输;
2024-07-02 16:40:33
1089
原创 中断的上下半部
DECLARE_WORK是Linux内核中用于定义工作队列的宏。这个宏定义一个工作队列结构,并初始化其回调函数。name是你要定义的工作队列的名称。func是当工作被执行时,需要调用的函数// 工作处理代码// 在需要的时候,可以将工作队列推到默认工作队列:在这个例子中,我们定义了一个名为my_work的工作,并指定了处理函数work_handler。然后我们可以通过调用schedule_work函数来安排这个工作执行。
2024-07-01 14:41:29
614
原创 MTK7621:交换芯片工作队列
mt7530交换芯片的数据接收中断后,把具体接收数据工作任务、委托到workqueue队列中,让内核work_thread()线程任务来处理,这部分内容请参考《workqueue工作原理》中的描述。workqueue基本工作流程框架如下:框架业务关系:1,程序把work单加入到workqueue中,就等于把工作安排好,是工单的生成者、派遣者;2,work_pool是工厂,提供工作的场地,worker是工人,负责执行工单,是消费者;
2024-07-01 14:04:44
477
原创 MTK7621:交换芯片数据接收
link_watch.c中的linkwatch_fire_event(dev)->linkwatch_schedule_work(urgent)->schedule_delayed_work(&linkwatch_work,delay) || mod_delayed_work(system_wq,&linkwatch_work, 0)工作队列 workqueue.c。
2024-07-01 11:28:39
448
原创 MTK7621交换芯片配置
MTK7621上自带的交换芯片为mt7530交换芯片的配置工具为swconfig程序。MTK7621采用内部的MDIO(Management Data Input/Output)接口管理MT7530的switch芯片。MT7530共有7个物理口,通过/sbin/swconfig dev switch0 show命令可以查看每个物理口的状态。
2024-07-01 09:58:19
1559
原创 第四回 把全部的操作系统代码从硬盘搬到内存
此时操作系统的短短几行代码,就将数据段寄存器ds和代码段寄存器cs设置为了0x9000,方便了之后访问代码及访问数据。并且,将栈顶地址ss:sp设置在了离代码的位置0x9000足够遥远的0x9FF00处,保证栈向下发展不会轻易撞见代码的位置。简单地说,就是设置了如何访问数据的数据毒段,如何访问代码的代码段,以及如何访问栈的栈顶指针,也即初步做了一次内存规划。从CPU的角度看,访问内存,就这么三块地方而已。
2024-06-30 12:43:59
802
转载 搭建docker私有镜像仓库
Docker registry是存储Docker image的仓库,运行push、pull、 search 时,是通过Docker daemon与docker registry通信。镜像仓库(Docker Registry)有公共的和私有的两种形式::例如Docker官方的Docker Hub,国内也有一些云服务商提供类似于Docker Hub的公开服务,比如网易云镜像服务、DaoCloud镜像服务、阿里云镜像服务等。用户在本地搭建。
2024-06-25 13:54:25
54
原创 Linux的设备模型
在设备模型出现以前,Linux的驱动存在以下问题:1,设备和驱动没有分离。也就是说设备的信息是硬编码在驱动代码中的,这给驱动程序造成了极大的限制。如果硬件有所改动,那么必然要修改驱动代码。比如LED如果修改了管脚,那么就必然要修改驱动程序。这样就导致驱动的通用性很差。2,没有类似于windows系统中的设备管理器,不可以方便查看设备和驱动的信息。3,不能自动创建设备节点;4,驱动不能自动加载;5,U盘,SD卡不能自动挂载;6,没有电源管理。Linux设备模型就是为了解决上述问题而存在的。
2024-06-22 19:34:50
1051
原创 USB CDC简介
CDC类设备枚举过程USB CDC类、USB2.0标准与PSTN之间的关系CDC(Communication Device Class)类是USB2.0标准下的一个子类,定义了通信相关设备的抽象集合。
2024-06-20 17:22:20
550
原创 systemd的实现原理
systemd是一个守护进程,systemctl是命令行管理工具:systemd是用于管理Linux系统的初始化过程和后台服务的初始化系统,而systemctl则是用于与systemd交互的命令行工具。systemctl可以管理systemd单元:在systemd中,所有的服务、套接字、设备都被视为单元,systemctl可以管理这些单元启动、停止、重启、查看状态及管理它们。systemd是现代Linux系统中的初始化系统和服务器管理器,而systemctl是用于与systemd交互的命令行工具。
2024-06-20 16:42:08
230
原创 Makefile
^ :所有的依赖目标的集合。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。$@ :表示规则中的目标文件集。在模式规则中,如果有多个目标,那么, $@ 就是匹配于目标中模式定义的集合。
2024-06-20 16:41:06
164
原创 node-red代码架构
usr/bin/env node, 就是解决了不同的用户node路径不同的问题,可以让系统动态的去查找node来执行你的脚本文件。Shebang(#!)是为了指定脚本的解释程序,可是不同用户或者不同的脚本解释器有可能安装在不同的目录下,系统如何知道要去哪里找你的解释程序呢?node-red监听了TCP的1880端口,代码入口为:lib/node_modules/node-red/red.js。, 就是解决了不同的用户node路径不同的问题,可以让系统动态的去查找node来执行你的脚本文件。
2024-06-20 16:40:21
390
原创 IEC61131-3和codesys
它由德国codesys GmbH公司开发,codesys遵循IEC61131-3标准,IEC61131-3是一个国际标准,规定了PLC编程语言和接口,因此可以方便地实现代码的跨平台和互换。
2024-06-20 16:39:01
826
原创 关于ttyFIQ
RK提供的fiq debugger功能是将debugger功能和普通uart功能代码集成到了一起fiq debugger是集成到内核中的一种系统调试手段。FIQ在arm架构中相当于nmi中断,fiq debugger把串口注册成fiq中断,在串口fiq中断服务程序中集成了一些系统调试命令。,就是不可屏蔽的中断。一般情况下串口是普通的console模式,minicom下输入切换命令"Ctrl + A + F",串口会切换到fiq debugger模式。
2024-06-20 16:32:08
469
原创 nessus扫描原理
Nessus利用其内置的漏洞检测插件库,通过与目标系统进行交互,发送特定的测试数据包来验证漏洞。通过漏洞验证,安全团队可以更准确地了解系统中的漏洞情况,并采取相应的措施来修复或缓解漏洞带来的风险。此外,漏洞扫描技术的原理还包括通过远程检测目标主机不同端口的服务,记录目标的回答,搜集到目标主机的各种信息,并与网络漏洞扫描系统提供的漏洞库进行匹配,如果满足匹配条件,则视为漏洞存在。漏洞利用的目的是演示漏洞的实际影响,并帮助安全团队理解和评估漏洞的潜在危害。
2024-06-20 16:08:20
472
原创 常见漏洞扫描工具
Fortify是Focus旗下AST (应用程序安全测试)产品,其产品组合包括:Fortify Static Code Analyzer提供静态代码分析器(SAST),Fortify WebInspect是动态应用安全测试软件(DAST),Software Security Centre是软件安全中心(SSC)和 Application Defender 是实时应用程序自我保护(RASP)。Fortify 能够提供静态和动态应用程序安全测试技术,以及运行时应用程序监控和保护功能。
2024-06-20 16:06:36
348
原创 linux常用库介绍
(1)、CVE(Common Vulnerabilities and Exposures):是目前最为广泛接受的漏洞编号和描述系统。(2)、CWE(Common Weakness Enumeration):这是一个漏洞分类和划分体系,可以帮助开发者理解漏洞的性质和来源。(3)、NVD(National Vulnerability Database):这是美国政府公布的一个公开漏洞库,信息完整并且更新速度快。
2024-06-12 09:31:20
371
原创 Linux ldd和ldconfig
ldconfig 查看默认库路径和ld.so.conf包含的库路径,来建立运行时动态装载的库查找路径。ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.ldconfig命令通常与ld.so(动态链接器)一起使用。
2024-06-11 15:08:34
552
原创 docker的几种网络模式
自定义网络模式允许用户创建和管理自己的网络。用户可以创建多个自定义网络,并将容器连接到这些网络中。自定义网络模式提供了更灵活的网络配置选项,例如指定子网、定义网络驱动程序和连接多个容器到同一个网络等等。除了上述的网络模式,Docker还提供了一些网络驱动程序,如overlay网络驱动程序,它允许在多个docker主机上创建跨主机的网络。
2024-06-11 14:22:38
222
原创 第3回 做好访问内存的基础准备工作
操作系统代码最开头的512字节的数据,从硬盘的启动区先是被移动到了内存的0x7c00处,然后又立刻被移动到了0x90000处,并且跳转到此处再稍稍偏移go这个标签所代表的偏移地址处,接下来,我们就把目光放在go这个标签的位置,跟着CPU的步伐往后看:go:mov ax, csmov ds, axmov es, axmov ss ,ax一眼望去,全是move操作。这段代码的意思很容易理解,就是把cs寄存器的值分别赋给ds,es和ss寄存器,然后再把0xFF00给了SP寄存器。
2024-06-10 20:30:18
478
原创 第2回 从0x7c00到0x90000
所以到此为止,前两回的内容,其实就是将一段512字节的代码和数据,从硬盘的启动区先是被移动到了内存的0x7c00处,又立刻被移动到了0x90000处,并且跳转到此处往后稍稍偏移go这个标签所代表的偏移地址处,也就是mov ax,cs这行指令的位置。此时ds寄存器的值已经是0x07c0了,然后用同样的方式将es寄存器的值变成0x9000,接着又把cs寄存器的值变成256。好的,此时ds,es,cx寄存器的值,都被赋上确定的值了,别慌,接着有两个sub指令。刚刚说过了,复制一个字,16位,也就是2字节。
2024-06-10 12:43:31
477
Linux-strace-6.11.tar.xz
2024-11-18
glibc2.39-aarch64-linux-gnu-libs
2024-06-20
openssh-portable-V-9-7-P1.tar.gz
2024-06-20
node.js 在linux 64位系统上的可执行程序 node-v21.0.0-linux-x64.tar.gz
2023-11-07
linux ebtable 源码
2023-07-08
Quectel-RM500Q-5G-模块产品规格书-V1.0-Preliminary-20191029
2023-06-13
Apache Benchmark(简称ab压力测试工具) 是Apache安装包中自带的压力测试工具 ,简单易用
2023-05-25
mtd-utils-1.4.5.tar.gz
2023-03-10
uClibc-ng-1.0.42.tar.gz:openwrt系统中使用的精简版的glibc库
2023-02-28
C-libubox-2014-08-04-dffbc09baf71b294185a36048166d00066d433b5.ta
2023-02-14
C-dropbear-2014.63.tar.bz2
2023-02-14
C-dnsmasq-2.71.tar.gz
2023-02-14
Linux-HLK-7601U2-driver-JEDI.MP1.mt7601u.v1.9
2023-02-14
TL6155PUA-产品规格书
2023-02-07
HLK-7601U2 ProductSpecification-WLAN 11b/g/n USB MODULE
2023-02-07
Vista/Win7/Win8/Win8.1/Win10/win11 64位系统-Git-2.39.1-64-bit.exe
2023-02-02
gdb-8.3.1-1-arm-cortex-a7-neon.ipk及其依赖包
2023-02-01
通过抓包定位Ethernet/IP的连接问题
2023-01-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人