grub 救援/移动文件夹

grub 救援/移动文件夹

我做了一件很傻的事

sudo mv /* /some_folder

在我的远程服务器 vm ubuntu 12.04 上移动命令

将我的启动文件夹移动到

/home/.../某个文件夹/boot

我可以通过提供 grub rescue 功能的浏览器终端访问该文件夹。

我如何将整个文件夹移回根位置以便正常启动?

如果那是不可能的,那么如果我从这个位置启动,我是否能够遍历到高于启动文件夹的文件夹,至少通过 ssh 复制我的文件?

更新

我设法做到了以下

 grub rescue> set prefix=(hd0,1)/home/path_to_boot/boot/grub
 grub rescue> set root=(hd0,1)/home/path_to_boot/
 grub rescue> insmod normal
 grub rescue> normal

这将启动一个菜单,其中包含选择 Ubuntu 启动的选项。我按 c 进入控制台并进入 grub 模式以发出 linux 命令。

grub> linux /home/path_to_boot/boot/vmlinuz-3.xx.x-67-generic
grub> initrd /home/path_to_boot/boot/initrd.img-3.xx.x-67-generic
grub> boot

之后我被困在

(initramfs)

此时我无法访问 /home 文件夹,只能访问 /home/path_to_boot/boot 内的文件夹。

有什么想法如何进行吗?

更新2

我联系了我的服务器公司并获得了通过 Live CD 启动的选项。

我用它做了

gksudo 鹦鹉螺

并设法复制我的文件。

不幸的是,虽然我无法通过 grub 保存我的系统,但我得到了我需要的文件。

答案1

如果您可以直接访问这台机器(也许通过这个浏览器终端弹出窗口(?)),您可以尝试加载您的内核和 initramfs 并启动它。

这不会再次启动您的系统(因为启动过程不仅依赖于 /boot)但您可以进入 shell。

如果你有 GRUB 的完全访问权限,那么这个可能会起作用:

linux /<path>/boot/vmlinuz<...>
initrd /<path>/boot/initrd<...>

因为您没有指定根文件系统(通过root=...) - 因为您当前没有可用的文件系统 - 所以您的系统将直接从 initramfs 运行 busybox shell。

(initramfs)提示符是一个完整的 shell。您需要创建一个文件夹 - 运行mkdir /rootfs)。然后您需要挂载根文件系统 ( mount -o rw /dev/<...> /rootfs) 并将 chroot 到其中 ( chroot /rootfs /bin/bash)。

然后,您可以挂载其他文件系统(mount -a)。然后,您就可以做任何您想做的事情了。

免责声明:这是 - 就像问题一样 - 来自超级用户的交叉帖子。

答案2

根据手动的,GRUB 中没有文件操作命令(除了ls)。毕竟它是一个引导加载程序,而不是文件管理器。

由于您的根目录不在您的分区根目录中,我认为不可能让您的 Linux 正确启动。您可以使用该normal命令进入原始启动菜单并编辑您的启动项,以便 GRUB 可以找到您的内核,但我认为您不能将特定子目录指定为您的系统根目录。

相关内容