[Audio Arch] 1. 使用实时内核

这是什么鬼?

这是ArchWiki对于实时内核的定义:

Realtime applications have operational deadlines between some triggering event and the application’s response to that event. To meet these operational deadlines, programmers use realtime operating systems (RTOS) on which the maximum response time can be calculated or measured reliably for the given application and environment. A typical RTOS uses priorities. The highest priority task wanting the CPU always gets the CPU within a fixed amount of time after the event waking the task has taken place. On such an RTOS the latency of a task only depends on the tasks running at equal or higher priorities, all other tasks can be ignored. On a normal OS (such as normal Linux) the latencies depend on everything running on the system, which of course makes it much harder to be convinced that the deadlines will be met every time on a reasonably complicated system. This is because preemption can be switched off for an unknown amount of time. The high priority task wanting to run can thus be delayed for an unknown amount of time by low priority tasks running with preemption switched off.

好吧我知道你们是不会看的:) . 说人话, 实时内核能够保证在确定的(较低的)时间内完成任务. 因此, 对于专业类音频应用,实时内核能降低音频失真的发生几率.

但是,依照 JACK 官网的FAQ[1],实时内核并不是必须的. Linux主线内核也提供了 realtime 调度支持并能够提供一个相对来说合理的任务延迟. 因此,除非你能明确感受到你的音频有点失真, 否则其实没什么必要.

还有兴趣? Just do IT!

安装内核

很方便的是, AUR 里面已经提供了 linux-rt 软件包. 如果你有 yaourt, 直接装就是了:
yaourt -S linux-rt
会出现一些 GPG 错误. 这是因为部分文件是由实时内核的维护者签名的, 而这些签名并没有被引入 Arch Linux 系统的密钥库中. 手动添加一下:(记得查一下即将添加的key!):
gpg --recv-keys --keyserver hkp://pgp.mit.edu /*Missing keys*/
现在就可以重启安装了.

编译和安装过程可能长达数小时. 你可以在这段时间内干点别的.

如果没有报错,pacman完成安装的话,内核应该就安装完成了. 但是在实际使用之前,我们需要先配置一下引导程序.

将新内核添加到引导程序

我个人使用的是 systemd-boot, 所以这里介绍的是在 systemd-boot 下的使用方式. 如果你用的是其他引导程序, 可以去ArchWiki瞧瞧.

首先,进入 /boot

如果安装成功了,你应该会看到这些:

我们需要把这两个东西添加进启动项中. 至于我们已经有一份 Arch Linux 的启动项了,我们只需要复制一份并稍作修改即可.

这是我的文件:

保存.

如果你(和我一样)启动了 Secure Boot 的话,别忘了签名内核~

最后,重启一下. 应该会出现一条写着 Arch Linux with Real-time Kernel 的启动项. 选择它,启动,完成!

参考资料

感谢阅读! 许多在线文档促成了此文. 感谢它们的贡献者们.

点赞
  1. xlc说道:

    说起来那份引导文件应该是这样吧?
    option root=PARTUUID=[partuuid] rw
    如果少了PARTUUID的话应该是有问题来着,因为UUID也能引导

发表评论

电子邮件地址不会被公开。 必填项已用*标注