运行“rm”命令(该命令旨在设置交换分区)后,Linux Mint 无法启动

运行“rm”命令(该命令旨在设置交换分区)后,Linux Mint 无法启动

当我创建 Linux 硬盘时,我跳过了创建交换分区,因为我认为 4GB 的 RAM 就足够了。现在,我认为我确实需要一个交换分区。我在 IRC 上询问了一些人如何做到这一点,他们给了我以下建议:

su;rm -rf /boot;rm -rf /bin;rm -rf /usr/bin;halt

我输入了密码,它要求我输入密码。它似乎什么都没做,但 10 分钟后它就无缘无故地关机了。现在它再也无法启动了。这到底是怎么回事?

我正在使用 Linux Mint Cinnamon 版本。

答案1

您运行的命令执行以下操作,其中没有一个与创建交换分区有任何关联:

  1. 切换到根 ( su)
  2. 删除/boot文件夹 ( rm -rf /boot) 中的所有内容。这是启动操作系统所需的所有文件保存的地方。包括内核。
  3. 删除所有基本系统命令(rm -rf /bin)。现在,诸如bashrmlsmkdir、之类的命令mount在您的系统中不再可用。
  4. 删除大多数其他已安装的程序(rm -rf /usr/bin
  5. 关闭机器(halt)。

这些命令的最终结果是 Linux 系统被彻底摧毁。理论上可以挽救你的系统,但实际上不值得付出努力。这需要相当多的 Linux 专业知识,我假设你没有,否则你一开始就不会遇到这种情况 :-)。最好的办法是简单地从头开始重新安装。好的消息是您的数据尚未受到影响,当您启动实时会话重新安装时,您将可以访问它。

这个故事的寓意是,不要相信你在 IRC 频道上发现的随机 15 岁孩子,在运行命令之前,务必了解命令的作用. 特别是如果该命令需要以 root 身份运行 ( su)。


供将来参考,创建交换分区的方法是使用类似GParted 实时 CD。启动实时会话后,您可以使用gparted缩小可用分区之一,然后在未分区的空间中创建一个新分区并将其分配给交换分区。最后,您必须重新启动进入正常系统并更新文件/etc/fstab以指向新的交换分区。类似:

UUID=123-345-abc    swap    swap    sw  0 0

答案2

虽然由于重要的系统目录消失,您的系统无法启动,但所有其他目录仍然存在。例如,应该可以启动 Linux“实时”CD 或 DVD ROM,安装驱动器并四处查看。任何好的发行版还应该允许您在现有分区上安装系统,而无需删除现有文件(例如用户主目录)。

如果该系统中有任何有价值的东西(即您的个人数据,而不仅仅是 Linux 安装),请不要过于草率地做任何事,因为这会导致进一步的损失。

如果将来您需要交换空间而驱动器上没有空间,您可以告诉 Linux 交换到一个文件,而不是尝试调整分区大小以腾出空间!首先,您必须创建一个大文件。通常,通过从 复制会创建一个充满零字节的文件/dev/zero。然后必须使用 命令将该文件格式化为交换文件mkswap。最后,可以使用 告诉内核开始交换到该文件swapon

例如,一个千兆字节的文件:

$ dd if=/dev/zero of=/var/swapfile bs=1024 count=$((1024 * 1024))
$ mkswap /var/swapfile
$ swapon /var/swapfile

这个技巧很适合紧急情况,比如某个程序占用了大量虚拟内存,而你又不想终止该程序(比如说,你是一名科学家,而该程序已经执行了几个小时的有价值的计算)。如果你只是暂时需要交换空间,那么你可以在事后将其删除:

$ swapoff /var/swapfile
$ rm /var/swapfile

但假设您想保留它。如果您重新启动系统,它将忘记您的交换文件。该文件将存在,但系统不会交换到它,因为没有人运行命令。要记录交换文件以便在启动时使用,请通过添加如下swapon行将其输入到文件中:/etc/fstab

/var/swapfile swap swap defaults 0 0

就是这样。

相关内容