在Ubuntu18.04和Ubuntu20.04编译Multi-clock步骤(从安装系统开始)

背景

该内核来自于这篇论文
为什么不用最新的Ubuntu22.04
因为在Ubuntu22.04上编译该内核出现的报错笔者没有解决。当时解决方案是需要在.config文件添加CONFIG_PREEMPT=y和CPU抢占有关导致这个报错解决后又出现下一个报错并且指向某个内核的文件需要修改就没有继续了。

不过注意论文里用的是CentOS7如果用deb系列那就Ubuntu20.04最方便。

系统安装

下载镜像

直接去官网下载速度很慢下载过阿里云的镜像但是也遇到问题了最保险且快速的镜像下载是清华大学开源软件镜像站页面下滑找到u开头的发布版本。
在这里插入图片描述
点进去后选择桌面版镜像
在这里插入图片描述

制作启动盘

使用rufus制作启动盘下载地址下载第一个即可。
在这里插入图片描述
下载后打开其他选项都默认就好了。
在这里插入图片描述

BIOS设置

一般开机在显示电脑品牌时按住F12或者F2还有少数是Del键可以进入BIOS设置变成U盘启动。而对于Windows10和11还可以从系统进入这样更加方便图文教程具体步骤如下搜索框搜索BIOS点击更改高级启动选项——>点击高级启动下面的立即重新启动——>等待几秒黑屏进入蓝色界面点击疑难解答——>选择点击高级选项——>选择点击UEFI固件设置——>最后一步点击重启等待电脑直接进入BIOS界面。

如果看不见启动盘可能是Secure Boot处于Enable的状态改为Disable看看。

如果上面两种方式都没有成功那么可以电话咨询该品牌的售后他们会热心且顺畅的教你。

系统分区

安装建议选择中文之后不用配置键盘啥的。建议选择最小安装就够了。记得安装时不要联网会很慢很慢。磁盘至少需要50G容量

到了分区选择的时候如果是整个系统重置直接选第一个最简单了
在这里插入图片描述
如果是双系统或者虚拟机以及其他一个用户自己用建议分区尽量少如果有多余的50G容量请留出空白磁盘不急着分区。目的是遇见提示文件系统空间不足而编译失败, 则会有一行的"已用%"为100%(或者百分比最大且容量最大的那一行, 应该是/dev/sda编号的某一个)。记住这一行的名字之后去磁盘扩容。

当要是出现Out of memory的黑屏或者屏幕卡住没办法操作的情况
在这里插入图片描述
不用强制重启这里给出安全重启的方法同时按住Ctrl+Alt不要放再依次按下SysRq(有的是PrtSc)、R、E、I、S、U、B键之后系统会安全重启。

安装QQ方便传文件需要的话

  1. 在Firefox内搜索QQ在QQ安装的网页滑到最底端就会有Linux版本安装入口。
  2. 选择X64、deb格式下载。
  3. 下载完成后进入文件所在位置输入命令sudo dpkg -i linuxqq_2.0.0-b2-1089_amd64.deb 注意大家版本不同可以输入linuxqq后按Tab键补全。

ARM64是ARM中64位体系结构ARM属于精简指令集体系汇编指令比较简单。x64是x86系列中的64位体系是x86_64Intel设计和AMD64AMD设计的简称。x86属于复杂指令集体系汇编指令较多。属于两种不同的体系。

rpm包主要用于redhat及分支如redhatcentosFedora等而deb包主要用于debian及分支如debianubuntu等。

换源

依然是使用清华源选择对应版本就行网页上有教学怎么换。
在这里插入图片描述
换完后使用sudo apt-get update更新

安装分区管理工具gparted

sudo apt-get install gparted
sudo gparted //启动工具

可以拖动上边的的条形框或者输入新大小来扩展磁盘大小
在这里插入图片描述

内核编译相关依赖下载

这是内核编译通用依赖

sudo apt-get install make gcc g++ flex bison libncurses-dev build-essential kernel-package libssl-dev libc6-dev bin86 qttools5-dev libelf-dev -y

在readme文件上还有

Install required packages

  • IPMCTL
  • Installation: https://docs.pmem.io/ipmctl-user-guide/installing-ipmctl/installing-ipmctl-packages-on-linux
  • NDCTL
  • Installation: https://docs.pmem.io/ndctl-user-guide/installing-ndctl/installing-ndctl-packages-on-linux

前者在Ubuntu19及以后的版本都能安装而之前的版本需要自己编译。后者旧版在添加PPA源之后能安装。

Ubuntu20.04

相比较而言这个版本安装要省事很多直接输入命令

sudo apt install ipmctl
sudo apt install ndctl daxctl

Ubuntu18.04

需要参考官方链接在 Linux 上从源代码构建和安装 IPMCTL网页下滑还有一些常见错误的处理方案。

安装所需实用程序

sudo apt update
sudo apt install wget git cmake pkg-config autoconf doxygen libtool build-essential

安装libsafec-devel

然后添加一个额外的ppa相当于添加了一个只包括libsafec的公网库否则会出现说找不到的报错如果该repository中没有该package则会抛出Error. E: Unable to locate package。

sudo add-apt-repository ppa:jhli/libsafec
sudo apt update
sudo apt install libsafec-dev libsafec-3.5.3

Personal Package Archive, 意思是个人包档案。PPA可以提供新版本的软件以及在Linux官方库中没有的软件。PPA就是一种repository对于Linux系统来说Repository就是个文件仓库包含了各个软件的信息例如版本号校验码(checksum)分为以下四种组成部分

  • Main: 标准支持的免费和开源的软件
  • Universe: 社区维护的免费和开源的软件
  • Restricted: 对各个设备的专有驱动
  • Multiverse: 受限于版权或法律条目的软

对于Ubuntu来说只需要保存这条链接存放在/etc/apt/source.list中就能够找到所有属于该repository的软件。对于用户来说只需将目标软件的PPA repository添加到sources.list中更新repository列表后便可以找到和安装。有人得到了该软件的源码在源码上制作PPA。

使用PPA并不会修改原有的sources.list文件而是在/etc/apt/sources.d目录下创建两个文件。删除PPA在Settings > Software & Updates > Other Software中可以看到选中的PPA链接。若取消选中/etc/apt/sources.list.d则会注释该条目。若选择Remove/etc/apt/sources.list.d中则会删除该条目。

安装libndctl-devel

下一个依赖安装倒是顺利sudo apt install libndctl-dev

安装ruby-asciidoctor

之后安装又会出现报错但是连续两次报错就连续两次输入报错中推荐安装的命令即可以成功。

sudo apt install ruby
sudo gem install asciidoctor asciidoctor-pdf --pre

在这里插入图片描述

Build&Install

依赖都装好后开始编译和安装

cd ~
wget https://github.com/intel/ipmctl/archive/refs/tags/v02.00.00.3885.zip
unzip v02.00.00.3885.zip 
cd ipmctl-02.00.00.3885/
mkdir output && cd output
cmake -DRELEASE=ON -DCMAKE_INSTALL_PREFIX=/ ..
make -j all
sudo make install

最后验证一下安装成功了没输入ipmctl会显示详细信息。
在这里插入图片描述

下载源码

wget https://github.com/sylab/multi-clock/archive/refs/heads/main.zip
unzip main.zip
cd multi-clock/src //进入源码的文件编译需要先找到Kconfig文件

内核编译

开启内核配置选项

一般采用sudo make menuconfig个人觉得这个页面太难找了还是qt的界面方便一些。

sudo make xconfig

按照readme上的
Enable Multi-Clock for Tiered Memory System to compile the MULTI-CLOCK kernel.
Following are the other required configurations need to be eanbled for MULTI-CLOCK:

  • allow for memory hot-add //已默认开启但可以检查一下
  • Device memory (pmem, HMM, etc...) hotplug support //已默认开启但可以检查一下
  • NVDIMM (Non-Volatile Memory Device) Support --->
    • NVDIMM DAX: Raw access to persistent memory //已默认开启但可以检查一下
  • DAX: direct access to differentiated memory --->
    • Device DAX: direct access mapping device
    • PMEM DAX: direct access to persistent memory
    • KMEM DAX: volatile-use of persistent memory
      使用Ctrl+F可以搜索但是只限于搜索一个单词不过足够定位选项了下面用图片展示这些选项的位置
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      配置选项都开启完后点击左上角file>save>quit.

修改内核配置文件

上一步操作后会生成一个.config文件当内核编译发生报错时一般会到这个文件里做修改。
在编译前都会做的修改有一个将CONFIG_SYSTEM_TRUSTED_KEYS的内容变为空。否则后面会报错的

sudo gedit .config

然后用Ctrl+F搜索ONFIG_SYSTEM_TRUSTED_KEYS改掉保存。
在这里插入图片描述
如果编译时遇到报错Makefile:988: recipe for target ‘certs’ failed还需要在这个文件里改将这个参数关闭掉CONFIG_MODULE_SIG=n
注意每次报错后重新开始内核编译都需要

sudo make mrproper
sudo make clean

然后从sudo make xconfig这一步重来

编译内核

这里j几是几个线程同时编译后面数字是CPU核数的整数倍就可这样速度会快很多。

sudo make -j8

安装内核

sudo make modules_install //这里出现报错也是需要重来
sudo make install //将自动修改GRUB配置文件

如果用make modules_install执行时报错如下的话

can't read modules.order: No such file or directory Makefile:xxxx: recipe for target '_modinst_' failed
make: *** [_modinst_] Error 1

解决办法将make 命令换用 make V=1 all 执行。

更换系统内核

使用ls -l /lib/modules/命令可以看到5.3.1-multiclock内核已经装好了。
在这里插入图片描述
GRUB 是一个用于加载和管理系统启动的完整程序。它是 Linux 发行版中最常见的引导程序bootloader。引导程序是计算机启动时运行的第一个软件。它加载操作系统的内核然后再由内核初始化操作系统的其他部分包括 Shell、显示管理器、桌面环境 等等。

sudo gedit /etc/default/grub

在文件末尾添加

GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved

注释并且修改

# GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=30

在这里插入图片描述
接着更新 grub 配置sudo update-grub
重启系统sudo reboot
在开机之前的 grub 界面中选择 Advantages for ubuntu ubuntu高级设置选项接着选择自己想要的内核版本进入便可。
uname -r 查看系统内核版本。

如果要长期使用这个内核那就需要注释掉 GRUB_TIMEOUT=30 这一段代码设置 GRUB_TIMEOUT_STYLE 值为 hidden不然下次开机还会弹出 grub 界面最后更新一下配置sudo update-grub

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Ubuntu

“在Ubuntu18.04和Ubuntu20.04编译Multi-clock步骤(从安装系统开始)” 的相关文章