荣新IT培训中心
全国咨询热线:400-1335-066
您现在的位置:首页>技术文章 > 正文

Linux培训之快速修复Panic的Linux内核

时间:2017-10-23 10:42:17 来源:荣新IT教育培训 作者:荣新科技
最近一些参加工作的同学来消息咨询荣新科技关于快速修复Panic的Linux内核的这么一个问题,今天特地来为大家作一个简单的分享,希望同学们能获得更好的技能成长。
Linux培训之快速修复Panic的Linux内核
这个同学的工作计算机上运转的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。>>>Linux培训需要注意哪些事项呢?<<<

二、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用户有所帮助,另外希望同学们戒骄戒躁,稳步前行。