快速修复一个Panic的Linux内核的技巧
感谢脚本之家网友 鸢一雨音 的投稿
写这篇文章是有原因的。为了配置完全的静默启动,笔者对自己的工作计算机上运行的Lux执行了不当的mkitcpio操作,原因是忽略了mkitcpio.conf文件中的一处逻辑错误。这使得mkitcpio生产了新的内核文件,但这个内核文件不能正常工作。重启的时候,内核启动中止于Panic状态。
一般情况下,新内核不能正常工作时,可以通过使用itramfs内核文件的fallback版本来临时启动系统,甚至可以直接将fallback版本覆盖回去以回退更改,但这次要命的是,mkitcpio修改了vmluz内核文件,而且vmluz没有fallback版本。对于一般用户,可以直接重装系统解决;笔者的工作站环境配置相当复杂,这意味着除了可能损失我的工作文件之外,我还需要花费大量额外的时间来重配开发环境。
注意本教程之“修复”,指“尝试回退毁灭性的人为更改”,故不可用于恢复不知原因的内核崩溃。
一、从LiveCD启动并查看磁盘
凭着兼职Lux服务器运维那段时间积累的经验,我立即想到可以用LiveCD启动来获得一个临时的、用于修复内核的Lux环境。
笔者使用的是Arch Lux 64位版,所以我从从Arch Lux的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 --rbd /sys sys/
mount --rbd /dev dev/
mount --rbd /run run/
这些目录的作用分别是
proc目录虚拟的、Procfs格式的文件系统,用于存放进程状态文件(在Lux下,这些文件表面看起来都是文本文件,实际上是进程状态的文件映射);
/sys目录对于Arch Lux,这是一个类似proc目录的、Sysfs格式的虚拟文件系统,用于储存连接到系统的设备文件;对于传统Unix和类Unix,它是一个指向内核代码树的软链接;
/dev目录储存设备文件,比如你的硬盘就是/dev/sdXY之类的;
/run目录存放最近的启动之后系统的部分信息;
挂载了这些东西之后,我们可以chroot到我们的主硬盘的根目录了
chroot /mnt
后悔药++。对于我来说,我只需要修改mkitcpio.conf文件并重新执行mkitcpio操作,就能重新生成正确的内核文件。一般的,如果是错误地修改了配置导致的内核Panic,这个环境可以解决大部分问题。
三、一些技巧
1、许多配置文件在LiveCD里的那个系统里有正确的版本或范本,如果不记得正常的时候是什么样子的,可以参照一下它们;
2、对于Arch Lux,可以在不chroot到/mnt的情况下,直接使用pacstrap指令对/mnt这个挂载点进行软件包管理;
3、可以在两个tty下操作,这样在chroot到/mnt下之后依然能从LiveCD的文件系统里向/mnt转移文件。
本教程应该对大部分Lux发行版都可用,希望能对部分Lux用户产生帮助。
相关推荐
网络推广
- 5g网络有多快:5g网络网速有多快
- dota2无法连接至steam网络 为什么无法连接dota2网络
- 无线网络信号接收器 无线网络信号接收器怎么用
- 网络延时是什么意思 网络延时是什么原因
- 无线网络不可用:无线网络不可用是什么原因
- 网络广告销售技巧 网络广告销售技巧有哪些
- 智能手机网络设置 智能手机网络设置在哪里
- 为什么找不到无线网络 为什么找不到无线网络信
- 网络这么赚钱:网络怎么能赚到钱
- 为什么无线网络连接不上 为什么无线网连不起来
- 网络上的人际交往 网络上人际交往的优势
- 支付宝网络系统异常 支付宝显示网络异常什么时
- 营销软件:营销软件有哪些
- 无法访问您要使用的功能所在的网络位置
- 网络安全基本知识 网络安全基本知识有哪些
- 什么网络电话最好用 什么网络电话最好用最便宜