Ale*_*hys 5 boot virtualization grubrescue
我做了一个很傻的事
须藤 mv /* /some_folder
在我的远程服务器 vm ubuntu 12.04 上移动命令
将我的启动文件夹移动到
/home/.../somefolder/boot
我可以通过浏览器终端访问该文件夹,该终端为我提供了 grub 救援。
如何将整个文件夹移回根位置以便正常启动?
如果这是不可能的,那么如果我从这个位置启动,我是否能够遍历到比启动文件夹更高的文件夹,至少可以通过 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
Run Code Online (Sandbox Code Playgroud)
这将启动一个菜单,其中包含选择 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
Run Code Online (Sandbox Code Playgroud)
之后我陷入困境
(initramfs)
此时我无法访问 /home 文件夹,只能访问 /home/path_to_boot/boot 中的文件夹。
任何想法如何继续?
更新 2
我联系了我的服务器公司,并获得了通过实时 CD 启动的选项。
有了它我做了一个
鹦鹉螺
并设法复制我的文件。
不幸的是,虽然我无法通过 grub 保存我的系统,但是我得到了我需要的文件。
如果您可以直接访问这台机器(也许通过浏览器终端弹出窗口(?)),您可以尝试加载内核和 initramfs 并启动它。
这不会再次启动您的系统(因为引导过程不仅仅依赖于 /boot),但您可以进入 shell。
如果您拥有 GRUB 的完全访问权限,这可能会起作用:
linux /<path>/boot/vmlinuz<...>
initrd /<path>/boot/initrd<...>
Run Code Online (Sandbox Code Playgroud)
因为您还没有指定根文件系统(通过root=...) - 因为您当前没有可用的根文件系统 - 所以您的系统将直接从 initramfs 运行 busybox shell。
这个(initramfs)提示符就是一个完整的shell。您需要创建一个文件夹 - run mkdir /rootfs)。然后您需要挂载根文件系统 ( mount -o rw /dev/<...> /rootfs) 并对其进行 chroot ( chroot /rootfs /bin/bash)。
然后您可以挂载其他文件系统 ( mount -a)。然后你就可以做任何你想做的事了。
免责声明:正如问题一样,这也是超级用户的交叉帖子。