因此,我正在 Debian 11 中编译 6.0.3 内核,并且我的任务是获得能够启动并具有互联网连接的尽可能最小的内核。
我发现自己总共编译了 89 次内核,并且我的内核有 599 个静态模块和 0 个可加载模块。
我正在使用该命令make nconfig
,并且我已经上下搜索了禁用 GUI 的部分,但我找不到它。我的操作系统仍然使用 GUI 启动,我想禁用它,因为我确信我可以通过这种方式删除很多模块并使我的内核变得更小。
有人知道菜单的哪个部分有这个选项吗?
编辑:
任务完成了,我最终得到了 533 个静态模块 + 0 个动态模块。
我确实无法删除更多模块,并且 GUI 仍在工作,并且菜单中没有任何部分可以禁用它。
你一切都好,谢谢!
答案1
要构建最小内核,您应该使用make tinyconfig
而不是make nconfig
.
要禁用图形界面,请使用:
sudo systemctl set-default multi-user.target
恢复:
sudo systemctl set-default graphical.target
但它不会使内核变小。
答案2
您无法在内核配置中“禁用 GUI”,因为内核不会以任何对您的要求有意义的方式管理 GUI。
内核处理设备驱动程序、最低级别的网络交互以及内存和文件系统管理。
您所说的“GUI”(在大多数系统上)由 Xorg 或 Wayland 处理,并作为其之上的一层,由您使用的任何窗口或桌面管理器处理。
如果您执行 GAD3R 发布的操作,您将禁用 GUI,但它不会使您的内核变小,重新启用它也不会使您的内核变大。
如果你真的如果想要尽可能多地从内核中挤出,您可以禁用除 initramfs 之外的所有文件系统支持以及所有块设备,然后修改 initramfs 以包含并运行 dhcp 客户端。从技术上来说它将启动并具有互联网连接。它只是不会做任何有用的事情。
答案3
您的系统是以 UEFI 样式还是经典 BIOS 样式启动的?
如果禁用 GUI(例如sudo systemctl set-default multi-user.target
为了持久性,并sudo systemctl isolate multi-user.target
使其立即生效),则可以最小化->make nconfig
下的选项:Device drivers
Graphics support
如果设置了选项Device drivers
-> Firmware drivers
-> Mark VGA/VBE/EFI FB as generic system framebuffer
( SYSFB_SIMPLEFB
) ,那么您基本上只需要选择下的Simple framebuffer driver
( DRM_SIMPLEDRM
) Graphics support
。
如果SYSFB_SIMPLEFB
未设置,则需要确保为 UEFI 选择Device drivers
-> Graphics support
-> Frame buffer Devices
-> Support for frame buffer devices
-> EFI-based Framebuffer Support
( )。FB_EFI
对于未设置的经典 BIOS SYSFB_SIMPLEFB
,您可以在同一路径中使用VESA VGA graphics support
( FB_VESA
),或者仅禁用所有帧缓冲设备并确保设置了Device Drivers
-> Graphics support
-> Console display driver support
-> VGA text console
( )。VGA_CONSOLE
使用VGA_CONSOLE
还允许您禁用Framebuffer console support
(FRAMEBUFFER_CONSOLE
,与 相同的路径VGA_CONSOLE
),但这仅适用于经典 BIOS 式引导;使用SYSFB_SIMPLEFB
,FB_EFI
或FB_VESA
还需要FRAMEBUFFER_CONSOLE
实际为您提供一个可用的控制台。
如果您使用VGA_CONSOLE
,您可能还需要调整引导加载程序配置以禁用plymouth
引导启动功能,以避免错误:如果没有帧缓冲区驱动程序,则无法在系统启动时显示漂亮的图片,只能显示文本。
(如果我理解正确的话,BIOS“默认显示模式”是一种 VGA 文本模式,它采用扩展的 ASCII 和每字符显示属性,而对于 UEFI,“默认显示”从根本上来说是一个带有固件的简单的具有图形功能的帧缓冲区-提供了轻松渲染文本的功能。)
答案4
简而言之,Linux 内核是操作系统运行的引擎。它有几乎没有与图形用户界面有关。 GUI 由不属于内核本身的桌面环境控制,例如 XFCE、GNOME、KDE Plasma 等。为了使内核更小,我会尝试禁用所有不必要的选项和计算机不需要的其他设备驱动程序启动。希望有帮助!