我做了一件很傻的事
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 可以找到您的内核,但我认为您不能将特定子目录指定为您的系统根目录。