转自:https://blog.csdn.net/dog250/article/details/5303442 linux的电源管理发展非常迅速,比如在挂起到内存的时候,系统会冻结住所有的进程,也就是所有的进程都不再运行,它们被冻结之前,最后的状态被保存,等到解冻的时候,所有进程恢复运行,linux对此的实现非常巧妙,它没有用特殊的机制来实现这一点,而是用它的freeze框架加上信号处理来实现的,在freeze所有进程的时候并没有将之挂起或者说使其不再运行,而是在信号处理的开始挂了一个类似于钩子…
vortex86 SIS550 Minit-5250E瘦客户机,使用CF卡启动,显示不支持DMA. 搜索得新内核已基本不再使用ide=nodma参数了,查到这篇文章:“Debian下关闭CF卡的DMA模式” 在grub的启动参数中了一条 “libata.dma=0”就关闭DMA了. 原来的dmesg可以看到内核不断尝试DMA方式,直到最后PIO方式才能正确访问. [ 10.687047] ata1.00: configured for UDMA/33 [ 10.689746] scsi 0:0:…
http://blog.chinaunix.net/uid-22810130-id-384173.html 如果说cfs是linux的一个很有创意的机制的话,那么linux中另一个创意就是nohz,我在前面已经写了好几篇关于nohz的文章了,因此本文就不再阐述代码细节了,linux的创意在于设计而不在代码,代码主要解决的问题是实用性,就像gcc一样,就是一个编译器,应用编译原理设计而出,它内部却充实着编译原理之外的巧妙.有血有肉才活得精彩,如果说nohz之前的linux内核是骨架的话,那么从 n…
http://blog.csdn.net/linuxnews/article/details/52864182…
内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核的bug,并增加了许多新的特性.如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核. 本文将以kernel 4.7.2版本为实验,操作平台为RedHat 7.2,将通过以下三个方面来说明内核及模块的编译. 源码编译Linux内核 使用Linux内核模块…
Virtio:针对 Linux 的 I/O 虚拟化框架 --http://www.ibm.com/developerworks/cn/linux/l-virtio/#ibm-pcon 使用 KVM 和 lguest 的半虚拟化 I/O Linux 内核支持多种虚拟化模式,并且支持的数量随着虚拟化的进步和新模式的出现(例如lguest)而增加.但是,让这些虚拟化模式能够在 Linux 之上运行之后,又如何让它们能够在 I/O 虚拟化方面利用底层内核呢?答案是使用 virtio,它为 hypervi…
linux 串行通信接口驱动框架 在学习linux内核驱动时,不论是看linux相关的书籍,又或者是直接看linux的源码,总是能在linux中看到各种各样的框架,linux内核极其庞杂,linux各种框架理解起来并不容易,如果直接硬着头皮死记硬背,意义也不大. 博主学习东西一直秉持着追本溯源的态度,要弄清一个东西是怎么样的,如果能够了解它的发展,了解它为什么会变成这样,理解起来就非常简单了.抓住主干,沿着线头就可以将整个框架慢慢梳理清楚. 从i2c开始 在嵌入式中,不管是单片机还是单板机,i2…
============================================================================== 深入linux kernel内核配置选项 ============================================================================== 如果自己不亲自实践配置的话,你永远也体会不到内核的真实所在. 使用过linux的发行版之一gentoo的话,你应该知道这是一个彻头彻尾的自定义…
1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时候就会被pdflush刷新到磁盘: (1)数据存在的时间超过了dirty_expire_centisecs(默认30s)时间 (2)脏数据所占内存 /(MemFree + Cached - Mapped) > dirty_background_ratio.也就是说当脏数据所占用的内存占(MemFre…
转自:http://www.jb51.net/article/77458.htm linux中目录与文件权限的意义 一.文件权限的意义 r:可以读这个文件的具体内容: w:可以编辑这个文件的内容,包括增加删除文件的具体内容: x:文件就具有了可执行的权限-------注意:这里和window不一样,在win中,文件的可执行权限是通过扩展名表现出来的,如exe.bat等,但是在linux中文件的可执行权限是通过这个x决定的,与文件名没有什么关系. 二.目录权限的意义 r:可以查看此目录下的完整文件…
Linux 编译内核 大致分这几个步骤 1.准备编译工具.内核文件 2.开始编译 3.将编译好的新内核install进系统 4.查看是否成功.   一.准备好必备的库和内核文件   1.添加必备的编译工具. apt-get install build-essential kernel-package libncurses5-dev libqt3-headers (以下所有命令若是权限问题.请自行加上sudo)   2.处理好内核文件. 访问www.kernel.org 建议下载稳定版. 拷贝内核…
导读:在linux中,/proc/sys/net/core/somaxconn这个参数,linux中内核的一个不错的参数somaxconn 看下其解析: 对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后, 我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了. 每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的长度,与如下两方面有关: - somaxconn参数. - 使用该端口的…
内核必须实现一组服务和相应的接口,应用程序则可以使用这些接口,而不是直接与硬件打交道. Linux内核主要由以下5个子系统组成:进程调度.内存管理.虚拟文件系统.进程间通信以及设备驱动. 在这个组成中,最核心的就是进程管理->进程调度和进程间通信. 在Linux系统中,我们编写的任何应用层程序,不管是上层还是属于中间框架层的代码,甚至是最底层的驱动代码,都可以以进程的形式在系统上运行.CPU可以运行在用户态和内核态. 在Linux 进程/内核模型中,每个进程就是执行在机器上的唯一的镜像,它们对系…
linux kexec 介绍 kexec的功能是用一个运行的内核去运行一个新内核,就像运行一个应用程序一样.这种机制因为跳过了bootloader,可以实现系统的快速重启.另外kdump也是基于kexec实现(示意如下). kexec的实现有几点难点: 在当前内核的上下文中,如何用新内核去替换现有内核? 正常复位启动过程中,设备会被复位(或初始化)到已知状态.跳过了复位阶段,那如何在新内核kexec启动时,保证设备状态的可靠? kexec的使用示例如下,其分为2部分:kexec内核加载和kexe…
昨天编译了一个linux 内核源码,遇到一些问题, 今天把我遇到的问题和解决方法分享给大家.希望可以帮助到需要的人. 1.检查是否安装了相应的包 我第一次编译的时候只安装的“Development Tools” 包,”Compatibility Libraries“和”Development and Creative Workstation“没有安装 [root@localhost yum.repos.d]# yum groups list #查看包组列表 Loaded plugins: fas…
Linux常用内核参数 TCP状态描述 CLOSED:无连接是活动的或正在进行的 LISTEN:服务器在等待进入呼叫 SYN-RECV:一个连接请求已经到达,等待确认 SYN-SENT:应用已经开始,打开一个连接 ESTABLISHED:已经建立的连接 FIN-WAIT1:主动断开一方,第一次发送完FIN FIN-WAIT2:主动断开一方,收到对端确认的ACK TIME-WAIT:主动断开一方,收到FIN-ACK CLOSE-WAIT:被动断开一方,收到对方FIN且发送完ACK后 LAST-AC…
现象: CentOS7开机启动界面显示多个内核选项 原因: 正常情况下,有两个启动项,一个是"正常启动",另一个是"救援模式启动"(rescue). 如果启动项多于2个,说明当前系统有旧内核未删除.原因是CentOS更新后不会自动删除旧内核. 默认以新内核启动,可以在启动选项中临时选择,也可以修改配置永久指定. 示例:修改默认启动的内核 [root@CentOS-7 ~]# uname -r # 查看当前内核版本 3.10.0-693.5.2.el7.x86_64…
1.查看当前内核版本 uname -r 2.通过yum升级内核 通过yum升级内核是最保险的升级方式,因为安装的是操作系统发行厂商验证过兼容性的rpm包,升级风险一般很小. yum install -y kernel 重启后即可在grub界面选择使用新内核(新内核一般是默认使用内核,所以也可不用选直接等机器重启完用的就是新内核了). 3.通过手动编译升级内核 手动编译升级风险是比较大的,轻则可能会导致应用的兼容性问题,重则系统可能就启不来了(当然旧内核没删还是可以选旧内核来启,前提是你的屏幕能直…
在 linux 编译内核时 make menuconfig 报了下面的错误. *** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses libraries. *** Install ncurses (ncurses-devel) and try again. 这是因为系统中缺少 ncurses-devel,安装一下就可以…
(三)虚拟机与Linux新尝试--20155306白皎 一.关于虚拟机的安装 在选择虚拟机的类型和版本时,Ubuntu只有32位,没有64位 解决:通过百度,后来也发现同学们好多遇到了这个问题,因此通过同学们的博客,发现需要更改BIOS设置,开启虚拟化.经过多次,不停地开机尝试,发现我的电脑通过Fn+F2可以打开这个设置. 可以看出将 Intel virual Technology 一栏改成 Enabled 即可解决 下载Ubuntu后,却找不到虚拟光盘文件ubuntu-16.04.1-desk…
Linux内核升级总结. 一.编译内核步骤 1.#uname –r 确定系统的原内核版本,然后下载较新版本的Linux内核源码包 http://www.kernel.org/pub/linux/kernel/v2.6/,版本跨度不要太大,至少大版本应该是相同的,比如都是2.6.xx.xx,下面以内核文件linux-2.6.36.tar.bz2为例进行说明. 2.将下载好的内核源码包放到/usr/src目录下,解压文件,得到linux-2.6.36目录 #.tar.bz2 /usr/src #cd…
现在新版的树莓派内核由于为了兼容树莓派2和树莓派B+等以前的版本,采用了和原来不同的内核运行方式,使用了设备树的方式,更加灵活.但是由于可能不习惯这样的方式以及没太多相关这方面的介绍,导致很多用户更新了内核后出现比如接18B20无法读取设备信息,以及树莓派没有声音输出的问题. 在这里细心的用户就会发现在新内核boot分区下多了个overlays文件夹,里面有很多dtb文件,这些其实就是树莓派的设备树,打开README,就可以知道该怎么使用了. 下面是来自README的话: Introductio…
转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/51841281 启动新内核出现错误:Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004 查阅内核源码,才知道exitcode=0x00000004  代表的是 SIGILL (非法指令) 出现这个错误的原因是交叉编译器用的是EABI借口,所以内核也要用EABI接口才行: book@book-…
提高Linux系统下的负载能力,可以使用nginx等原生并发处理能力就很强的web服务器 使用Apache的可以启用其Worker模式,来提高其并发处理能力 修改Linux的内核相关TCP参数,来最大的提高服务器性能 最基础的提高负载问题,还是升级服务器硬件 Linux系统下,TCP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口.当并发请求过多的时候,就会产生大量的TIME_WAIT状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源.这个时候我们可以优化TCP…
Linux块设备的原理远比字符设备要复杂得多,尽管在linux这一块的方法论有很多相似之处,但考虑到它是用中块结构,它常常要搭配内存页管理,页缓冲块缓冲来改善硬盘访问的速度,按照块硬件最大的性能要求进行软件发挥. 我们现在从入门级别的角度来理解块设备在初建时候需要的数据结构和过程,在这里,我以图形的方式呈现,可以按照图示的结构标识找到linux内核源码,看它们的函数就可以理解完整的初建过程. 一.    数据结构. block_device: 旨在描述一个分区或整个磁盘对内核的一个块设备实例 h…
优化Linux 的内核参数来提高服务器并发处理能力PS:在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题.要提高Linux 系统下的负载能力,可以使用nginx 等原生并发处理能力就很强的web 服务器,如果使用Apache 的可以启用其Worker 模式,来提高其并发处理能力.除此之外,在考虑节省成本的情况下,可以修改Linux 的内核相关TCP 参数,来最大的提高服务器性能.当然,最基础的提高负载问题,还是升级服务器硬件了,这是…
Linux本地内核提权漏洞复现(CVE-2019-13272) 一.漏洞描述 当调用PTRACE_TRACEME时,ptrace_link函数将获得对父进程凭据的RCU引用,然后将该指针指向get_cred函数.但是,对象struct cred的生存周期规则不允许无条件地将RCU引用转换为稳定引用. PTRACE_TRACEME获取父进程的凭证,使其能够像父进程一样执行父进程能够执行的各种操作.如果恶意低权限子进程使用PTRACE_TRACEME并且该子进程的父进程具有高权限,该子进程可获取其父…
1. 说明 正在使用的阿里云服务器报了几个内核漏铜,使用自带[一键修复]需要额外的支付费用,所以尝试采用升级系统内核的方式来修复漏洞. 1.1 服务器参数 操作系统:CentOS 7.4 64位 当前内核版本:Linux 3.10.0 1.2 ELRepo ELRepo是一个为Linux提供驱动程序和内核映像的存储库. 这里的升级方案就是采用ELRepo提供的内核通道. ELRepo官网:http://elrepo.org/tiki/tiki-index.php 2. 升级内核 2.1 当前内核…
有些人可能会认为 macOS 和 Linux 内核之间存在相似之处,因为它们可以处理类似的命令和类似的软件.有些人甚至认为苹果公司的 macOS 是基于 Linux 的.事实上是,两个内核有着截然不同的历史和特征.今天,我们来看看 macOS 和 Linux 的内核之间的区别. macOS 内核的历史 我们将从 macOS 内核的历史开始.1985 年,由于与首席执行官 John Sculley 和董事会不和,史蒂夫·乔布斯Steve Jobs离开了苹果公司.然后,他成立了一家名为 NeXT 的…
Linux编译内核 Ubuntu18.04 -2020.11.04 关闭虚拟机并备份 首先关闭虚拟机,其次直接找到.vmdk所在目录,并压缩该目录实现备份 下载内核源码 Linux内核官网:https://www.kernel.org/,点击图标下载,摘自https://blog.csdn.net/qq_36290650/article/details/83052315 将压缩包移动到虚拟机中,并备份/boot/grub/grub.cfg文件这个文件他负责启动你的Ubuntu系统,你编译好内核之…