本页目录
内核操作手册
Gentoo 自编内核的编译、模块管理、DKMS 和 initramfs 操作。
状态查看
# 已安装内核
# 当前内核配置
|
# 如果不能看: 内核没开 CONFIG_IKCONFIG_PROC, 查 /boot/config-$(uname -r)
# 已加载模块
|
# 内核日志
|
# 内核参数 (运行时)
内核编译
# 源码位置
# 配置
# 保存/恢复配置
# 已有备份: cp /boot/config-6.6.21-gentoo .config && make olddefconfig
# 编译 (Gentoo)
# 或用 genkernel (自动化)
# 分发内核 (Gentoo, 推荐)
# 也可 emerge gentoo-sources + 手动编译 (更灵活)
DKMS (动态内核模块)
# 状态
# 示例: mt7927/2.12, 6.6.21-gentoo, x86_64: installed
# 安装模块
# 卸载/移除
# 调试
# 新内核安装后 DKMS 自动触发机制:
# @module-rebuild 在 installkernel 时自动调用 dkms autoinstall
# 检查: eselect kernel list 确认新内核已选, dkms status 确认状态
模块管理
# 临时加载/卸载
# 模块参数
# 持久化: echo "options mt7927 param1=value1" > /etc/modprobe.d/mt7927.conf
# 黑名单 (阻止加载)
# echo "blacklist nouveau" > /etc/modprobe.d/blacklist.conf
# echo "blacklist mt7927" > /etc/modprobe.d/blacklist-mt7927.conf
# 自动加载 (开机)
# echo "mt7927" > /etc/modules-load.d/mt7927.conf
# 所有已加载模块的参数
initramfs (dracut)
# 生成 initramfs
# 查看 initramfs 内容
|
# 调试引导问题
# 在 GRUB 命令行加: rd.debug rd.shell
# 遇到问题进 emergency shell:
# 内核 cmdline (GRUB)
# /etc/default/grub:
# GRUB_CMDLINE_LINUX="quiet splash rd.lvm.vg=vg0 resume=/dev/vg0/swap"
内核参数调优 (sysctl)
# 临时设置
# 持久化
# /etc/sysctl.conf 或 /etc/sysctl.d/99-custom.conf:
# net.ipv4.ip_forward = 1
# vm.swappiness = 10
# 常用调优项
# net.core.default_qdisc = fq # BBR 配套 qdisc
# net.ipv4.tcp_congestion_control = bbr # TCP 拥塞控制
# vm.swappiness = 1 # 尽量不用 swap (1 是除 0 外最低)
# kernel.sysrq = 1 # 启用 Magic SysRq
# fs.inotify.max_user_watches = 524288 # inotify 监控上限 (IDE/LSP 大量文件)
内核调试
# Boot 参数 (GRUB cmdline 临时改)
# single # 单用户模式 (维护)
# init=/bin/bash # 直接进 shell (绕过 init)
# ignore_loglevel # 显示所有内核日志
# rd.break=pre-mount # dracut: 在挂载根文件系统前停下
# Magic SysRq (内核应急)
# Alt+SysRq + b → 立即重启
# Alt+SysRq + s → sync 磁盘
# Alt+SysRq + u → remount ro
# Alt+SysRq + e → SIGTERM 所有进程
# Alt+SysRq + i → SIGKILL 所有进程
# 安全重启顺序: R E I S U B (或记住: "BUSIER" 反过来)
# 内核崩溃后分析
# 开启 kdump 配合 crash 工具分析 vmcore
# 性能观测
&&