
系统其它
文章平均质量分 54
redwingz
这个作者很懒,什么都没留下…
展开
-
openssl签名报错
从内核4.8(DEVRANDOM_SAFE_KERNEL)开始,当/dev/random(DEVRANDOM_WAIT)可读时,不确保设备/dev/urandom被正确的Seed。出现问题的系统使用的内核为3.10,但是uname系统调用获取到的内核版本为5.16,导致了问题的产生。将程序与openssl库做静态链接,放到其它机器上运行一切正常,排除了openssl库的问题,应当是系统问题。否则,检查/dev/random是否可读,来判断/dev/urandom是否正确的Seed。原创 2024-10-20 19:45:00 · 670 阅读 · 0 评论 -
EVE-NG防火墙镜像
如下图所示,用到的虚拟防火墙有Checkpoint,cisco,fortinet,Paloalto,hillstone,H3C和Huawei几个品牌。原创 2024-07-28 17:45:00 · 2320 阅读 · 0 评论 -
Trex测试仪使用
公司测试仪器紧张,打算安装Trex做简单的测试。如下下载最新的trex工程。解压,得到版本v3.04。运行脚本dpdk_setup_ports.py,配置trex使用的网卡。需要配置偶数的接口数量,可以使用ID,PCI地址或者linux接口名称来指定trex使用的接口。这里根据ID,指定ID为4和5的接口,即linux接口enp7s0和enp8s0。脚本默认配置两个接口为回环模式。先都采用默认的配置,稍后在修改。配置完之后,预览配置内容如下,保存到/etc/trex_cfg.yaml。对应的拓扑如下图。原创 2024-06-23 20:56:16 · 546 阅读 · 0 评论 -
内核inet_peer及限速
inet_peer为内核中的其它系统提供对通信另一端相关信息的存储功能。peers按照红黑树结构组织,相比于hash结构,可以避免在受到DDOS攻击时,发生哈希冲突,单个哈希值冲突链表过长,导致查询时长增加的问题。inet_peer支持IPv4和IPv6,红黑树的键值为IPv4或者IPv6的地址值。原创 2023-08-13 22:22:35 · 327 阅读 · 0 评论 -
GCC内存模型同步模式
事实上,它并不像听起来那么复杂,所以为了让你的眼睛不那么呆滞,请针对每一种不同的内存模型来研究以下的示例:当两个线程以顺序一致模式同步时,所有可见的变量都必须在系统中刷新,以便所有线程都能看到相同的状态。因此,这两个assert都是可通过的。释放/获取模式只需要同步所涉及的两个线程。这意味着同步的值对于其他线程是不可交换的。线程2中的assert必须仍然是可通过的,因为线程1和2与通过x.load()操作进行了同步。翻译 2023-05-21 21:33:57 · 284 阅读 · 0 评论 -
内核配置文件注释
程序scripts/kconfig/conf位于目录linux-5.10/scripts/kconfig下,如下为confdata.c文件内容。如下注释内容(# CONFIG_COMPILE_TEST is not set),表明CONFIG_COMPILE_TEST没有设置。如果此注释的配置项类型为S_BOOLEAN或者S_TRISTATE,此行表明配置值为NO,可见并非简单的注释。如果去掉此行,在内核编译时,不能确定COMPILE_TEST如何配置,提示用户进行选择。原创 2022-12-25 19:59:34 · 493 阅读 · 0 评论 -
飞腾平台编译文件系统
使用默认的第一个phytium_d2000-64b-efi_defconfig配置,首先修复其中的几个错误,对于4.19版本内核,sdk.config配置已经不存在,更改为defconfig文件。对于buildroot配置文件phytium_d2000_defconfig,其使用的内核配置也是defconfig,也存在同样的问题。对于使用内核配置文件e2000_defconfig的情况,已经配置了CONFIG_REMOTEPROC选项,应当没有问题。查看当前gitee上飞腾内核的版本信息。原创 2022-12-25 19:15:00 · 2435 阅读 · 1 评论 -
ubuntu系统readonly问题
对于虚拟机,关闭系统在设置中加载ISO安装镜像,进入BIOS:修改为CD启动,进入安装ubuntu流程,点击help进入命令行:执行fsck修复硬盘:重启设备,修复问题。原创 2022-03-04 22:39:54 · 1142 阅读 · 0 评论 -
内核earlyprintk选项
通过设置early_printk选项,可以在内核串口设备初始化之前,看到打印输出,对于调试内核早期的启动问题非常有帮助。如下可在grub命令行中,手动加载启动内核,增加内核参数:grub> grub> linux \(hd0,msdos2)/vmlinuz earlyprintk=ttyS0,115200grub> grub> bootgrub> 对于x86平台,内核函数setup_early_printk处理earlyprintk选项,解析earlyprintk原创 2020-12-28 21:42:59 · 3983 阅读 · 0 评论 -
内核的中断分布
对于x86架构,定义位于arch/x86/include/asm/irq_vectors.h文件中,linux每可使用的有256个IDT(Interrupt Descriptor Table)表项,64位架构每个CPU有一个IDT表,32位架构共享一个IDT表,其分布如下: * Vectors 0 ... 31 : system traps and exceptions - hardcoded events 系统陷阱和异常中断向量 * V原创 2020-10-20 20:06:06 · 696 阅读 · 0 评论 -
使用git sendmail发送补丁
这里使用iproute2工程为例,以下命令安装git-email工具。$ sudo apt-get install git-emailiproute2当前版本是5.8.0,其中文件tc/q_fq.c中有一处笔误。修改完成之后,使用如下命令生成patch文件:$ git format-patch HEAD^0001-tc-fq-clarify-the-length-of-orphan_mask.patch$ 接下来设置git-email相关配置,这里以126邮箱为例:$ git config原创 2020-10-14 21:09:35 · 2218 阅读 · 0 评论 -
内核红黑树-II
还是先列一下红黑树的5个准则。A node is either red or black节点的颜色非红即黑The root is black根节点为黑色All leaves (NULL) are black所有的叶子(NULL)节点都为黑色Both children of every red node are black红色节点的子节点都为黑色Every simple path from root to leaves contains the same number of black n原创 2020-09-23 20:30:48 · 556 阅读 · 0 评论 -
内核红黑树-I
内核中许多部分使用到红黑树,比如tcp的乱序队列out_of_order_queue,TC中fq公平队列的流表等。以下为红黑树的5个准则:A node is either red or black节点的颜色非红即黑The root is black根节点为黑色All leaves (NULL) are black所有的叶子(NULL)节点都为黑色Both children of every red node are black红色节点的子节点都为黑色Every simple path f原创 2020-09-19 06:37:35 · 743 阅读 · 0 评论 -
内核文件句柄数量
涉及三个文件file-max,file-nr和nr-open。file-maxfile-max定义了Linux内核可分配的最大数量的文件句柄,当检测到文件句柄耗尽时,需要增加file-max值。/ # cat /proc/sys/fs/file-max1597700内核函数files_maxfiles_init计算系统默认的最大文件数量,依据是每个文件及与其关联的inode和dcache结构,总的大小约为1K。默认文件占用的空间不超出内存的10%,file-max的最小值为NR_FILE,即81原创 2020-08-10 19:43:21 · 689 阅读 · 0 评论 -
rtnetlink消息解析遇到的问题记录
折腾了两天一个解析rtnetlink消息的程序,总是莫名其妙的crash,最终发现是rtattr数组定的时候忘记了加一。之后,查看了一下iproute2中的代码,如下解析IP地址的函数,rta_tb数组的个数为:IFA_MAX+1,进行了加一操作。int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg){ struct ifaddrmsg *ifa = NLMSG_DATA(n); i原创 2020-07-15 22:07:58 · 523 阅读 · 0 评论 -
本地挂载openwrt镜像
以下编译了一个X86-64平台的openwrt镜像,完成之后在bin/targets/x86/64目录下文件,主要由内核文件,和两个根文件系统文件,格式分别为ext4和squashfs,还有两个内核与文件系统打包在一起的镜像文件(ext4和squashfs两种格式)。$: ~/openwrt/bin/targets/x86/64$ ls -ltotal 27360drwxr-xr-x 4 k...原创 2020-04-06 21:19:43 · 3685 阅读 · 0 评论 -
Plone安装
在虚拟机上全新安装的Ubuntu环境:$ cat /etc/issueUbuntu 18.04.4 LTS \n \l~$获取Plone版本5.2.1,并进行解压。$ mkdir work$ cd work/$ $ wget https://launchpad.net/plone/5.2/5.2.1/+download/Plone-5.2.1-UnifiedInstaller-...原创 2020-02-19 19:33:41 · 569 阅读 · 2 评论 -
内核升级抢占配置选项问题
一直使用的是2.4的比较旧的内核,在升级到4.15的新内核之后,之前运行稳定的代码一直有各种死锁的情况发生。如下所示,大致原因都是一样的,如下对于同一个读写锁,有的地方并没有锁住下半部,导致问题的发生。[249739.328755] RIP: 0010:[<ffffffff8143128e>] [<ffffffff8143128e>] __read_lock_faile...原创 2019-12-05 19:08:19 · 497 阅读 · 0 评论 -
ubuntu创建自签名证书
系统版本:Ubuntu 17.04。首先生成一个RSA私钥:$$ mkdir private$ $ openssl genrsa -out private/cakey.pem 2048Generating RSA private key, 2048 bit long modulus......................................................原创 2019-12-02 19:30:06 · 2610 阅读 · 0 评论 -
使用strace定位死循环
首先通过top命令发现pworker进程的CPU占用率接近100%,如下: # topRun Time: 0 days, 0 hours and 59 minutes24U, 25S, 49I; mem: T:64040 F:61472 A:61159 C:120 SC:0 ST:0 SF:0 pworker 399 R 99.9 0.0...原创 2019-08-07 20:45:16 · 842 阅读 · 0 评论 -
GCC版本不同导致程序执行结果迥异
之前运行正常的一段代码,在升级了编译工具链后出现异常,最后发现是gcc的版本不同,导致编译出来的代码执行结果迥异。如下的代码为根据这个问题写的一段简单的测试程序。src指向一段数据,此段数据为长度+内容的组合(第一个字节为长度,其后为此长度的内容)。unsigned char get_length(unsigned char **src_p){ unsigned char ret =...原创 2018-08-17 16:02:15 · 7415 阅读 · 3 评论 -
利用交换机分开上下行流量
配置两台华为交换机,实现在拓扑中仅一个方向的流量通过LINUX网桥,PC-A(10.75.101.1)到PC-B(10.75.200.1)的流量经过LINUX网桥B,PC-B到PC-A的流量经过LINUX网桥A。交换机-A配置<HUAWEI><HUAWEI>system-view Enter system view, return user view wit...原创 2018-09-04 13:37:51 · 2241 阅读 · 0 评论 -
container_of注意事项
已知一个变量的地址时,使用container_of获取此变量所在的结构体的首指针。其定义如下:#define container_of(ptr, type, member) ({ \ void *__mptr = (void *)(ptr); \ BUILD_BUG_ON_MSG(!__same_type(*(ptr...原创 2018-08-29 23:29:23 · 2616 阅读 · 0 评论 -
根据PANIC信息定位内核代码位置
首先Linux内核需要打开编译的调试选项CONFIG_DEBUG_INFO,如下:Kernel hacking ---> [*] Kernel debugging [*] Compile the kernel with debug info这样,内核在编译之后的目标文件带有调试信息。检查内核的Makefile文件,打开CONFIG_DEBUG_INFO选项之后,内核为...原创 2018-11-14 23:04:38 · 2118 阅读 · 0 评论 -
UDEVD与内核交互
内核依据固定的标准与初始化次序命名设备,例如以太网设备,按照初始化次序命名为eth0、eth1等。UDEVD程序的存在,可以动态的添加/删除linux系统的设备节点,可以使用户定制化设备节点名称,创建设备链接等。使用udevd,需要配置以下内核选项:udevd要求: 内核支持sysfs, procfs, signalfd, inotify, unix domain sockets, ...原创 2018-11-20 17:20:59 · 1792 阅读 · 0 评论 -
内核与用户层交互两种方式
除去通常的netlink机制之外,本文介绍两种内核主动发起与用户层的交互机制。类似ioctl、proc文件操作或者socket类等用户层发起的与内核交互操作不在此讨论。内核调用用户层应用程序,使用函数call_usermodehelper实现,其参数为用户层应用程序的目录path,需要传递的参数argv、环境参数envp和参数wait。最后一个参数wait可指定是否需要等待应用程序执行完成,设...原创 2018-12-14 18:27:40 · 2587 阅读 · 0 评论 -
使用linaro工具链编译ARM64架构内核
首先下载linaro预编译好的arm64工具链,如下:# mkdir aarch64-toolchain# cd aarch64-toolchain# wget https://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86...原创 2019-01-23 18:03:33 · 6416 阅读 · 2 评论 -
交叉编译龙芯版本内核
依据内核系统的自带的默认龙芯配置,编译系统内核3.10,配置文件:arch/mips/configs/fuloong2e_defconfig交叉编译工具链4.9.3 rc6.1版本,下载地址如下:http://ftp.loongnix.org/toolchain/gcc/release/cross-gcc-4.9.3-n64-loongson-rc6.1.tar.bz2本地编译...原创 2019-01-14 16:22:22 · 4014 阅读 · 0 评论 -
ARM架构生成uImage过程
内核编译完成之后首先在顶层目录中生成vmlinux名称的原始ELF文件,接着在arch/arm/boot/Makefile文件中,使用objcopy工具,将vmlinux转化为Image镜像,用到的参数由变量OBJCOPYFLAGS和$(OBJCOPYFLAGS_$(@F)指定,makefile编译目标位于scripts/Makefile.lib文件中。arch/arm/boot/Makef...原创 2019-04-16 20:22:53 · 2607 阅读 · 1 评论 -
Ubuntu 17.04系统git LFS安装及使用
github不允许存储超过100MB的单个文件,但是提供了git的大文件存储Large File Storage扩展功能。本文假设你已经安装了git。$ git push -u origin masterUsername for 'https://github.com': usernonexistPassword for 'https://usernonexist@github.c...原创 2019-05-21 19:31:42 · 3493 阅读 · 0 评论 -
数组越界问题
如下代码,对于两个局部数组遍历s1和s2,其中s1的大小为4,而字符串“test”在给其赋值时,将导致最后的结束符赋值到紧随其后的s2数组的开始。而后,在数组s2赋值时,第二个字符串“test”的第一个字符t由将覆盖之前的结束符。#include <stdio.h>#include <string.h>int main(){ char s1[4] = ...原创 2019-05-30 19:59:36 · 1509 阅读 · 0 评论 -
SecureCRT触发打印机工作
Windows 10操作系统。SSH客户端软件:VanDyke SecureCRT版本:Version 8.0.3 (x64 build 1183) - Official Release - September 8, 2016使用SSH连接到远程的某一台服务器上。urls-file文件中保存有要下载的文件的URL列表,每个文件一行。以下命令本意是打算使用curl下载url...原创 2019-06-05 19:51:05 · 2961 阅读 · 0 评论 -
Open Network Install Environment工程概述
概述工程概述开源倡议Open Network Install Environment (ONIE) 旨在为现代网络硬件设备提供一个开放的"安装环境"。ONIE塑造了一个开放的网络硬件生态,终端用户可自由选择不同的网络操作系统。在ONIE出现之前,市面上的以太网交换设备有着预装的,受控的操作系统,以及实质上完成的网络应用,所有这些将终端用户固定在了一个垂直的供应链上。最初,ONIE依靠对多个...原创 2019-06-22 21:57:44 · 1388 阅读 · 0 评论 -
Python实现的HTTP并发测试程序
可修改变量thread_count指定最大的并发数量,即线程的数量。完成之后,打印输出失败的次数,以及开始时间和结束时间,单位是毫秒。主要是学习一下Python,仅供参考。#!/usr/bin/python3import sys, time, json, _threadimport http.client, urllib.parsethread_count = 100 #并...原创 2019-07-09 20:47:47 · 3512 阅读 · 0 评论 -
Control Group v2版本
本文是关于cgroup v2版本的设计、接口和协定方面的官方文档。描述了cgroup的核心和特定控制器行为在用户层面可见的方方面面。并且cgroup所有之后的改动都将在此文档中体现,v1版本的文档位于内核的Documentation/cgroup-v1/目录。This is the authoritative documentation on the design, interface and ...原创 2019-08-04 23:01:10 · 1741 阅读 · 0 评论 -
内核IRQ中断向量
首先看一下vector_irq的定义,此每处理器数组变量,保存每个处理器上中断向量所对应的中断号,其以中断向量值为索引。系统中定义了256个中断向量。相关代码如下:typedef int vector_irq_t[NR_VECTORS];DEFINE_PER_CPU(vector_irq_t, vector_irq) = { [0 ... NR_VECTORS - 1] = VECT...原创 2019-08-01 19:45:11 · 2899 阅读 · 0 评论 -
PROC文件中stat统计信息
翻译文件Documentation/filesystems/proc.txt的1.8节,关于/proc/stat文件内容的描述: 1.8 位于/proc/stat文件中的内核杂项统计-------------------------------------------------内核在文件/proc/stat中保存了有关自身活动的各种信息。所有的统计数字都是自系统启动后累加起来的。使...原创 2018-08-11 00:29:12 · 2325 阅读 · 0 评论