有时我们会输入错误命令而且永久地销毁文档,或则将经历个别重要硬件或软件失效带来的挫败感。进行适当的备份意味着可以远离不能正常运作的(OS)或,但是可以在其他地方重建所有的备份内容。并且这永远是B计划。A计划是恢复数据。

本文将介绍恢复套件中的关键工具。介绍怎样使用原生系统引导设备加载最新的副本,挂载带来麻烦的驱动,与此同时,或则升级损坏的配置文件进而可以重新正常启动,或则在重新借助或销毁损坏驱动前救回可以被修补的数据。难以运行的系统中的文件可以“起死回生”并在它们自己的虚拟环境中运行,可以进行诸如重置用户忘掉的等操作。

当企图将硬件和软件放到一起并期盼它们良好协同运行时,总会碰到好多错误。主要关注如下的灾难性风波:

●启动了,硬碟正在运行,并且难以读取。

●计算机启动了,而且不确定硬碟驱动器是否完全良好运转。

●所有的部件都正常工作,并且由于软件问题或忘掉未能登入系统。

面临的具体问题将决定回到正常工作状态的操作。图1展示了一些确诊及修补选项。

linux重置用户密码命令_linux系统重置_linux重置系统盘命令

图1常见的系统问题以及我们将在本章中阐述的确诊和解决方案

1、在恢复/搜救模式下工作

Linux不能正常登陆,其实启动过程在显示登陆界面之前毫无征兆地停止了。我们将须要一些基本的系统管理工具。

假如不能加载,将怎样运行这些工具?虽然不能正常加载至命令提示页,它一般会加载至GRUB菜单。在这一页(如图2所示),可以通过上下箭头键及回车键选择恢复模式(recoverymode)下运行的内核。

linux重置系统盘命令_linux重置用户密码命令_linux系统重置

图2Ubuntu下安装GRUBAdvancedOptions菜单显示最新的和旧的内核版本链接,以及在恢复模式下的启动选项

在充分借助这种工具之前,首先须要理解哪些是GRUB以及它的运行方法。

(1)GRUB引导加载程序

哪些是GRUB?它的全称是GUNGRandUnifiedBootloader。那哪些是bootloader?它是接通电源时,拿来启动自己的。图3描述了这个过程。

linux系统重置_linux重置用户密码命令_linux重置系统盘命令

图3Linux计算机引导过程关键步骤

当启动时,嵌入在基本系统硬件中的固件版本使用说明辨识可用的网路、存储及显存资源。那些在较老版本的上,是通过BIOS系统来实现的,当前使用的是UEFI。

一旦系统找到包含MasterBootRecord(MBR)的硬碟驱动器分区,它还会把内容加载到活动显存。在Linux系统中,MBR分区包含一系列文件,当文件运行时,显示一个或多个可加载的内核映像引导配置。可以选择加载任何来自GRUB启动菜单中的配置。

一般,除非之前的加载失败,GRUB会手动加载它的默认映像而不会寻问。假如想显示GRUB菜单,可在启动时按下右Shift键。

(2)在Ubuntu环境下使用恢复模式

从图4中可以看出,当Ubuntu在恢复模式下被加载时,会听到包含一系列用于解决引导问题工具的菜单。把每一项都试一试是很值得的,由于其中一项有可能会用于解决在启动中碰到的问题。诸如clean选项,假如怀疑问题在于硬碟已满,它会移除无用的文件。dpkg选项企图修补任何基于APT的毁坏软件包,这种破损的软件包可能会把事情搞砸(dpkg工具其实会须要首先启用网路联接)。

linux重置系统盘命令_linux系统重置_linux重置用户密码命令

图4UbuntuRecovery菜单及带有基本确诊和修补工具的链接,以及打开shell会话作为root的选项

root选项打开一个root命令行会话,在哪里可以随便地使用Bash。总的来说,使用简单的会话而非完备的GUI桌面进行系统修补会更合理。由于运行的复杂服务程序越少,使系统运行上去的可能性越大。

一旦成功得到一个运行的命令提示,就可以去尝试辨识并解决问题。

(3)在CentOS下使用搜救模式

CentOS的GRUB菜单在启动时提供了rescuekernel而非恢复模式。这个核(kernel)不像Ubuntu那样包含一个工具菜单,而且类似的,它会提供一个单一的作为root用户的shell会话。图5显示了CentOSGRUB下的搜救引导选项。

linux重置系统盘命令_linux重置用户密码命令_linux系统重置

图5CentOSLinux提供搜救内核,用于直接引导到单一用户shell会话,以对受损的系统进行故障排除

下边展示怎样使用Bash和脚本方法来解决一些问题。

(4)找到命令行搜救工具

有Ubuntu机器在运行吗(该工具在Debian上不起作用)?假如有运行菜单的代码,这么它一定早已存在于Ubuntu文件系统的某处。请自行找寻。使用locate命令来找到它:

linux系统重置_linux重置用户密码命令_linux重置系统盘命令

linux系统重置_linux重置用户密码命令_linux重置系统盘命令

假如在/lib/recovery-mode/目录下寻觅,将见到recovery-menu文件是显示如图3所示的菜单界面的脚本。option/目录包含执行每位菜单项的文件。诸如,假如可能的话,fsck将会检测并修补任何破损的系统文件。

从下边fsck脚本的内容开始着手,脚本早已被挺好地编撰(使用#字符)以帮助理解正在发生的事情:

linux重置系统盘命令_linux重置用户密码命令_linux系统重置

在Ubuntu机器上自动运行clean脚本。瞧瞧发生了哪些?之后尝试仔细编撰/lib/recovery-mode/recovery-menu脚本(首先进行备份)。更改一些简单的东西,比如菜单名称或一条脚本描述。之后重启机器,从GRUB菜单步入RecoveryMode查看恢复环境。不仅一些变化和例外,在其他地方应当可以挺好地使用这些脚本,包括在CentOS上。

2、创建一个原生系统引导恢复设备

VirtualBoxVM使用的.ISO映像可以被写入CD或USB驱动,拿来启动的原生系统会话。这样的原生系统引导设备可以加载功能完备的会话而无须安装任何内容到硬件驱动上。许多用户在安装特殊的版本之前会使用这类驱动器验证该版本可以在她们的硬件上良好运行。另一些用户将原生系统会话作为一种安全方法,在进行诸如网上建行等敏感行为时保护她们的。

事实证明,这些原生系统引导设备同样是用于系统搜救和恢复的一种神奇的工具。

将一个原生系统引导设备插入一台有问题的中,但是运行及所有管理工具,可以帮助您了解究竟发生了哪些,并提供修补它的工具。下边将展示怎样创建一个原生系统引导的USB驱动器,以及怎样使用它。

(1)系统搜救映像

假如偶然早已有了一个带有完整Linux系统(如Ubuntu)的DVD或USB驱动器,这么这将是最简单的解决方案,由于须要的大多数软件都早已预先安装。假定早已有网路联接,仍然可以在原生系统会话期间安装其他包。下边述说一些特殊的映像。

Boot-Repair

假如要尝试搜救一个Ubuntu系统,这么会想尝试Boot-Repair。这个小而快速的Boot-Repair原生系统引导会检测GRUB设置,在必要的情况下,会重新建立它们。如图6所示,它还可以执行其他有用的管理任务。

linux重置系统盘命令_linux系统重置_linux重置用户密码命令

图6Boot-Repair桌面以及可见的SystemTools菜单

Boot-Repair也可以在已启动的原生系统会话上安装。

GPartedLive

假如问题与受损的数据或制止成功启动的毁坏分区有关,GPartedLive映像将带给原生系统的CD或USB功能齐全且强悍的GParted分区编辑器。与Boot-Repair一样,GParted也可以在任何正常的会话中安装和使用。假如问题与分区有关,这么,完备的原生系统引导版本是解决这一问题的最快捷、最直接的方法。不同于Boot-Repair,GParted是为在几乎所有发行版上使用而建立的,而不仅仅是Ubuntu。

SystemRescueCd

另一种选择是SystemRescueCd,它是一种建立在GentooLinux发行版本上的轻量级映像。因为它有大量有用的系统恢复工具,SystemRescueCd能制做十分棒的随身携带的USB驱动盘(CD也很棒,而且它不容易装进口袋)。

(2)将原生系统引导映像写入USB驱动

在可以写任何.ISO映像之前,须要下载它。这儿假定能找到正确的发行版网站上的网页并下载它。但下载小型文件有时会在网路传输时被破坏。更糟的是,它们可以通过或则中间功击者被替换成恶意软件。有些人下载MINT一段时间后就发生了这样的事情。

不仅检测以确保所在的网站被正确加密之外(浏览器应当在URL栏中显示某种锁图标)linux重置系统盘命令,最好的防御举措是在下载的文件上生成一个哈希值,并将其与网站提供的哈希值进行比较。

图7显示了Ubuntu17.04的哈希值的样子。

图7用于Ubuntu17.04的各类映像的SHA256哈希值,目前可供下载

一旦找到映像已发布的哈希值,将估算下载的文件的哈希值并比较这两个值。该示例生成在同一个目录中下载的SystemRescueCd映像的SHA256哈希值:

linux重置用户密码命令_linux系统重置_linux重置系统盘命令

随着一种或另一种可靠的映像安全下载,是时侯创建恢复工具原生系统引导设备了。假如当前计算机和正在创建的原生系统引导USB都将运行Debian、Ubuntu或派生程序,最简单的方式是使用UbuntuStartupDiskCreator。

Creator工具可以从通用的GUI菜单中选定,如图8所示,简单明了。从硬碟的某个地方选择一个映像文件,之后选择一个想写入映像的目标USB(或CD)。Creator将完成后续工作。

linux重置系统盘命令_linux重置用户密码命令_linux系统重置

图8具有UbuntuServer16.04映像的UbuntuStartupDiskCreator以及被选取的目标USB驱动

另一方面,假如须要在不同发行版本下建立的原生系统引导设备(企图拯救CentOS机器并希望使用CentOS工具来完成),这么将须要重新使用dd了。假如想让一个基于CD或DVD的原生系统可启动,运行在任何Linux上的dd都能胜任这个工作。但若果映像被写入一个USB驱动器,而恰巧在Ubuntu主机上工作,首先须要添加一个MBR到.ISO文档以更改映像,BIOS和UEFI固件将晓得怎样运行。图9展示了该过程。

linux重置用户密码命令_linux重置系统盘命令_linux系统重置

linux重置系统盘命令_linux系统重置_linux重置用户密码命令

图9编撰可运行的实时启动USB映像所需的步骤

在Ubuntu主机上,使用isohybrid进行映像更改。包含isohybrid的apt包被称为syslinux-utils。当它被安装后,联通到包含下载映像的目录,并将映像文件名作为惟一参数运行isohybrid:

linux重置系统盘命令_linux重置用户密码命令_linux系统重置

无论使用哪些版本,接出来的步骤应当都是可行的。仔细辨识目标设备的系统名称。df列举了当前所有可辨识的文件系统及其名称:

linux系统重置_linux重置系统盘命令_linux重置用户密码命令

在这个事例中,在KingstonUSB设备上安装了一个名为/dev/sdb1的文件系统。设备本身被称为/dev/sdb。

假如准备将映像写入硬盘,例如CD或DVD,这么可以通过lsblk获得它的名称,lsblk表示listblockdevices。驱动器本身必须是可写的。这儿DVD驱动器叫作sr0:

linux系统重置_linux重置用户密码命令_linux重置系统盘命令

如今可以在系统上使用dd,并把映像写入USB。

首先卸载驱动器,使dd可以完全访问。之后编撰归档文件。在这个事例中,使用了systemrescuecd-x86-5.0.2.iso映像,并将其写入坐落/dev/sdb的驱动器。

输入sda而非sdb(在这些特殊情况下)将无可挽回地覆盖主机文件系统并断送三天的时间。也应当确保USB驱动器上没有哪些重要的东西,由于它们肯定会消失:

linux重置系统盘命令_linux系统重置_linux重置用户密码命令

dd可能须要一些时间来将映像讲到USB设备上,然而,当它完成后,应当将驱动器插入,启动它,并步入一个原生系统会话。这儿假定被配置为从USB驱动器启动。倘若不是,可以通过在引导过程中步入Boot菜单来强制它从一个选取的设备启动。

还可以步入安装实用程序(BIOS或UEFI)来永久设置引导设备的次序。访问安装实用程序也可能通过一些键来实现:例如F2、F10、DEL和Enter。

3、让原生系统引导设备运行

可以用创建的Linux-in-a-pocket驱动做好多事情。下边描述一些常见的场景以及解决问题的技巧。

(1)测量系统储存区

假如经历过忽然和意外的系统崩溃,罪魁元凶很可能是数学显存(RAM)。与所有硬件一样,RAM最终会失效。问题是,当正在运行时,不能正确地测试RAM是否有错误。相反,须要在加载之前找到它。辛运的是,作为原生系统引导设备的骄傲拥有者,早已拥有了这个任务所须要的一切。如图10所示,TestMemory是启动Ubuntu驱动器后将显示的菜单选项之一。

linux重置系统盘命令_linux系统重置_linux重置用户密码命令

图10表示TestMemory的Ubuntu安装进程主菜单

选择TestMemony(使用上下箭头键并按Enter)将步入Memtest86+程序(图11)。该程序对RAM进行多次扫描,显示扫描过程中发觉的任何错误。假如全程起码运行几次后没有返回错误,这么显存可能不是引起问题的罪魁帮凶。这可能是好消息,也可能是坏消息,虽然,一直不晓得是哪些造成了系统崩溃。

图11Memtest86+工具显示你的RAM显存中任何错误的位置和种类。该系统是完好的(迄今)

不仅TestMemory,Ubuntu安装过程的主菜单中的RescueaBrokenSystem选项将提供一个运行的Bashshell。

在Troubleshooting菜单下CentOS安装盘包含它们自己的Memtest86+链接(图12)。

linux系统重置_linux重置系统盘命令_linux重置用户密码命令

图12从CentOS安装光碟主菜单链接到Troubleshooting菜单

(2)损坏的分区

分区(Partition)实际上是指向文件系统占用的化学c盘上的位置的元数据。分区是脆弱的东西,破坏它们似乎不用费太多心思。假如c盘数据以某种形式受损,分区的起点和终点的准确地址也被修改或遗失,这么分区上的文件系统将显得不可被访问。假如文件系统是不可被访问的,这么文件系统上的数据就和遗失没有哪些差异了。

难以访问分区?如今是时侯启动新的SystemRescue驱动了。SystemRescue是一个轻量级的软件包,所以不要期望一个功能齐全的拥有完美GUI界面的版本。比如电脑触摸板和手动联接之类的功能可能不像期望的那样工作。但这是一种让一些强有力的搜救工具发挥作用的快速技巧。如图13所示,默认启动选项将打开一个特殊命令行。

linux系统重置_linux重置系统盘命令_linux重置用户密码命令

图13SystemRescue启动时显示的BootOptions菜单。注意页面顶部每位选项的详尽解释

当打算修补破损分区(或其数据)时,SystemRescue提供了一些有用的指导信息及命令行,包括网路和文本编辑基础(图14)。不要担忧:Vim和Nano在命令行中都可用。键入startx将加载一个快速且简约的GUI桌面。

图14SystemRescueshell。注意默认情况下可用文本编辑器(包括Nano)或键入startx启动图形桌面

假如须要访问网路来下载或安装更多的工具,或则传输数据,可以在命令提示符处键入net-setup,选择正确的插口,并表明网路是有线的还是无线的。若果是无线网路,须要输入WiFi的SSID和加密秘钥(它可能使用ASCII而不是十六补码字符)。在大多数情况下,希望DHCP能手动检查网路。

面对损坏的分区,首先应当考虑的是怎样恢复。假如化学c盘本身可能有故障,这么第一项任务必须是保护它的数据。因此,将在SystemRescue命令提示符下使用dd命令创建当前状态的分区的完美副本,并将其保存到具有相同或更大容量的健康c盘。在运行lsblk确认两个指定的分区后,复制操作可能类似于这样,其中故障c盘是/dev/sda,目标驱动器上的空分区是/dev/sdc1:

完成后,就可以自由地查看是否可以保存原始副本。输入test-disk。将被寻问希望怎么记录会话风波linux重置系统盘命令,希望恢复那个c盘以及希望找到那个分区类型。一般情况下,TestDisk将猜想正确的一个,并将其作为默认值突出显示。

之后会发觉自己面对一个如图15中显示的屏幕,可以要求TestDisk剖析c盘,找寻现有的分区。当发觉并适当地标记了毁坏的分区时,可以将更改写入c盘,但是应当才能再度成功启动。

图15TestDiskPartitionRepair页面,通过Analyze发觉的分区可被编辑并使用其他工具修补

发觉并适当地标记受损的分区是一种有用的抒发形式且囊括了整个复杂过程。

(3)从受损的文件系统中恢复文件

假如结果表明难以完全修补c盘,这么设法恢复分区的操作可能足以容许访问文件,但却不足以从c盘可靠地启动。这么首选是尽可能多地拯救重要文件。

最简单的方式是使用任意方式的原生系统引导会话中的常规Linux文件系统管理工具。假如不确定分区的名称linux公社,运行lsblk将一如既往地告诉您这种信息。

分区可能难以作为文件系统被访问,由于它还没有被挂载。事实上,假如df命令的结果中没有显示它,这么必须挂载它,这意味着将其分配到文件系统中一个可被访问的位置。可以创建一个挂载分区的新目录,之后使用mount命令快速解决这个问题。选择在/run/目录中创建临时挂载点,恰巧找到的任何未使用的位置(如/media/或/mnt/)也可以。我们假设分区名称为/dev/sdcl:

从这儿开始,来自损坏文件系统的任何健康文件都可以从临时目录中复制或编辑。它们也可能会手动出现在任意一个想使用的GUI桌面文件管理工具中。

使用ddrescue恢复

不起作用?是时侯掏出秘密装备了。数据恢复工具,即ddrescue红旗linux6.0教程,在文件系统之间复制文件。它剖析文件,并企图修补任何破损的文件。没有任何工具能保证修补所有变坏的东西。

假如它还没有安装正在使用的原生系统中,这么ddrescue将成为SystemRescue默认的一部份。从储存库中调用它。之后辨识出有问题的分区(该例中是/dev/sdc1),希望保存映像的分区,以及可以写入操作风波记录的日志文件的名称和位置。拥有日志文件准许ddrescue继续已停止的操作,而不是从头开始。本例使用了一个挂载在/run/usb-mount目录下的外部驱动器(比源驱动器的容量更大):

linux重置系统盘命令_linux系统重置_linux重置用户密码命令

为了测试修补,可以使用dd命令将备份映像讲到一个新的、空的驱动器(反例中称为/dev/sdd/),之后启动系统到新的驱动器:

虽然发觉一直未能启动分区,现今似乎有可能使用它可靠地访问重要的单个文件。

使用PhotoRec进行文件恢复

另一个可以帮助您从受损的驱动器中获取文件的工具是PhotoRec。它与TestDisk来自同一个地方。事实上,二者都是由CGSecurity的ChristopheGrenier创建和维护的。要加载程序,请输入:

linux重置用户密码命令_linux重置系统盘命令_linux系统重置

关于PhotoRec,须要记住的是,这种文件都被赋于了新的被编号的文件名,同时保留了它们的原始文件扩充名。这有时会使找到单个文件很难,但肯定比完全遗失它们要好。

4、密码恢复:使用chroot安装文件系统

通过使用例如KeePass2或LastPass这样的好的密码库,可以在很大程度上解决保持足够复杂密码的问题。通过使用例如Kerberos之类的单点登陆解决方案,起码可以使过度使用同一密码的问题得到纾解。并且虽然这么,意外总是会发生。

假如有一两个用户足够当心慎重,为她们访问的每台设计良好的、强大的,这么会发生哪些呢?她们经常忘掉。假如有另一个具有sudo功能的管理员可以登入到并运行passwd来为用户创建新,这么这不会是个问题:

linux重置用户密码命令_linux重置系统盘命令_linux系统重置

然而,假若不幸且多疑的用户是惟一拥有该设备帐户的管理员,这么就有麻烦了。

使用原生系统引导设备来启动被锁定的,运行lsblk来确定硬碟上root分区的名称,并将root分区挂载到临时目录:

之后会得到:

这就是全部。此时,可以自由地运行命令,如同在正在运行的化学硬碟版本上工作一样。使用passwd给管理员一个新的密码以替换遗失的密码。而且,在输入exit关掉chroot会话后,重新启动机器(不需原生系统引导USB)。现今一切就会好上去。

加密还是不加密?

使用例如ecryptfs或dm-crypt之类的工具对储存驱动器上的数据进行加密,使数据不太可能遭到损害。另一方面,这儿讨论的许多搜救和恢复操作在加密卷上是行不通的。

在安全性和访问性之间取得平衡不是一门精确的科学。许多管理员没有对本地服务器和桌面工作站进行加密,由于这种服务器和桌面工作站起码被锁在办公室里保护了上去,但她们坚持要加密联通设备。

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复