当我创建 Linux 硬盘时,我跳过了创建交换分区,因为我认为 4GB 的 RAM 就足够了。现在,我认为我确实需要一个交换分区。我在 IRC 上询问了一些人如何做到这一点,他们给了我以下建议:
su;rm -rf /boot;rm -rf /bin;rm -rf /usr/bin;halt
我输入了密码,它要求我输入密码。它似乎什么都没做,但 10 分钟后它就无缘无故地关机了。现在它再也无法启动了。这到底是怎么回事?
我正在使用 Linux Mint Cinnamon 版本。
答案1
您运行的命令执行以下操作,其中没有一个与创建交换分区有任何关联:
- 切换到根 (
su
) - 删除
/boot
文件夹 (rm -rf /boot
) 中的所有内容。这是启动操作系统所需的所有文件保存的地方。包括内核。 - 删除所有基本系统命令(
rm -rf /bin
)。现在,诸如bash
、rm
、ls
、mkdir
、之类的命令mount
在您的系统中不再可用。 - 删除大多数其他已安装的程序(
rm -rf /usr/bin
) - 关闭机器(
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
就是这样。