命令行分区重新启动选择

命令行分区重新启动选择

我想在 X86 Linux 机器上通过命令行安排重新启动临时分区,而无需手动干预。这可以做到吗?

在我看来,目前我只有一个选择:使用程序更改引导加载程序配置文件,然后在引导到临时分区后恢复(您可能想象这非常危险和愚蠢)。

答案1

我认为你正在寻找一次启动解决方案。下面的示例以 Grub v1 为例;它们应该可以轻松转换为 Grub v2 风格的配置。

您需要为临时分区添加基本启动配置。您的grub配置可能如下所示。您可以通过执行grub-set-default 1来激活临时分区的重新启动reboot

在装有 Grub v1 的 Debian 上,启动配置为/boot/grub/menu.lst,保存的默认启动写入/boot/grub/default。该grub-set-default命令将此文件中的值更改为要在重启时自动启动的启动项。重启时,grub启动该项,并将savedefault 0重置/boot/grub/default回常规启动项以供后续启动。

使用此解决方案,您无需在每次想要启动临时分区时编辑配置并重置它。但是,您确实需要在 grub 配置中有一个条目。您可能会让它工作使用链式装载机如果您事先不知道kerneland/or行。(我从未尝试使用 Grub 来链式加载 Grub,所以我不知道这样做效果如何。)initrd

  default saved

  # boot entry 0
  title    Default boot
  root     hd(0,0)
  kernel   /boot/vmlinuz-2.6.xx UUID=xxxxxxx ro
  savedefault

  # boot entry 1
  title    Temp boot
  root     hd(0,1)
  kernel   /boot/vmlinuz  UUID=yyyyyyyy ro
  savedefault 0

  # boot entry 2, chainloader version of boot entry 1
  title    Temp boot
  root     hd(0,1)
  savedefault 0
  makeactive
  chainloader +1

答案2

我不明白这有什么危险或愚蠢的:

  • 添加行以从临时分区启动
  • 将临时分区设为默认分区
  • 重启
  • 完成后,删除这些行并恢复默认设置

如果出现任何问题,您可以随时选择正常的操作系统。

不过我有个问题,你打算做什么?无论你做什么,在 chroot 或 VM 中做可能更简单。

答案3

引导的本质意味着在引导时唯一可用的是引导程序及其配置。因此,如果您要修改任何内容,则必须将其放在引导加载程序中的某个位置。

好消息是,修改配置(在 grub 中,是一个文本文件)是一种相当安全的操作。您甚至可以保存备份副本以备后用。如果您遇到棘手的情况,grub 本身也可以通过命令行进行操作。

如果您想看到“危险”,那就是那些重写分区表的选项或程序!几年前,Grub 有(或者可能有)这样的命令,我第一次尝试它时就弄坏了一台笔记本电脑。(我确实修好了,但花了很长时间)长的时间)。

你的项目的关键是(在 grub 中,无论如何)有一个关键字默认你可以使用它来指定哪个您想要从中启动的分区。我认为只需移动该关键字即可改变您启动的内容。您可能还会考虑从拇指驱动器启动作为您的“临时”启动分区。

相关内容