以内核代码 v0.11 和 v3.4.2 版本源码对 Linux 内核相关知识进行学习,由浅入深逐步掌握 Linux 内核。本文记录 Linux 操作系统结构与功能流程的学习。
5、内核源码(网络)阅读:tcp_input.c tcp_out.c tcp_ipv4.c tcp.c
在应用程序设计过程中,内存是很重要的资源,而计算机主机的内存资源时有限的。一般而言我们可以申请到的内存是有限的,并不是想申请多大就有多大就可以申请多大的。/proc/buddyinfo文件里,就记录着系统的内存资源。
#背景 一直以来我的业务都是跑在aufs+ext4的存储驱动结构上,看上去没有什么问题,直到业务报告: 在高并发场景下,aufs因为锁争抢的原因,导致cpu高负载。我才不得不考虑更换docker驱动的事情
Cgorup文档: https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt
新安装的ubuntu20内核版本是5.8,对于我个人来说太高了,需要安全地更换内核到低版本。 如果是需要内核升级的,本文也适用。 多内核并存或者删除其他内核方法同样适用。
Linux内核分为CPU调度、内存管理、网络和存储四大子系统,针对硬件的驱动成百上千。代码的数量更是大的惊人。
如果没有任何要运行的CPU,则CPU处于空闲状态。或者,更精确地说,Linux内核具有许多内部调度类,包括特殊的空闲类。如果没有任何类在给定的CPU上运行任何任务(空闲类除外),则将CPU视为空闲。如果硬件对此不予考虑,那么CPU将不得不运行无用的指令,直到实际工作需要它为止。但是,这是一种非常低效的用电方式,因此大多数CPU支持许多低功耗状态,内核可以将它们置于低功耗状态,直到需要它们进行有用的工作为止。
共享内存是进程间通信最有用的方式,也是最快的IPC形式。共享内存是说:同一块内存被映射到多个进程的地址空间。但是共享内存并不提供同步机制,因此需要互斥锁或者信号量。使用共享内存唯一需要注意的是:当前如果有进程正在向共享内存写数据,则在写入完成以前,别的进程不应当去读、写共享内存。
CVE-2022-0185是一个Linux内核中"Filesystem Context"中的一个堆溢出漏洞,攻击者可以利用该漏洞发起DDoS攻击,实现容器逃逸和提升至主机权限。该漏洞是在Google KCTF(基于Kubernetes的CTF)漏洞赏金计划中被Crusaders of Rust[1]团队的成员Jamie Hill-Daniel和William Liu发现[2]的,研究员因此获得了31337美元的奖励。NVD官网[3]最新数据显示,该漏洞CVSS3.x的评分为8.4。
“ 从今天开始,准备结合自己这段时间学习Kubernetes的进展,慢慢总结一些学习心得,就当是帮助自己成长吧”
公司更换了新的服务器,需要把原先的gitlab迁移到新的服务器上. 1.迁移准备工作和思路:从a服务器迁移到b服务器,由于Gitlab自身的兼容性问题,高版本的Gitlab无法恢复低版本备份的数据,需要注意在b服务器部署和a服务器一样版本的gitlab,部署好环境后开始备份和数据迁移.关于gitlab服务器部署请参考我的 另一遍文章:http://www.cnblogs.com/wenwei-blog/p/5861450.html 查看gitlab版本的命令: gitlab-rake gitlab:e
查看文件夹下 nvidia-***.***.*** 的文件夹,字符串中nvidia- 后面的部分都是驱动版本
「Docker使用Google公司推出的Go语言进行开发实现,基于操作系统内核中Cgroup(资源控制)、Namespace(资源隔离)与OverlayFS(数据存储)等技术,实现了基于操作系统层面的虚拟化技术。」
值得注意的是,靶机貌似有个bug,当shell连接中断后,我们无法直接再次连接,只能重启靶机,再故技重施
如果装个纯linux,则一些windows软件没法用。如果用windows然后装个虚拟机,在虚拟机上安装linux,又感觉麻烦而且占用电脑资源。
渗透测试面试题目 一、基础问题 1.请你用一分钟时间介绍下你自己 2.现在在哪个城市 3.最快什么时候可以到岗 4.项目经历 5.对面试的岗位职责和工作内容了解吗 二、技术问题 1.拿到一个待检测的站,你觉得应该先做什么 1)信息收集 1,获取域名的whois信息,获取注册者邮箱姓名电话等。 2,查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。 3,查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞4
https://cloud.tencent.com/developer/article/2180366
本文说明如何在Ubuntu 16.04(64位)上编译Android最新主线代码,介绍如何下载代码、建立编译环境、编译代码。
Capabilities机制是在Linux内核2.2之后引入的,原理很简单,就是将之前与超级用户root(UID=0)关联的特权细分为不同的功能组,Capabilites作为线程(Linux并不真正区分进程和线程)的属性存在,每个功能组都可以独立启用和禁用。其本质上就是将内核调用分门别类,具有相似功能的内核调用被分到同一组中。
1、最近原来写的测试代码在Ubuntu18 可以内核版本,在新的安装的Ubuntu20 上无法运行,各种操作后想排除下是否是因为内核版本过高的原因,因此用到降低ubuntu内核版本的操作:
摘要:本文是根据自己亲手编译源码过程所总结的一个开发笔记(包括编译流程,可能遇到的错误,以及错误解决的办法等),首先介绍了基于Ubuntu9.10的编译环境的建立,再次介绍了整个源码的获取方式,最后讲解了源码的编译过程(包括源码的打包处理,u-boot的编译,Linux的kernel的编译,android文件系统的编译)。本文各个操作的开发环境是基于VMware7.10虚拟机的Ubuntu9.10环境。当然不同的版本的Linux可能操作过程有点差异,所遇到的错误可能不同,但是各个操作思想是一致的。
丰色 发自 凹非寺 量子位 | 公众号 QbitAI 这几天,由Linux基金会主办的2022开源峰会如约而至。 Linux之父Linus Torvalds也出席了会议。 一个小插曲是,一张现场传来的他本人的照片让不少网友和粉丝感叹: Linus真的老了! 不过,53岁的Linus在和老朋友Cardano基金会的首席开源官进行的一番畅谈中却表示,自己仍然充满了干劲。 同时,他还透露了一个大惊喜: 下一个版本的Linux内核主线,可能就会合并用Rust语言提交的PR分支了。 对Linux的热情30年未减
在 I-IVV 的需求场景中,经常会遇到一些比较古老的环境,例如 windows xp、win server 2003系统,为了让整体流程更流畅丝滑,对这类场景也需要找到合理的解决方法,且解决方案应尽量贴合现存使用习惯。 兼容问题的根本点在于,shellcode的兼容性+shellcodeloader的兼容性。 1、shellcode 2、loader 其中最重要的是解决shellcode的问题。
回望过去的 2022 年,有两项技术备受瞩目:eBPF 和 WebAssembly。
网络信息产业中,芯片被比喻为心脏,操作系统被认为是计算机的灵魂。二十年来,国内信息产业始终在“缺芯少魂”的困境中,中国在高端芯片行业缺乏自主创新能力,国产操作系统自研创新,不仅事关信息技术核心竞争力,更关乎国家信息安全。
但凡懂Linux内核的,都知道Linux内核的CFS进程调度算法,无论是从2.6.23将其初引入时的论文,还是各类源码分析,文章,以及Linux内核专门的图书,都给人这样一种感觉,即 CFS调度器是革命性的,它将彻底改变进程调度算法。 预期中,人们期待它会带来令人惊艳的效果。
IO的阻塞与同步 IO即输入/输出(Input/Output)。每个应用系统都少不了交互,或多或少都会产生数据,而它们的核心:IO,其性能的发展明显落后于 CPU 。对于高性能、高并发的应用系统来说,回避IO瓶颈进而提升性能是至关重要的。 阻塞与非阻塞 一般来说,IO模型可以分为阻塞/非阻塞及同步/异步。先从简单的阻塞/非阻塞模型说起。 阻塞IO:用户进程发起IO操作后,必须等待IO操作完成才能继续运行。通信协议中的 Socket 编程,为了简单起见,也使用的这种方式。但这种方式会造成CPU大量闲置,系
通用操作系统,通常都会开启mmu来支持虚拟内存管理,而页表管理是在虚拟内存管理中尤为重要,本文主要以回答几个页表管理中关键性问题来解析Linux内核页表管理,看一看页表管理中那些鲜为人知的秘密。
假设,在 JavaMavenService2 模块中,log4j 的版本是 1.2.7,在 JavaMavenService1 模块中,它虽然继承于 JavaMavenService2 模块,但是它排除了在 JavaMavenService2 模块中继承 1.2.7 的版本,自己引入了 1.2.9 的 log4j 版本。
在非图形界面的Ubuntu server20.04的GPU服务器上配置环境,包括Nvidia驱动,cuda,cuDNN的安装,Anaconda的安装和开发环境创建。最好的参考文档是各软件的官方文档。
作者 | 石钟浩、张龙 策划 | 凌敏 近年来,由于 eBPF 在 Linux 内核级别灵活的可编程性、安全性等优势,在云原生网络、安全和可观测性等方面应用广泛。eBPF 可以在不侵入任何业务代码的基础上实现云原生应用的可观测性。但是 eBPF 对 Linux 内核版本是有一定要求的(4.14 以上),伏羲私有云部分生产集群的内核版本比较低,升级内核会影响大量线上应用,成本太高。 而 kindling 正好在基于 eBPF 实现云原生可观测性能力的基础上,借助内核模块技术在低版本 Linux 内核上实
不允许容器消耗宿主机太多的内存是非常重要的。在 Linux 主机上,如果内核检测到没有足够的内存来执行重要的系统功能,它会抛出 OOME 或 Out of Memory 异常,并开始终止进程以释放内存。任何进程都会被杀死,包括 Docker 和其他重要的应用程序。如果杀错进程,可能导致整个系统瘫痪。
最后就能直接运行了,但是又出现了一大难点,numpy包有报错了,不得不说,dependance尤其严重。暂时没想到很好的解决办法,尝试过吧numpy版本更换,终于以失败的结果告终。
代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
环境:OEL 5.7 + Oracle 10.2.0.5 背景:Oracle发布的两篇关于2019年6月份将自动调整高版本数据库的SCN COMPATIBILITY的MOS文章引起了很多客户的恐慌,尤其是起初Oracle对10g版本未提供任何补丁。我这里结合业界多位Oracle ACE专家的系列文章,在自己的实验环境做了系列验证总结。
Linux 6.8 内核已经升级至 Rust 1.75,而最新的补丁则将内核的 Rust 代码迁移到 Rust 1.76,并准备好迎接即将发布的 Rust 1.77。 Rust 1.77 稳定了内核 Rust 代码使用的单字段 "offset_of" 功能,并添加了一个"--check-cfg" 选项,内核 Rust 代码未来可能会过渡到这个选项。这符合 Rust for Linux 跟踪上游 Rust 版本升级的政策,直到确定了所有使用的功能都被认为是稳定的最低版本为止。预计将在即将到来的 Linux 6.9 内核合并窗口中进行对 Rust 1.77 的升级。
Linux容器中用来实现“隔离”的技术手段:Namespace。 Namespace实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。对于宿主机来说,这些被“隔离”了的进程跟其他进程并没有区别。
项目改微服务化了,于是开始研究 rabbitMQ 这个消息队列框架。然后官方推荐使用docker启动,索性在WSL下装 docker 了(太懒了,不想双系统or虚拟机)
在项目开发中,接口请求是必不可少的,为了方便使用和维护,大家都会将接口请求的方法二次封装。下面小编将我项目中接口封装使用的方法分享给大家,希望可以帮到大家。喜欢的给个三连击再走哟。
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docke
嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等 Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。 你可以尝试以下路线: (1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都
在网上查询了很多。发现有些人说是jar冲突导致的,删除低版本的就可以了。可是我的没有jar冲突问题。所以想是不是因为jar版本低的原因。于是就换版本。
恩,可能是我比较愚钝,一个内核编译搞了一天,各种问题,各种bug,几度无奈,也是因为我突发奇想,并没有按照原来的那种操作,我直接把helloworld程序放到内核模块中编译成了一个驱动程序,虽然其中遇到了不知道多少的问题,不过最终是个完美的结局,给自己点个赞! 好了,废话不多说,直接开始还原我的helloworld驱动内核程序编译流程。
linux系统一直以来都是比较安全的,不管是系统内核还是一些第三方软件都没有太大的漏洞,包括前几年爆出的redis漏洞,没有太多漏洞,然后最近linux频频爆出高危的漏洞,使用vim文本编辑器很多年了,得知被爆出远程代码执行漏洞,有点不可思议,全国大多数的linux服务器都使用的是vim,包括centos系统,redhat,关于该漏洞的详情以及修复方案,我们SINE安全来详细的跟大家介绍一下:
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
https://www.toutiao.com/article/7174938810877215270
从上面的报错信息分析可能是由于Jenkins容器中的Java 11版本过高。我们单独下载一个低版本的jdk,然后将低版本的jdk拷贝到Jenkins容器中替换掉之前的Java 11版本。
本文章适合正在学习提权的朋友,或者准备学习提权的朋友,大佬就可以绕过了,写的比较基础。我也是一个小白,总结一下提权的姿势和利用,也分享一些自己觉得好用的方法给大家,欢迎大家帮我补充,有什么好用的提权的方法也可以分享一下,大家共同进步。本篇有自己的理解,如果有什么不对的或者不好的地方希望大家不要喷我,但是欢迎帮我指正。
领取专属 10元无门槛券
手把手带您无忧上云