感谢本站网友 鸢一雨音 的投稿
写这篇文章是有原因的。为了配置完全的静默启动,笔者对自己的工作计算机上运行的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内核Panic的技巧的详细内容。更多信息请关注PHP中文网其他相关文章!

Linux的主要用途包括:1.服务器操作系统,2.嵌入式系统,3.桌面操作系统,4.开发和测试环境。Linux在这些领域表现出色,提供了稳定性、安全性和高效的开发工具。

互联网运行不依赖单一操作系统,但Linux在其中扮演重要角色。Linux广泛应用于服务器和网络设备,因其稳定性、安全性和可扩展性受欢迎。

Linux操作系统的核心是其命令行界面,通过命令行可以执行各种操作。1.文件和目录操作使用ls、cd、mkdir、rm等命令管理文件和目录。2.用户和权限管理通过useradd、passwd、chmod等命令确保系统安全和资源分配。3.进程管理使用ps、kill等命令监控和控制系统进程。4.网络操作包括ping、ifconfig、ssh等命令配置和管理网络连接。5.系统监控和维护通过top、df、du等命令了解系统运行状态和资源使用情况。

介绍 Linux是一个强大的操作系统,由于其灵活性和效率,开发人员,系统管理员和电源用户都喜欢。但是,经常使用长而复杂的命令可能是乏味的

Linux适用于服务器、开发环境和嵌入式系统。1.作为服务器操作系统,Linux稳定高效,常用于部署高并发应用。2.作为开发环境,Linux提供高效的命令行工具和包管理系统,提升开发效率。3.在嵌入式系统中,Linux轻量且可定制,适合资源有限的环境。

简介:通过基于Linux的道德黑客攻击数字边界 在我们越来越相互联系的世界中,网络安全至关重要。 道德黑客入侵和渗透测试对于主动识别和减轻脆弱性至关重要

Linux基础学习从零开始的方法包括:1.了解文件系统和命令行界面,2.掌握基本命令如ls、cd、mkdir,3.学习文件操作,如创建和编辑文件,4.探索高级用法如管道和grep命令,5.掌握调试技巧和性能优化,6.通过实践和探索不断提升技能。

Linux在服务器、嵌入式系统和桌面环境中的应用广泛。1)在服务器领域,Linux因其稳定性和安全性成为托管网站、数据库和应用的理想选择。2)在嵌入式系统中,Linux因其高度定制性和高效性而受欢迎。3)在桌面环境中,Linux提供了多种桌面环境,满足不同用户需求。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境