试图通过修补/安装RT Linux来修改内核,从而使我的通用Ubuntu成为实时Ubuntu,但找不到直接的设置。有人可以帮忙吗?
答案 0 :(得分:5)
这里是Ubuntu 19.10及更高版本,我修补了Linux 5.4.5 rt内核补丁,因为Linux 5.3(Ubuntu 19.10的基础)没有rt内核补丁。
0。建立工作目录
# Make dir and move to working directory
$ mkdir ~/kernel && cd ~/kernel
1。下载内核和补丁程序
从https://www.kernel.org/下载内核和rt补丁。 您可以在下面获得这些信息:
(内核)https://www.kernel.org/pub/linux/kernel/
(rt补丁)https://www.kernel.org/pub/linux/kernel/projects/rt/
请注意,rt修补程序和内核的版本应该相同。我使用了 linux-5.4.5.tar.gz 和 patch-5.4.5-rt3.patch.gz 。
如果您将这些文件下载到〜/ kernel,请跳过以下内容,继续执行步骤2。
# Move these zip file to ~/kernel
$ cd ~/Download
$ mv linux-5.4.5.tar.gz patch-5.4.5-rt3.patch.gz ~/kernel/.
2。提取内核源代码并修补rt内核
# Extract kernel sources
$ cd ~/kernel
$ tar xvzf linux-5.4.5.tar.gz
# Patch rt kernel
$ cd linux-5.4.5
$ gzip -cd ../patch-5.4.5-rt3.patch.gz | patch -p1 --verbose {}
3。安装所需的软件包
要使用menuconfig GUI,需要libncurses-dev
。编译内核时将需要flex
和bison
。
# For using gui
$ sudo apt install libncurses-dev libssl-dev
# For compiling kernel
$ sudo apt install flex bison
4。为RT配置内核
$ make menuconfig
并进入menuconfig GUI。
# Make preemptible kernel setup
General setup ---> [Enter]
Preemption Model (Voluntary Kernel Preemption (Desktop)) [Enter]
Fully Preemptible Kernel (RT) [Enter] #Select
# Select <SAVE> and <EXIT>
# Check .config file is made properly
请注意,GUI配置上不再有Check for stack overflows
选项。您可以通过搜索“溢出”进行检查。在图形菜单上键入 / 和overflow
。
5。编译内核
$ make -j20
$ sudo make modules_install -j20
$ sudo make install -j20
6。使内核图像更亮
如@ mrRo8o7前面所述,大initrd
映像可能会发生内核崩溃。因此,您可以通过以下方式解决此问题:
# Strip unneeded symbols of object files
$ cd /lib/modules/5.4.5-rt3 # or your new kernel
$ sudo find . -name *.ko -exec strip --strip-unneeded {} +
# Change the compression format
$ sudo vi /etc/initramfs-tools/initramfs.conf
# Modify COMPRESS=lz4 to COMPRESS=xz (line 53)
COMPRESS=xz
[:wq]
然后更新initramfs
$ sudo update-initramfs -u
7。验证并更新grub
验证该目录并更新grub。
# Make sure that initrd.img-5.4.5-rt3, vmlinuz-5.4.5-rt3, and config-5.4.5-rt3 are generated in /boot
$ cd /boot
$ ls
# Update grub
$ sudo update-grub
8。重新启动并验证
$ sudo reboot
# After the reboot
$ uname -a
然后您可以检查新的内核版本
Linux [PROMPT] 5.4.5-rt3 …
答案 1 :(得分:2)
第0步-创建工作目录
创建工作目录
#Move to working directory
mkdir ~/kernel && cd ~/kernel
步骤1-下载内核和补丁程序
转到https://www.kernel.org/pub/linux/kernel/并将所需的内核版本下载到〜/ kernel。同样,转到https://www.kernel.org/pub/linux/kernel/projects/rt/并下载与下载的内核版本相同的RT补丁。我使用的内核和补丁是linux-4.9.115.tar.gz和patch-4.9.155-rt93.patch.gz。
第2步-解压缩内核
tar -xzvf linux-4.9.115.tar.gz
第3步-修补内核
#Move to kernel source directory
cd linux-4.9.115
gzip -cd ../patch-4.9.115-rt93.patch.gz | patch -p1 --verbose
第4步-启用实时处理 此步骤需要libncurses-dev
sudo apt-get install libncurses-dev libssl-dev
下一条命令在终端中启动图形菜单以生成配置文件。
make menuconfig
转到位置并进行相应的更改
##Graphical Menu##
Processor type and features ---> [Enter]
Preemption Model (Voluntary Kernel Preemption (Desktop)) [Enter]
Fully Preemptible Kernel (RT) [Enter] #Select
[Esc][Esc]
Kernel hacking --> [Enter]
Memory Debugging [Enter]
Check for stack overflows #Already deselected - do not select
[Esc][Esc]
[Right Arrow][Right Arrow]
<Save> [Enter]
.config
<Okay> [Enter]
<Exit> [Enter]
[Esc][Esc]
[Right Arrow]
<Exit> [Enter]
第5步-编译内核
make -j20
sudo make modules_install -j20
sudo make install -j20
第6步-验证并更新 验证是否在/ boot目录中生成了initrd.img-4.9.115-rt93,vmlinuz-4.9.115-rt93和config-4.9.115-rt93并更新了grub。
cd /boot
ls
sudo update-grub
验证/boot/grub/grub.cfg
文件中是否存在包含文本“ menuentry'Ubuntu,带有Linux 4.9.115-rt93'”的菜单条目
要在grub中更改默认内核,请将GRUB_DEFAULT
中的/etc/default/grub
值编辑为所需的内核。
注意::0是第一个菜单项
7-重新启动并验证
sudo reboot
系统重新启动后,打开终端并使用uname -a
检查内核版本,它应该类似于以下内容
Linux abhay-home 4.9.115-rt93 #1 SMP PREEMPT RT Mon May 13 03:32:57 EDT 2019 x86_64 x86_64 x86_64 GNU/Linux
注意:“ SMP PREEMPT RT”验证您的系统正在运行实时内核。
答案 2 :(得分:1)
在安装了新内核之后(就像@Abhay Nayak一样),我陷入了内核恐慌。 问题是initrd图像太大。 我用以下方法解决了这个问题:
步骤1-剥离内核模块
cd /lib/modules/<new_kernel>
find . -name *.ko -exec strip --strip-unneeded {} +
第2步-更改initramfs压缩
编辑文件/etc/initramfs-tools/initramfs.conf:
COMPRESS=xz
第3步-更新initramfs
sudo update-initramfs -u
sudo update-grub2