linux内核编译如何选择cpu类型,Ubuntu内核编译和CPU Hot-Plug特性配置全过程及遇到问题记录...

最近编译Palacios需要linux的内核支持cpu Hot-Plug(内存热插拔)特性,无奈我机器上安装的Ubuntu10.04系统默认不支持内存热插拔特性,所以需要修改配置文件并重新编译linux内核,然后就开始了漫长的linux内核编译过程,幸好有个大神帮我,然后参考了网上很多朋友的博客,才让我快速结束了这个痛苦的经历。记于此,备忘、分享。

一、查看自己的机器是否支持cpu Hot-Plug(内存热插拔)特性

这也是我的最初的需求。

linux命令行执行以下命令:

$ cat /boot/config-$(uname -r) | grep HOTREMOVE

如果输出以下内容说明你的系统已经支持内存热插拔特性,恭喜,你不需要重新编译内核了。

CONFIG_MEMORY_HOTREMOVE=y

CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y

如果没有出现,那就得苦逼地去编译内核,走起吧骚年。

二、查看本机linux内核版本并下载目标linux内核版本

2.1 查看本机Linux内核版本:

sudo uname -r

然后去linux内核官网下载需要编译的内核,一般都选择比自己本机内核高的版本,除非你有特殊要求。 比如我本机的linux内核是linux-2.6.32.21,我选择的目标linux内核为2.6.32.27。

2.2下载内核

linux内核官网为:我是内核列表

然后选择想要下载的版本的压缩包,比如我选择的是linux-2.6.32.27.tar.bz2,如下图所示。(下图两种后缀的压缩文件都是可以的)

2.3解压内核

将下载的压缩包文件复制到/usr/src目录下,然后解压

sudo tar xvf linux-2.6.32.27.tar.bz2

三、配置内核配置文件

这一步是重中之重,直接关系到能不能编译成功以及编译后的内核能否运行起来。当时我就被卡在这一步很久。

3.1打开配置文件

ok,上一步我们已经解压完了内核压缩文件,现在进入我们解压完的新的内核文件夹中看一看。

cd /usr/src/linux-2.6.32.27

ls -a

这时候,你发现目录下并没有配置文件,也就是.config文件,因此我们要生成一个默认的配置文件,运行以下命令:

sudo make defconfig

这时候会生成当前内核的默认配置文件。当然我们还需要对它进行改进,要不然启动的时候会找不到文件系统,其次我们需要配置的cpu Hot-Plug也是在这里设置的。运行以下命令,以图形界面的形式来配置。

sudo make menuconfig

如果你在这一步报错了,提示error: curses.h: No such file or directory,说明你的机器上缺少运行menuconfig的必要类库支持。运行一下命令:

sudo apt-get install libncurses5-dev libncursesw5-dev

然后再重新make menuconfig就可以了。

3.2配置内核配置文件

进去以后看到的界面应该是这样的。(高版本可能有所不同,不过大同小异)

首先,我们先配置文件系统,如果不配置,新内核一直发现不了文件系统,重启后会黑屏然后一个光标一直在左上角闪烁或则提示找不到FileSystem。

文件系统配置如下图:

然后我们配置cpu Hot-Plug特性,

1.Processor type and features —>Meeory model —> SparseMemory 2.Processor type and features —>Allow for memory hot-add 3.Processor type and features —>Allow for memory hot-remove 4.Processor type and features —>Page migration 5.Processor type and features —>Support for hot-pluggable cpus 6.Power management and ACPI options —>ACPI(~~全称~~)Support —>Memory Hotplug

以上几项都要选上。

如果还是不太明白,可以看看官方的文档:我是官方文档

另外,还有一篇讲内存热插拔的文章,也不错。拿走拿走:满足你们,哼

至此,配置已经基本达到了我们的要求。然后一直选择Exit,最后会提示让你保存,一定要选则YES,保存。

另外,如果在配置文件中,你不知道该不该选择某一项,那么你就将光标停在那一项上,然后按H,会有惊喜哟。

四、编译及安装

好了,经历了艰难险阻,我们终于走到了这一步。现在可以编译和安装了。(以下命令均在新内核目录内执行)

4.1 编译内核

sudo make

好了,只有一句话。这个过程比较漫长,如果前面的配置文件没有问题。而且你的编译环境没有问题,那么应该是不会出问题。

如果你还没有gcc编译环境,那么你需要先执行下面的命令,安装必要的编译环境。

sudo apt-get install build-essential

4.2 编译安装内核模块

sudo make modules_install

这一步应该挺快。

4.3 安装内核

sudo make install

五、生成内核镜像及启动项

马上就要成功了。

5.1 生成内核镜像

首先来看一下这个文件夹/lib/modules/目录下的文件夹:

ls /lib/modules

该文件夹下应该会有两个文件夹,一个是你原来系统的内核模块文件,另一个是刚编译完的新内核的内核模块文件。

然后执行:

sudo mkinitramfs -o /boot/initrd.img-2.6.32.27

sudo update-initramfs -c -k 2.6.32.27

命令中的版本号对应你的新版本的版本号。

5.2 生成启动引导文件

最后就是配置启动时候的grub文件了:

sudo update-grub2

OK.大功告成。不过再来改一点点东西,然我们的grub启动的时候等几秒,而不是直接进入默认的系统。

sudo gedit /boot/grub/grub.cfg

然后找到其中所有的timeout=0或者timeout=负数的,都改成timeout=10,保存、退出。 完成。 重启机器,会出现grub界面,然后选择新内核进入就好了。

六、如果重启后无法看到grub界面怎么办。

当时我也遇到了这个问题,才开始编译内核的时候由于各种不明问题,导致编译完成重启机器后只有一个光标在闪闪闪…连grub界面都木有,连原来的系统都进不去啊!!所以贴心的我就来教你怎么解决这个问题。

直接给连接:我是秘籍

只是需要注意的是,上面教程中第一步不需要。只要一个可以装Ubuntu的U盘就可以了,就跟使用U盘安装Ubuntu一样,只不过用U盘引导起来以后不选择Istall Ubuntu,而是进第一项,试用Ubuntu。

七、参考资料

谢谢各位博客的大神们。本博客中许多内容都是摘自你们的博客。谢谢!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jsf教程_JSF范围教程– JSF / CDI会话范围

jsf教程会话作用域跨越多个HTTP请求-响应周期(理论上是无限的)。 当您需要每个HTTP请求-响应周期进行一次交互时,请求作用域在任何Web应用程序中都非常有用。 但是,当您需要对属于用户会话的任何HTTP请求-响应周期可见的对象时&…

linux查询设备文件信息失败怎么办,Linux下使用blkid命令查询设备及文件系统信息的方法...

在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。直接使用blkid可列出当前系统中所以已挂载文件系统的类型。默认情…

将MongoDB集成到您的Spring项目中

本文展示了如何通过注释配置将MongoDB集成到您的spring项目中。 我们将从Gradle配置开始。 group com.gkatzioura.spring version 1.0-SNAPSHOTbuildscript {repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugi…

linux 内存一直在增加,linux – 缓存内存和共享内存总和超过总内...

所有共享内存也计为缓存.共享内存是在内部使用tmpfs实现的. tmpfs实现为页面缓存的瘦包装器,只是没有任何后备存储(除了tmpfs是可交换的).男人自由不解释这个.至少在我的系统上(由procps-ng提供,最后更新2016-06-03).抱歉.所有man free告诉你,缓存是从/ proc / meminfo中的缓存…

vertx rest 跨域_在基于简单Vertx Rest的应用程序上为REST资源设置基本响应HTTP标头...

vertx rest 跨域我是Vert.x的新手,但作为Java开发人员(辛勤工作),与NodeJS或其他任何基于Reactor的框架/库相比,我觉得它更加有趣并且很有前途。 因此,我正在使用Vert.x实现一个非常简单的Restful API。 今…

linux rpm mysql mysql_config,Linux CentOS6 mysql rpm安装

选择操作系统及版本:点击5.6版本链接将下载好的文件上传至服务器下面开始安装:检查是是否有mysql的包# rpm -qa | grep -i mysql删除原有包# yum -y remove mysql-libs*开始安装下载好的三个文件:# rpm -ivh MySQL-server-5.6.38-1.el6.x86_6…

java 可视化_可视化Java 9模块关系

java 可视化正如我在之前的文章中所述 ,我已经在Java 9 Jigsaw构建上运行Eclipse Neon了一段时间,并且没有任何问题。 我在周末花了几个小时来修改一些模块化工具的想法。 我为Eclipse Neon写了一个小插件,可视化了各个模块之间的连接。 现…

zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...

作者:Commanderfranz,编译: kenshin通过前面两篇文章我们不仅创建的自定义IP模块还移植了Linux操作系统,今天这篇文章的内容是将这两部分联系起来,其实我们创建的myLed IP相对于Linux操作系统可以是它的一个底层设备&a…

jwt令牌_JWT –生成和验证令牌–示例

jwt令牌JWT提供了一种非常有趣的方式来表示可以验证和信任的应用程序之间的声明。 我的目标是展示一个小的样本,它使用出色的Nimbus JOSE JWT库来生成和验证令牌。 总览 进行介绍的最佳地点之一是这里 。 简而言之,要从jwt.io网站的资料中借用&#xf…

linux 二进制差分工具,打造Android万能的软件更新库

今日科技快讯阿里星球今天在苹果商店发布的更新动态显示,其将在近期停止APP内的音乐服务,用户可以通过新版本内的指引和说明,导出本地音乐。这意味着上线八个月后,阿里星球做出了一个重大决定:停止音乐服务后&#xff…

jboss eap 7_JBoss EAP 7快速入门

jboss eap 7现在, 最新的Red Hat JBoss企业应用平台7的beta版已经发布,现在是时候探索可用的Java EE 7 快速入门并使用JBoss Developer Studio (JDBS)部署您的第一个应用程序了。 快速入门演示了JBoss EAP,Java EE 7和…

lambda 分类聚合_使用Java 8 Lambda,流和聚合

lambda 分类聚合总览 在本文中,我们将介绍使用Java 8 lambda,流和聚合来过滤和处理Collection中的对象。 这篇文章中的所有代码都可以在此处的 BitBucket中找到 。 对于此示例,我们将创建许多对象,这些对象代表我们IT基础架构中的…

linux下kegg注释软件,KEGG功能注释工具 KofamKOALA 安装与使用

KEGG数据库,即京都基因和基因组百科全书(Kyoto Encyclopedia of Genes and Genomes),是系统分析基因功能、基因组信息的数据库。KofamKOALA是一个方便的KEGG功能注释工具,由创建KEGG的京都大学化研所生物信息中心学者在2019年11月发表于Bioin…

jooq_jOOQ API设计缺陷的怪异事件

jooqjOOQ是内部特定于域的语言(DSL) ,它以Java(宿主语言)建模SQL语言(外部DSL)。 这篇热门文章描述了jOOQ API的主要机制: Java Fluent API设计器速成课程 。 任何人都可以根据该文…

linux镜像文件不要大于4g,Systemback制做大于4G的Ubuntu系统镜像

1 安装Systemback依此执行以下命令。sudo apt-get updatesudo add-apt-repository ppa:nemh/systembacksudo apt-get update && sudo apt-get install systemback unionfs-fuse安装完成:2 使用Systemback生成镜像文件输入管理员密码,打开后界面以…

黑马2016java_2016年成功的Java开发人员简介

黑马2016java2015年即将结束。 现在该总结过去一年中已完成的工作和未完成的工作。 此外,现在是预测下一个2016年的好时机。 您已经猜到这篇文章是关于2016年理想的Java开发人员的。 我想给你一个惊喜,这次我更改了预测的格​​式。 为了使预测更加客观…

红帽子linux笔试题,redhat-linux面试题

redhat-linux面试题1. 在Linux系统中,以 _文件__ 方式访问设备 。2. Linux内核引导时,从文件 /etc 中读取要加载的文件系统。3. Linux文件系统中每个文件用_节点__来标识。4. 链接分…

lambda设计模式_使用lambda的装饰器设计模式

lambda设计模式随着Java中lambda的出现,我们现在有了一个新工具,可以更好地设计我们的代码。 当然,第一步是使用流,方法引用和Java 8中引入的其他简洁功能。 展望未来,我认为下一步是重新访问完善的设计模式&#xff…

linux监控nginx占用,使用zabbix 2.4 监控nginx

1、获取 Nginx 状态( HTTP Stub Status )/usr/local/nginx/sbin/nginx -V2、配置 nginx.confvim /usr/local/nginx/conf/nginx.conflocation ~ /nginx_status {stub_status on;access_log off;allow 127.0.0.1;allow 192.168.1.14;deny all;}3、编写脚本获取上面的 key 值vim /…

如何使用java代码生成_使用Java成功生成代码的7个技巧

如何使用java代码生成作为介绍,最近我有点安静,部分原因是我一直在忙于Chronicle-FIX的工作 。 这是Chronicle-Enterprise套件中的一个新的超低延迟库,我们证明了该库可以在低个位数微秒内解析和存储消息。 当然,它利用了我们的开…