首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >内核 panic:启动时出现内核 panic 错误

内核 panic:启动时出现内核 panic 错误

原创
作者头像
是山河呀
发布2025-02-04 10:00:22
发布2025-02-04 10:00:22
2.7K00
代码可运行
举报
文章被收录于专栏:linux运维linux运维
运行总次数:0
代码可运行

1. 记录错误信息

首先,确保你记录了所有的错误信息,特别是内核 panic 的具体错误信息。这些信息通常会显示在屏幕上,例如:

代码语言:javascript
代码运行次数:0
运行
复制
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

2. 进入GRUB菜单

  1. 重启计算机。
  2. 在启动过程中,按 Shift 键(对于某些发行版,可能是 Esc 键)进入GRUB菜单。
  3. 选择“Advanced options for Ubuntu”(或其他发行版对应的选项)。
  4. 选择一个旧的内核版本,看看是否可以正常启动。

3. 单用户模式/恢复模式

如果选择其他内核版本也无法启动,尝试进入单用户模式:

  1. 在GRUB菜单中选择“Advanced options for Ubuntu”。
  2. 选择带有“recovery mode”的内核版本。
  3. 在恢复菜单中,选择“root”选项进入单用户模式。

4. 检查文件系统

在单用户模式下,运行 fsck 命令检查和修复文件系统:

代码语言:javascript
代码运行次数:0
运行
复制
fsck -f /dev/sda1

其中 /dev/sda1 是你的根分区,具体分区名称可能不同,请根据实际情况调整。如果 fsck 提示有错误,按照提示进行修复。

5. 检查日志文件

查看系统日志文件,获取更多错误信息:

代码语言:javascript
代码运行次数:0
运行
复制
dmesg | less
cat /var/log/syslog | less 

6. 检查内核模块

确保所有必要的内核模块都已加载。可以使用 lsmod 命令查看已加载的模块:

代码语言:javascript
代码运行次数:0
运行
复制
lsmod

如果缺少某些模块,可以手动加载:

代码语言:javascript
代码运行次数:0
运行
复制
modprobe <module_name>

7. 检查 /etc/fstab 文件

确保所有挂载点配置正确:

代码语言:javascript
代码运行次数:0
运行
复制
cat /etc/fstab

常见的问题包括:

  • 分区UUID或设备名称错误
  • 文件系统类型错误
  • 挂载选项错误

8. 检查内核参数

在GRUB菜单中编辑内核启动参数,添加调试信息:

  1. 在GRUB菜单中选择要启动的内核版本,按 e 键进入编辑模式。
  2. 找到以 linux 开头的行,添加 debug 参数:linux /boot/vmlinuz-5.4.0-42-generic root=UUID=xxxx-xxxx ro debug
  3. Ctrl + XF10 启动系统。

9. 重新编译内核(如果需要)

如果确定是内核本身的问题,可以尝试重新编译内核:

  1. 安装必要的工具:sudo apt-get install build-essential libncurses5-dev bison flex
  2. 下载内核源码:wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.0.tar.gz tar xvf linux-5.4.0.tar.gz cd linux-5.4.0
  3. 复制当前内核配置:cp /boot/config-$(uname -r) .config
  4. 编译内核:make menuconfig make -j$(nproc) sudo make modules_install install
  5. 更新 GRUB:sudo update-grub

10. 重新安装内核

如果重新编译内核太复杂,可以尝试重新安装内核:

  1. 使用 Live CD/USB 启动系统。
  2. 打开终端,挂载根文件系统:sudo mount /dev/sda1 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt
  3. 重新安装内核:sudo apt-get update sudo apt-get install --reinstall linux-image-$(uname -r) sudo update-grub
  4. 退出 chroot 环境并重启系统:exit sudo umount /mnt/{sys,proc,dev} sudo umount /mnt sudo reboot

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 记录错误信息
  • 2. 进入GRUB菜单
  • 3. 单用户模式/恢复模式
  • 4. 检查文件系统
  • 5. 检查日志文件
  • 6. 检查内核模块
  • 7. 检查 /etc/fstab 文件
  • 8. 检查内核参数
  • 9. 重新编译内核(如果需要)
  • 10. 重新安装内核
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档