跟我一起来到故事开始的地方,深入 Linux 系统的启动流程,自己编译内核并制作根文件系统,并使用 QEMU 模拟启动。
在Android中系统通过脚本build/tools/releasetools/build_super_image.py内部去调用lpmake工具生成super.img镜像
背景: 最近在项目中遇到一个问题,追溯WIFI模块是否丢包的问题。因为丢包的环节很多。 我所有用到平台场景:主控(跑LWIP协议栈)+ SDIO wifi。 📷 在上面的场景中可能丢包的情况很多: wifi模块没有接收到网络报文(空中丢包)。 wifi模块没有发送网络报文成功(空中丢包)。 主控与wifi数据传输丢掉报文(SDIO传输丢包)。 在设备端如果通过串口打印查看丢包现象是非常麻烦的,网络报文很多,而且无法辨别是否丢包。 通过wireshark抓网络包,虽然可以清晰查看报文,但是无法判别wifi有没
裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备。它由应用程序负责对 它进行读写操作。不经过文件系统的缓冲,是不被操作系统直接管理的设备。由于跨过操作系统管理,使得I/O效率更高。在基于SUSE Linux 10上安装Oracle 10g RAC的话,由于Oracle 10g 不支持将ocr与votingdisk 存放在ASM 磁盘中,因此,依然需要为其使用裸设备方式。SUSE Linux裸设备的配置与其他的Linux稍有差异,下面将具体描述。
存储的配置总结下只有2步:持久化配置 和 权限配置 。一般来说这两步是可以合在一起的,只是使用多路径软件时需要分开来讲(多路径软件多了一个多路径聚合的步骤)。
现在 iptables 这个工具的应用似乎是越来越广了。不仅仅是在传统的防火墙、NAT 等功能出现,在今天流行的的 Docker、Kubernets、Istio 项目中也经常能见着对它的身影。正因为如此,所以深入理解 iptables 工作原理是非常有价值的事情。
前言: 虚拟化场景下,测试的时候,经常为了省事,经常想跳过安装操作系统。因为作者使用的是iscsi的分布式存储方案,所以可以用iscsiadm把iscsi挂载到host上,虚拟化出来/dev/sdx设备。 qemu-img convert -f qcow2 -O raw CentOS-7-x86_64-GenericCloud.qcow2 /dev/sdx 实际效果还不错,省去了安装操作系统的复杂过程。转换完成后,从/dev/sdx直接启动,guest os就带着操作系统了。 但是,还会看到转化速度比较慢
利用 ethtool 可以根据需要更改以太网卡的参数,包括自动协商、速度、双工和局域网唤醒等参数。
工业场合里面也有大量的模拟量和数字量之间的转换,也就是我们常说的 ADC 和 DAC。而且随着手机、物联网、工业物联网和可穿戴设备的爆发,传感器的需求只持续增强。比如手机或者手环里面的加速度计、光传感器、陀螺仪、气压计、磁力计等,这些传感器本质上都是ADC,大家注意查看这些传感器的手册,会发现他们内部都会有个 ADC,传感器对外提供 IIC或者 SPI 接口,SOC 可以通过 IIC 或者 SPI 接口来获取到传感器内部的 ADC 数值,从而得到想要测量的结果。Linux 内核为了管理这些日益增多的 ADC 类传感器,特地推出了 IIO 子系统,我们学习如何使用 IIO 子系统来编写 ADC 类传感器驱动。
Rust for Linux 这个项目的目的就是为了将 Rust 引入 Linux,让 Rust 成为 C 语言之后的第二语言。但它最初的目的是:实验性地支持Rust来写内核驱动。
之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言。我们尽量满足。
1.sudo modprobe vcan 加载虚拟can模块 2.sudo ip link add dev vcan0 type vcan 添加vcan0网卡 3.ifconfig -a 可以查到当前can网络 can0 can1,包括收发包数量、是否有错误等等 4.ip link set can0 up type can bitrate 800000 //ip link set can0 type can –help 设置can0的波特率为800kbps,CAN网络波特率最大值为1Mbps 5.ip link set can0 up type can bitrate 800000 loopback on 设置回环模式,自发自收,用于测试是硬件是否正常,loopback不一定支持 6. ip link set can0 down 关闭can0 网络 7.cansend can0 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 发送默认ID为0x1的can标准帧,数据为0x11 22 33 44 55 66 77 88 每次最大8个byte 8.cansend can0 -i 0x800 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 -e -e 表示扩展帧,CAN_ID最大29bit,标准帧CAN_ID最大11bit -i表示CAN_ID 9. cansend can0 -i 0x02 0x11 0x12 –loop=20 –loop 表示发送20个包 10.candump can0 接收CAN0数据
KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor,KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。
在本文中,我们将介绍在基于Linux的设备上进行初始访问后,可用于后渗透阶段漏洞利用和枚举的一些自动化脚本研究。
曾记得有一位哲人说过:“在云计算当中,计算最基础,存储最重要,网络最复杂”,而PaaS云平台Kubernetes的出现也使得网络的应用场景变得更加复杂多变。本文试图从Kubernetes当中容器跨节点网络通信方案Flannel的实际应用场景出发,带领读者梳理Kubernetes当中容器跨节点网络通信的实现过程以及背后的实现原理。
在前几期,我们提到,在Linux下,可以利用IO虚拟化技术为虚拟机添加一个完全虚拟或半虚拟的网卡或磁盘,也可以将物理设备直通给虚拟机,还可以将支持SR-IOV的网卡等设备一虚多,并将虚拟化的设备给虚拟机使用。
此程序相当于Linux里面的一个slab内存分配器 一、Slab 内存slab分配器最初思想来自Solaris的内核态小数据结构(一页以内)的内存分配,受到Solaris的影响,Linux内核也采用类似思想来减少页内碎片,其基本思想是:一次向内核获取整数页,slab根据数据结构的大小进行划分为一个个小的数据结构,当需要时直接从该链表上摘取一个返回应用程序,当应用程序释放时,而非真正释放,只需要该空间放回到链表中,当分散的一页多块又聚集一页时,又会拼成一页,同时判断slab空闲的页数,如果空闲页超过一定的页数
目前Tina 系统的各平台camera 硬件接口、linux 内核版本以及camera 驱动框架如下表所示:
qemu-kvm 该软件包主要包含KVM内核模块和基于KVM重构后的QEMU模拟器。KVM模块作为整个虚拟化环境的核心工作在系统空间,负责CPU和内存的调度。QEMU作为模拟器工作在用户空间,负责虚拟机I/O模拟。 依赖包qemu-img 主要用来QEMU磁盘镜像的管理,如新建一块磁盘镜像给虚拟机。
raw格式是原始镜像,会直接当作一个块设备给虚拟机来使用,至于文件里面的空洞,则是由宿主机的文件系统来管理的,linux下的文件系统可以很好的支持空洞的特性,
相信大家有很多人在做图像,或者做过图像,甚至视频,最近有个需求,实现多路usb摄像头同开,用c/c++实现。
前言: 随着Linux的版本升高,存储栈的复杂度也随着增加。作者在这里简单介绍目前Linux存储栈。 分析: 1,storage stack 在用户态,可以看到的磁盘主要有几种类型: a,/dev/
由于系统将CAN设备作为网络设备进行管理,因此在CAN总线应用开发方面,Linux提供了SocketCAN接口,使得CAN总线通信近似于和以太网的通信,应用程序开发接口更加通用,也更加灵活。
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/169
近日,绿盟科技监测发现Linux kernel 存在一个权限提升漏洞(CVE-2020-14386),由于net/packet/af_packet.c在处理AF_PACKET时存在整数溢出,导致可进行越界写从而实现权限提升,攻击者可以利用此漏洞从非特权进程获得系统root权限。使用了Linux Kernel的openshift/docker/kubernetes等虚拟化产品可能会受到该漏洞影响,导致虚拟化逃逸,请相关用户采取措施进行防护。
QEMU是“Quick Emulator”的缩写,是一个用C语言编写的开源虚拟化软件。本文的目的是描述本人所理解的QEMU技术架构的见解,并以此抛砖引玉。众所周知,QEMU的源代码开发文档非常稀少,描述内部结构和工作机理的文档更是凤毛麟角,一般的开发人员想要从事QEMU的开发工作,通常只能从源代码入手。因此,对于技术人员来说,了解QEMU是一项艰巨的任务。
原创文章,转载请务必将下面这段话置于文章开头处。 本文转发自:字母哥博客,原文链接 http://www.zimug.com/463.html
对于网络通讯,耳熟能详的莫过于TCP、UDP,二者皆需要ip和port。对于一般开发人员,找到一个“能用”的库就可以了,因为流式通讯,会有粘包问题,那就需要再加一个库,解决粘包问题,这样一个基本的通讯框架就OK了。很多情况下,我们并没有了解网络通讯内部的结构,对于网络7层模型也是一知半解,这些都很值得探索。考虑一种情况:当我们的linux上位机需要和嵌入式设备进行网络通讯,选择哪种网络协议比较好呢?它是位于哪种通讯层次呢?如果上位机要与多台嵌入式设备通讯,又该如何处理呢?接下来了解今天的的主角——raw socket。
声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企业安全、国家安全。
eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具。它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。
Linux是一种安全操作系统,它给普通用户尽可能低的权限,而把全部的系统权限赋予一个单一的帐户–root。root帐户用来管理系统、安装软件、管理帐户、运行某些服务、安装/卸载文件系统、管理用户、安装软件等。另外,普通用户的很多操作也需要root权限,这通过setuid实现。
在前面章节中学习两个vpp与内核协议栈建立通信实现frr/bgp、ospf动态路由的学习案例,其中vpp和kernel通信中都使用了tun/tap网络虚拟接口来进行。本人对网络设备虚拟化了解不足,也在学习之中,如有错误,欢迎指正。下面就来学习一下vpp中tap模块。
云计算介绍 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池,(资源包括网络、服务器、存储、应用软件、服务),这些资源能够被快速提供,需要投入很少的管理工作,或与服务供应商进行很少的交互。 1)云计算之前的使用模式 IDC 托管 IDC 租用 虚拟主机(买空间) VPS:虚拟专用主机 2)传统数据中心面临的问题 资源使用率低 资源分配不均 自动化能力差 3)云计算的优势 云计算是一种使用模式,不是一种技术 云计算的使用方式:通过网络访问 云计算的优势:弹
本文最始出自http://www.360doc.com/content/12/0318/16/532901_195392228.shtml
这两天领导派了一个活,要求在我们现有的物联网平台做一个功能,功能的大致是这样的。 在浏览器端点击一个设备链接这个设备的桌面。并且能够进行文件,命令行的操作。
本文介绍了如何使用tslib工具进行代码编译和测试。首先,介绍了tslib工具的下载和安装过程,然后描述了如何使用tslib工具进行编译和测试。最后,给出了tslib工具的常用命令和测试数据。
前言: 以作者的经验来看,虚拟化的跨度比较大,很多概念比较难以理解,本来以为“硬件行为,就是这样的”好多概念,都变成虚拟的了。 作者对kernel略懂一二,结合过往的很多经验来看,就更加难以理解了~ 所以,作者尝试着把理解的过程描述出来(尽管作者在虚拟化上面,谈不上很专业,这里还是不自量力一下了)。 分析: 硬件概念:在分析虚拟化原理之前,先来看一下“本来就应该这样”的硬件设计图。 从Intel官网(http://download.intel.com/design/chipsets/datashts/2
操作系统中,用来管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。具体来说,这部分系统就是负责为用户建立、读取、修改和转储文件,控制文件的存取,当用户不再使用时撤销文件等。
抽象网络设备的原理及使用 网络虚拟化是 Cloud 中的一个重要部分。作为基础知识,本文详细讲述 Linux 抽象出来的各种网络设备的原理、用法、数据流向。您通过此文,能够知道如何使用 Linux 的基础网络设备进行配置以达到特定的目的,分析出 Linux 可能的网络故障原因。 Linux 抽象网络设备简介 和磁盘设备类似,Linux 用户想要使用网络功能,不能通过直接操作硬件完成,而需要直接或间接的操作一个 Linux 为我们抽象出来的设备,既通用的 Linux 网络设备来完成。一个常见的情况是,系统里装
题图来自 My second impression of Rust and why I think it's a great general-purpose language![1]
前面有篇文章使用杂项设备完成了按键驱动的编写,实现了按键轮询检测,通过read函数向应用层传递按键值,这篇文章使用按键为例,介绍Linux内核里中断的注册方法,使用中断的方式检测按键是否按下,中断在单片机、设备驱动开发里使用的都非常多,可以更加实时的检测到按键触发的情况。
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作
前面两篇文章已经介绍过 tap/tun 的原理和配置工具。这篇文章通过一个编程示例来深入了解 tap/tun 的程序结构。
原子操作 通常我们代码中的a = a + 1这样的一行语句,翻译成汇编后蕴含着3条指令: ldr x0, &a add x0,x0,#1 str x0,&a 即 (1)从内存中读取a变量到X0寄存器 (2)X0寄存器加1 (3)将X0写入到内存a中 既然是3条指令,那么就有可能并发,也就意味着返回的结果可能不是预期的。 然后在linux kernel的操作系统中,提供访问原子变量的函数,用来解决上述问题。其中部分原子操作的API如下: atomic_read atomic_add_return(i,v) a
[RainBowText]此文章仅做学习交流,请自觉遵守法律法规。[/RainBowText]
MemProcFS是一款功能强大且方便实用的物理内存数据查看工具,该工具可以帮助广大研究人员在一个虚拟文件系统中中以文件形式查看物理内存数据。
领取专属 10元无门槛券
手把手带您无忧上云