我想在 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 配置中有一个条目。您可能会让它工作使用链式装载机如果您事先不知道kernel
and/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 中,无论如何)有一个关键字默认你可以使用它来指定哪个您想要从中启动的分区。我认为只需移动该关键字即可改变您启动的内容。您可能还会考虑从拇指驱动器启动作为您的“临时”启动分区。