运行应该设置交换分区的“rm”命令后,Linux Mint 无法启动

Ale*_*owe 26 linux swap rm

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

su;rm -rf /boot;rm -rf /bin;rm -rf /usr/bin;halt
Run Code Online (Sandbox Code Playgroud)

我输入了它,它需要我的密码。它似乎并没有真正做任何事情,但 10 分钟后它就无缘无故地关闭了。现在它不会再开始了。这有什么问题?

我正在使用 Linux Mint Cinnamon 版。

ter*_*don 38

您运行的命令执行以下操作,其中没有一个甚至远程连接到创建交换分区:

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

这些命令的最终结果是一个完全毁坏的 Linux 系统。理论上可以挽救您的系统,但实际上不值得付出努力。这将需要相当多的 Linux 专业知识,我假设您没有,或者您一开始就不会处于这种情况:-)。真正要做的最好的事情就是从头开始重新安装。的消息是,你的数据没有被感动,你将有机会获得它,当你开机进入实时会话重新安装。

这个故事的寓意是,不要相信在 IRC 频道中随机发现的 15 岁儿童,并且在运行之前始终了解命令的作用。特别是如果该命令需要以 root ( su)身份运行。


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

UUID=123-345-abc    swap    swap    sw  0 0
Run Code Online (Sandbox Code Playgroud)

  • @AlexisStowe,`halt` 命令在`/sbin` 中。您友好的 IRC 技术支持忘记删除那个。 (4认同)

Kaz*_*Kaz 14

尽管您的系统不会因为重要的系统目录消失而无法启动,但所有其他目录仍然存在。例如,应该可以启动 Linux “live” CD 或 DVD ROM,安装驱动器并四处查看。任何好的发行版还应该让您将系统安装在现有分区的顶部,而无需删除现有文件,例如用户主目录。

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

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

例如 1 GB 文件:

$ dd if=/dev/zero of=/var/swapfile bs=1024 count=$((1024 * 1024))
$ mkswap /var/swapfile
$ swapon /var/swapfile
Run Code Online (Sandbox Code Playgroud)

当某些程序占用大量虚拟内存而您不想终止该程序(因为,例如,您是一名科学家并且该程序已执行一些有价值的计算数小时之久)时,此技巧对于紧急情况很有用。如果您只是在这种情况下暂时需要交换,那么您可以在之后摆脱它:

$ swapoff /var/swapfile
$ rm /var/swapfile
Run Code Online (Sandbox Code Playgroud)

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

/var/swapfile swap swap defaults 0 0
Run Code Online (Sandbox Code Playgroud)

就是这样。