pro*_*nce 13 solaris system-recovery
正如标题所说,在 Solaris 10 机器上,root (/) 下的所有重要的东西或几乎所有重要的东西都移到了 /old 。所以现在尝试的典型故障时运行时,命令Cannot find /usr/lib/ld.so.1(改变$PATH,也试图改变$LD_LIBRARY_PATH,$LD_LIBRARY_PATH_64并$LD_RUN_PATH和出口,但他们没有,这似乎改变实际库路径)。昨天尝试了很多寻找可能有帮助的东西,但没有发现任何东西实际上会改变 Solaris 10 的库路径,除了可能crle但无法运行,因为Cannot find /usr/lib/ld.so.1.
找到了很多 Linux 的 root 或 /usr/bin 恢复提示等,但有关 Solaris 10/Unix 的信息并不普遍且非常稀少。
不能运行cp,ln,mkdir或mv自Cannot find /usr/lib/ld.so.1。不能使用其他会话登录到机器。尽管一个会话仍然可以使用,并且该窗口被while true; do date; echo hej 1234567; done. 我们已经讨论了在 USB 驱动器上使用 Solaris 引导 CD 和 Linux dist 的解决方案。我们已经讨论了将硬盘驱动器磁盘切换到另一个机架的解决方案。
该/.../static/.../mv解决方案已经过测试,但没有奏效。
仍然可以使用的命令是(可能还有更多的命令可以使用):echo、<、>、>>、|、pwd、cd。
有没有办法创建一个目录或文件夹没有mkdir?有没有办法使用echoand>或echoand>>来恢复/usr/lib/ld.so.1?我知道/usr/lib/ld.so.1为了使命令起作用,可能需要恢复的不仅仅是更多。
非常感谢您的阅读,祝您有美好的一天 =)
Gil*_*il' 19
如果您不再有以 root 身份运行的 shell,则必须重新启动进入应急媒体。只要它能够以读写方式挂载根文件系统,任何事情都可以。
如果您仍然可以以 root 身份运行命令,那么一切都将变得简单。将环境变量设置LD_LIBRARY_PATH为指向包含基本系统工具使用的库的目录。至少/usr/lib在 32 位 Solaris、/usr/lib/6464 位 Solaris 上,可能还有其他目录(我现在无法访问 Solaris 10 以进行检查)。要运行可执行文件,请为其添加运行时链接程序的前缀:(/usr/lib/ld.so.1对于 32 位可执行文件)或/usr/lib/64/ld.so.1(对于 64 位可执行文件)— 现在移至/old. 因此,您应该能够通过以下方式恢复:
LD_LIBRARY_PATH=/old/usr/lib
export LD_LIBRARY_PATH
/old/usr/lib/ld.so.1 /old/usr/bin/mv /old/* /
Run Code Online (Sandbox Code Playgroud)
jll*_*gre 16
仅使用 shell 内置命令无法创建目录或复制二进制文件(尽管 Gilles在他的回复中描述了一个聪明的潜在解决方法)。
您最好的选择是在外部媒体(dvd、USB 记忆棒)上引导 Solaris,安装或导入文件系统,并使用以下内容修复混乱:
引导 Solaris 安装盘并选择运行 shell。
将旧根目录(以及所有其他文件系统,如果有的话)挂载在某个目录下,例如/mnt或/a。Solaris 引导盘在检测到现有文件系统时可能会帮助您做到这一点。
使用此命令将文件放回其原始位置(假设所有文件都安装在 下/mnt):
cd /mnt/old
find . -depth | cpio -pdlmPV@ /mnt
Run Code Online (Sandbox Code Playgroud)重新启动系统
init 6
Run Code Online (Sandbox Code Playgroud)如果您正在使用 ZFS 并且存在最近的快照,则在/old别处备份目录然后恢复到最后一个快照也可能是一个选项。
| 归档时间: |
|
| 查看次数: |
2712 次 |
| 最近记录: |