供图: Shutterstock 有多种技术在竞争成为实现Linux内核热补丁的最优方案。 没人喜欢重启机器,尤其是涉及到一个内核问题的最新补丁程序。 为达到不重启的目的,目前有3个项目在朝这方面努力,将为大家提供内核升级时打热补丁的机制,这样就可以做到完全不重启机器。 Ksplice项目 首先要介绍的项目是Ksplice,它是热补丁技术的创始者,并于2008年建立了与项目同名的公司。Ksplice在替换新内核时,不需要预先修改;只需要一个diff文件,列出内核即将接受的修改即可。Ksplice公司免费提供软件,但技术支持是需要收费的,目前能够支持大部分
提问:我在安装一个设备驱动前先要安装内核头文件。怎样安装合适的内核头文件? 当你在编译一个设备驱动模块时,你需要在系统中安装内核头文件。内核头文件同样在你编译与内核直接链接的用户空间程序时需要。当你在这些情况下安装内核头文件时,你必须确保内核头文件精确地与你当前内核版本匹配(比如:3.13.0-24-generic)。 如果你的内核是发行版自带的内核版本,或者使用默认的包管理器的基础仓库升级的(比如:apt-ger、aptitude或者yum),你也可以使用包管理器来安装内核头文件。另一方面,如果下载的是kernel源码并且手动编译的,
新的内核开发周期开始了 首个内核候选版本在3.19分支上发布了,它看上去像目前最大的一个 RC1。Linus Torvalds很惊奇这么多人提交了,其实不过也很好理解。 内核开发周期因新的3.19的发布而刷新了。事实是3.18分支才几周前才发布,今天的发布并不是完全在预期中。假期要来了,很多开发者和维护人员可能会休息。一般来说RC版本每周发布一次,但是用户可能会看到一点的延误。 这个版本没有提到在Linux 3.18中确认的回归问题,但是可以确定的是,开发人员仍在努力修复中。另一方面,Linus说这是一个很大的更新,事实上这是目前为止最大的更
新的一月意味着新的稳定版Linux内核的发布,前一段时间,Linus Torvalds宣布Linux 3.18 很快就会发布了。 Torvalds在Linux内核邮件列表中解释到,由于在3.17中还存在几个令一小部分用户烦心的问题,但是绝不可以在一些人积极解决老问题时其他人无所事事。 Linux 3.18中有什么新的? Linux 3.18内核主要致力于硬件支持、电源效率、bug修复和可靠性。 如往常一样,这些内容跨度很大,容易让人迷惑 。比如:加密层多重缓冲操作 - 到气冲感知, 就像对雷蛇游戏手柄的支持。 下面我们收集了这个版本的重要的改变。这远远不是所有的,只是选取了
Linus Torvalds已经发布了最新的稳定版内核3.17。 Torvalds以他典型的放任式的口吻在Linux内核邮件列表中解释说: 过去的一周很平静,我对3.17的如期发布没有疑虑(相对于乐观的我应该早一周发布么的计划而言)。 由于假期,Linux说他还没有开始合并3.18的改变: 我马上要去旅行了- 在我期盼早点发布的时候我希望避免一些事情。这意味着在3.17发布后,我不会在下周非常活跃地合并新的东西,并且下下周是LinuxCon EU Linux 3.17有哪些新的? 最新版本的 Linux 3.17 加入了最新的改进,硬件支持,修复等等。范围从不明觉厉的 - 比如:me
偶尔总会有人指出Linux中的POSIX违规(violation),通常的回答是修复违规问题,但有时李纳斯托瓦兹认为POSIX特性是不完整的,至少他们维护Linux特性的情形下是这样的。因此,他们或许应该构建一层POSIX兼容层,即便这个分层会相对较慢和低效。 这一次,迈克尔凯利斯克(Michael Kerrisk)报告了一个影响文件操作的POSIX违规。显然,在多线程操作期间读写文件会导致竞争出现,重写其它操作的改变。 关于这是否是POSIX的一个违规存在一些讨论,但到最后又有谁关心呢?数据重写(clobbering)是很糟糕的事情。在迈克尔提交部分代码去重现这
Linux 内核补丁测试 你试过自己写内核补丁吗?本节介绍在把你的补丁包提交到 Linux 邮箱列表之前,需要做哪些操作。另外我们还会介绍如何把它发送出去。 写好代码后,编译它。把 make 过程产生的输出保存到文档中,查看新代码有没有警告信息。找到所有的警告信息,处理掉。当你的代码编译过程没有任何不正常的输出,安装这个内核,然后启动测试。如果启动正常,查看 dmesg 里面有没于错误,与老内核生成的 dmesg 日志做个比较。运行一些压力测试,请参考我们以前讲过的测试内容。如果这个补丁用于修复某个 bug,请确保真的已经修复了。如
仿真环境下进行 Linux 电源管理子系统测试 Linux 电源管理子系统在仿真环境下提供5种测试方式。这些方式仅仅在内核各层之间运行休眠的代码而不是真正的让系统进入休眠状态。有些平台不能挂起系统,比如说我们需要模拟飞机的飞行环境,这时候使用这种仿真环境就非常有用处了。 freezer - 测试停掉处理器: echo freezer /sys/power/pm_test echo platform /sys/power/disk echo disk /sys/power/state devices - 测试停掉处理器以及挂起设备: echo devices /sys/power/pm_test echo platform /sys/power/disk echo disk /sys/powe
自动测试工具 这里列出一些能满足不同需求的测试工具供你选择。本小节只是简单介绍个大概,并不提供详细操作指南。 AuToTest AuToTest 是一个全自动测试框架,存在的主要目的就是测试 Linux 内核,当然也可以用来测试其他东西,比如测试一块新硬件是否能稳定工作。AuToTest 是开源软件,以 GPL 方式授权,运行于 server-client 架构(即 C/S 架构)。你可以通过配置 server 端来对运行了 client 端的系统执行初始化、运行与监测工作,也可以自己在目标系统上让 client 运行起来。另外你可以为这个测试框架添加测试用例,详情请参考AuToTe
基本测试 安装好内核后,试试能不能启动它。能启动的话,检查 dmesg 看看有没有隐藏的错误。试试下面的功能: 网络(Wifi 或者网线)是否可用? ssh 是否可用? 使用 ssh 远程传输文件。 使用 git clone 和 git pull 命令。 用用网络浏览器。 查看 email。 使用 ftp, wget 等软件下载文件。 播放音频视频文件。 连上 USB 鼠标等设备。 检查内核日志 使用 dmesg 查看隐藏的问题,对于定位新代码带来的 bug 是一个好方法。一般来说,dmesg 不会输出新的 crit, alert, emerg 级别的错误信息,也不应该出现新的 err 级别的信息。你要注意的