在另一台机器上为 Debian 构建内核:GRUB:内存不足

在另一台机器上为 Debian 构建内核:GRUB:内存不足

我访问了英特尔 Elkhartlake 的评估板。问题是这个平台并不是一个真正高效的平台。它容易变热,只有 16GB CFast 存储卡和 1GB RAM。我安装了一个内核版本为 5.10-23 的 debian bullseye,我安装了源代码包并尝试重建内核,因为系统工作并不可靠,我执行了以下操作:

#create workspace folder
mkdir kernel
cd kernel

#Copy Kernel Sources from target system to a more powerful Ubuntu Machine:
scp user@evb-elkhartlake:/usr/src/linux-source-5.10.tar.xz .

#extract Kernel Sources
tar -xf linux-source-5.10.tar.xz
cd linux-source-5.10

#copy running kernel config
scp user@evb-elkhartlake:/boot/config-5.10.0-23-amd64 ./.config

#changed CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/debian-uefi-certs.pem" to CONFIG_SYSTEM_TRUSTED_KEYS=""
#changed CONFIG_BUILD_SALT="5.10.0-23-amd64" to CONFIG_BUILD_SALT="5.10.0-23-amd64-bae-mx"

make -j$(nproc)

这构建没有问题,但是当我上传并启动内核时:

NEW_KERNEL_PATH="/boot/vmlinuz-dev"
GRUB_CONFIG="/etc/default/grub"
KERNEL_PARAMETERS="quiet splash"  # Add any additional parameters you need
KERNEL_ENTRY="GRUB_DEFAULT=$NEW_KERNEL_PATH"

# Append kernel entry and parameters to GRUB config
sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$KERNEL_PARAMETERS\"/" $GRUB_CONFIG
sed -i "s|^GRUB_DEFAULT=.*|$KERNEL_ENTRY|" $GRUB_CONFIG

update-grub

重新引导后 GRUB 停止并显示错误消息:内存不足

然后我检查了内核大小。它很大。(vmlinuz-dev 与 vmlinuz-5.10.0-23-amd64 相比)

ls -alh
total 670M
drwxr-xr-x  4 root root 4.0K Aug  9 18:03 .
drwxr-xr-x 19 root root 4.0K Aug  8 17:03 ..
...
-rw-r--r--  1 root root 6.8M Jul 28 00:17 vmlinuz-5.10.0-23-amd64
-rw-r--r--  1 root root 6.8M Aug  8 18:19 vmlinuz-5.10.0-23-amd64-official
-rw-r--r--  1 root root 6.6M Sep 23  2021 vmlinuz-5.10.0-8-amd64
-rw-r--r--  1 root root 533M Aug  9 18:03 vmlinuz-dev

我将内核配置上传到:https://pastebin.com/p4CtiS4N

谁能告诉我什么会导致基本上重建时的内核大小?我以前从未在非 Debian 系统上构建过 Debian。 (无法更改操作系统,因为我们需要使用 IT 部门批准的映像。)

答案1

您从哪里获取放置的文件/boot/vmlinuz-dev?和 是同一个文件吗 (kernel source dir)/arch/x86/boot/bzImage

说什么file /boot/vmlinuz-dev

您可能不小心获取了包含所有调试符号的版本。在分析故障转储和进行其他调试时,它可能很有用,但主内核映像文件绝对不应该那么大。

相关内容