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.jb51.cc/article/p-rfhcvauo-vg.html //很靠谱的内核编译博客

http://blog.chinaunix.net/uid-15007890-id-106930.html //内存热插拔介绍,上面已经提到

http://smilejay.com/2011/05/linux-kernel-configuration/ //内核编译

http://blog.chinaunix.net/uid-7525568-id-3453610.html //内核配置及编译详细过程,参数也有讲到

http://www.cnblogs.com/jack204/archive/2012/02/21/2361661.html //内核编译,貌似是个总结

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、安装SSH和配置SSH无密码登录四、安装Java环境1. 安装JDK2. 配置JDK环境3. 检验安装五、安装单机Hadoop1. 下载安装Hadoop2. 运行示例总结前言本文安装的 Hadoop 及 Java 环境基于林子雨老师的《大数据技术原理与应用(第3版)》中所要求,其中Java 版本为1.8.0_301,Hadoop 版本为3.3.1,其他版本的安装请参考其他博客。..
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html  运行django出现错误信息:[2016-02-16 14:33:24,476 pyinotify ERROR] add_watch: cannot watch /usr/local/lib/python2.7/dist-packages/django/contrib/sessio...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失了,如下:别着急,以下教你如何找回之前的虚拟机:1、点击控制,然后选择注册,找到虚拟机的安装目录,比如:C:UserstxVirtualBox VMs,然后选择需要找回的虚拟机vbox,点击打开按钮即可:2、如果打开后报错,则执行第三步:3、删除ubuntu.vbox,然后将ubuntu.vbox-prev重命名为ubuntu.vbox,然后再执行第二步即可...
参见:https://blog.csdn.net/weixin_38883338/article/details/82153933 https://blog.csdn.net/github_39533414/article/details/85211012
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netplan 基于 YAML 的配置系统,使得配置过程非常简单。Netplan 替换了我们之前在 Ubuntu 中用于配置网络接口的旧配置文件/etc/network/interfaces。在本文中,我们将学习如何使用 Netplan 在 Ubuntu 中配置网络。我们将看到静态和动态 IP 配置。我将使用 Ubuntu 18.04 LTS 来描述本文中提到的过程。使用 Netplan 配置网络您可以在/etc
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问,该 URL 代表一种“替代名称”,用于标识提供该服务的服务器的 IP 地址和端口。同一台机器可以同时在不同的端口上提供不同的服务。出于安全原因,可能需要屏蔽 Web 服务的端口号,从而在外部显示与服务实际侦听的端口号不对应的端口号。感谢本教程,您将能够管理您的服务器端口,配置集成在 Ubuntu 中的 UFW 防火墙。特别是,按照指南的说明,您将学习将来自某个端口的请求转发到另一个端口(端口转发),同时使用后者提供的.
Observium 是一个免费和开源的 sa 网络管理和监控系统工具。我们可以使用 SNMP 收集数据,它允许监控所有网络设备。它提供了一个简单易用的 Web 界面。它基于 PHP 并使用 MySQL 数据库来存储数据。在 ubuntu 上设置 Observium 有几个步骤:第 1 步:更新系统。apt-get update第 2 步:安装 PHP 和模块。apt install wget apache2 php php-{pear,cgi,common,curl,mbstring,g
从 20.04 开始,Ubuntu 决定更新实时服务器安装程序以实现自动安装规范,以便能够仅使用 Subiquity 完全自动化安装过程。Subiquity 是新的服务器安装程序(又名“服务器无处不在”),旨在取代之前基于 debian-installer 的经典系统。本文说明了如何使用 Packer 和 Proxmox 上的 Subiquity 生成 Ubuntu Server 20.04 图像模板。介绍Subiquity 仅在live图像文件版本中可用(例如ubuntu-20.0...
Ubuntu 将停止支持 Debian 安装程序(预置)。Ubuntu Server 20.04 附带了一种新的自动化操作系统安装方法,称为带有 subiquity 服务器安装程序的自动安装。这篇文章展示了使用新安装程序构建的打包程序。此设置仅适用于 Ubuntu-20.04 live-server 而不是旧版。SubiquitySubiquity 是 Ubuntu 服务器的新自动安装程序,它是在 18.04 中引入的。自动安装的设置由 cloud-init 配置提供。如果设置,将从配置文件.
此页面的目的是提供在您机器上的 VM 中执行自动安装的简单说明。此页面假设您使用的是 amd64 架构。s390x也有一个版本。通过网络提供自动安装数据这种方法是最容易推广到完全基于网络的安装的方法,在这种安装中,机器会进行网络引导,然后自动安装。下载 ISO转到20.04 ISO 下载页面并下载最新的 Ubuntu 20.04 实时服务器 ISO。挂载 ISOsudo mount -r ~/Downloads/ubuntu-20.04-live-server-amd64...
FTP 或文件传输协议是一种非常古老的知名协议,用于在客户端和服务器之间传输文件。它也是一个不安全的协议,仅在没有 TLS 的情况下使用。在本教程中,我们将为 TLS 配置 vsftpd,它允许我们安全地使用 FTP。如今,FTP 经常被更安全的协议所取代,例如 SFTP 或 SCP。但是,如果您需要在服务器上使用 FTP,vsftpd(Very Secure FTP Daemon)是一个完美的选择。在本教程中,我们将学习如何在基于 Ubuntu 20.04 的服务器上使用 vsft
使用cloud-init快速启动来宾操作系统的能力通常与在 EC2 或 Azure 等 IaaS 中部署虚拟机相关。但是 cloud-init 不仅仅适用于远程云提供商,将 cloud-init 用于可以快速部署在 KVM 中的本地映像非常适合本地开发和测试。本文将逐步测试 KVM 上的来宾 Ubuntu 仿生云映像。先决条件作为本文的先决条件,您必须按照此处所述安装 KVM 和 libvirt。还要安装管理云图像所需的附加包:sudo apt-get install -y
Window Linux双系统安装历程今天下午搞了几个小时,可谓是困难重重,但是实际上只是被一个很小的问题困住了,其它地方都很简单。接下来简单讲一下安装的步骤以及遇到的问题。先讲一下设备状况:一台12年买的i3 window7 待报废的lenovo 笔记本一个32g的usb3.0另一台新的win10笔记本电脑磁盘分区首先要在安装双系统的电脑上,划分硬盘中的一个分区来装linxu。点击我的电脑(此电脑)->管理-> 磁盘管理比如这里我们的e盘原本有98.55g,然后还有
https://pinyin.sogou.com/linux/help.php 安装指南 Ubuntu搜狗输入法安装指南 搜狗输入法已支持Ubuntu1604、1804、1910、2004、2010
在home主文件夹里面。
格式:rm -rf 目录名字 -r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思 名称 概述 描述 选项
https://blog.csdn.net/qq_29985391/article/details/78008864 https://blog.csdn.net/wangxin0205/article
echo $ROS_PACKAGE_PATH
https://blog.csdn.net/weixin_37657720/article/details/80645991 :q! 不保存强制推出。 :wq 保存并退出。
https://blog.csdn.net/xin_101/article/details/88624726 https://blog.csdn.net/qq_15192373/article/det