그래서 최근에 저는 Linux 프로젝트를 처음부터 작업하고 있었고 여러 터미널이 열려 있었기 때문에 계속 작업하다가 실수로 다른 터미널 탭(루트)에 해당 줄을 입력하여 심볼릭 링크가 완전히 엉망이 되었습니다! , bash에서는 어떤 명령도 실행할 수 없습니다.
case $(uname -m) in
i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
;;
x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
;;
esac
저는 아치 리눅스를 사용하고 있는데 컴퓨터를 재부팅했을 때 커널 패닉이 발생했고 "switch_root: /sbin/init: 너무 많은 심볼릭 링크 수준을 실행할 수 없습니다."라고 말했습니다.
해결책이 있나요? 누구든지 도움이 되었으면 좋겠습니다.
답변1
복원할 내용
이 명령을 실행할 때는 이 LFS
변수가 설정되지 않을 수 있습니다 . 그래서 수정 /lib64/ld-linux-x86-64.so.2
하고 /lib64/ld-lsb-x86-64.so.3
.
당신은 손상되었습니다동적 로더. 따라서 동적으로 연결된 프로그램을 실행할 수 없습니다. , 등을 포함한 거의 모든 프로그램은 동적으로 연결됩니다 bash
.init
ln
/lib64/ld-linux-x86-64.so.2
가장 중요합니다. 64비트 Arch 프로그램에서 사용되는 동적 로더입니다. 심볼릭 링크는 다음과 같이 표현됩니다.glibc 패키지실행 중인 Linux 시스템에서 다음을 실행합니다.
ln -snf ld-2.33.so /lib/ld-linux-x86-64.so.2
참고: 숫자 2.33은 시간이 지남에 따라 변경됩니다!/lib/ld-*.so
시스템에 어떤 파일이 있는지 확인하십시오 .
/lib64/ld-lsb-x86-64.so.3
이는 Arch용으로 제작되지 않은 프로그램과의 호환성을 위한 것입니다. 그것은 출신이다ld-lsb
팩. 이 패키지가 설치되어 있으면 링크를 복원하십시오.
ln -snf ld-linux-x86-64.so.2 /lib/ld-lsb-x86-64.so.3
설치되지 않은 경우 ld-lsb
삭제하세요 /lib/ld-lsb-x86-64.so.3
.
사전 계획을 통한 독립적 복구
동적 라이브러리가 손상된 경우에도 정적으로 링크된 실행 파일을 실행할 수 있습니다. 불안정하거나 롤링 릴리스 시스템을 실행하는 경우 기본 정적 연결 유틸리티 세트를 사용하는 것이 좋습니다. (단순한 쉘 이상입니다. 예를 들어 정적으로 링크된 bash는 심볼릭 링크를 생성하기 위해 아무 작업도 수행하지 않습니다.) Arch Linux에는 그런 기능이 없는 것 같습니다. Debian에서 실행 파일을 복사할 수 있습니다.busybox-static또는zsh-정적: 둘 다 셸 및 내장 핵심 유틸리티(예: cp
등 ln
) 를 포함합니다.
이와 같은 사전 계획을 통해 여전히 실행 중인 루트 셸이 있는 한 다음을 실행할 수 있습니다 busybox-static
.
ln -snf ld-2.33.so /lib/ld-linux-x86-64.so.2
아니면 zsh-static
달리고
zmodload zsh/files
ln -snf ld-2.33.so /lib/ld-linux-x86-64.so.2
재부팅 후에도 여전히 멈춘다면 /sbin/init
정적 셸로 부팅하세요. 다음 단계를 따르세요.최근에 사용한 회사 컴퓨터가 시작 시 충돌이 발생함"유용한 디버깅 기술:"에서 "Hold Shift"로 시작합니다. 명령줄 에 (또는 올바른 경로) linux
추가하세요 .init=/bin/busybox-static
복구 시스템에서 수리
사전 계획이 없으면 제대로 작동하는 Linux 시스템을 실행하여 시스템을 복구해야 합니다. 이것아치스 위키월간 아치 미러를 시작하는 것이 좋습니다. 당신은 또한 사용할 수 있습니다시스템 복구 CD. 어느 쪽이든, lsblk
루트 파티션을 파악 fdisk -l
하고 . 그런 다음 심볼릭 링크를 수정합니다.lvs
mount /dev/… /mnt
ln -snf ld-2.33.so /mnt/lib/ld-linux-x86-64.so.2