最近编译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。

七、参考资料

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

总结

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

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

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

  1. linux多核cpu 优化,Ubuntu是否针对多核CPU进行了优化?

    问题描述 Ubuntu是否使用多核CPU(据说Windows 7会这样做)? 换句话说,它是否进行了多任务优化,以便用户可以从4+核心处理器中受益? 最佳解决思路 是的,Ubuntu针对多核CPU进行 ...

  2. Linux飞鸽传书源码,图解Ubuntu下编译安装飞鸽传书IPMsg步骤

    因为IPMsg官方网站发布的Unix/Linux版本都是源代码包,需要在Ubuntu中编译,因此,需要在本机安装开发环境. 我下载的g2ipmsg-0.9.5.tar,下载地址见http://www. ...

  3. linux 编译 suitesparse,Ubuntu下编译SuiteSparse-4.4.1和METIS-4.0.3

    ubuntu下编译caffe Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包 ...

  4. 《Linux就该这么学》学习随笔第二天——VMware虚拟机安装“该主机cpu类型不支持虚拟化性能计数器。”

    今天在安装虚拟机的时候遇到一个问题,记录下我的排查步骤以方便后来者. 问题描述: 虚机配置完成后,挂载系统镜像后开启虚拟机,虚机报错.提示"该主机cpu类型不支持虚拟化性能计数器,开启模块V ...

  5. Ubuntu下查看电脑CPU温度

    本文将给大家介绍如何在 Ubuntu下查看电脑CPU温度 1:sudo apt-get install lm-sensors hddtemp 2:sudo sensors-detect 3:senso ...

  6. 如何查看Android手机CPU类型

    如何查看Android手机CPU类型 如何查看Android手机CPU类型是armeabi,armeabi-v7a,还是arm64-v8a? 1.安装adb工具 2.手机打开"开发人员选项& ...

  7. Linux内核配置(二) :CPU类型配置

    5. Processor type and features 处理器类型及特性 5.1. Symmetric multi-processing support (SMP) 对称多处理器支持. 这将支持 ...

  8. ubuntu上编译Linux内核步骤

    一.虚拟机的准备 1.下载Ubuntu镜像 Enterprise Open Source and Linux | Ubuntu 在最左边Ubuntu Desktop处点22.04LTS下载iso文件 ...

  9. Xamarin.Android编译CPU类型选择方式

    Xamarin.Android编译CPU类型选择方式 在Xamarin.Android编译的时候,默认提供了5种CPU类型供大家选择.它们分别为armeabi.armeabi-v7a.arm64-v8 ...

最新文章

  1. Exchange 2010和Exchange 2016共存部署-3:Exchange2016部署系统要求
  2. 【译】zkSNARKs in a nutshell
  3. Linu解决oracle连接不稳定
  4. QT之QHash简介
  5. golang和php哪个性能更强,相同逻辑的php与golang代码效率对比,最好语言落谁家…...
  6. linux virt java_Linux下Java环境安装
  7. 【POJ - 1459】Power Network(网络流最大流,建图)
  8. apmserver导入MySQL_mysql数据库导入导出
  9. 在使用静态构造函数的时候应该注意几点
  10. volatile指令重排_面试:为了进阿里,重新翻阅了Volatile与Synchro
  11. C语言OJ项目参考(2963) 判断三角形
  12. SpaceX上天容易,Tesla自动驾驶难 | 凌云时刻
  13. 华为配置DHCPv6
  14. JTXQ、JTT部标模拟终端使用说明 --2 JTT808协议菜单
  15. 随机矩阵理论_随机PWM可降低噪声并减少三相逆变器应用中的辐射
  16. WPS 文件忘记保存退出找回
  17. Android SIGABRT的可能原因及开启手机Log日志
  18. 榆熙电商:拼多多商家怎样开通电子面单服务?有何优势?
  19. 怎么去视频水印?一键去除视频水印
  20. Android 更换开机logo和开机动画

热门文章

  1. java8 快排_Java 8快多少?
  2. java jvm调优_(第2部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...
  3. neo4j数据浏览器_Neo4j:在Neo4j浏览器的帮助下探索新数据集
  4. junit 测试 dao_JUnit测试Spring Service和DAO(带有内存数据库)
  5. 滑动拼图验证码操作步骤:_拼图项目:延期的后果
  6. 忽略已检查的异常,所有出色的开发人员都在这样做–基于600,000个Java项目
  7. Java EE 8,当前状态是什么:自2015年底以来已完成工作的案例研究
  8. InetAddressImpl#lookupAllHostAddr慢/挂起
  9. 开发Eclipse插件
  10. JPA和CMT –为什么捕获持久性异常不够?