我目前正在 VMWare Workstations 15 Player 中运行 ParrotOS。运行uname -r
返回5.5.0-1parrot1-amd64
。
我正在测试一些 py 代码,这些代码管理 ~/Downloads/htb/Challenges/ 下子目录中的文件。当我运行代码时,我无法再在终端中输入基本命令或访问某些程序。当我重新启动系统时,我无法再启动 ParrotOS。相反,它会启动到 initramfs 控制台。
这是一个新帐户,所以我没有发布照片的权限。以下是选择恢复模式的输出:
我运行find / -name sbin 2>/dev/null
后发现,文件夹已使用我提供的测试数据从根目录移动到~/Downloads/htb/Challenges/。
我尝试将这些目录移回 / 。例如mv routeToSubDir/bin /usr/bin
,但是我收到错误消息,mv 无法删除该目录,因为它是只读系统
以下是位于非预期子目录中的文件夹/文件的列表:
任何关于恢复操作系统的建议都将不胜感激。如果没有,至少能够从虚拟机中提取某些文件(即文档等)会很好,但这不是我的首选。
答案1
重新启动计算机,当 grub 显示系统列表时,选择 parrot,按 e。
从 grub 选项中,找到以“linux16”开头的行并转到其末尾。在此行末尾输入“rd.break”(不带引号),如下所示。
rd.break
按 ctrl+x
类型 :
mount -o remount,rw /sysroot/
确保 remount 和逗号符号之间没有空格。
然后输入:
chrooot /sysroot/
然后将目录移动到先前的位置。
如果你在强制模式下使用 SELinux,你可以使用命令检查
sestatus
然后,您需要在移动文件后重新标记它们。可以这样做:
touch /.autorelabel
确保斜线和点之间没有空格。
答案2
第二种选择是进入救援模式而不是 rd.break。
按“e”,然后转到以单词“linux”开头的行末并附加“systemd.unit=rescue.target”。如果存在单词“$vt_handoff”,则删除它。如果存在 rd.break,则删除它。
安装主驱动器
将 sdb2 更改为驱动器的根分区。
mount /dev/sdb2 /mnt
安装其他东西
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys
mount -o bind /run /mnt/run
如果您愿意,您可以挂载启动分区。如果您的启动分区是其他分区,请更改 sdb1。对于 efi,您可能需要挂载启动分区,然后在 /boot/efi 内挂载 efi 分区。
mount /dev/sdb1 /mnt/boot
根目录
chroot /mnt
您现在应该处于 chroot 环境中。要退出 chroot,请按 control+d 或输入 exit。
当然,请记住在退出之前卸载驱动器。