首页IT科技linux修复系统盘(快速修复一个Panic的Linux内核的技巧)

linux修复系统盘(快速修复一个Panic的Linux内核的技巧)

时间2025-08-05 04:29:33分类IT科技浏览5186
导读:感谢电脑学习网网友 鸢一雨音 的投稿...

感谢电脑学习网网友 鸢一雨音 的投稿

写这篇文章是有原因的             。为了配置完全的静默启动             ,笔者对自己的工作计算机上运行的Linux执行了不当的mkinitcpio操作                    ,原因是忽略了mkinitcpio.conf文件中的一处逻辑错误                    。这使得mkinitcpio生产了新的内核文件       ,但这个内核文件不能正常工作       。重启的时候             ,内核启动中止于Panic状态      。

一般情况下                   ,新内核不能正常工作时       ,可以通过使用initramfs内核文件的fallback版本来临时启动系统       ,甚至可以直接将fallback版本覆盖回去以回退更改                   ,但这次要命的是             ,mkinitcpio同时修改了vmlinuz内核文件       ,而且vmlinuz没有fallback版本                    。对于一般用户                    ,可以直接重装系统解决;但是笔者的工作站环境配置相当复杂             ,这意味着除了可能损失我的工作文件之外,我还需要花费大量额外的时间来重配开发环境             。

注意本教程之“修复             ”                    ,指“尝试回退毁灭性的人为更改                    ”                    ,故不可用于恢复不知原因的内核崩溃      。

一             、从LiveCD启动并查看磁盘

凭着兼职Linux服务器运维那段时间积累的经验,我立即想到可以用LiveCD启动来获得一个临时的                    、用于修复内核的Linux环境                    。

笔者使用的是Arch Linux 64位版             ,所以我从从Arch Linux的LiveCD启动             。正确进入LiveCD内建的root用户之后                    ,我们需要查看自己的主硬盘的设备名。执行fdisk -l       ,在笔者的情况下             ,我的主硬盘       、挂载至根目录的分区对应的设备文件是/dev/sdb2                    。

二      、chroot至硬盘上的系统根目录

要chroot到硬盘上的系统根目录                   ,并能正常调用硬盘上的系统组件对硬盘上的系统作出更改       ,我们首先要手动挂载硬盘上的根分区                    。执行(我的设备文件是/dev/sdb2):

mount /dev/sdb2 /mnt

先不要急。这时候chroot到/mnt虽然能进入硬盘上主系统的bash       ,但是你几乎不能正确完成任何复杂的任务                   ,因为还有一些重要的目录没有挂载             。我们执行指令             ,分别挂载proc目录                    、/sys目录             、/dev目录和/run目录                    。进入/mnt       ,分别执行:

mount -t proc proc proc/

mount --rbind /sys sys/

mount --rbind /dev dev/

mount --rbind /run run/

这些目录的作用分别是:

proc目录:虚拟的      、Procfs格式的文件系统                    ,用于存放进程状态文件(在Linux下             ,这些文件表面看起来都是文本文件,实际上是进程状态的文件映射);

/sys目录:对于Arch Linux                    ,这是一个类似proc目录的                    、Sysfs格式的虚拟文件系统                    ,用于储存连接到系统的设备文件;对于传统Unix和类Unix,它是一个指向内核代码树的软链接;

/dev目录:储存设备文件             ,比如你的硬盘就是/dev/sdXY之类的;

/run目录:存放最近的启动之后系统的部分信息;

挂载了这些东西之后                    ,我们可以chroot到我们的主硬盘的根目录了:

chroot /mnt

后悔药++       。对于我来说       ,我只需要修改mkinitcpio.conf文件并重新执行mkinitcpio操作             ,就能重新生成正确的内核文件             。一般的                   ,如果是错误地修改了配置导致的内核Panic       ,这个环境可以解决大部分问题                    。

三             、一些技巧

1、许多配置文件在LiveCD里的那个系统里有正确的版本或范本       ,如果不记得正常的时候是什么样子的                   ,可以参照一下它们;

2                    、对于Arch Linux             ,可以在不chroot到/mnt的情况下       ,直接使用pacstrap指令对/mnt这个挂载点进行软件包管理;

3                    、可以在两个tty下操作                    ,这样在chroot到/mnt下之后依然能从LiveCD的文件系统里向/mnt转移文件       。

本教程应该对大部分Linux发行版都可用             ,希望能对部分Linux用户产生帮助      。

相关推荐:

Linux系统怎么配置双显卡?

声明:本站所有文章,如无特殊说明或标注                    ,均为本站原创发布                    。任何个人或组织                    ,在未征得本站同意时,禁止复制、盗用             、采集                    、发布本站内容到任何网站       、书籍等各类媒体平台             。如若本站内容侵犯了原著者的合法权益             ,可联系我们进行处理      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
搜索引擎营销典型案例(探索SEO之外的推广大陆)