🔧 第一步:安装普通 Ubuntu 虚拟机#
如果还没安装系统,可按下面步骤:
# 创建虚拟磁盘
qemu-img create -f qcow2 ubuntu24.qcow2 20G
# 启动并加载 ISO 安装
qemu-system-x86_64 \
-enable-kvm \
-cpu host -smp 4 -m 4096 \
-hda ubuntu24.qcow2 \
-cdrom ubuntu-24.04-live-server-amd64.iso \
-boot d \
-net nic -net user \
-serial mon:stdiobash🧱 1. 在服务器上编译好实时内核(适用于虚拟机)#
✅ 1.1 下载源码和补丁#
sudo apt update
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev bc wget curl
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.tar.xz
tar -xf linux-6.8.tar.xz
cd linux-6.8
wget https://cdn.kernel.org/pub/linux/kernel/projects/rt/6.8/older/patch-6.8-rt8.patch.xz
xz -d patch-6.8-rt8.patch.xz
patch -p1 < ../patch-6.8-rt8.patchbash✅ 1.2 配置内核(适配 QEMU 虚拟机)#
make defconfig
make menuconfigbash修改如下内容:
-> General setup
-> Preemption Model: (Fully Preemptible Kernel (RT))plaintextGeneral Setup -> Timers subsystem -> Timer tick handling 设置为 Full dynticks system General Setup -> Timers subsystem 开启 High Resolution Timer Support General Setup -> Preemption Model 设置为 Fully Preemptible Kernel (Real Time) Processor type and features -> Timer frequency 设置为 1000 HZ Device Drivers -> staging drivers 设置为 不开启 ——[ ] 默认开启,按N取消
修改.config的安全启动密钥配置内容:
CONFIG_SYSTEM_TRUSTED_KEYS=“”
CONFIG_SYSTEM_REVOCATION_KEYS=“”plaintext修改.config的debug内容:
CONFIG_DEBUG_INFO=n
不然新内核带debug信息超大!
✅ 1.3 编译 bzImage 和模块#
make -j$(nproc)
make INSTALL_MOD_PATH=./modroot modules_installbash这将得到:
arch/x86/boot/bzImage(可引导内核)modroot/lib/modules/6.8.0-rt8/(内核模块)
📦 2. 将编译产物复制到虚拟机中#
假设你虚拟机磁盘为 ubuntu24.qcow2,挂载虚拟磁盘 qcow2,手动复制文件(推荐)
# 在编译服务器上,挂载 qcow2
sudo apt install libguestfs-tools
sudo guestmount -a ubuntu24.qcow2 -i /mnt
sudo -i
# 拷贝 bzImage 和 modules
cp arch/x86/boot/bzImage /mnt/boot/vmlinuz-6.8.0-rt8
cp -r modroot/lib/modules/6.8.0-rt8 /mnt/lib/modules/
# 也可生成 initrd(可选)
chroot /mnt update-initramfs -c -k 6.8.0-rt8
chroot /mnt update-grub
# 卸载磁盘
sudo guestunmount /mntbash🚀 3. 启动虚拟机并选择新内核#
QEMU 启动虚拟机:#
qemu-system-x86_64 \
-enable-kvm \
-cpu host -smp 4 -m 4096 \
-hda ubuntu24.qcow2 \
-net nic -net user \
-serial mon:stdiobash如果 /boot/grub/grub.cfg 配置正确,系统应能识别 vmlinuz-6.8.0-rt8 自动启动。否则在启动菜单中选择。
![[51bffe12671bc853c3e74eb2228ceaf8.png]]
✅ 解决方法:#
在原始编译机器或虚拟机里,执行:
sudo update-initramfs -c -k 6.8.0-rt8bash然后确保生成的 /boot/initrd.img-6.8.0-rt8 一并拷贝到目标系统的 /boot/ 下。
或手动生成:
sudo mkinitramfs -o /boot/initrd.img-6.8.0-rt8 6.8.0-rt8bash并更新 GRUB:
sudo update-grubbash![[6022c08f3d82624e11f354f887abe920 2.png]]
通过 grub-set-default 设置默认内核(推荐)#
这个方法最安全,适用于 Ubuntu 的默认 GRUB 引导流程。
步骤如下:#
- 查看当前 GRUB 菜单项编号:
grep "menuentry" /boot/grub/grub.cfg | cut -d "'" -f2bash示例输出:
Ubuntu, with Linux 6.8.0-rt8
Ubuntu, with Linux 6.8.0-rt8 (recovery mode)
Ubuntu, with Linux 6.8.0-24-generic
Ubuntu, with Linux 6.8.0-24-generic (recovery mode)text- 设置默认项为 RT 内核:
sudo grub-set-default "Ubuntu, with Linux 6.8.0-rt8"bash- 更新 GRUB 并重启:
sudo update-grub
sudo rebootbash❓验证默认启动项:#
sudo grub-editenv listbash会看到:
saved_entry=Ubuntu, with Linux 6.8.0-rt8text即代表默认启动项设置成功。
✅ 4. 验证实时内核#
uname -a
# 应该是 Linux 6.8.0-rt8
cat /sys/kernel/realtime
# 输出应为 1,表示实时模式已启用bash