ubuntu系统:18.04
当前内核:5.4.0-84-generic
待安装实时内核: 5.6.19-rt11
1、查看当前版本
uname -r
2、下载内核与补丁
一种方式从官网自己下载
- 官方内核下载地址
- 官方补丁下载地址
- 阿里镜像内核下载地址(速度快)
- 阿里镜像补丁下载地址(速度快)
另一种方式直接在终端用命令行下载
curl -SLO https://mirrors.aliyun.com/linux-kernel/v5.x/linux-5.6.19.tar.xz curl -SLO https://mirrors.aliyun.com/linux-kernel/v5.x/linux-5.6.19.tar.sign curl -SLO https://mirrors.aliyun.com/linux-kernel/projects/rt/5.6/older/patch-5.6.19-rt11.patch.xz curl -SLO https://mirrors.aliyun.com/linux-kernel/projects/rt/5.6/older/patch-5.6.19-rt11.patch.sign
下载得到这四个文件
如果是ubuntu 16.04就相应的改成实时内核5.4.19-rt10,其余ubuntu版本就找相对应版本更高的实时内核即可。
3、安装内核与补丁
1. 在下载的内核和补丁所在文件夹打开终端,记得把实时内核版本号改成自己的:
xz -cd linux-5.6.19.tar.xz | tar xvf -
cd linux-5.6.19
xzcat ../patch-5.6.19-rt11.patch.xz | patch -p1
2. 在终端中安装必须的安装包:
sudo apt-get install libncurses-dev bison flex bc libelf-devsudo apt-get install libssl-dev
3、把原内核复制到.config文件中
在boot文件夹下可以找到与当前内核版本匹配的 config 文件,例如:config-5.4.0-84-generic 。将其拷贝到当前目录~/rt_kernal/linux-5.6.19 下并命名为 .config
终端命令如下(记得把
5.4.0-84改成当前自己的内核版本):
sudo cp /boot/config-5.4.0-84-generic .config
config-5.4.0-84-generic就是下图第三个文件。
4、配置内核
make oldconfig
回车,直到出现选择的选项,选择Fully Preemptible Kernel (RT),就是下图第四个选项 然后一直回车到结束
5、编译内核
首先查看自己的电脑有多少个cpu
lscpu
可以看到我的有32个cpu,所以在下面的命令中-j后面就是32,表示编译的线程数 。编译线程数越大,编译越快。
make -j32 deb-pkg
可能会出现如下警告,不用理会。大约等待一个多小时,实时内核会自动编译好。
大概率会出现以下错误
(dpkg-buildpackage: 错误: debian/rules build subprocess returned exit status 2
scripts/Makefile.package:73: recipe for target 'deb-pkg' failed
make[1]: *** [deb-pkg] Error 2
Makefile:1429: recipe for target 'deb-pkg' failed):解决方法: 在linux-5.6.19文件中,Ctrl+h显示隐藏文件,选择.config文件打开。直接修改 .config 文件,注释掉以下四项:
- CONFIG_MODULE_SIG_ALL=y
- CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
- CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
- CONFIG_DEBUG_INFO=y
然后重现执行命令“make -j32 deb-pkg”编译内核,编译刚开始需要按回车键。
6.安装 deb 包
经过上面的编译过程,应该会在和linux压缩包同目录下生成3个或者4个.deb格式的安装包,在该文件夹下打开终端,安装所有生成的.deb包
sudo dpkg -i linux-headers-5.6.19-rt11_5.6.19-rt11-1_amd64.deb linux-image-5.6.19-rt11_5.6.19-rt11-1_amd64.deb linux-libc-dev_5.6.19-rt11-1_amd64.deb
7. reboot 并验证
reboot
reboot
然后进入 ubuntu 高级选项,发现已经有了刚刚安装的实时内核!
enter 启用该内核(不带有recovery mode字样的那一个),开机后uname -r
查看当前系统内核
在终端输入 gedit /sys/kernel/realtime 进入一个文件,如果里面是有一个“1”,就说明实时内核就安装完成了。
gedit /sys/kernel/realtime
———————————————————————————————————
如果后续要使用Franka机器人,对于实时内核需要添加以下操作
1.在终端执行以下命令
sudo addgroup realtime sudo usermod -a -G realtime $(whoami)
2. 打开limits.conf文件
sudo gedit /etc/security/limits.conf
在/etc/security/limits.conf 中添加以下内容 并保存
@realtime soft rtprio 99 @realtime soft priority 99 @realtime soft memlock 102400 @realtime hard rtprio 99 @realtime hard priority 99 @realtime hard memlock 102400
8. 后续操作
- 如果要使用Franka机械臂,需要安装franka_ros,可以参考Franka环境配置——从源码安装libfranka和franka_ros
- 如果ubuntu的实时内核不能使用扩展屏,可以参考以下教程解决ubuntu不能使用扩展屏