Suse 9를 사용하여 서버를 복원해야 하는데 chroot
작동하지 않는 매우 일반적인 오류가 발생합니다. 불만은 /bin/bash
존재하지 않지만 존재합니다.
내가 사용한 명령은 다음과 같습니다.
mount /dev/dvg/lv00 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
cd /
chroot /mnt
하지만 해당 파일이나 디렉터리가 없기 때문에 실패합니다.
ldd
/mnt/bin/bash
필요한 각 라이브러리를 사용할 수 있음 을 나타냅니다 .
Strace는 전혀 도움이 되지 않습니다.
/mnt/bin/bash -i
오류 없이 작동합니다.
도움이 필요하세요?
답변1
이러한 라이브러리를 사용할 수 있는지 확인해야 합니다 /mnt
. 일반적으로 나열된 각 라이브러리의 ldd /mnt/bin/bash
상동체가 있습니까 /mnt
?
/mnt/bin/bash
셸( ldd
또는 /mnt/bin/bash -i
) 에서 시도 하는 경우에도 /lib
또는 에서 라이브러리를 가져올 수 있습니다 /lib64
.
당신이 그것을 사용하면 chroot /mnt
모든 것이 그것에서 나옵니다 /mnt/*
.
일반적으로(Debian에서 제공) 확인해야 할 라이브러리가 4개 있습니다(첫 번째 줄은 포함되지 않음).
linux-vdso.so.1 (0x00007ffcc8783000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f1a1000b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1a10005000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1a0fe30000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1a1017f000)
이 4개(출력 에 따라 ldd
조정됨 )가 있는지 확인해야 합니다 /mnt
. 대부분은 심볼릭 링크이며 이들이 가리키는 파일도 사용 가능해야 합니다 /mnt
.
라이브러리가 없을 때 시스템 호출이 오류를 반환 strace
하므로 이것이 도움이 되지 않는다는 점을 인정해야 합니다 .execve