ld.so.preload에 관한 문의 입니다.

coco의 이미지

안녕하세요?

일좀 하다가 제가 실수한 것이 있어서 만회를 할려고 합니다.
도움을 부탁 드립니다.

다름이 아니라. 양방향 파이프 프로그램을 실행했는데, 예상치 않은 결과가 나와서 strace를 사용하여 system call을 trace 했더니, etc밑에 ld.so.preload 화일이 없기때문에 생기는 에러가 있어서 제가 그 화일을 만들어서 /usr/local/lib를 추가하였습니다. 그 폴더에는 공용라이브러리가 아닌 라이브러리를 제가 하나 복사했습니다. 그랬더니 시스템이 아무것도 못 하고 있습니다.

이 리눅스가 제 앞에 있는 것이 아니라서 single linux로 못 들어갑니다 그걸로 들어가면 해결할 수 있을까요?

아무런 명령어도 듣지 않는 군요.

해결방법좀 부탁 드립니다.

mushim의 이미지

/etc/ld.so.preload 를 작성할때 무언가 실수가 있는듯 하군요.

프로그램 실행시 run time linker 를 필요로 하는 프로그램들은 실행할 수 없을것입니다. 거의 모든 프로그램이 그렇죠.

방법은 이미 떠 있는 프로세스를 통해서, /etc/ld.so.preload 를 지우는 것입니다. Bash 를 사용할 수 있다면,
echo "" > /etc/ld.so.preload
하시면 됩니다.

singlet의 이미지

저랑 같은 실수를 하셨군요. 처음에 무진장 당황했던 기억이 나네요.

혹시나 다행히도 루트 셸이 어딘가에 이미 떠 있지 않다면 아마 아무 것도 하기 힘들 겁니다. su, ls, rm, 기타등등 대부분의 명령어가 모두 안 먹을 텐데다가 (전부 dynamic linking 쓰고 있을 겁니다) single 모드로 들어간다 해도 bash 셸 자체마저 제대로 안 떠서 소용 없었다고 기억하는데.

만일 이런 상황에 처하셨다면, 제가 해결했던 방법이 도움이 될까 싶어 적어둡니다.

우선, 부팅할 때에 커널에 init=/sbin/sash 파라미터를 줘서 부팅하세요. 제 경우는 GRUB 을 쓰고 있어서
kernel /boot/vmlinuz-2.4.20-20.8 ro root=LABEL=/ init=/sbin/sash
라고 해서 부팅했었습니다.

이 방식대로 하면 거의 커널 자체와 sash 만이 메모리에 올라갈 텐데, sash 는 dynamic linking 을 쓰지 않은 셸이기 때문에 말씀하신 상황에서도 잘 돕니다. 일부 응급복구에 필요한 명령어들은 내장하고 있기도 하고요.

다음은, 초기에는 하드가 read-only 로 마운트되어 있을 테니까 쓰기 가능 모드로 다시 마운트해야 합니다. 위에 말씀드렸듯이 sash 는 mount 명령 같은 응급복구에 절실히 필요한 명령은 내장하고 있기 때문에
-mount -m /dev/hda2 /
라고 하시면 (물론 사족입니다만, /dev/hda2 는 당연히 사용하시는 시스템에 맞게 바꿔줘야 합니다.) 하드를 쓰기 가능 모드로 다시 마운트해줍니다. (앞의 - 빼먹으시면 안됩니다. - 가 붙어 있는 건 sash 의 내장 명령이라는 얘기거든요.)

마지막으로, mushim 님 말씀대로 하시거나, 또는 제 경우처럼 ld.so.preload 파일을 아예 지워버리시면 됩니다. 지워버리실 경우라면, rm 조자도 아마 dynamic linking 때문에 동작 안 할 테니까
-rm /etc/ld.so.preload
하셔야 될 겁니다.

azoth의 이미지

레드햇이면 설치 씨디 넣고 rescue로 부팅하세요.

Debian이면 설치 씨디 넣고 부팅되면 Alt-F2 그 다음 부터는
mount 어쩌고...

다른 배포판은 써 보질 않아서 잘 모름...

그것도 귀찮으시면 syslinux 같은 것도 복구할 때는 괜찮습니다.

기럼....

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.