我的总体目标是构建一个可以修改的RT_PREEMPT内核。作为中间步骤,我正在尝试构建和安装一个通用的、非RT_PREEMPT内核(并作为grub条目运行)。但我认为下面的问题是正确的,即使没有提到RT_PREEMPT。
下面是一个场景:
Loading initial ramdisk ...
error: out of memory.
Press any key to continue ...如果我按下一个键,这个过程在内核恐慌之前会继续很短时间,因为它不能挂载根。我对Linux很陌生,但这似乎是一件非常基本的事情,它应该能工作。所以我做错了什么,但不知道是什么。内存不足的错误似乎并不常见,所以我在这里请求帮助。下面是我的流程的更多细节:
Linux sdcc13 5.10.0-11-amd64 #1 SMP Debian 5.10.92-1 (2022-01-18) x86_64 GNU/Linux这个部分有点让人困惑,但我认为这意味着这是一个版本5内核、补丁级别10和子级别92。在kernel.org上,我认为最接近的版本是:
longterm: 5.10.93 下面是我使用的命令:
wget https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.93.tar.xz
xz -cd linux*.tar.xz | tar xvf
cd linux-5.10.93/
cp /boot/config-$(uname -r) .config
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
make -j11
sudo make modules_install
sudo make install
sudo reboot然后,如上面所述,重新启动失败。我确实需要编辑.config来修复CERT问题,但我不会更改任何其他内容。这似乎是难以置信的通用,似乎它应该是可行的,所以任何帮助都是值得赞赏的。我也尝试过make menuconfig和make oldconfig作为这个过程的一部分,但是结果是一样的。我遗漏了什么?
我终于得到了Debian指令(增加了几行)。因此,要构建与股票debian 11系统相同的内核,我就是这样做的。最可怕的是,您必须删除股票内核,所以最好在执行此操作之前至少有一个不同的内核:
sudo apt-获取安装构建-基本的fakeroot
sudo apt-get build linux
apt-get源代码linux
cd Linux5.10.92/
fakeroot使-j10 -f debian/rues.gen二进制-arch_amd64 64
数独apt删除--清除linux-映像-5.10.0-11-amd64 64-无签名
数独linux-image-5.10.0-11-amd64-unsigned_5.10.92-1_amd64.deb -i
数独重启
谢谢你的帮助。
发布于 2022-01-26 15:35:41
我建议使用Debian的文档来构建内核;
https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official
您可能希望从内核源代码包构建,而不是从“原始的”kernel.org linux内核源构建。您试图构建内核的方式并不是真正推荐的。
您还可以在这里找到debian 11 / bullseye的preempt内核包和内核源代码包;
https://packages.debian.org/bullseye/linux-image-5.10.0-10-rt-amd64
您应该能够使用这个模板为Debian构建合适的-rt包。我建议沿着这条路走下去,而不是在kernel.org源代码上乱搞,手动地做每件事。
https://unix.stackexchange.com/questions/688041
复制相似问题