· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Knoppix/System Recovery

크노픽스로 시스템 복구하기

멀쩡하던 시스템에 문제가 생기면 어떻게 해야 하는가?

이 문서는 부팅할 수 없는 리눅스 시스템에 크노픽스 CD을 이용하여 접근하는 방법, 설정 파일의 읽기/쓰기 권한을 얻는 방법, 파티션과 파일 시스템을 생성하고 다루는 방법, 파일을 다양한 저장매체와 네트워크로 복사하는 방법에 대해 알려준다. 크노픽스는 하드웨어와 시스템 설정을 자동으로 인식하는데 사용할 수 있으며 파티션과 파일 시스템을 생성하고 다루는데 사용할 수 있다. 크노픽스의 훌륭한 그래픽 도구 혹은 명령행을 통해 이러한 모든 작업들을 수행할 수 있다.



CD를 이용해서 완전히 부팅할 수 있는 크노픽스는 내가 특별히 고르고 고른 복구 디스크이다. 크노픽스에 대한 훌륭한 소개 기사가 몇 달전 developerWorks에 실린 바 있다.(Cameron Laird의 "Knoppix gives bootable, one-disk Linux")

오래전부터 주로 사용하던 도구는 Tom의 "플로피 디스크 한 장에 들어가는 최고의 GNU/리눅스" Root Boot와 Peter Anvin의 "엄청나게 다양한 기능을 가진 복구 CD" SuperRescue CD였다. 둘 다 최고의 리눅스 복구 디스크이다. 내가 가장 좋아하는 자랑할만한 기술 중 하나가 Tom의 Root Boot 디스크와 인터넷 접속만을 사용하여 완전한 Bare Metal 시스템을 리빌드하는 것이다.

CD 롬이 PC 표준이 되면서 나는 닿아 없어질 정도로 여러 SuperRescue CD를 사용했었다. 그러나 SuperRescue CD는 레드햇 리눅스 중 가장 뛰어나다고 평가 받는 한편 너무나 오래된 7.2버전에 기초를 두고 있다. 따라서 7.2에는 USB나 무선 기능과 같은 이후의 배포판에 포함되어 있는 하드웨어 지원 기능이 없다.

스타 탄생


크노픽스는 주목받는 신예로서 여러 훌륭한 기능을 제공하고 있다.

  • PCMCIA, USB, 무선 기기 등 최신 하드웨어를 지원하며 최고의 하드웨어 인식 기능을 제공
  • 최신의, 가장 좋은 데비안과 KDE 제공
  • 보통 2분을 전후한 빠른 부팅
  • 상용으로 제작된 디스크를 최소 가격에 구입할 수 있음

고속 인터넷 환경이 없는 지역으로 이사가기 전까지 마지막 항목은 그렇게 중요하지는 않다. 전화 접속만 가능한 지역에서 700MB의 용량을 내려받는 일은 그다지 실용적이지 않다.

크노픽스에는 가장 좋은 데비안, KDE 그리고 해당 시스템 도구들이 들어 있다. 이 글에서는 명령행과 그래픽 도구를 사용하여 어떻게 이러한 일 들을 수행하는지 알아볼 것이다. 파티션 번호, 파일명, 네트워크 호스트처럼 자기 시스템에 알맞은 값을 사용해야 함을 명심하라.

시작하기


KDE나 다른 그래픽 데스크탑 관리자 혹은 윈도우 관리자를 실행하고자 한다면 적어도 96MB의 RAM, 펜티엄 장비 이상이 필요할 것이다. X 없는 텍스트 모드에서는 원할하게 사용하는데 20MB의 RAM이 필요하며 오래된 486에서도 실행할 수 있을 것이다. 시스템에 있는 리눅스 스왑 파일을 사용할 것이다.

부트 옵션


크노픽스 CD로 부팅한 후 30초 동안 명령 프롬프트에서 정지한 다음 부팅을 계속할 것이다. 많은 종류의 부트 옵션이 있는데 이를 확인하려면 F2를 누른다. 예를 들어 다음은 크노픽스 3.2를 테스트 시스템 중 하나에서 부팅하는 방법이다.

knoppix lang=us knoppix wheelmouse knoppix desktop=icewm 

기본 키보드 매핑이 독일어로 설정되어 있기 때문에 항상 knoppix lang=us로 부팅한다. 기본적으로 크노픽스는 KDE 데스크탑으로 부팅한다. knoppix 2는 X 없이 텍스트 모드로 부팅한다. failsafe는 하드웨어를 최소로 인식하여 시스템을 시작한다.

크노픽스는 전적으로 메모리(램디스크)에서 실행된다. 사실 램디스크는 파일 트리로 볼 수 있다. 하드 드라이브보다 느린 CD에서 실행할 정보를 불러와야 하므로 가끔 느릴 수 있음을 잊지마라. 크노픽스를 하드 디스크에 설치할 수 있으나 지금 논의할 주제는 아니다.

부팅할 수 없는 리눅스 시스템 복구하기


가장 흔한 시나리오를 들어보자. 시스템에 어딘가 고장이 있는 것 같고 잡음이 들리며 부팅할 수 없다. 문제 없다. 크노픽스로 부팅하면 KDE 데스크탑에서 아이콘으로 표시된 모든 로컬 파티션을 보게될 것이다.(그렇지 않다면 파일 트리 /mnt에서부터 찾아보기 바란다.) 정확한 아이콘을 클릭하면 거기에 모든 파일들이 들어 있다. 그러나 파일 시스템은 읽기 전용으로 마운트되어 있는 상태이다. 이번에도 문제 없다. 데스크탑 아이콘에서 오른쪽 클릭해서 나오는 메뉴에서 "Change read/write mode" 옵션을 선택하라. 이 옵션은 파티션의 파일 시스템을 읽기/쓰기 모드로 마운트한다. 이제 파일을 편집하는 것이 가능하다.

기본 사용자는 knoppix이다. 루트 권한이 필요한 작업에서 su로 루트로 전환하려면 루트 패스워드를 할당할 필요가 있다.

knoppix@ttyp0[knoppix]# su
root@ttyp0[knoppix]# passwd 

읽기/쓰기 모드로 파일 시스템을 마운트하려면 명령행에서 다음과 같이 한다.

root@ttyp0[knoppix]# mount -t reiserfs -o rw /dev/hda5 /mnt/hda5 

마운트를 해제하려면 다음과 같이 한다.

root@ttyp0[knoppix]# umount /mnt/hda5 

"Could not umount device, device is busy"와 같은 에러 메시지가 나타난다면 무엇인가 파일 시스템을 읽고 있는 중이다. 파일을 닫고 파일 시스템 밖으로 cd 명령을 내린다.

어떤 마운트 포인트, 파일 시스템이 지정되어 있는지 어떻게 알 수 있는가? /etc/fstab을 읽기만 하라.

root@ttyp0[knoppix]# cat /etc/fstab
...
# Added by Knoppix
/dev/hda5 /mnt/hda5 reiserfs noauto,users,exec 0 0 

하드웨어 인식


설정 파일 편집에 미친듯이 몰두하게 되기 전에 가끔씩 하드웨어 정보를 검토해두자. 크노픽스는 fdisk, lspci, iwconfig, ifconfig, dmesg, /proc 등 최신 버전의 리눅스 하드웨어, 시스템 도구들을 가지고 있어 이런 작업에 탁월하다.(하드웨어 정보를 확인하는 일은 하드웨어를 구입하기 전에 리눅스와 호환되는 시스템을 테스트해보는 데에도 편리하다. 사운드 카드, 모뎀, 무선 네트워크 카드는 특히 문제가 많다. 사용 가능한 리눅스 드라이버를 결정하기 위해 칩셋을 알아둘 필요가 있지만 종종 제조사가 모델 번호를 바꾸지 않고 칩셋을 바꿔버리기도 한다. 또한 크노픽스 CD에는 빠른 사운드 테스트를 위해 사운드 파일이 다수 들어 있어 시작 화면에서 "OpenMusic"으로 시작한다.)

  • fdisk -l은 모든 하드 드라이브의 모든 파티션을 보여준다.
  • lspci -v는 PCI 버스에 연결되어 있는 모든 장치와 칩셋의 상세한 정보를 보여준다.
  • cat /proc/cpuinfo는 어떤 CPU가 설치되어 있는지 정확히 말해준다.
  • ifconfig는 가장 흔한 이더넷 카드, ppp, 모뎀 인터페이스를 비롯하여 네트워크 인터페이스 설정을 보여주거나 조작한다.
  • iwconfig는 무선 네트워크 카드를 위한 도구인 점만 제외하고 ifconfig와 유사하다.
  • dmesg는 흥미로운 도구이다. 커널 해커가 아니라면 man dmesg 정보가 모두 도움이 되지는 않는다. dmesg | grep <장치>만 사용해도 문제 해결과 시스템 파악에 유용하다. 모든 내용을 보려면 옵션 없이 dmesg를 실행하라.

그리고 KDE는 이 모든 내용을 확인할 수 있는 아주 좋은 GUI 도구를 제공한다. System -> InfoCenter에서 확인하라.

데이터 파일 복구하기


일반적으로 가장 중요한 복구 작업은 문제가 발생한 드라이브에서 데이터를 복사해오는 것이다. 여기에서는 복사할 파일이 많을 때 내가 가장 잘 쓰는 방법을 설명한다. 두번째 하드 드라이브를 설치하고 크노픽스로 부팅한 다음 이전 디스크의 파일을 새로운 디스크로 복사한다. 핫 스왑 기능을 제공하는 드라이브나 이동식 드라이브 장치를 가지고 있지 않더라도 케이스를 열고 드라이브를 연결하는 데 2~3분 정도 밖에 걸리지 않는다. 최신 드라이브 혹은 정리해서 다시 초기화해야하는 오래된 드라이브를 가지고 있는가? 문제 없다. 크노픽스에서 디스크 준비 작업을 수행하라.

파티션 나누기와 초기화


먼저 두번째 하드 드라이브를 설치한다. 크노픽스로 부팅하고 루트 셸을 연다. 이미 두번째 디스크 파티션이 바탕화면에 나와있다면 필요한 것이 무엇이든 단지 다시 초기화하기만 하면 된다. IDE 드라이브는 hd인데 비해 SCSI 드라이브는 sd로 나타낸다는 점을 주의하라. 이 명령은 시스템에 있는 디스크 파티션을 보여준다. 시스템에 알맞은 값을 사용해야 함을 잊지마라.

root@ttyp0[knoppix]# fdisk -l /dev/hdb 

To format a disk partition: 디스크 파티션을 초기화하려면 다음 명령을 실행한다.

root@ttyp0[knoppix]# mkfs.ext2 -c /dev/hdb1 

이 명령은 실제 ext2 파일 시스템을 생성한다. -c는 배드 블록을 체크한다. 물론 ext2, ReiserFS 등 원하는 파일 시스템 형식으로 얼마든지 만들 수 있다.

root@ttyp0[knoppix]# mke2fs -j -c /dev/hdb1
root@ttyp0[knoppix]# mkreiserfs /dev/hdb1 

파티션이 존재하지 않는가? 먼저 fdisk로 명령행에서 파티션을 생성하는 방법을 설명한다. fdisk로 조작하는 방법은 명령을 내리기 전까지 변경된 내용을 디스크에 반영하지 않는다는 점에서 어느정도 안전하다. 따라서 변경된 내용을 반영하기 전에 다른 옵션을 시도해보고 파티션 테이블을 미리볼 수 있다. 다음 명령대로 하면 파티션 하나를 생성한다.

root@ttyp0[knoppix]# fdisk /dev/hdb 

언제든 "m"을 누르면 fdisk 명령 테이블을 보여준다. 그리고 "n"을 누르면 새로운 파티션을 생성한다. 이제 "p"를 눌러 첫번째 파티션을 생성한다. Enter를 두번 눌러 기본 값을 적용한다. 그렇지 않고 모든 디스크를 사용하기를 원하지 않는다면 한번만 Enter를 눌러 기본 시작점을 적용하고 원하는 크기를 선택한다.

+1000M 

언제든 "p"를 누르면 새로운 파티션 테이블을 미리볼 수 있다. 모든 것이 좋아 보인다면 "w"를 눌러 변경 사항을 디스크에 쓴다. 기본적으로 fdisk는 리눅스를 의미하는 "type 83" 파티션을 생성한다. 파티션 목록을 확인하려면 "l"을 누른다. 파티션 형식을 변경하려면 "t"를 누른다. 파티션을 삭제하고자 하는가? 매우 쉽다. "d"를 누르고 프롬프트를 따른다.

QTParted


더 쉬운 방법은 KDE에서 QTParted를 사용하는 것이다.(System -> QTParted) QTParted는 파티션을 생성, 제거, 이동, 다시 크기를 변경한다.(NTFS 포함) 따라서 어떠한 것도 잃지 않고 데이터를 복사할 공간을 만들 수 있다.

GUI 방법으로 파일 복사하기


나는 그래픽 방식의 파일 관리자를 좋아한다. 긴 명령문을 타이핑하는 것보다 드래그 앤 드랍이 훨씬 단순하다. KDE 데스크탑에서 원본 드라이브와 복사할 드라이브를 나타내는 아이콘을 클릭한다. 각 드라이브는 신속하고 쉬운 드래그 앤 드랍을 위해 각각 파일 관리자로 연다. 복사 대상 드라이브를 쓰기 가능하도록 해야 함을 명심하라.

명령행에서 파일 복사하기


파일을 이동할 디렉토리를 생성해야 함을 기억해두라.

# mkdir /mnt/hdb1/home/carla/backup
# cp -r /mnt/hda5/home/carla /mnt/hdb1/home/carla/backup 

모든 드라이브를 그대로 복제하기


똑같은 크기, 혹은 복사 대상 드라이브가 원본 드라이브 보다 큰이 하드 드라이브 둘이 필요할 것이다. 각 드라이브에는 파티션을 마운트하지 않았음을 확인하라. 이 예에서 /dev/hda는 원본 드라이브, /dev/hdb는 대상 드라이브이다. dd 명령은 바이트 대 바이트 복사로 MBR(master boot record)을 포함해서 정확히 복사한다.

# dd if=/dev/hda of=/dev/hdb 

마운트 혼동


어떤 파티션이 마운트되어 있는지, 파티션이 어떤 상태인지 잊어버렸는가? 문제 없다. 긴급 상황에서 /proc를 통해 마운트 상태를 파악할 수 있다.

# cat /proc/mounts 

이 명령은 마운트된 모든 파일 시스템, 파일 시스템 형식, 읽기/쓰기 상태, 그 밖에 다른 속성들을 보여준다. 시스템에 얼마나 많은 하드 드라이브가 있는지 다음 명령들 중 하나가 말해줄 것이다.(SCSI 드라이브는 sd로, IDE는 hd로 표현된다는 것을 잊지마라.)

# fdisk -l 

# dmesg | grep hd 

# dmesg | grep sd 

CD로 복사하기


KDE와 크노픽스를 이용하면 쉽게 할 수 있다. 시스템에 CD 라이터기가 설치되어 있다고 가정해서, 파일이 들어있는 파티션의 데스크탑 아이콘을 마우스 오른쪽 버튼으로 클릭하기만 하면 "Create Data CD with K3b." 메뉴를 보게 될 것이다. File -> New Project를 선택하고 복사하려는 파일을 드래그 앤 드랍하여 다음 과정으로 진행한다. K3b는 사용자가 직접 해야하는 CD 드라이브 인식, 설정 과정을 자동으로 잘 수행한다. 문제가 발생한다면 developerWorks의 "Burning CDs on Linux" 문서를 참고하기 바란다. 이 문서는 어떻게 명령행에서 CD를 굽는지에 대해서도 설명하고 있다.

다른 매체로 복사하기


Zip 드라이브, 플로피 디스크, USB 저장 장치는 크노픽스에서 자동으로 잘 인식되며 데스크탑에 아이콘 형태로 위치할 것이다. 단지 드라이브를 쓰기 가능하도록 하기만 하면 드래그 앤 드랍으로 모든 작업을 수행할 수 있다.

네트워크를 통해 복사하기


다른 리눅스처럼 크노픽스를 네트워크에 연결하도록 설정할 수 있다. 크노픽스에는 전용 그래픽 설정 도구가 포함되어 있다. 메인 메뉴 Knoppix -> Network/Internet에서 찾을 수 있다. 다시 크노픽스의 훌륭한 하드웨어 인식 기능이 발휘된다. 무선 네트워크 카드에서도 잘 작동한다.(해당 무선 네트워크 카드가 리눅스에서 지원되는 모델임을 가정한다!) 단순히 질문에 답하기만 하면 사용자가 할 일은 끝난다.

명령행에서도 쉽게 할 수 있다. 루트 권한을 갖고 다음과 같이 명령한다.

# netcardconfig 

네트워크 설정이 끝나면 파일을 전송할 수 있는 방법에는 여러가지가 있다. cp은 로컬 마운트 파티션에 적합하다. 신뢰할 수 없는 네트워크를 통해 파일을 전송하는 일에는 scp(secure copy)가 필요하다. 사실 크노픽스는 다른 도구를 사용하도록 허용하지 않을 것이다. 네트워크를 통해 어딘가에서 전송되는 파일을 받기 위해서는 ssh 서버가 실행되어 있어야 할 필요가 있다. 이 명령은 모든 디렉토리를 복사한다.

# scp -rp /mnt/hda5/home/carla 192.168.1.5:/home/carla/tmp 

SSH 퀵스타트 가이드


ssh 서버가 없는가? 아직까지 정말로 ssh를 설치하지 않았다면 여기 SSH를 실행하기 위한 퀵스타트 가이드를 제공하니 살펴보라. 그러나 원격 관리가 일상적인 작업일지라도 이를 사용하기 전에 ssh에 대해 더 자세히 알아두어야 한다. 또한 최근에 배포된 수 많은 중요한 보안 패치가 있다는 사실도 기억해두라.

OpenSSH는 모든 메이저 리눅스 배포판에 포함되어 있으며 이미 여러분의 시스템에도 있을지 모른다.(확인을 위해 locate sshd라고 타이핑해보라.) 그렇지 않다면 내려 받고 설치한다. 특정 기기가 필요하지는 않다. 어떠한 리눅스 PC에서도 SSH는 돌아간다. 다음과 같이 시작한다.

# /etc/init.d/ssh start 

그리고 양쪽 머신에 같은 사용자가 있기만 하면 된다. 루트 계정으로 쉽게 할 수 있지만 잠재적인 위험을 갖게된다. 물론 필요하다면 크노픽스에서 useradd와 passwd로 사용자 계정을 생성할 수 있다. 그리고 앞에서 살펴본 scp 명령을 실행한다.

처음 연결시 "The authenticity of host X can't be established...are you sure you want to continue connecting?"라는 메시지를 받게 될 것이다. 그러면 된다. 루트가 아닌 사용자 계정으로 파일을 이동하기 위해 다음의 명령을 실행한다.

# scp -rp /mnt/hda5/home/carla carla@192.168.1.5:/home/carla/tmp 

호스트 시스템으로 루트 셸 열기


이 명령은 크노픽스로 로그인해 있는 상태에서 호스트 시스템을 관리하도록 한다. 호스트 시스템이 있는 파티션을 확인하고 크노픽스 루트 셸을 열어 이를 마운트한다.

root@ttyp0[knoppix]# mount /dev/hda1 /mnt/hda1
root@ttyp0[knoppix]# chroot /mnt/hda1
root@Knoppix:/ 

크노픽스의 사소한 결함


CD에서 프로그램 실행은 이상한 문제의 원인이 되는데 특히 노트북에서 그렇다. 시스템이 부팅했을 때 크노픽스가 어떠한 명령에도 응답하지 않는다면 power management에 의해 크노픽스 세션이 엉망이 된 경우가 흔하다. 내가 아는 한 유일한 해결책은 power management를 중지하거나 단순히 전원 스위치를 내리고 다시 재시작하는 것이다.

가끔 크노픽스가 부팅 중에 혹은 KDE(혹은 다른 X 세션)를 실행하는 중에 멈춰버리기도 한다. 시스템 메시지를 확인하기 위해 첫번째 가상 콘솔로 전환하라.(Ctrl + Alt + F1) 어디에 문제가 있는지 말해줄 것이다. 기본 X 세션으로 돌아오려면 Alt + F5를 누른다. 예를 들어 테스트 시스템 중 하나는 SCSI 장치를 인식하는 과정에서 멈춰버렸다. 왜? 누가 알겠는가? 부트 명령으로 knoppix no scsi를 추가하여 SCSI 장치를 비활성시키자 문제가 해결되었다.

창의력인 크노픽스 활용


리눅스는 항상 창의력을 고취시켰다. 크노픽스는 Inside Security Rescue Toolkit, OpenGroupware Knoppix, Damn Small Linux, Overclockix와 같은 수 많은 독창적인 크노픽스 연관 프로젝트를 통해 대규모로 비상해 왔다. 아래 참고 문헌에서 더 많은 정보를 얻을 수 있으며 크노픽스 배포판을 자기 입맛에 맞게 만드는 방법에 대해 알 수 있다.

참고자료


그다지 매력적인 읽을 거리는 되지 못하지만 언제나 메뉴얼 페이지에는 완전한 명령과 옵션에 대한 설명이 포함되어 있다. 시스템 복구 명령에 매우 유용한 메뉴얼 페이지는 다음과 같다.

  • man fdisk
  • man mkfs
  • man fstab
  • man ifconfig
  • man mount
  • man proc
  • man dmesg
  • man iwconfig
  • man chroot
  • man scp
  • man sshd
  • man dd
  • man lspci

Cameron Laird, "Knoppix gives bootable, one-disk Linux" (developerWorks, February 2003) : 크노픽스에 대한 가장 좋은 입문서이다.

Knoppix.org는 크노픽스의 제작자 Klaus Knopper의 공식 사이트이다.

크노픽스와 관련하여 참고할 만한 사이트로 가장 중요한 곳이 Knoppix.net이다. 사용자 포럼, 위키, 하우투 문서, 크노픽스 관련 프로젝트(자기 입맛에 맞는 라이브 리눅스 CD 만들기, 크노픽스를 하드 드라이브에서 실행하기, USB 메뮤리에 대한 창의적인 활용, 매우 작은 리눅스들 등과 같은)에 대한 링크를 포함하고 있다.

Knoppix Customizations에서는 Oralux, SkoleKNOPPIX 등과 같은 비 공식적인 변형 크노픽스를 소개하고 있다.

"Build a Linux test network" (developerWorks, May 2003) : 이 문서에는 유익한 GRUB 명령을 포함하고 있다. 부팅 문제를 해결하는데 도움이 필요하면 이 문서를 참고하라.

"Burning CDs on Linux" (developerWorks, April 2003) : 명령행에서 CD를 굽는 방법을 보여준다.

처음 리눅스 환경에서 개발하는 입장이라면 IBM 미들웨어에서 리눅스 응용 프로그램을 개발하는 방법에 대해 소개하고 있는 developerWorks의 "Speed-start your Linux app" 문서를 살펴보라.

The Debian GNU/Linux Network Administrator's Manual은 너무나 귀중한 참고 자료이다.


Wireless LAN resources for Linux : 무선 네트워크에 대한 알기 쉬운 안내서이다.

크노픽스 이전에 저자를 구원해주었던 Tom's Root Boot (or tomsrtbt)와 Peter Anvin's SuperRescue CD.

Carnegie Mellon 대학의 CERT Coordination Center에서 검색해보면 다양하게 구현된 SSH 및 다른 소프트웨어에 대한 취약점 정보를 얻을 수 있다.

Secure Shell FAQ에서 ssh에 대한 모든 해답을 얻을 수 있다.

OpenSSH는 무료이며 오픈 소스로 구현된 ssh이다.

IBM Linux Technology Center의 멤버들은 APC 모뎀(Mwave) 드라이버, BlueDrekar 미들웨어 전송 드라이버, Hotplug 프로젝트, 리눅스에서의 USB 등을 포함한 몇몇 디바이스 관련 리눅스 프로젝트에 공헌한 바 있다. Linux Technology Center 웹 사이트에서 모든 지원 프로젝트들을 찾아볼 수 있을 것이다.

developerWorks 리눅스 코너에서 더 많은 리눅스 관련 문서들과 설명서를 찾을 수 있을 것이다.



sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2007-06-14 12:13:16
Processing time 0.0018 sec