1장. 서문1.1. 감사의 말리눅스 커뮤니티에 감사드린다; 특히 유즈넷과 메일링 리스트를 통하여 리눅스를 최대한 활용하는 방법에 대한 많은 팁과 답과 제안을 제시한 사람들에게 감사드린다. 여러분들의 공헌은 우리들 모두에게 혜택을 주고 있다. 이 문서는 DocBook SGML 형식으로 작성된 후 SGMLTools 2.x를 이용하여 HTML, 포스트스크립트, 리치 텍스트 포맷, PDF 등 다양한 형태로 변환되었다. SGMLTools에 대한 자세한 장보는 해당 프로젝트의 웹 사이트인 http://www.sgmltools.org/ 를 참고하기 바란다. 1.2. 저작권 정보와 관련 법적 정보Copyright � 1997-1999 by Steve Frampton. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v0.4 or later (the latest version is presently available at http://www.opencontent.org/openpub/). 나는 이 문서를 공공 서비스로서 리눅스 커뮤니티에 작성하여 무료로 제공한다. 나는 여기에 포함된 정보가 최신이며 정확하고 도움이 되도록 하기 위하여 최선의 노력을 하였지만 여기에 포함된 잘못된 정보에 의한 직간접적인 손실에 대하여 어떠한 책임도 지지 아니한다. 실수나 누락으로 인하여 비난받고 싶지는 않다. 어쨌든 눈의 띄게 틀린 내용이나 개선할 사항에 대한 제안이 있으면 알려주기 바란다. 물론 최신 버전이 맞는지는 확인하기 위하여 (목차에 나오는) 이 문서의 버전 번호와 날짜를 검사해보기 바란다. 만약, 3개월 이상 지난 문서라면 http://metalab.unc.edu/LDP/ 에 있는 리눅스 문서화 프로젝트의 홈페이지에 새 버전이 있는 지를 확인하기 바란다. 현재의 이 문서는 적당한 베타 수준이라고 보면 된다. 나는 이 문서를 1997년에 쓰기 시작하였고 시간이 허락하는한 계속 갱신해 왔다. 오픈 소스 커뮤니티의 개발은 빠른 속도로 계속되고 있기 때문에 이 문서를 최신판으로 유지한다는 것은 대단히 어려운 일이다. 따라서 일부 절에는 쓸모없는 정보가 들어 있을 수 있다. 간단히 말하자면 여기에 있는 정보가 정확하다는 것을 나는 보장할 수 없다. 그렇지만 도움이 된다면 좋은 일 아니겠는가 ! 2장. 소개리눅스 2.2.0 (1999년 1월 25일 발표): 전세계의 석권을 향하여... 아마 당신은 리눅스 초보일 것이다. 그래서 때때로 필요한 리눅스의 설정방법과 관리업무에 대한 요약본을 찾고 싶었을 것이다. 정말로 그렇다면 이 문서야 말로 당신이 찾던 문서다 ! 2.1. 범위이 문서는 리눅스의 설치와 설정에 관한 사항과 리눅스 기반의 서버나 데스크탑 컴퓨터가 정상적으로 실행되도록하기 위하여 지켜야 할 관리와 유지보수 절차에 대하여 요약할 생각이다. 개인 사용자는 물론이고 기업 사용자도 대상으로 한다. 유닉스에 대하여 상세한 정보가 필요하다면 좋은 책들이 이미 나와있고 심지어는 인터넷에서도 구할 수 있기 때문에 유닉스 전반에 대한 설명을 하지는 않을 생각이다. 일반적으로 여러분의 리눅스 시스템은 조금만 사용자가 유지보수를 해주면 운영할 수 있다. 반복적인 일들 예컨대 시스템 로그 파일을 순환시키거나 버리는 일 등은 자동화가 가능하다. 따라서, 대부분의 경우에 극히 조금만의 사용자 간섭만으로도 리눅스는 잘도 업무를 수행할 수 있다. 하지만 특별한 요구사항이 있거나 시스템의 장애가 발생한 경우 이 문서가 도움이 될 것이다. 나는 리눅스를 집과 직장에서 동시에 쓰고 있다. 나는 리눅스를 아주 잘 쓰고 있으며 인터넷 서비스와 파일/인쇄 서비스를 나의 사장님에게 지난 4년간 안정적으로 제공하고 있다. 2.2. 리눅스 배포판 선택하기시중에는 다양한 리눅스 배포판이 나와 있다. 모든 배포판은 같은 기본 리눅스 커널과 시스템 도구를 제공하지만 설치하는 방법과 끼워주는 응용 프로그램이 다르다. 각 배포판에는 일장일단이 있다. 따라서, 선택하기에 앞서 각각의 배포판이 어떤 기능을 제공하는지 조사하는데 시간을 투자할 필요가 있다. 각 배포판에 대한 정보와 어떻게 다운로드 또는 구매할 수 있는지를 설명한 웹 사이트의 목록을 열거하면 다음과 같다 :
모든 배포판을 열거하는 것은 이 문서의 범위를 넘어서는 것이기 때문에 가장 인기있는 몇개만 열거하였다. 물론, 더 많은 정보를 원한다면 http://metalab.unc.edu/LDP/HOWTO/Distribution-HOWTO.html 에서 찾을 수 있는 ``Distribution-HOWTO'' 가이드를 참조하기 바란다.
내가 선택한 배포판은 레드햇 리눅스다. (게다가 재론의 여지없이 리눅스 사용자에게 가장 인기있는 배포판이기도 하다.) 거의 3년간 나는 끈질긴 슬랙웨어 추종자였다. (그 전에 커널 0.90a 시절까지 거슬러 올라가면 tsx-11에서 나온 자그마한 배포판에 얽혀 있기도 하였다.) 예전에도 레드햇을 시험삼아 써보기는 하였지만 그에 대하여 좋은 얘기를 할 만하지는 않았다. 그러다가 레드햇 5.1을 써보고는 생각이 완전히 변하였다! 내 의견에 5.1에 이르러서야 레드햇은 마침내 "제대로 방향을 잡았"다. 내가 레드햇 배포판의 팬이 된 이유로는 쉬운 설치, 다양한 플랫폼 지원 (최근까지도 레드햇은 인텔, 알파, 솔라리스 - 스파크가 맞는 표현 (역자) - 플랫폼을 지원하는 유일한 업체였다.) 그리고 무엇보다도 RPM 패키지 관리자를 들 수 있다. 게다가 레드햇은 배포판에 포함된 패키지의 개정판이 나오는 대로 회사의 FTP 사이트 (ftp://ftp.redhat.com/redhat/updates/) 에 올려두는데 이는 시스템을 최신판으로 유지하고 때때로 발견되는 버그나 보안상의 문제점을 제거하는 좋은 방법이다. 처음에는 별다른 용도로 쓸데가 없던 컴퓨터에 테스트 목적으로 설치하였다가 우리의 인터넷 / 파일 & 인쇄용 서버 중 두대를 슬랙웨어에서 레드햇 5.1로 바꾸었으며 그 뒤로 후회를 해본 적이 없다. 나는 내 시스템과 집에 있는 시스템과 다른 세개의 간단한 서버에도 설치하였다. 게다가 인텔 버전은 물론이고 알파 버전과 스파크 버전도 갖고 놀 기회를 가졌다. 최근에 나는 내가 관리하는 모든 리눅스 시스템을 레드햇 6.1로 바꾸었다. 따라서, 이 문서는 명백히 레드햇 "풍"이 될 것이며 그것도 인텔 기반의 6.1 버전과 관련이 깊을 것이다. 하지만 기대하기로는 대부분의 또는 최소한 일부의 정보는 다른 배포판의 사용자에게도 유용할 것이다. 3장. 리눅스 개요리눅스 세계에 오신 것을 환영합니다! 3.1. 리눅스는 무엇인가?리눅스는 인텔, 스파크, 알파, 파워피씨를 포함한 다양한 플랫폼에서 실행가능한 진정한 32비트 운영체제이다. (플랫폼 중 일부는, 예컨대 알파에서는, 실제로는 64비트이다.) 다른 기계에 포팅된 사례도 있지만 나는 그에 대한 경험이 없다. 리눅스가 당시 핀란드의 대학생이었던 리누스 토발즈에 의하여 처음 만들어진 것은 1990년대 초반으로 거슬러 올라간다. 리누스는 집에 "예술의 경지"인 386 박스를 갖고 있었으며 286 기반의 미닉스 시스템 (작고 유닉스와 유사한 운영체제로 운영체제 수업에 사용할 목적으로 만들어졌다) 의 대체품을 당시로서는 새로운 이 칩에만 있는 추가의 명령을 활용하기 위하여 만들기로 결정하였다. 그리고는 조그마한 알맹이만 있는 커널을 작성하기 시작하였다. 우연히 그는 그의 작은 프로젝트에 관심이 있는 사람들이 살펴볼 수 있도록 하고 어쩌면 공헌을 할 수 있도록 하게 하기 위하여 유즈넷 그룹 comp.os.minix에 발표하였다. 그 결과는 엄청난 것이었다! 리눅스에 관련하여 재미있는 것은 그것이 완전히 공짜라는 것이다! 리누스는 프리 소프트웨어 재단의 GNU 카피레프트 라이센스를 채택하기로 결정하였는데 이는 코드가 저작권에 의하여 보호되기는 되는데 항상 다른 모든 사람들에게 제공될 수 있도록 보호된다는 것을 의미한다. 여기서 프리는 자유로움을 의미한다 -- 당신은 그것을 자유로이 얻을 수 있고, 자유로이 사용할 수 있으며, 심지어는 이득을 취하기 위하여 자유로이 팔 수도 있다! (공짜 소프트웨어를 판다는 것이 어쩌면 이상하게 들리겠지만 레드햇을 포함하여 여러 회사가 표준 리눅스 커널, GNU 유틸리티, 자기 "취향" 에 따라 포함시킨 응용 프로그램을 묶어서 배포판으로 팔고 있다. 널리 알려지고 인기있는 배포판으로는 슬랙웨어, 레드햇, 수세, 데비안이 있다.) 대단한 것은 대부분의 상용 소프트웨어 회사들이 자신들의 "대상시장"에 맞춰 프로그램을 만드는 데 반하여, 누구나 소스 코드에 접근할 수 있기 때문에 자신의 필요에 맞춰 운영체제를 고칠 수 있다는 것이다. 리눅스는 유닉스의 완전히 성숙한 구현이라고 생각될 수 있고 생각되어야만 한다. 물론 우리는 리눅스를 "유닉스"라고 부를 수는 없다. 그 이유는 호환성이 없거나 기능이 부족하여서가 아니라 "유닉스"라는 단어가 AT&T사의 등록상표이고 따라서 그 단어의 사용은 라이센스 계약을 통하여만 허가되기 때문이다. 리눅스는 어떤 면에서건 다른 어떤 운영체제만큼은 지원을 받을 수 있고, 믿을만 하며, 성장할 수 있다. (글쎄 내 의견으로는 더하면 더했지 덜 하지는 않는다!) 어쨌든 리눅스는 그 근본과 그 뒤에 깔려있는 철학과 수백만 달러를 퍼붓는 마케팅 캠페인 행사의 부족 때문에 수많은 미신에 시달리고 있다. 사람들은 아직도 이 멋진 운영체제에 대해 배워야할 것이 많다! 3.2. 미신 깨뜨리기나는 리눅스를 수년간 써왔다. 그리고 나는 내가 운영체제가 무엇이며 무엇을 할 수 있고 없는지 좀 안다고 생각하고 싶다. 열렬한 유즈넷 독자로서 최근의 개발상황은 물론이고 언제나 튀어나오는 다양한 불꽃튀는 논쟁 (갑론을박하는 사람들 같으니라고! ;-) ) 을 계속 따라 왔다. 나는 적지 않은 사람이 믿고 있는 내가 맡아야 할 미신들 (퍼드 FUD -- "두려움, 불확실, 의심(Fear, Uncertainty, Doubt)" 라고 불리기도 하는데 이는 상업적인 기술 회사들이 자신의 시장이 경쟁하는 기술을 멀리하도록 겁을 주기위하여 흔히 사용되는 수법이다.) 을 알고 있다. 내가 이러한 미신을 향해 돌진해서 박살을 내도록 해보겠다. :-)
사람들은 이윤을 동기로 갖지않은 자원자들에 의해 작성된 소프트웨어는 상용의 소프트웨어보다 질이 떨어질 것이라고 생각하는 경향이 있다. 이는 과거에는 사실이었을런지도 모른다. (내 말은 도스와 초창기 윈도 시절에 진짜 쓰레기 같은 프리웨어가 많이 있었다 는 의미이다) 그러나 요즘에는 확실히 사실이 아니다. 인터넷의 힘은 지구상의 가장 똑똑한 두뇌 중 일부가 모여서 자신들이 재미있다고 생각하는 일을 협력해서 하는 것을 가능하게 하였다. 리눅스나 수많은 GNU 유틸리티, 응용 프로그램 패키지에 도움을 주고 있는 사람들은 다양한 배경을 갖고 있으며 공헌하고자 하는 이유도 각자 다르다. 일부 진짜 골수 해커들은 코딩을 좋아하기 때문에 개발에 참여하고 어떤 사람들은 필요한 소프트웨어(예를 들어, 회사에서 쓸 랜용 트래픽 모니터)가 있어서 그걸 직접 작성하기로 결정했기 때문에 개발을 하고 또 다른 부류인 연구자나 전산학을 하는 사람들은 연구 성과를 내기 위해서 리눅스를 이용하기도 한다. 상용 제품의 경우 패키지가 개발되고 판매될 때 소스 코드는 빼고 최종 사용자에게 판매되는데 반하여 리눅스의 코드는 관심과 능력을 가진 사람들에 의하여 속속들이 관찰되고 디버깅되며 개선된다. 이러한 상세한 검토는 리눅스가 높은 신뢰도와 성능을 발휘하게 되는 원인 중 하나가 된다. 잊지 말것: 인터넷은 그 자체가 오픈 소스 프로젝트에 기반하여 만들어지고 운영되고 있다. 전세계 사람들과 당신이 매일같이 주고 받는 전자우편의 80%가 Sendmail에 의하여 한쪽 또는 양쪽에서 처리되며 당신이 "웹을 서핑"하며 보는 웹 페이지의 50%이상이 아파치에 의하여 처리된다. 이 정도면 신뢰도가 충분한가요?
이 미신을 들으면 구역질이 나려고 한다. 그렇다면 "다른" 회사들은 실제로 지원을 한단 말인가 ? 나는 매우 널리 사용되는 상용 운영체제와 관련하여 개인적인 경험을 갖고 있는데 그 업체의 소위 "지원"이라는 것은 완전히 쓸모없는 것이었다. 무엇보다도 먼저 얘기할 점은 리눅스를 위한 지원이 있다는 것이다. 물론 상업적인 지원이다. 당신이 돈을 내고서라도 지원을 받을 만한 지원을 해주는 회사가 몇군데 있다. 그들은 전화나 전자메일을 통해서 지원을 하기도 하고 집에까지 찾아와서 문제를 해결하기도 한다! 물론 리눅스에서 맞닥뜨리는 상황의 99%는 단 한두번의 대답을 듣고서도 원하는대로 할 수 있을 것이다. 이런 대답을 찾으려면 유즈넷이나 여러 메일링 리스트를 참고하면 된다! 내가 겪은 문제 중에 http://www.dejanews.com/을 검색하거나 comp.os.linux.* newsgroups 중 한곳에 질문을 해서 해결책을 찾지 못한 문제는 없었다. 대개 내가 글을 올리고 세시간내지 열두시간안에 답을 들을 수 있었다. 리눅스의 또 한가지 재미있는 측면은 커널 전체와 운영체제 컴포넌트 대부분의 소스 코드를 자유로이 구할 수 있기 때문에 보안, 서비스 거부, CPU 오류(예를 들어, 인텔의 F00F fatal exception)와 같은 결정적인 지원 이슈들을 재빨리 추적하여 해결할 수 있다. 해결에 걸리는 시간은 유사한 또는 같은 문제에 대하여 상용 소프트웨어들이 해결하는 시간과는 단위자체가 다르게 빠르다. 그렇다면, 상용 지원 서비스는 어디에 갔단 말인가? 그 외에도 내가 그 실체를 밝히고 싶은 미신들은 수없이 많다. 하지만 이는 이 문서의 범위를 넘어선다. 어쨌든 미신 추방에 대하여는 http://www.KenAndTed.com/KensBookmark/linux/index.html에 있는 "Linux Myth Dispeller"과 http://www.geocities.com/SiliconValley/Hills/9267/fud2.html에 있는 "The Linux FUDfactor FAQ"를 참조하기 바란다. 3.3. 사용자의 관점나는 회사와 집에서 모두 리눅스를 사용한다. 우리 회사에서는 수백명의 사용자에게 인터넷 서비스를 제공하기 위하여 리눅스를 사용하고 있다. 제공되는 인터넷 서비스에는 SMTP와 POP은 물론이고 TACACS (모뎀을 통하여 다이얼인 하는 사용자) 인증, 웹 페이지 호스팅, 프록시 캐싱 등이 포함된다. 그 외에도 NFS 서비스와 SMB 프로토콜(WfW/Win95/WinNT)을 이용한 파일 & 인쇄와 팩스 서비스를 삼바 패키지를 이용하여 제공하고 있다. 집에서 나는 리눅스를 인터넷 서비스, 소프트웨어 개발 그리고 물론 게임(리눅스 박스에서 실행되는 퀘이크II는 아름다움 그 자체이다!)에 이르기까지 개인 용도로 사용한다. 리눅스와 관련하여 내가 좋아하는 것 중 하나는 아무리 못살게 굴어도 죽지 않는다는 점이다. 게다가 유닉스 기술을 배우고 개발하며 유지하는데에도 큰 도움이 된다. 현재 내가 사용하는 리눅스는 레드햇 6.1이다. (더 자세한 정보는 http://www.redhat.com/를 참조하기 바란다.) 이 배포판에는 쉘, 컴파일러 & 인터프리터, 네트웍 지원, X 윈도우 시스템, 모든 인터넷 서비스 (예를 들어, 전자메일, 뉴스, 웹 서버, 텔넷 등) 등 완전한 유닉스 시스템을 구성하는데 필요한 모든 소프트웨어가 들어있다. 이 배포판은 표준 리눅스 커널 2.2.12를 포함하고 있다. 우리 회사에서 기본 인터넷 서버로 사용하고 있는 리눅스 기반 시스템의 구성은 다음과 같다:
또 다른 시스템은 - 이 시스템은 더 좋은 인텔 박스 - 역시 레드햇 5.2를 사용하고 있으며 다른 사무실에 놓여있다. 이 시스템은 삼바를 이용한 네트웍 파일 & 인쇄 서비스, 스퀴드를 이용한 로컬 웹 캐싱, 보조 DNS 서비스 등을 제공한다. 불행히도 이 기계는 내가 보통 일하는 곳과 50 킬로미터나 떨어진 곳에 있기 때문에 항상 외톨이로 있다 - 그럼에도 불구하고 여전히 나의 자랑이자 기쁨이다! 이 시스템의 간단한 규격은:
24 기가 바이트 이상의 엄청난 저장공간을 하드웨어 RAID 5 어레이로 묶는 것은 어쩌면 겸손한 느낌도 든다. Mylex RAID 컨트롤러는 매우 잘 되며 하드웨어 RAID 솔루션을 찾는 사람에게 나는 주저없이 추천할 수 있다! (당신의 리눅스 시스템을 RAID 어레이로 구성하고 싶다면 11.2절을 참조하기 바란다.) 그 외에도 알파 하나, 스파크 하나, 인텔 두 개 그리하여 총 네대의 리눅스 시스템이 더 있는데 그 중 두개는 개발용으로 사용되고 있다. 그 외 우리집의 시스템도 있지만 괜히 주저리 주저리 더 쓰고 싶진 않다. 이 문서는 최대한 하드웨어에 무관하도록 작성하겠지만 하드웨어에 대한 얘기가 나올 때에는 내가 어떤 하드웨어를 쓰고 있는지를 아는 것이 도움이 될 것이다. 4장. 설치와 하드웨어 설정이 장에서는 인텔 시스템에 레드햇 6.1을 설치하는데 필요한 과정을 상세히 설명한다; 설치과정은 구이(GUI) 기반의 설치를 선택하든 텍스트 기반의 설치를 선택하든 유사하다. 설치에 관한 정보의 대부분은 레드햇의 사용자 가이드 (인쇄된 매뉴얼은 레드햇 "정품" 박스에 들어 있고 파일로는 씨디의 ``/doc'' 디렉토리에 있으며 온라인으로는 ftp://ftp.redhat.com/pub/redhat/redhat-6.1/i386/doc/rhinst/index.htm 에서 구할 수 있다) 에 잘 설명되어 있으므로 상당부분은 대충 건너뛸 생각이다. 하지만, 내 생각으로는 레드햇 가이드에서 부족하게 설명되었다고 생각되는 부분이 있기 때문에 이러한 부분에 대하여는 더 상세히 다룰 생각이다. 4.1. 설치 디스켓 만들기리눅스 레드햇 배포판을 시스템에 탑재하기 위한 첫번째 단계는 설치 프로그램을 시작시킬 방법을 찾는 것이다. 이때 주로 사용되는 방법은 설치 디스켓을 만드는 것이다. 물론 당신이 씨디를 갖고 있고 사용하려는 시스템의 바이오스가 씨디로부터 직접 부팅하는 것을 지원한다면 씨디롬으로부터 직접 설치할 수 있다. 그렇지 않다면 설치 디스켓을 만들어야 하는데, 그러려면``boot.img'' 파일 (이 파일은 ext2 포맷의 리눅스 부트 디스켓과 추가의 설치 프로그램의 이미지다) 을 플로피 디스켓으로 복사하여야 한다. ``boot.img'' 파일은 레드햇 씨디롬의 /images 디렉토리에 들어있으며 ftp://ftp.redhat.com 에서 /pub/redhat/redhat-6.1/i386/images 파일 (인텔 박스에 리눅스를 설치하는 경우) 을 다운로드 받아도 된다. 이제 도스, 윈도, 다른 리눅스 또는 유닉스 시스템에서 부트 디스켓을 만들 수 있다. 만들 디스켓은 포맷되지 않은 디스켓을 써도 되고 (도스의 경우)미리 포맷된 디스켓을 써도 된다 - 차이는 없다. 도스에서: 씨디 롬이 드라이브 D: 라면 다음과 같이 타이핑하면 된다:
리눅스/유닉스에서: ``boot.img'' 파일이 현재 디렉토리에 있다고 가정하면 (이렇게 하려면, /mnt/cdrom에 씨디롬을 마운트하고 난 뒤 /mnt/cdrom/images 디렉토리에서 파일이 있는지 보아야할 것이다.) 다음과 같이 타이핑하면 된다:
위에서 설명한 어떤 방법을 썼던지 간에 새로운 레드햇 리눅스 시스템을 설치하는데 사용할 부팅가능한 레드햇 6.1 설치 디스켓을 갖게 되었다! 4.2. 리눅스 설치 프로그램으로 부팅하기새로운 레드햇 시스템의 셋업을 시작하기 위하여 설치 씨디로부터 부팅을 하든지 아니면 설치 디스켓을 시스템의 A: 드라이브에 넣고 시스템의 전원을 켠다. 잠깐 후에 레드햇 설치 프로그램 화면이 나타날 것이다. 대부분의 경우에 설치 과정을 시작하기 위하여 그냥 <Enter>키를 누르면 된다. 그러나 만약 경험이 많은 사용자로서 하드웨어 장치를 정확하게 어떻게 셋업해야하는지 아는 경우에는 ``expert'' 모드를 선택하여 여기에만 나오는 추가의 정보와 기능을 이용할 수도 있다. (첫번째 설치화면이 나온 상태에서 만약 당신이 아무것도 선택하지 않고 10내지 15초 정도 내버려두면 디폴트 설치 과정이 자동으로 시작된다.) 그러면 언어 (대개는 "English") 와 키보드 종류 (나는 캐나다에 있지만 나는 "US 101-key"를 선택한다), 그리고 어디에서 (씨디롬인지 아니면 네트웍을 통해서인지) 설치하려는 지를 선택하라고 물어볼 것이다. 레드햇은 어디에서 설치할 것인가에 관한한 매우 유연하다. 대개의 경우에는 (씨디롬 장치에 들어있는) 레드햇 씨디롬으로부터 설치하기 때문에 ``Local CDROM'' 를 선택하면 된다. 물론 당신의 시스템에 씨디롬 장치가 없다면 그 외 선택가능한 여러가지 방법이 있다. 만약 다른 리눅스 시스템 (또는 NFS 파일 마운팅을 지원하는 다른 시스템)을 갖고 있다면 NFS 마운트로부터 설치하기 위하여 ``NFS''를 선택할 수 있다. 이를 위하여는, 리눅스 씨디롬을 다른 시스템에 마운트시키고 (또는, 레드햇 배포판을 다른 시스템의 어딘가에 깔아두어도 된다 -- 모든 것을 FTP를 통하여 다운로드한 뒤 다른 시스템의 하드 드라이브에서 설치할 수 있다) 새로운 시스템이 해당 디렉토리를 접근하는 것을 허용하도록 /etc/exports 파일에 필요한 항목을 넣어주고 (어떻게 NFS를 셋업하고 사용하는지에 대한 상세내용은 7.6절 을 보기바란다) 필요한 세부내용을 입력하면 된다. 다음은 실제 사례이다:
레드햇을 설치하는 또 다른 방법으로는 당신의 하드 디스크에서 기존의 파티션으로부터 또는 FTP를 통하여 삼바 (윈도 스타일의 네트워킹) 연결을 이용하는 것이다. 이러한 방법을 사용하는 법에 대하여는 레드햇 사용자 가이드를 참조하든지 아니면 될 때까지 애를 쓰던지 (절차는 그렇게까지 복잡하지는 않다!) 하기 바란다. 설치 소스를 선택하였으므로 이제는 "설치" 를 할 것인지 아니면 "업그레이드" 를 할 것인지를 물어본다. 새로운 시스템을 설치하고자 하는 경우라면 물론 "설치" 를 선택하여야 한다. (한편, 나는 기존의 시스템에 새로운 배포판을 결코 업그레이드 하지 않는 사람이다 -- 마이크로소프트 제품에서 너무나도 많은 문제를 겪었기 때문에 시스템의 업그레이드라는 것 전체를 불신하게 된 것 같다. 나는 처음부터 다시 설치하고 나의 개인 파일, 사용자 파일 등은 백업해 두었다가 다시 까는 방법을 선호한다.) 설치 프로그램은 이제 스카시 어댑터를 갖고 있는지를 물어볼 것이다. 여기에서 예라고 대답하면 적절한 드라이버를 선택하라고 물어볼 것이다. 어떤 경우에는 설치 프로그램이 당신이 갖고 있는 어댑터를 자동으로 탐지해주기도 한다. 다음에는 파일 시스템 (즉, 리눅스용 파티션) 을 셋업하라고 할 것이다. 파티션을 만드는데 사용되는 도구는 레드햇이 제공하는 "Disk Druid" 와 리눅스의 표준인 "/fdisk" 유틸리티가 있다. 이 두 도구는 파티션의 종류와 크기를 지정하는 기능에서는 유사하다. 하지만 디스크 드루이드가 fdisk에 비하여 조금 더 "사용자에게 친숙"하며 조금 더 완전하다. 사실 드라이브를 파티션하기 위하여 fdisk를 사용한다고 하더라도 마운트 위치를 지정하기 위하여 어차피 디스크 드루이드 화면이 뜨게 된다. 그럼에도 불구하고 과거 슬랙웨어의 사용자였던 나는 개인적으로는 항상 fdisk를 사용하는데 이는 습관때문이 아닌가 생각한다! :-) 다음 섹션에서는 파티션 정보를 어떻게 그리고 왜 셋업해야 하는지를 자세히 다룰 것이다. 4.3. 하드 드라이브 파티션하기왜 어쨌든 파티션을 해야만 하는거지? 글쎄, 하나의 파티션으로 구성된 시스템에서도 리눅스 시스템은 완벽하게 동작할 수 있으며 이렇게 설정하는 것이 약간 더 쉽다. 하지만 저장 장치를 여러개의 파티션으로 쪼개두는 것은 많은 잇점이 있다. 하나의 큰 파티션만 있던 디스크에서도 리눅스가 잘 돌아간다는 것은 사실이지만, 디스크를 최소한 네개의 주요 파일 시스템 (root, usr, home, swap) 으로 파티션해두는 것은 몇가지 장점이 있다. 그 장점은 다음과 같다: 첫째 (부팅하는 중에 또는 수작업으로 fsck를 돌려서) 파일 시스템을 검사하는데 필요한 시간을 줄여준다. 왜냐하면 이러한 검사를 병렬로 처리할 수 있기 때문이다. (그런데, 절대로 마운트된 파일 시스템에 대하여 fsck를 실행하면 않된다!!! 당신은 그 결과 때문에 확실히 후회하게 될 것이다. 예외로서 파일 시스템이 읽기전용으로 마운트된 경우에는 그래도 안전하다.) 또한, 여러 파티션이 있는 시스템에서는 파일 시스템 검사를 하기가 훨씬 수월하다. 예를 들어, /home 파티션에 문제가 있다는 것을 알았다면 그 파티션의 마운트를 해제하고 파일 시스템 검사를 한 뒤 수리된 파일 시스템을 다시 마운트하기만 하면 된다. (반대로, 파티션이 나뉘어 있지 않다면 응급 복구 디스켓으로 시스템을 부팅한 뒤 싱글 유저 모드에서 이러한 수리작업을 진행해야 한다.) 둘째, 여러 파티션이 있으면 당신이 원하기만 한다면 몇개의 파티션은 읽기전용으로 마운트할 수 있다. 예를 들어, /usr 파티션에 있는 파일은 심지어 루트라고 하더라도 건드리지 못하도록 하고 싶다면 /usr 파티션을 읽기 전용으로 마운트하면 된다. 마지막으로, 파티션으로 나누는 것의 가장 중요한 혜택은 파일 시스템을 보호할 수 있다는 것이다. (사용자의 실수나 시스템의 오류로) 파일 시스템에 어떤 일이 벌어지게 되었을 때, 파티션으로 나뉜 시스템에서는 어떤 한 파일 시스템에 있는 파일만 날리게 된다. 만약 파티션을 하지 않은 시스템이라면 모든 파일 시스템을 날리게 될 것이다. 이 작은 사실은 대단한 강점이 될 수 있다. 예를 들어, 당신의 root 파티션이 깨져서 부팅을 할 수 없다면 복구 디스켓으로 부팅하고 root 파티션을 마운드한 뒤 복사가능한 파일들을 home과 같은 다른 파티션으로 복사하고 (또는 백업으로부터 가져와도 된다; 어떻게 파일을 백업하고 다시 복원하는지에 대하여는 8장을 보기 바란다) 다시 복구 디스켓으로 부팅한 다음, "mount root=/dev/hda3" (임시로 root 파일 시스템으로 사용할 파티션이 hda 디스크의 세번째 파티션이라고 가정) 라고 타이핑하면 완전히 동작하는 리눅스 시스템으로 부팅할 수 있다. 그러고 나서 마운트 되지 않은 깨진 root 파티션에 대하여 fsck를 실행하면 된다. 나는 파일 시스템이 완전히 망가지는 것을 개인적으로 경험한 적이 있다. 그리고 여러 파티션으로 나누어 두었기 때문에 손상이 특정 파티션에 국한되었다는 것이 매우 기뻤다. 마지막으로, 리눅스는 다른 운영체제(들) (윈도 95/98/NT, BeOS, 그외 무엇이든)을 셋업하는 것을 허용하여 듀얼 (또는 트리플, ...) 부트를 할 수 있기 때문에 이의 장점을 살리기 위해서 추가의 파티션을 셋업할 필요가 있을 것이다. 각각의 운영체제를 위해서 최소한 하나의 파티션은 셋업해야 한다. 리눅스에는 훌륭한 부트 로더(인텔버전은 LILO, 알파버전은 MILO, 스팍버전은 SILO 라고 부른다)가 들어있는데 전원을 켰을 때, 어느 운영체제를 부팅할 것인지를 지정할 수도 있고 적당한 시간이 지나면 선호하는 디폴트 운영체제(아마, 리눅스겠지?)로 부팅이 된다. 디스크는 필요에 맞추어 파티션을 하여야 한다. 인텔, 알파, 스팍 플랫폼에서 나의 경험에 비추어 볼 때, (집에서 쓰는 데스크탑 시스템이건 회사에서 쓰는 인터넷 서버이건 간에) 적절한 양의 작업을 처리하는 적절한 수준의 로드가 걸리는 (기능을 제대로 써먹는) 시스템이면 파티션 크기를 결정하는데 다음과 같은 추정치를 사용하면 꽤 효과적이라는 사실을 발견하였다.
물론 위에서 제시한 크기는 대략의 가이드라인일 뿐이다. 물론 당신의 리눅스 시스템을 무슨 일에 쓸 것인지에 따라 위의 비율을 적당히 조절해나가야 할 것이다. 워드퍼펙트나 넷스케이프와 같은 큰 응용 프로그램이나 일본어 폰트와 같이 많은 양을 추가로 깔고 싶다면 /usr 공간을 좀 많이 확보하는 것이 좋을 것이다. 내가 볼 때에는 항상 /home 에 많은 공간이 비어 있었다. 따라서 사용자가 너무 많은 공간을 쓰지 않도록 하거나 (또는 엄격한 쿼터를 부여하거나) 또는 쉘 계정과 개인 웹 페이지를 제공하려는 것이 아니라면 /home 공간은 줄이고 대신 /usr 를 키우는 것이 좋다. 다음은 다양한 마운트 위치와 파일 시스템 정보에 대한 설명이다. 이를 통하여 어떻게 사용자의 요구에 맞춰 파티션의 크기를 최적으로 배분할 것인지에 대한 아이디어를 얻게 될 것이다:
추가로 드라이브를 더 달게 되면 새 드라이브에는 추가의 파티션이 만들어지고 필요에 따라 다양한 위치에 마운트하면 된다 -- 따라서, 리눅스 시스템에서는 저장공간이 부족한 경우를 걱정할 필요가 없다. 예를 들어, 만약 앞으로 sda6 가 꽉 찰 것이 명백하다면 다른 드라이브를 추가한 다음 넉넉한 크기로 파티션을 만들어 /usr/local 에 마운트하고 현재 /usr/local 에 들어있던 모든 것을 새 드라이브로 옮기면 된다. 이렇게 하더라도 어떤 시스템이나 응용 프로그램도 "깨지지"는 않는다. 왜냐하면 리눅스는 어느 드라이브에 있든지 /usr/local 을 볼 수 있기 때문이다. 파티션의 사례를 보여주기 위하여 나는 (윈도 95와 리눅스 듀얼 부트) 인텔 시스템을 다음과 같은 파티션 구조로 만들어 보았다:
첫번째 파티션인 /dev/hda1 는 다른 운영체제 (윈도 95) 를 저장하는데 사용되는 도스 포맷의 파일 시스템이다. 위의 예에서는 그 운영체제에 1 Gb의 공간을 할당하였다. 두번째 파티션인 /dev/hda2 는 드라이브의 나머지 부분 전체를 차지하는 ("확장 파티션" 이라고 불리는) 실제 파티션이다. 이 파티션은 나머지 논리 파티션을 묶는데 사용된다. (한 디스크에는 실제 파티션이 4개밖에 있을 수 없는데 위의 경우에는 4개를 초과하는 파티션이 필요하므로 나머지 파티션을 위해서는 논리 파티션 기법을 사용해야만 한다.) 세번째부터 다섯번째 파티션인 /dev/hda5, /dev/hda6, /dev/hda7 는 모든 e2fs 포맷의 파일 시스템으로서 각각 / (root), /usr, /home 로 사용된다. 마지막에 있는 여섯번째 파티션인 /dev/hda8 는 스왑 파티션으로 사용된다. 또 하나의 예는 이번에는 알파 박스인데 두개의 하드 드라이브를 갖고 있으며 리눅스로만 부트되는 시스템으로서 다음과 같은 파티션 구조를 갖고 있다:
첫번째 파티션인 /dev/sda1 는 도스 포맷의 파일 시스템으로서 MILO 부트 로더를 저장하는데 사용된다. 알파 플랫폼은 인텔 시스템과는 부팅할 때 사용되는 방식이 약간 다르다. 따라서, 리눅스는 부트 정보를 FAT 파티션에 저장하였다. 이 파티션은 가능한 가장 작은 크기의 파티션이면 충분한데 여기에서는 그 크기가 2 Mb 이다. 두번째 파티션인 /dev/sda2 는 e2fs 포맷의 파일 시스템으로서 / (root) 파티션으로 사용된다. 세번째 파티션인 /dev/sda3 는 스왑 파티션으로 사용된다. 네번째 파티션인 /dev/sda4 은 "확장" 파티션이다. (상세한 내용은 이전의 예를 참조하시요.) 다섯번째와 여섯번째 파티션인 /dev/sda5 과 /dev/sda6 는 e2fs 포맷의 파일 시스템이며 각각 /home 과 /usr 파티션으로 사용된다. 일곱번째 파티션인 /dev/sdb1 은 e2fs 포맷의 파일 시스템이며 /archive 파티션으로 사용된다. 여덟번째이며 마지막 파티션인 /dev/sdb2 는 e2fs 포맷의 파일 시스템으로서 /archive2 파티션으로 사용된다. 파티션 정보를 셋업하고 나면 새로운 파티션을 디스크에 기록해야 한다. 이렇게 하고 나면 레드햇 설치 프로그램은 파티션 테이블을 메모리로 다시 가져와서 설치 과정의 나머지 과정을 진행할 수 있도록 한다. 4.4. 스왑 공간 셋업하기일단 파티션 정보를 셋업하고 "마운트 포인트" (/usr 은 /usr 파일 시스템의 마운트 포인트이다.) 를 지정하고 나면 설치 프로그램은 스왑 공간으로 어느 파티션을 사용할 것인지를 물어본다. 스왑 파티션은 이미 (파티션 번호 # 82 로) 알 수 있기 때문에 <Enter> 을 눌러서 스왑에 사용할 파티션(들)의 포맷을 시작할 수 있다. 나는 혹시 파티션에 숨어있는 문제점이 없도록 하기 위하여 "포맷하는 동안 불량 블럭 검사" 기능을 사용할 것을 권한다. 이 기능을 사용하면 포맷하는 과정은 상당히 느려지지만 그만한 가치가 충분히 있다고 믿는다. 4.5. 포맷할 파티션 선택하기이제 설치 프로그램은 당신이 리눅스에 할당한 파티션의 목록을 보여주고 새로운 파일 시스템으로 포맷할 파티션이 있는지, 있다면 어느 파티션인지를 선택하라고 할 것이다. 아마, 기존의 시스템을 업그레이드 하는 것이거나 (예를 들어 /home 에) 어떤 정보가 이미 들어있는 경우를 제외하고는 모든 파티션을 포맷하기를 원할 것이다. 여기에서도 마찬가지로 "포맷하는 동안 불량 블럭 검사" 옵션을 사용하기를 권한다. 4.6. 설치할 패키지 선택하기그 다음에는 시스템 구성부분의 목록이 나오면서 어느 것을 설치할 것인지 물어볼 것이다. 숙달된 리눅스 사용자라면 필요에 맞춰 꼭집어 선택할 수 있을 것이다. 하지만 리눅스가 처음이라면 맨 아래 있는 "전체" 옵션을 선택하면 될 것이다. 나는 보통 내가 필요한 구성부분을 선택하고 설치를 좀 더 세밀하게 조종할 수 있는 "개별 패키지 선택" 옵션을 사용한다. 필요한 구성부분을 선택하였다면 설치를 시작하기 위하여 "Ok" 를 선택한다. 만약, "개별 패키지 선택" 을 사용한다면 어느 패키지를 설치할 것인지 지정하라고 할 것이다. 선택하는 방법은 아주 간단하다. 만약 어떤 패키지가 뭐하는 것인지 확실히 모르면 <F1> 키를 눌러서 그 패키지에 대한 간단한 설명을 참조하면 된다. 한두개의 패키지를 잘못 선택하는 것에 대하여 걱정할 필요는 없다. 결국 모든 패키지는 씨디롬 (또는 다른 소스 메체) 에 들어있고 손쉬운 레드햇 RPM 도구를 사용하여 시스템이 실행되는 도중에라도 조정할 수 있다. (상세한 내용은 10.1절 을 참조하시요) 설치하기를 원하는 패키지를 선택하고나면 설치 프로그램은 이제 당신이 정의한 파티션을 포맷할 것이다. 이 과정은 몇분이 걸릴 수 있다. 특히 파티션이 크거나 불량 블럭 검사 기능을 사용하면 오래 걸릴 수 있으므로 이 과정에서 시스템이 멈춰버린 것이 아닌가하고 생각하지 말기 바란다! 포맷이 끝나고 나면, 레드햇 리눅스는 선택된 패키지의 설치를 시작할 것이다. 이 과정은 끝나는데 까지 당신 시스템의 속도에 따라 5내지 15분 정도 걸린다. 4.7. 하드웨어 설정패키지 설치가 끝나면 레드햇은 시스템에 붙은 장치를 설정하기 시작한다. 최신의 하드웨어라서 아직 리눅스가 완전히 지원하지 못하는 경우를 제외하고, 대부분의 경우에 설치 프로그램은 자동 설정을 제대로 해낸다. 당신이 보게될 프롬프트는 매우 뻔한 것이다:
4.8. LILO 로 부팅하기다음에는, 설치 프로그램이 당신의 하드 드라이브에 부트 로더를 써야 한다. 부트 로더 (인텔 시스템에서는 LILO) 는 리눅스의 부팅을 담당할 뿐만 아니라 멀티부트로 시스템을 셋업한 경우에는 다른 운영체제의 부팅도 담당한다. (이에 대한 상세한 내용은 4.8.1절 을 참조하시요) "Lilo 설치" 대화상자는 부트 로더 이미지를 어디에 기록하여야 하는지를 물어본다. 아마 당신은 첫번째 드라이브 (IDE 라면 /dev/hda, 스카시라면 /dev/sda) 의 마스터 부트 레코드에 설치하고자 할 것이다. 부트 로더를 기록할 장소를 선택하고 나면 두번째 대화상자가 나타난다. 여기에서는 그 외 부팅에 필요한 설정 인자를 입력할 수 있다. 대개의 경우 여기에서 뭔가를 입력할 필요는 없다. 그러나 램이 64 Mb 를 넘으면 리눅스가 나머지 램 영역도 활용하도록 하기 위하여 (그렇지 않으면 리눅스는 맨앞의 64 Mb 만 사용한다) 특별한 인자를 입력하여야 한다. 예를 들어, 시스템에 128 Mb 의 램이 있다면 다음과 같이 입력하여야 한다:
시스템에 스카시 드라이브가 있고 1024 실린더 이상의 크기를 갖는 파티션에 LILO 가 설치하고 싶다면 "리니어 모드 사용" 옵션을 켜주어야 한다. 만약 그렇지 않은 상황이라도 이 옵션이 뭔가를 해치지는 않으므로 아마 괜찮은 선택이 될 것이다. 4.8.1. 다른 운영체제와 멀티부트로 만들기마지막으로, 만약 다른 운영체제와 리눅스가 멀티 부트가 되도록 셋업하였다면 파티션의 목록을 보여주는 세번째 대화상자가 나타날 것이다. 여기에서 당신은 다른 운영체제의 이름을 지정할 수 있다. (이 이름은 부팅할 때 "LILO" 가 어느 운영체제로 부팅할 것인지를 물어보는 장면에서 입력할 때 사용한다.) 설치 프로그램은 부팅 가능한 모든 파티션에 대하여 디폴트로 어떤 이름 지정하기 때문에 디폴트 값이 싫지 않다면 굳이 바꿀 필요는 없다. 시스템이 처음 기동할 때 부트할 디폴트 운영체제는 물론 리눅스이다. 하지만 필요하다면 디폴트를 다른 어떤 운영체제로도 바꿀 수 있다. 부트 로더를 하드 드라이브에 설치하고 나면 설치 프로그램은 리눅스가 성공적으로 설치되었다는 것을 나타내기 위하여 "축하" 대화상자를 보여줄 것이다. (만약 있다면) 설치용 플로피 디스켓을 제거하고 <Enter> 키를 눌러서 시스템을 리부팅 시켜서 ... 리눅스로 들어간다! 리눅스가 부팅되고 모든 것이 순조롭다면 "login" 프롬프트를 보게될 것이다. 여기서 당신은 설치할 때 지정한 패스워드를 이용하여"루트(root)" 로 로그인할 수 있을 것이다. 4.9. 레드햇 업데이트를 내려받아서 설치하기레드햇은 이때까지 매우 인상적인 배포판을 만들어왔다. 그러나 "시간이 완전히 무르익" 기 전에 배포하는 역사가 있다. 따라서 리눅스 시스템을 완전히 활용하기 위해서는 업데이트 패키지를 내려받아서 적용할 필요가 있다. 이들 패키지는 RPM 유틸리티를 이용해서 적용하기 때문에 "rpm 파일" 이라고 부르기도 한다. (상세한 내용은 10.1절 을 참조하시요) 이 과정은 리눅스 시스템을 준비하는 과정 중에서 (엄청나게 빠른 인터넷 연결을 갖고 있지 않는한) 상당히 시간을 많이 소모하는 과정이 될 것이다. 하지만 시간을 내서 꼭 이 일을 하라! 그 대신 많은 고통을 덜게 될 것이다! 우선 여기에서 모든 파일을 내려받는다: (앞의 예는 인텔 박스에서 리눅스를 사용하고 있다고 가정하고 있다.) 모든 것을 한 디렉토리로 다 내려받은 다음 ``rpm -Uvh *'' 라고 타이핑하기만 하면 모든 패키지를 업데이트해준다. 만약 커널 rpm 파일을 내려받았다면 이는 다른 디렉토리에 옮긴다. 커널을 업그레이드하거나 커스터마이즈하는 것은 좀 복잡하며 매우 주의깊게 하여야 한다. (이에 대한 상세한 내용은 10.4절 을 참조하시요.) 따라서, 업그레이드를 적용하기에 앞서 모든 kernel-*.rpm 파일은 다른 디렉토리로 옮기는 것이 좋다. 업그레이드를 적용하기 위해서 단순히 ``rpm'' 을 모든 패지지에 대하여 한번에 실행 ("rpm -Uvh *") 할 수도 있고 만약 원한다면 한번에 하나씩 업그레이드 ("rpm -Uvh 업그레이드할파일.rpm") 할 수도 있다. 뒤의 방법은 각각의 업데이트가 에러없이 잘 적용되는지를 확인하고 싶어하는 특이한 사람들이 쓰는 방식이다. :-) 아마 어떤 패키지를 업그레이드하기에 앞서 설치가 되어 있기는 한지 궁금할 수 있다. 또는, 현재 설치되어 있는 패키지의 버전이 무엇인지 알고 싶을 수도 있다. 이러한 것은 모두 RPM 유틸리티를 이용해서 할 수 있다; 자세한 내용은 10.1절 을 참조하시요. 5장. X 윈도우 시스템 설정하기X 윈도우 시스템 또는 "X" (흔히들 X-Windows 또는 X 윈도라고 잘못 알고 있지만 Windows/윈도는 마이크로소프트 윈도에서 쓰는 용어이다) 는 리눅스 상에서 돌아가는 그래픽 사용자 인터페이스이다. 마이크로소프트 윈도와는 달리, X 윈도우 시스템은 매우 다양한 방법으로 보이거나 운영될 수 있다. 아주 원시적으로 또는 아주 수준높게 동작할 수 있으며, 추하게 또는 아름답게 보일 수 있으며, 매끄럽고 빠를 수도 있고 둔하고 느리게 동작할 수도 있다. (이러한 차이는 "리눅스 대 마이크로소프트 NT" 간의 논쟁이 그렇듯이 품질에 대한 주관의 차이에서 오는 것 같다.) X 를 제대로 동작하게 하는 것은 쉬울 수도 있고 머리칼이 다 빠지도록 복잡할 수 있다. 이는 리눅스를 처음 사용하는 대부분의 사람들이 불평하는 점이고 나도 설정을 놓고 이루헤아릴 수 없을만큼 많이 싸워왔기 때문에 절감하고 있는 문제이다. 다행히도 리눅스 배포판 새 버전이 계속 나오면서 설정은 점점 쉬워지고 자동화되고 있다. 사실 만약 레드햇 6.1을 사용한다면 아마도 이 문제점에 대하여 걱정하지 않아도 될 것이다. 비록 대부분의 경우에 X 가 자동으로 설정될 수 있지만 예외도 있다; 내 생각에는 비디오 카드의 종류, 시스템에 설치된 비디오 램의 크기, 모니터의 종류와 수평 / 수직 동기화 주파수 (이 정보는 모니터 사용자 설명서의 맨 뒤 페이지에 나온다. 혹시 없으면 웹에서 뒤져보아야 한다.) 정도는 알아야 한다고 본다. 5.1. X-Configurator 를 이용하여 X 윈도우 시스템 설정하기리눅스 레드햇 배포판에서 X 가 동작하게 하는 방법에는 크게 두가지가 있다. 첫번째 방법은 가장 쉬운 방법으로서 레드햇의 ``Xconfigurator'' 유틸리티를 사용하는 것이다. 이 유틸리티는 하드웨어를 감지하여 필요한 X 소프트웨어를 설치하고 적절히 설정을 해주려고 시도한다. Xconfigurator 를 이용하여 여러가지 셋팅을 시도하였으나 여전히 성공하지 못하였다면, ``xf86config'' 유틸리티를 사용해야 운이 따를 모양이다. 비록 Xconfigurator 만큼 사용하기 쉽고 매력적이지는 못하지만 설정 과정에 대하여 좀 더 세밀한 조종을 할 수 있다. 마지막으로 만약 여전히 운이 따라 주지 않는다면 수작업으로 ``/etc/X11/XF86Config'' 파일을 수정하여 여러가지 셋팅을 비틀어보는 수 밖에 없다. 만약 이런 경우라면 리눅스 커뮤니티 (상세한 내용은 13.3절 을 참조하시요) 로부터 도움을 받아야할 수도 있다. 진정하시라, 어쨌든 -- 대부분의 경우 Xconfigurator 가 적절히 해주니까! X 가 동작하기는 하는데 색깔이 풍부하지 않아서 실망할지도 모른다. 이는 X 가 디폴트로 픽셀당 8-비트(``bpp'')를 사용하기 때문이다. 만약 비디오 하드웨어가 지원해준다면 더 높은 컬러 수를 사용할 수 있다. 다양한 색상 설정에 대하여는 ``/etc/X11/XF86Config'' 파일에 다음과 같은 식으로 나와있다:
위의 내용은 24-비트를 사용할 때 선택가능한 해상도를 보여주고 있다("Modes" 줄에 있는 800x600과 1024x768); 이들 해상도는 <Alt><+> 과 <Alt><->키를 누름으로써 "실행중에" 전환할 수 있다.
셋업을 하는 중에 각각의 색상수를 시험해보려면 수작업으로 (24-비트 색상을 실험하고자 한다면)``startx -- -bpp 24'' 이런 식으로 타이핑하여 내가 원하는 색상수에서 X 가 정상적으로 동작하는지 확인하면 된다. 높은 색상수를 실험해본 결과가 성공적이라서 그것을 디폴트로 쓰고 싶다면, ``/etc/X11/xinit/xserverrc'' 파일을 다음과 같이 만들어야 한다:
위의 내용은 X 가 픽셀당 24 비트를 사용하도록 한다. (만약 문제가 있다면 그대신 16이나 32를 시도해야 한다.) X 설정을 제대로 하였다면 아무 사용자로나 간단히 ``startx'' 라고 타이핑하기만 하면 X 를 시작시킬 수 있다. 그러면 X 구이 (GUI) 가 시작되고 모든 세션을 끝내고 X 를 끝내고 나면 보통의 리눅스 콘솔로 되돌아 온다. 선택적으로 시스템이 부트될 때 X 가 시작되고 항상 실행되게 (이에 대한 상세한 내용은 5.2절 을 참조하시요) 할 수 있다. 이는 "지루한" 흑백 화면을 보고 싶어하지 않는 사람이나 명령어 라인을 가급적 다루고 싶어 하지 않는 사람에게 유용하다. 5.2. X 데스크탑 매니저 사용하기만약 원한다면 시스템이 부팅할 때 X 데스크탑 매니저(``xdm'') 가 X 윈도우 시스템을 자동으로 시작시키게 할 수 있다. 이렇게 하면 리눅스가 언제나 X 에서 돌아가게 할 수 있다. (물론, <Ctrl>-<Alt>-<F1> 키를 눌러 구이 화면에서 보통의 콘솔로 그리고 <Alt>-<F7> 키를 눌러 다시 구이 화면으로 전환하는 것은 가능하다.) 이는 매력적이고 사용하기 편리한 환경을 사용자에게 제공하고 번번이 ``startx'' 를 타이핑하는 것을 피할 수 있는 좋은 방법이다. xdm 이 동작하게 하려면 ``/etc/inittab'' 파일을 편집하여 "id:3:initdefault:" 라고 되어 있는 줄을 다음과 같이 바꾸어주면 된다:
위와 같이 바꾸어주면 시스템이 부팅할 때 리눅스를 실행 레벨 5 로 바꾸어준다; 이 실행 레벨은 디폴트로 xdm 를 시작시킨다. 확실히 하기 위하여 ``/etc/inittab'' 파일에서 맨 아래쪽 어딘가에 다음과 같은 줄이 있는지 확인한다:
만약 xdm 를 사용하는 상황에서 ``bpp'' 값을 디폴트인 8 보더 더 높은 값으로 하고 싶다면 (물론 비디오 카드와 모니터가 이를 지원해준다면) ``/etc/X11/xdm/Xservers'' 파일을 다음과 같이 바꾸어야 한다:
위와 같이 바꾸어주면 xdm 은 픽셀당 24 비트로 동작한다. 그리고 ``/etc/X11/xdm/Xsetup_0'' 파일을 편집하여 ``xbanner'' 로 시작하는 줄에 ``#'' 글자를 넣어서 다음과 같이 주석처리 하여야 한다:
이렇게 하면 KDE 세션간에 순간적으로 xdm 배너가 디폴트로 뜨는 것을 막을 수 있다. 심미적인 문제라는 걸 나도 알지만...
5.3. X 에서 글꼴의 모양을 좋게 하는 법아주 솔직히 말하자면, X 는 특별히 매력적인 폰트를 갖고 있다고 알려진 적이 결코 없다. 사실 많은 사람들이 못생기고 고약한 글꼴이 X 인생의 팔자라는 주장에 굴복하였다. 다행히도, 극적으로 X 의 모양을 개선하고 사용가능한 글꼴의 수를 증가시키는 것이 가능하다. 사실, 만약 윈도를 갖고 있다면 그 플랫폼에서 트루타입 글꼴을 복사하여 X 에서 사용할 수 있다! 이러한 글꼴 지원기능은 ``xfstt'' 또는 ``xfs'' 를 사용함으로써 가능하다. 레드햇 6.1 은 이제 ``xfs'' 지원기능을 내장하고 있기 때문에 설치하자 마자 매력적인 글꼴 지원이 가능하다. 따라서, 만약 이 버전의 리눅스를 사용한다면 상당히 만족스러울 것이다. 하지만 트루타입 글꼴을 활용하는 것 외에도 좀 더 좋게 개선할 수 있는 부분이 있다. 트루타입 글꼴을 지원하려면, 디렉토리를 하나 만들고 (예를 들어, ``/usr/local/share/ttfonts'') 윈도 시스템에서 글꼴 파일 (``c:\windows\fonts'' 디렉토리에 들어 있다) 의 전부 또는 일부를 그 디렉토리로 복사한다.
글꼴을 이용하기 위해서는, 새로 만든 ``ttfonts'' 디렉토리에서 (루트로서) 다음과 같이 타이핑한다:
그런 다음, ``/etc/X11/fs/config'' 파일을 편집하여 새로운 글꼴 디렉토리를 기존의 디렉토리 목록에 추가한다. 그리고 default-point-size 를 120 에서 140 으로 바꾸어 줘서 글꼴이 좀 더 크게, 읽기 좋게 되도록 해준다. 마지막으로, (아직 X 를 빠져나가지 않은 상태라면) X 를 빠져나가서, xfs 서버를 다음과 같이 다시 시작한다:
그리고나서, X 를 다시 시작시켜 멋진 글꼴을 즐기면 된다! X 에서의 글꼴 지원을 개선하는데 대하여는 http://www.frii.com/~meldroc/Font-Deuglification.html 라는 곳에 ``XFree86 Font Deuglification Mini HOW-TO'' 라는 훌륭한 자료가 있다. 5.4. X 용 윈도우 매니저 선택하기이제 윈도우 매니저를 선택하여야 한다. X 윈도우 시스템은 컴퓨터 하드웨어에 그래픽이 나타나게 해주는 기능만을 담당한다; 그리고 윈도우 매니저는 X 가 어떤 모습으로 보일 것인지 그리고 사용자와 응용 프로그램과는 어떻게 상호 동작할 것인지를 책임진다. 리눅스의 레드햇 버전에는 fvwm, olvm, twm, AfterStep 등 여러개의 윈도우 매니저가 들어있다. 처음 X 를 띄울 때 보게 될 디폴트 윈도우 매니저는 윈95와 유사한 환경을 제공하는 fvwm95 이다. 개인적으로 보면 내 취향과 일반적인 제안은 다르긴 하지만, 나는 그놈 (GNOME) 또는 KDE (또는 둘다!) 를 추천한다. 이들의 설치에 대하여는 다음 두개의 섹션에서 다룰 것이다. 5.5. 그놈의 설치와 설정GNU 네트웍 객체 모델 환경 (GNU Network Object Model Environment, GNONE, 그놈) 은 X 윈도우 환경을 개선시키는 윈도우 환경이다. 쓸모 있는 대량의 응용 프로그램을 포함하고 있으며 완전히 갖춰진 환경이다. 물론 이 글을 쓰고 있는 시점을 기준으로 보면 그놈에는 여전히 몇몇의 사소한 버그가 있어서 가끔 종잡을 수 없는 행태를 참아야 할 수도 있다. 하지만, 꽤 안정적이며 확실히 쓸모가 있다! 레드햇 6.1을 쓰고 있다면 (최소한 이 글을 쓰는 시점을 기준으로) 가장 최신 버전의 그놈이 배포판에 포함되어 있다. 그 외의 경우에는 최신판 패키지의 RPM 배포판을 내려받아야 한다. 이 글을 쓰는 시점을 기준으로 레드햇 6.0 i386 시스템을 위한 RPM 파일은 ftp://ftp.gnome.org/pub/GNOME/RHAD/redhat-6.0/i386/ 또는 그의 미러 사이트에 들어 있다.
필요한 모든 파일을 받고나면, "루트" 로서 다음과 같이 간단히 타이핑함으로써 그놈 패키지를 설치할 수 있다:
(위의 명령은 GTK 라이브러리가 먼저 설치되어 있도록 해주기 때문에 상호의존성에 의한 오류를 피할 수 있다.) 통상적인 믿음과는 달리, 그놈은 사실 윈도우 매니저가 아니라, 사용자가 선호하는 윈도우 매니저 위에 올라앉아 기능을 더해주는 역할을 한다. 따라서, 일단 그놈을 설치하고 나면 어느 윈도우 매니저를 쓸 것인지 선택하여야 한다. 그리고 당신의 디렉토리에 ``.xinitrc'' 파일을 만들어서 적당한 윈도우 매니저를 로드하고 나서 그놈을 시작하도록 해주어야 한다. 파일은 다음과 같은 모양이 될 것이다:
위의 파일에서는 먼저 윈도우 매니저로서 AfterStep 을 로드하고 그 다음에 그 위에서 그놈을 실행한다. GNU 네트웍 객체 환경에 대한 더 자세한 정보는 그놈의 웹 사이트인 http://www.gnome.org/ 를 참조하면 된다. 그리고 잊지말고 http://www.gnome.org/screenshots/ 에서 스냅샷도 감상하시라. 5.6. KDE 설치와 설정K 데스크탑 패키지 (KDE) 는 또 하나의 인기있는 윈도우 매니저이며 이 글을 쓰는 시점에는 그놈보다 어느정도 더 성숙된 프로그램이다. 하지만 그놈 보다는 조금 더 많은 메모리를 필요로 하는 것으로 보이므로 시스템에 들어 있는 램의 크기를 고려할 필요가 있다. (당신의 시스템이 64 Mb 미만의 램과 128 Mb 미만의 스왑을 갖고 있다면 그놈을 사용하는 것이 나을 것이다.) KDE 를 설치하는 첫번째 단계는 패키지의 최신 RPM 배포판을 내려받는 것이다. 그러려면 http://www.kde.org/mirrors.html 에 들어가서 적당한 FTP 미러를 골라야 한다. 지리적으로 당신과 가장 가까운 미러를 선택하되 자주 갱신되는 사이트인지 (목록을 보면 알 수 있을 것이다) 확인해 보아야 한다. 적당한 미러를 찾았다면 당신의 플랫폼과 당신이 사용하는 레드햇 버전에 맞는 모든 RPM 파일을 내려받는다. 예를 들어, 만약 당신이 인텔 플랫폼에서 레드햇 5.2 (또는 그 이상) 를 사용하고 있다면, FTP 미러의 디렉토리에서 ``/pub/mirrors/kde/stable/latest/distribution/rpm/RedHat-5.2/i386/'' 에 있는 모든 파일을 내려받아야 할 것이다. 필요한 모든 파일을 받았다면, 다음과 같은 (KDE rpm 파일이 들어있는 디렉토리 있다고 가정하고) 간단한 명령을 "루트" 로 실행함으로써 KDE 패키지를 설치할 수 있다:
위의 명령은 Qt 라이브러리를 먼저 설치하고나서 KDE 기본 패키지를 설치한다. 이 작업이 끝나고 나면 로그오프 한 뒤 다시 로그인하여 (또는 ``su'' 명령을 이용하여 루트가 된 것이라면 exit 하여 나간뒤 다시 ``su'' 하여 루트로 들어와서) 실행 경로 환경을 적절히 바꾸어 주기 위하여 다음과 같이 타이핑한다:
위의 명령은 응용 프로그램을 설치한다. 설치 과정에 대한 더 자세한 설명은 내려받은 KDE 파일에 포함되어 있는 ``readme-redhat-rpms.txt'' 파일에 들어있다. 모든 것이 순조롭게 진행되고 KDE 가 에러없이 설치되고 난 뒤, 필요하다면 "루트" 로서 다음과 같이 타이핑함으로써 KDE 를 모든 사용자의 디폴트 윈도우 매니저로 (``startx'' 라고 타이핑하면 보게될 화면으로) 설정할 수 있다:
(userid 를 실제 사용자의 id로 꼭 바꾸어 주어야 한다!) K 데스크탑 환경에 대한 자세한 정보는 KDE 의 웹 페이지인 http://www.kde.org/ 를 참조하기 바란다. 그리고, http://www.kde.org/kde2shots.html 에 있는 화면도 잊지 말고 보기 바란다. 6장. 일반 시스템 관리의 이슈6.1. 루트 계정"루트" 계정은 유닉스 시스템에서 가장 강력한 권한을 갖는 계정이다. 이 계정은 계정의 추가, 사용자 패스워드의 변경, 로그 파일의 검사, 소프트웨어의 설치 등 시스템 관리의 모든 측면을 수행할 수 있는 힘을 준다. 이 계정을 사용할 때에는 최대한 조심하여야 한다는 점에 유의하여야 한다. "루트" 계정에는 어떤 보안상의 제약도 가해지지 않는다. 따라서 관리 업무를 수행하는데 있어서 어떤 혼란도 없이 쉽게 작업을 할 수 있다는 것을 의미한다. 하지만, 시스템은 당신이 하고 있는 일을 당신이 정확하게 알고 있다고 가정하고 있으며 따라서 당신이 요청하는대로 모든 일을 실행한다 -- 아무것도 묻지 않고. 따라서, 명령어를 잘못 타이핑하여 중요한 시스템 파일을 지워버리는 것도 쉬운 일이다. 만약 "루트" 로 로그인하거나 역할을 하게 되면 쉘은 프롬프트의 (만약 bash를 사용한다면) 마지막 글자로서 '#'를 보여준다. 이는 이 계정이 절대적인 권력을 갖고 있다는 사실을 당신에게 알려주기 위한 역할을 한다. 가장 간단한 규칙은 절대적으로 필요한 경우가 아니라면 "루트" 로 들어가지 않는 것이다. 그리고 일단 "루트" 가 되었다면 명령어를 조심스럽게 타이핑하고 리턴키를 치기 전에 다시 한번 확인하는 것이다. 그리고 필요한 일을 마치자마자 "루트" 에서 빠져나와야 한다. 마지막으로 (다른 계정에 대하여도 마찬가지이기는 하지만 특별히 이 계정에 있어서 중요한 것은) 패스워드를 안전하게 지키는 것이다! 6.2. 사용자 계정 만들기
이 섹션에서는 당신의 리눅스 시스템에서 섀도우 패스워드를 사용하고 있다는 것을 전제로 하고 있다. 만약 현재 사용하지 않고 있다면, 이 기능이 보안을 어느 정도 강화해주므로 사용하는 것을 고려해 볼 필요가 있다. 섀도우 기능은 설치하기가 간단하며 기존의 섀도우가 아닌 패스워드 파일을 새로운 섀도우 포맷으로 자동으로 변환까지 해준다. 새로운 사용자 계정을 만든 것은 두단계로 구성된다. 첫번째는 계정 그 자체를 만드는 것이고 두번째는 전자메일 주소를 위한 별명을 (우리 회사에서는, "이름.성@도메인.이름" 이라는 규칙을 사용한다) 만들어주는 것이다. 계정을 만들려면 사용자에게 할당할 사용자 이름을 결정하여야 한다. 사용자 이름은 최대 8 자까지이며 가급적 성을 이용하거나 이미 같은 성을 쓰는 사람이 있으면 (adduser 스크립트는 계정 이름이 중복되지 않도록 확인해준다) 이름의 첫자를 따서 만드는 것이 좋다. 그러고 나면 다음과 같은 기타 정보를 입력하라고 할 것이다: 사용자의 진짜 이름, 사용자 그룹 (대개는 디폴트 값을 씀), 사용자 번호 # (자동으로 할당됨), 홈 디렉토리 (자동으로 할당됨), 사용자 쉘, 패스워드 만기일 관련 정보 그리고 마지막으로 원하는 패스워드 (패스워드를 입력할 때에는 화면에 나타나지 않는다; 패스워드는 보안상의 이유로 6 ~ 8 자로 하도록 하여야 한다). 모든 것 을 소문자로 입력해야만 한다는 점에 유의하여야 한다. 예외로 사용자의 진짜 이름은 "어떤 형태로든" (예. Joe Smith) 입력해도 되고 패스워드도 마찬가지이다. 사용자 계정 정보에서는 대소문자를 가리기 때문에 사용자 이름이나 패스워드를 입력할 때 대소문자를 정확히 맞추도록 하여야 한다. 다음은 Joe Smith 라는 사용자를 추가하는 과정을 보여주는 사례이다:
다음 단계는 사용자의 전자메일에 대하여 별명을 만들어주는 것이다. 이는 사용자들이 전자메일 주소를 계정 이름으로 할 것인지 아니면 다른 사람들이 전자메일 주소를 "좀 더 쉽게" 추측할 수 있도록 하기 위하여 자기의 이름을 (이름.성 형식으로) 쓸 것인지 선택할 수 있게 해준다. 전자메일 별명을 추가하려면 ``/etc/aliases'' 파일을 다음과 같이 수정하면 된다: mail# pico -w /etc/aliases 파일의 맨 아래에다가 새로운 별명을 추가한다. 별명을 추가하는 형식은 다음과 같다:
사용자에게 이름 표기에 있어 어떤 것을 선호하는지 물어보아야 할 것이다 (예컨대 Joseph.Smith 또는 Joe.Smith 중 어느 것으로 할 지) 예의 Joe Smith 라는 사용자에 대하여는 다음과 같이 입력하면 될 것이다:
별명의 추가를 끝내고 나서, <Ctrl>-<X> 를 눌러서 파일을 저장한다. 그리고 나서 ``newaliases'' 라고 타이핑하여 별명 데이터베이스를 갱신해준다. 바로 이 시점부터 사용자 계정이 만들어져서 사용할 수 있게 된다. 새로운 사용자에게 사용자 이름은 소문자로 입력하여야 하며 패스워드는 대소문자를 정확히 구분해서 입력해야 하고 전자메일의 주소는 무엇인지 (예를 들어, ``Joe.Smith@mail.도메인.이름'') 를 알려주는 것이 좋다. 6.3. 사용자 패스워드 바꾸기사용자를 대신하여 패스워드를 바꾸기 위해서는 우선 "루트" 계정으로 로그인하든지 "su" 하여야 한다. 그런 다음, ``passwd 사용자'' (여기서 사용자는 패스워드를 바꾸려는 사용자의 계정이름이다) 라고 타이핑한다. 시스템은 새 패스워드를 넣으라고 할 것이다. 패스워드를 입력하는 동안에는 입력하는 내용이 화면에 나타나지 않는다. 사용자가 자기 자신의 패스워드를 바꾸고자 하면, (사용자 이름을 지정하지 않고) ``passwd'' 라고 타이핑하면 된다. 그러면 확인을 위하여 원래의 패스워드를 입력하라고 하고 그 다음에 새로운 패스워드를 입력하라고 할 것이다. 6.4. 사용자 계정 막아두기어떤 사용자 계정을 막으려면, 루트로서 ``/etc/shadow'' 파일을 (섀도우 패스워드를 쓰고 있다고 가정한 경우; 만약 섀도우 패스워드를 쓰지 않는다면 ``/etc/passwd'' 파일을) 편집하여 (암호화된 형태로 저장된) 패스워드를 ``*'' 별표로 바꾸어주면 된다. 모든 유닉스 패스워드는 (최대 8자까지 가능하지만) 길이와는 상관없이 13자의 암호화된 문자열로 저장된다. 따라서, 패스워드를 ``*'' 한글자로 바꾸어 버리면 사용자는 더 이상 로그인할 수 없게 된다.
``/etc/passwd'' 파일과 ``/etc/shadow'' 파일에 대한 좀 더 자세한 정보는 아래의 6.6절 을 참조하시요. 6.5. 사용자 계정 제거하기경우에 따라서, 어떤 사용자의 계정을 서버에서 완전히 제거해야 할 때가 있다. 레드햇을 사용하고 있다면, 필요없는 사용자 계정을 제거하는 가장 쉬운 방법은 ``userdel'' 명령을 사용하는 것이다. 물론, ``루트'' 로서 타이핑하여야 한다. 예는 다음과 같다:
위의 명령은 사용자 이름 ``baduser'' 에 해당하는 항목을 ``/etc/passwd'' 파일과 만약 섀도우 패스워드를 사용하고 있다면 (섀도우 패스워드는 반드시 사용하여야 한다; 상세한 내용은 6.6절 을 참조하시요) ``/etc/shadow'' 파일에서 찾아서 지워준다.
만약 사용자의 홈 디렉토리까지 지우고 싶다면, ``userdel'' 명령에 ``-r'' 옵션을 추가하면 된다. 예를 들어:
나는 계정을 곧바로 제거하지 말고 대신 처음에서 그냥 막아두도록 권장한다. 특히, 많은 사용자를 가진 회사 서버인 경우에는 꼭 그래야 한다. 결국 예전의 사용자가 그 계정을 다시 사용하여야 하는 경우도 생길 수 있고 자기의 홈 디렉토리에 들어있는 파일을 요구할 수도 있다. 또는 심지어는 (업무 변경에 따라) 새로운 사용자가 전임 사용자의 파일을 필요로 할 수도 있다. 어떤 경우에라도 "만약의 경우를 대비하여" 이전 사용자의 홈 디렉토리의 백업본을 만들어 두어야 한다. 사용자 계정을 막아두는 상세한 방법에 대하여는 6.4절 을 그리고 백업을 실행하는 상세한 방법에 대하여는 8장 을 참조하시요. 6.6. 리눅스 패스워드 & 섀도우 파일 형식전통적인 유닉스 시스템에서는 단방향 암호화가 된 패스워드를 포함하여 사용자 계정 정보를 ``/etc/passwd'' 라는 텍스트 파일에 보관한다. 이 파일은 (예를 들어 ``ls''와 같은) 수많은 도구에 의하여 -- 예를 들어, 파일의 소유자 이름을 보여주기 위하여 사용자 번호와 사용자 이름을 매칭하는데 -- 사용되므로 누구든지 읽을 수 있도록 되어있다. 결과적으로 이는 어느 정도 보안상의 위험이 된다. 계정 정보를 저장하는 또 하나의 방법은, 내가 항상 사용하는 방법인데, 섀도우 패스워드 형식을 같이 사용하는 것이다. 이 방식은 전통적인 방식과 결합하여 /etc/passwd 파일은 호환성있는 형식으로 정보를 저장한다. 단, 패스워드는 (실제로 /etc/passwd 파일에 저장하지 않고) 대신 "x" 한글자만 넣어둔다. 두번째 파일인 ``/etc/shadow'' 파일이 암호화된 패스워드와 그 외의 정보, 즉 패스워드 유효기간 등을 저장한다. /etc/shadow 파일은 루트 계정에 의하여만 읽을 수 있기 때문에 보안상의 위험은 줄어들게 된다. 다른 리눅스 배포판은 섀도우 형식을 사용하기 위해서는 섀도우 패스워드 수트를 설치하도록 되어 있는데 비하여 레드햇에서는 간단히 할 수 있다. 두개의 형식을 바꾸기 위하여는 (루트로서) 다음과 같이 타이핑하면 된다:
섀도우 패스워드를 사용하는 경우에, ``/etc/passwd'' 파일은 계정 정보를 담고 있으며 그 모양은 다음과 같다:
한 줄의 각 항목은 ":" 콜론 문자에 의하여 분리되며 그 내용은 다음과 같다:
사용자에게 쉘 계정을 제공하고 싶지 않을 때도 있다. 그럴 때에는 에러 메시지를 보여주고 사용자가 로그 오프 시켜버리는 스크립트를 만들어서 그 이름을 예를 들어 ``/bin/sorrysh'' 라고 한 뒤 이 스크립트를 그런 사용자의 디폴트 쉘로 지정하면 된다.
``/etc/shadow'' 파일은 패스워드와 사용자 계정의 유효기간 등을 담고 있으며 그 모양은 다음과 같다:
passwd 파일과 마찬가지로 섀도우 파일도 ":" 콜론 문자로 각 항목을 구분하며 각각은 다음과 같다:
6.7. 시스템의 종료와 재시작터미널 상태에서 시스템을 종료시키려면, "루트" 계정으로 로그인하거나 "su" 하여야 한다. 그리고 나서 ``/sbin/shutdown -r now'' 라고 타이핑한다. 모든 프로세스가 종료되고 난 뒤 리눅스가 종료되기까지는 몇 분이 걸린다. 컴퓨터는 스스로 재부팅할 것이다. 만약 콘솔앞에 앉아 있다면 좀 더 빠른 방법으로서 <Ctrl>-<Alt>-<Del> 를 눌러도 된다. 리눅스가 완전히 끝나는데 까지는 몇 분이 걸리므로 제발 인내심을 갖고 기다려주기 바란다. 시스템을 종료시켜서 멈추도록 (즉, 종료시키고 난 뒤 곧바로 재부팅하지 않는 것) 할 수도 있다. 다시 전원을 넣어주거나 <Ctrl>-<Alt>-<Del> 를 눌러서 재부팅하지 않는한 시스템을 사용할 수 없는 상태로 된다. 이는 시스템을 완전히 꺼서 다른 곳으로 옮긴다든지 할 때 유용하다. 이렇게 하려면, "루트" 계정으로 로그인하거나 "su" 한 뒤 ``/sbin/shutdown -h now'' 라고 타이핑하면 된다. 리눅스는 스스로를 종료시킨 후 "System halted" 라는 메시지를 보여준다. 이때부터는 컴퓨터의 전원을 꺼도 된다. 관리자가 콘솔에 있는 경우에만 시스템을 종료시키는 것이 좋다. 물론 원격지에서 쉘 세션을 통하여 종료시키는 것도 가능하면 문제가 생겨서 시스템이 제대로 재시작하지 못하는 경우 어차피 시스템이 있는 곳까지 가서 어떤 조처를 취해야 하기 때문이다. (하지만, 나의 경우에는 한번도 이런 문제가 생긴 적은 없었다.) 시스템이 부팅하면, 리눅스는 자동으로 시작되며 네트웍 지원, 인터넷 서비스를 포함한 모든 필요한 서비스를 자동으로 올려준다.
7장. 설정과 관리집에서건 회사에서건 나는 레드햇 리눅스 배포판의 표준 설치의 디폴트 설정 셋팅을 전혀 또는 거의 바꾸지 않고 "박스에서 꺼내서 곧바로" 서비스를 시작할 수 있었다. 물론, 모든 인터넷, 파일 & 인쇄 서비스, 기타 우리 회사에서 필요로 하는 모든 서비스를 제공하기 위해서는 조금씩 고쳐야할 것이나 추가로 설치해야할 서비스가 많이 있다. 관리자는 다음과 같은 내용을 알고 있어야 한다:
7.1. 웹 서버와 HTTP 캐싱 프록시의 관리
그게 다다. 사용자는 홈 페이지를 갱신하기 위하여 FTP 를 사용할 수 있을 것이다. 7.2. 도메인 네임 서버 (DNS) 의 설정과 관리우리 회사에서는 리눅스를 DNS 서버로 사용하고 있다. 성능은 상상이상으로 뛰어나다. 이 섹션에서는 레드햇 배포판에서 표준으로 따라오는 BIND 8.x 를 이용하여 도메인 네임 서비스를 할 수 있도록 DNS 테이블을 설정하는 방법을 다룬다.
리눅스에서 DNS 서비스를 설정하는데에는 다음과 같은 과정을 밟게 된다:
DNS 서비스 설정에 대한 자세한 정보는 http://metalab.unc.edu/Linux/HOWTO/DNS-HOWTO-5.html 에 있는 ``DNS-HOWTO'' 가이드를 참조하면 된다. 7.3. TACACS 를 이용한 인터넷 사용자 인증우리 회사에서는 다이얼업으로 접속하는 인터넷 사용자 (우리의 모뎀 풀로 연결하면 이는 다시 두대의 시스코 250x 엑세스 서버로 연결된다) 의 인증을 위하여 Vikas 버전의 "xtacacsd" 를 사용하고 있다. Vikas 패키지를 (최신판은 ftp://ftp.navya.com/pub/vikas 에서 구할 수 있다; RPM 형식으로는 나와있지 않는 것 같다.) 컴파일하고 설치한 뒤, ``/etc/inetd.conf'' 파일에 다음과 같은 항목을 추가하여서 TACACS 요청이 수신될 때 마다 inetd 데몬에 의하여 데몬이 자동으로 실행되도록 하여야 한다.
그런 다음, ``/etc/xtacacsd-conf'' 파일을 편집하여 시스템에 맞춰 필요에 따라 변경하여야 한다. (물론 디폴트 셋팅을 그대로 사용할 수도 있을 것이다)
정말로 섀도우를 사용한다면, ``/etc/xtacacsd-conf'' 파일을 편집하여 섀도우가 아닌 패스워드 파일의 (앞에서 설명한 내가 쓰는 방식을 쓴다면) 위치를 알려주어야 한다. 그 다음 단계는 액세스 서버가 (다이얼업 모뎀과 같이) 원하는 장치로 들어오는 로그인을 TACACS 를 이용하여 인증하도록 설정하는 것이다. 어떻게 설정하는지를 보여주는 세션의 예는 다음과 같다:
모든 TACACS 활동 로그 메시지는 상세한 검사를 위하여 ``/var/log/messages'' 파일에 기록된다. 7.4. 삼바를 이용한 윈도 스타일의 파일과 인쇄 서비스리눅스는 SMB 서비스 (예를 들어, WfW, 윈95, NT 스타일의 네트웍 파일 & 프린터 공유) 를 삼바 패키지를 이용하여 제공한다. 이 섹션은 어떻게 공유를 설정하며 클라이언트 기계에서 어떻게 접근하여 활용할 수 있는지를 설명할 것이다. 삼바 패키지는 레드햇 배포판에 포함되어있는데 현재 설치가 되어 있는지 그리고 어떤 버전이 설치되어 있는지 알아보려면 다음과 같이 타이핑하면 된다:
만약 설치되어 있지 않다면 RPM 유틸리티를 이용하여 설치하여야 한다. 이에 대한 상세한 내용은 10.1절 을 참조하면 된다. 신경을 써주어야 할 가장 중요한 삼바 파일은:
``/etc/smb.conf'' 파일은 파일 & 인쇄 공유에 대한 설정 정보를 갖고 있다. 파일의 처음 몇줄은 전체 설정에 대한 명령어로서 (각 섹션별로 별도로 지정하여 무시하지 않는 한) 모든 공유에 공통적으로 적용되는 것이고 그 다음에는 공유 섹션이 나온다. 삼바 설치 프로그램에는 디폴트 smb.conf 파일이 들어 있는데 상당수의 경우에 사용자의 요구에 적절하도록 되어 있기 때문에 아주 몇 줄만 수정해주면 된다. 다음에 파일의 예를 제시하였다 (이 파일은 중요하고 재미있는 옵션을 보여주기 위하여 심하게 손을 본 것이다):
(물론, SWAT 유틸리티를 사용하려면 아파치와 같은 웹 서버가 실행중이어야 한다. 자세한 내용은 7.1절 을 참조하시요.) 최근 버전의 삼바에는 2.0 이전과 비교하여 상당히 많은 기능을 추가되었다. 따라서 시간을 투자하여 삼바 패키지를 업그레이드할 만한 가치가 있다. 클라이언트는 공유에 연결하기 위하여 TCP/IP 네트웍 스택이 실행중이어야만 한다. 게다가, 브라우징 기능이 동작하려면, TCP/IP 프로토콜은 NETBEUI 와 엮여있어야 한다. 윈도 95 에서는 제어판에 있는 "네트워크" 아이콘을 이용하여 설정할 수 있다. 클라이언트가 제대로 설정되었다면, "네트워크 환경" 에 (윈도 95 나 NT 를 사용하고 있지않다면 그에 해당하는 브라우징 기능에) 서버의 공유가 나타나야 한다. 그러고 나면 네트워크 환경에서 네트웍 드라이브를 매핑하거나 공유의 절대 경로 (예."\\mail\cdrom") 를 타이핑하여 이용할 수 있다. 만약 공유 서비스가 패스워드의 입력을 필요로 하도록 되어 있다면, 입력하라는 프롬프트가 나타날 것이다. 삼바에 대한 더 자세한 정보는 http://samba.anu.edu.au/samba/ 에 있는 삼바 홈 페이지에서 얻을 수 있다. 7.5. Netatalk 를 이용한 매킨토시 스타일의 파일과 인쇄 서비스리눅스는 Netatalk 패키지를 이용하여 애플쉐어 서비스(예를 들어, 매킨토시 스타일의 파일 & 프린터 공유)도 제공할 수 있다. 이 섹션은 어떻게 공유를 설정하고 클라이언트에서는 어떻게 액세스하는지를 설명할 것이다. Netatalk 를 사용하려면 당신의 리눅스 커널이 애플톡 네트워킹을 지원하도록 해야 한다. 레드햇은 이미 이러한 지원을 모듈의 형태로 제공하고 있으며 그것을 이용하지 않더라도 이를 지원할 수 있도록 커널을 컴파일할 수 있다.
일단, 커널이 애플톡을 지원할 수 있게 되면, Netatalk 패키지를 설치할 필요가 있다. Netatalk 는 레드햇 배포판에는 포함되어 있지 않으므로 먼저 내려받아서 설치하여야 한다. Netatalk 패키지는 레드햇의 "contrib" 사이트인 ftp://ftp.redhat.com/contrib/libc6/i386/ 에 들어있다. Netatalk 가 설치되고 나면, ``/etc/atalk/'' 에 있는 몇개의 설정 파일을 수정할 필요가 있다. 대부분의 파일은 샘플 설정 예시를 갖고 있으므로 어느 정도 내용을 알아볼 수는 있을 것이다. 파일은 다음과 같다:
일단 모든 것을 적절한 설정 정보로 셋업하였다면 Netatalk 서비스를 수작업으로 다음과 같이 시작시킬 수 있다:
(서비스는 시스템이 부팅될 때 자동으로 시작되어야 한다.) Netatalk 에 대한 더 자세한 정보는 http://www.umich.edu/~rsug/netatalk/ 에 있는 Netatalk 홈 페이지에서 얻을 수 있다. 그리고, 설정 정보에 대한 매우 유용한 자료를 http://thehamptons.com/anders/netatalk/ 에 있는 리눅스 Netatalk HOWTO 문서에서도 얻을 수 있다. 7.6. 네트웍 파일 시스템(NFS) 서비스리눅스는 네트웍 파일 시스템 (NFS) 프로토콜을 이용한 파일 시스템 공유에 있어 클라이언트로도 서버로도 역할을 할 수 있다. 네트웍 파일 시스템은 유닉스 시스템간에 파일 시스템의 마운트를 지원하는 사실상의 표준이다.
NFS 를 사용하기 위해서는 커널 또는 커널 모듈로 NFS 지원이 포함되어 있어야 한다. 리눅스 커널을 업그레이드하거나 수정하는 방법에 대하여는 10.4절 을 참조하시요. NFS 공유를 설정하려면 ``/etc/exports'' 파일을 수정해주면 된다. 아래에 몇가지 사용가능한 옵션을 보여주는 항목의 예를 들었다:
처음 두 줄은 ``spock.mydomain.name'' 라는 호스트가 NFS 를 이용하여 ``/archive'' 와 ``/archive2'' 디렉토리를 액세스할 수 있음을 나타낸다. 이들 공유는 ``(ro)'' 옵션을 지정하였기 때문에 읽기전용이 된다. 보안상의 이유로 모든 NFS 공유를 가능하다면 이 옵션으로 해두는 것이 좋다. 세번째 줄은 ``domain.name'' 도메인에 있는 모든 호스트가 씨디롬을 액세스 할 수 있도록 허용하고 있다. 물론 씨디롬은 미리 ``/mnt/cdrom'' 에 마운트되어 있어야 한다.
``/etc/exports'' 파일을 수정하고 난 뒤에는 NFS 데몬을 재시작하여야 한다. 이를 위하여는 다음과 같이 타이핑하면 된다:
NFS 마운트 위치를 설정하는데는 ``Linuxconf'' 유틸리티에 포함되어 잇는 ``Network Configurator'' 도구를 사요할 수도 있다. Linuxconf 유틸리티에 대한 자세한 정보는 7.7절 을 참조하시요. NFS 에 대한 자세한 정보는 http://metalab.unc.edu/LDP/HOWTO/NFS-HOWTO.html 에 있는 ``NFS-HOWTO'' 에 들어있다. 그 외에도 ``nfsd'' 와 ``exports'' 의 매뉴얼 페이지에서도 정보를 얻을 수 있다. 7.7. Linuxconf 를 이용한 설정의 모든 것상당수의 설정 문제를 쉽게 해결해주는 ``linuxconf'' 라는 훌륭한 도구가 있다. Linuxconf 는 사용가능한 어떤 화면 환경에서도 잘 돌아간다 -- 콘솔에서 실행할 수도 있고, 텔넷을 통하여 원격지에서도 실행할 수 있고 X 에서는 구이기반의 도구로 실행할 수도 있는데 상황을 자동으로 탐지하여 적절한 방식으로 시작된다. 시스템의 시간을 바꾸고 네트웍 셋팅을 수정하고 파일 시스템을 셋업하고 사용자 관리를 하고 기타의 다양한 관리나 설정 임무를 수행할 때 이 도구를 사용해 볼 수 있다. 딱 한가지의 주의 사항은 이 글을 쓰는 때를 기준으로 구이기반의 도구는 약간 "버그가 있고" 마우스로 클릭을 해도 반응하지 않는 경우가 있다. 하지만, 이 도구는 계속 개선되고 있고 미래의 버전은 꽤 쓸만할 것이다. 8장. 백업과 복구 설차정기적으로 백업을 수행하는 것은 책임있는 시스템 관리자에게는 최우선의 일로 간주되어야 한다. 비록 리눅스가 극도로 안정적인 운영체제이지만, 장애는 일어날 수 있고, 일어나고 있으며, 아마도 일어날 것이다. 하드웨어상의 장애, 정전 또는 그 외 예측하지 못한 문제로부터 이러한 장애는 발생할 수 있다. 그러나 이러한 요인보다는 사람의 실수에 의하여 문제가 발생하는 경우가 더 많다. 그 결과로 중요한 파일을 원하지 않게 고치거나 심지어는 삭제할 수가 있다. 만약 당신의 시스템을 여러 사용자들이 쓰고 있다면 아마 실수로 지운 파일을 복구해달라는 요구를 틀림없이 받게될 것이다. 만약 정기적으로 백업을 한다면 (최소한 자주 갱신되는 사용자 파일들이라도) 그것도 일단위로 한다면 그러한 파일 손실의 가능성을 줄이고 복구 가능성을 높일 수 있다. 백업을 실행하는 가장 안전한 방법은 테이프, 제거가능한 드라이브, 기록가능한 씨디 등 분리된 매체에 기록하여 리눅스 시스템과는 떨어진 위치에 저장해두는 것이다. 어떤 경우에는 이러한 것이 현실성이 없을 수도 있다 -- 아마 백업 테이프를 넣어 둘만한 내화성 금고를 갖고 있지도 않을 것이다! 또는 처음에는 외장 백업 시스템 자체가 없을 수도 있다. 그렇다손 치더라도 백업을 어떻게든 비록 제한된 방법으로나마 수행할 수는 있다. 우리 회사에서 나는 여러대의 리눅스 서버에 대하여 백업을 수행한다. 상황에 따라서 어떤 백업 세트는 테이프에 쓰고 또 어떤 것은 네트웍으로 연결된 다른 서버에 쓰기도 하고 그렇지도 않은 것들은 다른 디스크 파티션에 (예컨대, ``/archive/'' 파일 시스템에) 쓰기도 한다. 이 작업은 자동으로 cron 작업으로 실행된다. (대개 서버는 다른 곳에 있는 경우가 많으므로 테이프 백업을 하기 위하여 여기 저기를 매일 같이 방문한다는 것은 실용적이지 않거나 불가능하다.) 집에서는 외장 백업 시스템이 없을 뿐만 아니라 백업 이미지를 기록해둘만한 여분의 디스크 공간을 충분히 갖고 있지도 않다. 따라서, 따라서, 대신 ``/home/'' 디렉토리에 있는 나의 사용자 파일과 ``/etc/'' 디렉토리에 있는 몇몇 설정 파일만을 별도의 디스크 파티션에 백업하고 있다. 8.1. 서버의 백업 절차리눅스에서 백업을 수행하는데에는 매우 다양한 방법이 있다. 모든 리눅스 배포판에 포함되어 있는 명령행 도구인 ``dd'', ``dump'', ``cpio'', 나 ``tar'' 를 사용하는 방법도 이에 속한다. 그 외에도 백업과 복구 절차에 좀 더 사용하기 편리한 인터페이스를 추가하려고 만든 텍스트 기반의 유틸리티로서 ``아만다(Amanda)'' 와 ``테이퍼(Taper)'' 가 있다. 구이 기반의 ``KDat'' 라는 유틸리티도 있다. 마지막으로는 상용 백업 유틸리티로서 ``BRU'' 와 ``PerfectBackup+'' 가 있다. 이들 중 어느 것을 사용하더라도 당신의 귀중한 자료를 보호할 수 있다. 사용가능한 도구와 그것을 어디서 얻을 수 있는 지를 정리한 목록은 http://www.xnet.com/~blatura/linapp2.html#back 에 있는 "Linux Applications and Utilities Page" 에서 얻을 수 있다. 백업 솔루션을 결정할 때에는 다음과 같은 사항을 고려할 필요가 있다:
당연히, 당신이 어떤 백업 솔루션을 선택하느냐에 따라 백업과 복구를 수행하는 절차는 다르다. 하지만, 이 섹션에서는 내가 가장 자주 사용하는 다음과 같은 두개의 도구를 이용하여 백업을 수행하는 방법을 설명할 것이다: ``tar'' (이 이름은 "Tape ARchiver" 에서 따낸 말이다) 는 명령행 백업 도구로서 유닉스/리눅스 시스템에서 상당히 이식성이 높다. ``KDat'' 는 구이 기반의 테이프 백업 유틸리티로서 KDE 패키지에 (KDE 에 대하여는 5.6절 을 참조하시요) 포함되어 있다. 마지막으로 덧붙이고 싶은 것은 선택한 백업 솔루션에 따라, 심지어는 그 도구가 자동 백업 기능을 내장하고 있지 않다 하더라도, cron 기능을 이용하여 백업을 자동화할 수 있다는 것이다. cron 을 사용하는 방법과 crontab 스케쥴 파일을 만드는 방법에 대한 상세한 내용은 9.4절 을 참조하시요. 8.1.1. ``tar'' 를 이용한 백업:``tar'' 를 백업 솔루션으로 사용하기로 결정하였다면 다양한 명령행 옵션을 알기 위하여 시간을 투자할 필요가 있다; 옵션에 대한 설명을 보려면 "man tar" 라고 타이핑하면 된다. 그리고 적당한 백업 매체에 액세스하는 방법도 알아야 할 것이다; 비록 유닉스 세계에서는 모든 장치가 파일과 같이 취급되지만, 테이프와 같은 문자 장치에 기록을 할 때에는 "파일" 의 이름이 장치 자체를 나타낸다. (예를 들어, ``/dev/nst0'' 는 스카시 기반의 테이프 드라이브를 나타낸다.) 다음의 명령은 당신 리눅스 시스템 전체를 ``/archive/'' 파일 시스템에 백업할 것이다. 이 백업에서 빠지는 부분은 가짜 파일 시스템인 ``/proc/'', ``/mnt/'' 에 마운트된 파일 시스템, ``/archive/'' 파일 시스템 (백업 셋트 자체를 다시 백업한다는 것은 의미가 없다!), Squid 가 사용하는 상당히 큰 캐시 파일이다. (이들을 백업하는 것은, 내 의견으로는, 백업 매체의 낭비이며 필요하지도 않다):
이 명령의 길이에 겁먹지마라! 우리가 명령을 구성 부분으로 쪼개놓고 나면 이 강력한 유틸리티의 아름다움을 알게될 것이다. 앞의 명령에서 지적한 옵션으로는, ``z'' (압축; 백업 자료를 ``gzip'' 을 이용하여 압축한다), ``c'' (생성; 새로운 저장 파일을 만든다), ``v'' (수다; 백업이 되고 있는 파일의 목록을 보여준다), ``p'' (퍼미션 보존; 파일 보호를 위한 정보는 복구할 수 있도록 "기억해" 둔다) 가 있다. 그 외에도, ``f'' (파일) 옵션은 그 다음의 인자가 생성할 저장 파일 (또는 장치) 의 이름이라는 것을 나타낸다. 파일 이름에 오늘 날짜를 넣기 위하여 어떻게 했는지 보면, ``date'' 명령을 두개의 역따옴표로 둘러싸서 만들어내고 있다. 일반적으로 사용되는 이름 규칙은 압축되지 않은 저장 파일에는 ``tar'' 를 뒤에 붙이고, 압축된 저장파일의 경우에는 ``tar.gz'' 를 뒤에 붙이는 것이다. ``--directory'' 옵션은 백업을 시작하기 전에 옵션 뒤에 지정한 디렉토리 경로로 일단 가라는 것을 나타낸다. (우리의 예에서는, ``/'' 디렉토리로 가서 백업이 시작된다.) ``--exclude'' 옵션은 지정한 디렉토리나 파일은 백업하지 말라고 지시한다. 마지막으로, ``.'' 글자는 현재 디렉토리에 있는 모든 것을 백업해야 함을 나타낸다.
또 하나의 예로서, (앞의 예에서는 전체 를 백업하면서 그 중에 몇가지를 제외하는 방식을 썼지만) 이번에는 지정한 몇개의 파일 시스템만을 스카시 테이프 드라이브에 기록하는 방법을 살펴 보자:
위의 명령에서 ``z'' (압축) 옵션이 사용되지 않았음을 주목하기 바란다. 나는 테이프에 압축된 자료를 기록하는 것을 강력히 반대한다. 왜냐하면, 테이프에 있는 자료의 일부가 깨지면 백업 셋트 전체를 못쓰게 되기 때문이다. 테이프의 일부가 파손되더라도 압축을 사용하지 않고 저장된 경우에는 파손되지 않은 파일은 상당히 많이 복구할 수 있다. 테이프 드라이브는 문자 장치이기 때문에, 실제 파일 이름을 지정하는 것은 불가능하다. 따라서, tar 에서 파일 이름에 해당하는 인자는 장치의 이름 즉 ``/dev/nst0'' (스카시 버스에 연결된 첫번째 테이프 장치) 와 같은 방식으로 지정하여야 한다.
백업 셋트에 파일이름을 지정할 수 없기 때문에, ``--label'' 옵션을 사용하여 저장 파일 자체에다가 백업 셋트에 대한 추가 정보를 저장할 수 있다. 마지막으로, ``/etc/'', ``/home/'', ``/usr/local'', ``/var/spool/'' 에 있는 파일들만 (Squid 캐시 자료 파일은 빼고) 테이프에 기록된다. 테이프를 이용할 때에는 테이프를 되감거나 꺼내기 위하여 다음과 같은 명령을 사용하게 된다:
8.1.2. ``KDat'' 를 이용한 백업:만약 KDE 데스크탑 환경을 사용하고 있다면, ``KDat'' 유틸리티가 강력할 뿐만 아니라 사용하기도 편리하다는 것을 알게될 것이다. 게다가, 한가지 덤으로 따라오는 것은 KDat 가 ``tar'' 를 백업 엔진으로 사용한다는 점이다. 따라서, KDat 로 기록된 백업 셋트는 KDat 로 읽을 수 있을 뿐만 아니라 tar 를 이용해서도 읽을 수 있다! 따라서 KDat 는 사용의 편리성과 백업의 이식성을 동시에 만족하는 아주 좋은 선택이 되는 것이다.
처음으로 KDat 프로그램을 실행시킬 때 백업 프로파일을 만들 필요가 있다. 그러한 프로파일은 KDat 에게 시스템에서 어느 파일을 백업하고 싶은지를 알려주는 역할을 한다. 만약 필요하다면 여러개의 백업 프로파일을 만들 수도 있다. (예를 들어, 시스템 전체를 백업해주는 "전체 백업" 이라는 프로파일과 사용자 파일만 백업해주는 "빠른 백업" 이라는 프로파일을 각각 만들어 두고 필요에 따라 골라 쓸 수 있다.) 백업 프로파일을 만들려면, 메뉴 바에서 "File" 옵션에서 "Create Backup Profile" 을 선택하거나 또는 "Backup Profiles" 폴더에서 오른쪽 버튼을 누른다음 "Create Backup Profile" 을 선택하면 된다. KDat 창의 오른쪽 편에서는 프로파일의 이름, 저장 파일의 이름, tar 옵션 등 다양한 셋팅을 바꿀 수 있다. 이러한 셋팅이 어디에 쓰이는 지를 알려면 메뉴에서 "Help" 를 선택하여 살펴보면 된다. 백업 프로파일에 포함시킬 파일을 지정하려면, ``/'' 디렉토리 폴더의 옆에 있는 체크박스를 클릭하면 된다. 이렇게하면 이 디렉토리 아래의 모든 파일을 백업하도록 지정한 것이 된다. 그러고 나서, 폴더의 옆에 있는 조그마한 ``+'' 표시를 클릭한다. 그러면 폴더가 확장되어 그 안에 들어있는 파일의 목록을 보여준다. 여기서 백업에 포함시키고 싶지 않은 파일을 빼낼 수 있다; 빼고 싶은 파일이나 디렉토리 옆에 있는 체크박스를 클릭해주기만 하면 된다. 예를 들어, 전체 백업은 모든 파일과 디렉토리는 체크 표시를 해주고 단, ``/proc'' (실행 중인 시스템에 대한 정보를 갖고 있는 가짜 파일 시스템), ``/mnt'' (씨디롬 드라이브, 플로피, 네트웍 공유 등이 대개 마운트되는 디렉토리), 그리고 Squid 를 사용하고 있다면, ``/var/spool/squid'' (Squid 의 캐시 데이터 파일) 만 예외로 빼준다. 일단 필요한 파일을 선택하였다면 만들고 있는 백업 프로파일을 클릭하고 "Files >>" 버튼을 클릭하여 선택된 파일 목록을 백업 프로파일로 옮긴다.
실제로 백업을 수행하려면, 드라이브에 테이프를 넣고나서 "File" 메뉴에서 "Mount Tape" 를 선택한다. (또는 테이프같이 생긴 아이콘을 클릭한다) 이렇게 하면 테이프를 "마운트" 하게 된다. (실제로는 테이프 장치가 문자 장치이기 때문에 마운트하는 것이 불가능하다 -- KDat 가 실제로 하는 일은 테이프를 되감고 헤더 정보를 읽으려고 시도하여 만약 읽을 수 있으면 해당되는 테이프 색인을 찾아낸다. 만약, 헤더 정보를 읽을 수 없으면 KDat 는 테이프를 포맷하라고 할 것이다.)
일단 KDat 가 테이프를 마운트하고 나면 백업을 시작하기에 앞서 이번 백업에서 어느 백업 프로파일을 사용할 것인지를 선택하여야만 한다. 백업을 시작하려면, 원하는 백업 프로파일을 오른쪽 버튼으로 클릭한 뒤 "Backup" 옵션을 클릭해주면 된다. 그러면 KDat 는 당신이 선택한 백업 프로파일에 대한 상세한 내용을 보여주는 대화상자를 보여준다; 여기에서 백업을 시작하려면 "Ok" 버튼을 클릭하면 된다. 백업이 진행되는 동안, KDat 는 다양한 통계 정보 (작업 시간, 백업의 크기, 백업한 비율, 남은 시간의 예상치, 파일의 수, 기록된 바이트 수 등) 와 백업된 파일의 목록을 나타내는 대화상자를 보여줄 것이다. 수 기가 바이트에 달하는 전체 백업은 끝나는데 까지 몇시간이 걸릴 것이다. 만약 필요하다면 백업이 진행되는 중에 언제라도 "Abort" 버튼을 눌러 백업을 중단시킬 수 있다. 일단 백업이 완전히 끝나고 나면, 메뉴 바에서 "Edit" 를 선택한다음 "Unmount Tape" 를 선택하여 테이프의 마운트를 해제하거나 테이프 모양의 아이콘을 클릭하여 테이프를 되감은 뒤 튀어나오게 할 수 있다. 8.2. 서버 복구 절차말할 나위도 없이 정기적으로 백업을 하는 것보다 더 중요한 한가지 일은 중요한 파일을 복구할 때가 되었을 때 복구할 수 있게 하는 것이다! 당연히 8.1절 에서 언급한 것과 마찬가지로 당신이 백업 솔루션으로 무엇을 선택했느냐에 따라 복구를 수행하는 방법도 다르다. 이 섹션에서는 ``tar'' 와 ''KDat'' 를 이용하여 백업된 파일을 복구하는 방법을 다룰 것이다. 8.2.1. ``tar'' 를 이용한 복구:다음의 명령은 ``full-backup-09-October-1999.tar.gz'' 저장 파일로 부터 모든 파일을 복구한다. (이 파일은 리눅스 시스템의 예제 백업 파일로서 8.1.1절 에서 예시한 명령으로 만들어 진 것이다):
앞의 명령은 압축된 저장 파일에 들어있는 모든 파일을 추출하며 원래 파일의 소유관계와 퍼미션도 그대로 복원한다. ``x'' 옵션은 추출 (extract) 을 의미한다. (다른 옵션은 8.1.1절 에서 이미 설명하였다.)
저장 파일에 있는 모든 파일을 복구하려는 것이 아니라면, 복구하려는 파일의 이름을 지정하기 위하여 다음과 같이 할 수 있다:
이 명령은 저장 파일에서 ``etc/profile'' 파일과 ``usr/local/bin/tolower'' 파일만을 복구한다.
8.1절 에서 언급한 것과 마찬가지로 저장 파일을 만들 때 tar 는 파일의 경로 이름에서 맨 앞에 있는 ``/'' (슬래시) 문자를 잘라낸다. 이는 복구 파일은 원래 그 파일이 백업된 곳과 같은 위치로 되돌아 가지 않는다는 것을 의미한다. 따라서 ``/'' root 디렉토리로 이동하거나 ``--directory /'' 옵션을 사용하여야 한다.
8.2.2. ``KDat'' 를 이용한 복구:KDat 가 만든 백업 셋트에서 하나 또는 여러 개의 파일을 복구하기 위해서는 백업 테이프를 드라이브에 넣고, "File" 메뉴 옵션에서 "Mount Tape" 를 선택하여야 한다. (또는 테이프같이 생긴 아이콘을 클릭한다.) KDat 는 테이프로부터 헤더 정보를 읽으려고 시도를 한다. 만약 제대로 읽을 수 있으면 테이프 헤더에서 발견된 고유번호와 맞는 테이프 색인을 찾으려고 한다. 이 테이프 색인은 당신의 하드 드라이브에 저장되어 있으며 KDat 가 백업 테이프를 포맷할 때 마다 만들어지는 고유한 파일로서 백업을 수행할 때 마다 갱신된다. 만약 해당되는 테이프 색인이 없으면 (아마 다른 기계에서 만든 백업 셋트를 가지고 복구하려고 하거나 하드 드라이브에 있던 색인 파일이 삭제 또는 깨진 경우) KDat 는 그 사실을 당신에게 알려주고 테이프를 읽어서 색인을 다시 만들어도 되겠는지를 물어본다. 원하는 파일을 복구할 수 있기 위해서는 색인 파일을 다시 만들어야 하므로 당연히 "Yes" 를 클릭하여야 한다.
일단 테이프 인덱스를 성공적으로 읽고 나면, 백업 프로파일을 만들 때와 마찬가지의 방식으로 (파일 선택 과정에 대한 상세한 설명은 8.1절 을 참조하시요), 백업 셋트로부터 복구하고자 하는 파일이나 디렉토리를 선택하는데 사용된다. 필요한 파일을 더 선택하고 나면, 메뉴 바의 "File" 옵션에서 "Restore..." 를 선택하여 (또는 테이프 복구 아이콘을 클릭하여) 복구 과정을 시작시키면 된다. KDat 는 대화상자를 띄워서 어느 파일을 복구할 것이지를 확인받는다. 게다가 파일이 복구되는 디렉토리를 지정할 수 있는 옵션도 있다. 이 기능을 이용하면 중요한 시스템 파일을 당신의 홈 디렉토리에 일단 꺼내서 내용을 비교한 뒤 나중에 원하는 위치로 옮기거나 갱신할 수 있다. 이는 사실 파일을 복구하는 가장 안전한 방식이다. 복구 과정을 시작시키려면, "Okay" 버튼을 클릭하면 된다. 그러면 KDat 는 테이프를 훑어가면서 선택된 파일을 복구한다. 어떤 경우에는 KDat 로 만든 백업 셋트를 KDat 를 사용하지 않고 복구하는 것이 필요하거나 유용할 수가 있다. 아마 구이 기반의 환경이 아니거나 KDat 를 원격지에서 실행시키기에는 연결된 네트웍이 너무 느리거나 하는 경우가 이에 해당할 것이다. 다행히도, KDat 는 백업 셋트를 모든 유닉스/리눅스 시스템에서 사용할 수 있는 명령행 기반의 도구인 ``tar'' 를 이용하여 만든다. KDat 로 만든 백업 셋트를 tar 명령으로 복구하여야 한다면 그냥 tar 명령을 써서 만든 임의의 정상적인 백업 셋트를 복구할 때 사용하는 모든 옵션을 그냥 쓰면 된다. 하지만 주의할 사항은 백업 셋트가 압축 포맷으로는 저장되지 않는다는 것이다.
8.3. 시스코 라우터 설정 백업우리 회사에서는 WAN 을 이용하여 여러 사무실을 연결하고 있다. 이들 원격지에는 ISDN 을 통하여 시스코 라우터가 연결되어 있거나 어떤 경우에는 인터넷과 WAN 의 연결을 제공하기 위하여 센트렉스 (Centrex) 데이터 회로를 사용한다. 시스코 라우터 제품은 네트웍 서버상의 TFTP ("Trivial File Transfer Protocol") 를 통하여 설정 파일을 읽거나 쓸 수 있도록 해준다. 라우터 설정이 바뀔 때마다, 백업을 관리할 수 있도록 설정 파일을 리눅스 서버에 저장하는 것이 중요하다. TFTP 는 제대로 설정되지 않으면 실제로 보안상의 구멍이 되므로, 레드햇은 디폴트로 TFTP 서비스를 막아놓았다는 점에 주의하여야 한다. TFTP 데몬은 인증 과정을 거치지도 않고 누구든지 파일을 읽거나 쓸 수 있도록 허용한다. 내가 보통 셋업하는 방법은 ``/tftpboot/'' 디렉토리를 만들어서 그 소유자를 루트로 하고 ``/etc/inetd.conf'' 파일에 있는 설정내용을 파일의 위치를 지정하도록 바꾼다:
일단 TFTP 서비스를 쓸 수 있도록 하였으면 다음과 같이 타이핑하여야 한다:
이 명령은 INETD 데몬을 다시 시작시켜서 inetd.conf 파일의 수정 내용이 적용되게 해준다. 라우터 설정 파일의 백업을 만드는 것은 3단계로 이루어진다: 기존의 파일에 대하여 (없으면 하나를 만들어서) 쓰기를 허용하도록 퍼미션을 지정하고, 백업 파일을 쓰고, 그리고 나서 파일에 대한 액세스를 제한하도록 퍼미션을 리셋한다. 라우터 백업 세션의 예는 다음과 같다:
라우터가 (예컨대 천둥 번개로 발생한 서지 전압으로) 말썽을 일으키면 이러한 백업 파일이 라우터 설정을 다시 복구하는데 도움이 된다. 설정 파일을 복구하는 것도 역시 3단계로 이루어진다: 기존 파일의 퍼미션을 셋팅하고, 파일을 올린다음, 파일에 대한 접근을 통제하기 위하여 퍼미션을 리셋한다. 라우터 복구 세션의 예는 다음과 같다.
9장. 잡다한 관리 업무리눅스는 인터넷 서버로 서비스에 사용한 지난 4년간 극도로 안정적이며 계속 실행시키기 위하여 수작업으로 관리하여야 할 것이 매우 적다는 것이 증명되었다. 가능한한 반복적이거나 지겨운 관리 업무는 crontab 이나 스크립트 파일을 이용하여 자동화하여야 하고 또 할 수 있다. 하지만 리눅스가 문제없이 계속 운영되게 하려면 가끔식 다양한 검사를 해주어야 한다. 여기에 포함되는 것으로는: 9.1. 저장 공간 검사가끔식 저장 장치에 충분한 빈 공간이 있는지 확인하는 것은 중요하다. "df" 명령을 사용하면 남은 공간에 대한 레포트를 얻을 수 있다. 그 내용은 다음과 같이 생겼다 (여기에 나온 내용은 우리 회사에 있는 인터넷 서버에서 나온 것이다):
이들 파일 시스템은 상당히 안정적이어서 아주 서서히 크기가 늘어나고 있다. (위의 그림과 아래의 설명은 짝이 맞지 않습니다. 원저자의 오류인 것으로 보입니다:역자) "/" (즉 root) 파일 시스템은 /dev/hda1 에 마운트되어 있으며 리눅스 커널, 디바이스 드라이버 그리고 다른 디렉토리를 포함한다. 사용자의 메일 메시지가 저장되는 곳 (/var/spool/mail/) 과 로그 파일이 저장되는 곳 (/var/adm/) 도 있지만 메일 메시지는 사용자들이 받아 가버리고 로그 파일은 순환이 되도록 되어 있어서 사용가능한 공간은 상당히 안정적인 모습을 보인다 (대략 한 달에 1% 정도가 늘어난다). 로그 파일은 순환이 되며 주단위로 자동으로 예전 것을 삭제하므로 대략 한달치 정도의 로그 파일을 갖고 있게 된다.
"/usr/" (즉 사용자) 파일 시스템은 /dev/hda2 에 마운트되어 있으며 사용자가 설치한 (여기서 사용자는 시스템 관리자가 사용자로서 설치하였다는 의미이다) 소프트웨어나 당신의 웹 사이트 내용 등이 들어있다. 이는 가장 큰 파일 시스템이며 매우 서서히 증가한다. 웹 페이지에 대한 로그 파일이 여기에 저장되어서 크기가 커질 수 있다; 따라서 정기적으로 확인하여 필요하다면 적당히 잘라 주어야 한다. 내 기계에서는 매달 초에 현재 웹 로그 파일을 월간 요약 로그로 (예를 들어, 11월의 로그는 access_log.11 로) 옮겨버린다. 연말이 되면 이들 로그 파일을 모두 삭제하고 처음부터 다시 시작한다 (따라서 매년 1월 1일에는 상당히 여유공간이 많아지게 된다).
"/home/" (즉, 각 사용자의 홈 디렉토리) 파일 시스템은 /dev/hda3 에 마운트되며 모든 사용자의 디렉토리와 파일이 저장된다. 각 사용자에게 쉘 계정을 주지 않는 한 이 영역의 대부분은 사용자에게 쓸모없거나 접근불가능한 영역이 된다. (각 사용자 계정을 만들 때마다 여기에 디렉토리가 만들어지며 사용자 메일의 전달 등에 활용된다.) 하지만, 쉘 계정을 가지고 있는 사용자나 쉘은 아니라도 웹 페이지 사용자 (예를 들어, 개인 홈 페이지 사용자) 는 자기의 파일을 여기에 저장한다. 게다가 다른 배포판에서는 대개 웹 서비스의 기본 서버 페이지를 /usr 파일 시스템에 저장하는데 반하여, 레드햇에서는 기본 서버 페이지가 여기에 있는 /home/httpd 디렉토리 아래에 저장된다. (이에 대한 자세한 정보는 7.1절 을 참조하시요.) 이 파일 시스템은 쉘 계정을 아주 많이 만들어주지 않는 한, 아마 가장 느리게 크기가 커질 것이다.
내 시스템에는 "/archive/" (즉, 저장용) 파일 시스템이 /dev/hdb1 에 마운트되어 있으며 그 크기는 1.02 Gb 로서 어떤 파일이건 (예를 들어, 데이터 파일이든 소프트웨어 키트 건 간에) 저장하는데 사용한다. 나는 (약 70%에 달하는) 상당히 많은 영역을 현재 시스템에 대한 디스크-대-디스크 완전 백업을 위한 용도로 사용한다. 간단히 말하자면 필요에 따라서 장치를 추가 마운트하여 이런 식으로 활용하면 된다. 씨디롬 드라이브는 "/mnt/cdrom/" 라는 이름으로 /dev/scd0 에 마운트 된다. 이 장치는 24배속 씨디롬으로서 ISO9660 포맷의 어떤 씨디라도 읽을 수 있다. 이 장치는 기본적으로 소프트웨어 설치를 위하여 사용되지만 도스/윈도용 씨디를 마운트하여 삼바 서비스를 통하여 윈도 3.x/95/NT 네트웍 공유로 사용하기도 한다. (이에 대한 상세한 내용은 7.4절 을 참조하시요.) "rm" 명령은 파일을 삭제한다. 사용법은 ``rm 파일이름'' 이다. 확인을 해가며 파일을 지우려면 "-i" 옵션을 사용한다 (예. ``rm -i *''). 이렇게 하면 각 파일에 대하여 지울 것인지를 물어볼 것이다.
이 명령을 사용할 때에는 오타를 하지 않도록 특별히 주의하여야 한다 -- 특히 "루트" 로 로그인하였을 때에는 -- 왜냐하면 엉뚱한 파일을 지워서 후회하게 될 것이기 때문이다. 9.2. 프로세스 관리때때로, 리눅스에서 현재 실행중인 프로세스들을 보고 싶을 때가 있을 것이다. 이러한 프로세스 리스트를 보려면, ``ps -aux'' 라고 타이핑하면 되는데 그 결과는 다음과 같은 식으로 나온다:
리스트에는 프로세스의 소유주 (웹 서버와 같은 특별한 서비스의 경우 소유주가 "nobody" 로 되어 있다), 프로세스 고유 번호, 프로세스가 현재 사용하고 있는 CPU 시간의 점유 비율, 프로세스가 사용하고 있는 메모리의 비율, 프로세스가 무엇을 하고 있는 지에 대한 설명 그리고 그 외 관련 정보가 나온다. 어떤 프로세스에 대한 더 자세한 정보를 얻으려면 ``ps
이 결과는 이 특정 프로세스가 웹 서버 (아파치 웹 서버는 프로세스 리스트에 여러번 나타나게 되는데 그 이유에 대하여는 7.1절 을 참조하면 된다) 라는 것을 나타낸다. 어떤 서비스가 제대로 운영되고 있지 않다는 것을 알게되면 "kill -HUP 그래도 문제가 해결되지 않는다면 시스템을 내렸다가 다시 부팅하는 방법을 사용하여야 한다. (이에 대한 자세한 정보는 6.7절 을 참조하시요). 가끔은 어떤 프로세스를 잠시 중지시켰다가 나중에 계속 실행시켜야 할 때가 있다. 예를 들어, 현재 CPU 를 많이 사용하는 어떤 작업을 돌리고 있는데 동시에 IDE 기반의 CD 롬 라이터로 씨디를 구우려고 한다고 생각해보자. IDE 기반의 장치는 입출력을 위하여 CPU 에 상당히 많이 의존하므로 CPU 가 너무 바쁘다면 버퍼 처리를 제대로 할 수 없게 되고 그 결과로서 제대로 구워진 씨디가 아니라 쓸모없는 원반하나를 얻는 수가 생긴다! 다음 두개의 명령은 어떤 프로세스를 잠시 중지시키는 일과 재시작 시키는데 각기 사용된다:
레드햇에서는 프로세스를 시작시키고 중단시키는데 더 좋은 방법이 있는데 그 내용은 아래에 나오는 9.3절 에서 다루고 있다. 9.3. 프로세스의 시작과 중단리눅스의 레드햇 배포판은 프로세스를 관리하는데 있어 약간 더 조직적인 방법을 제공한다. 프로세스 표에서 프로세스의 번호를 찾아 죽이는 대신에 ``/etc/rc.d/init.d'' 디렉토리에 스크립트를 모아놓고 필요에 따라 프로세스를 시작시키고 중단시킬 수 있게 해준다. 예를 들어, ``httpd'' (아파치 웹 서버) 를 중단시키려면 httpd 스크립트를 다음과 같이 실행시키면 된다:
마찬가지로 ``start'' 옵션을 써서 서비스를 시작시킬 수 있다. 혹은, 설정 파일에 어떤 변경이 있어서 서비스를 재시작시켜서 그 변화를 반영하고 싶다면 ``restart'' 옵션을 사용하면 된다.
9.4. Cron 과 Crontab 파일을 이용하여 작업을 자동화하기당신도 대부분의 리눅스 사용자와 마찬가지로, 반복적으로 어떤 특정한 시간에 어떤 작업을 시작하도록 예약할 필요를 느낄 것이다. 그러한 작업은 분 단위로 반복되는 것일 수도 있고 1년에 한번 반복되는 것일 수도 있다. 이러한 예약 기능은 ``cron'' 기능을 이용하여 구현할 수 있다. 리눅스의 cron 기능은 다른 유닉스와 거의 같게 구현되어 있다. 하지만, 레드햇은 작업의 스케쥴을 잡는데 있어서 다른 리눅스 배포판과는 약간 다른 방식을 채택하고 있다. 다른 배포판과 마찬가지로 스케쥴링 정보는 시스템내의 (``/etc/'' 디렉토리의) ``crontab'' 파일에 다음과 같은 형식으로 저장된다:
각 항목은 정수로 (예를 들어, 1월부터 12월을 나타내기 위하여 1부터 12사이의 숫자를 사용) 지정할 수도 있고 몇개의 항목은 와일드카드 문자로 인식되는 ``*'' 문자로 (예를 들어, 월에 해당하는 항목에 * 표시가 있으면 매월 지정된 날짜, 지정된 시간에 명령이 실행된다는 것을 의미한다) 표시할 수도 있다. 몇가지 예를 들어보면:
표준출력 (즉, 터미널) 으로 출력이 나오는 명령, 예를 들어 위의 예에서 사용한 ``echo'' 명령, 의 출력은 ``루트'' 계정에게 메일로 전송된다. 이렇게 메일이 가지 않도록 하려면 다음의 예처럼 출력을 널 장치 (null device) 로 파이프 연결하면 된다:
표준인 ``crontab'' 외에도 레드햇은 몇개의 디렉토리를 추가하였다:
이름에서 알 수 있듯이, 이들 디렉토리의 아무 곳에나 실행가능한 파일을 둘 수 있으며, 이들 파일은 각기 매시, 매일, 매주 단위로 실행된다. 이 방식은 빈번한 작업을 지정할 때에는 시간을 절약해줄 수 있다; 그냥 실행가능한 스크립트나 프로그램을 적절한 디렉토리에 가져다 놓고 (또는 다른 곳에 있는 파일에 대하여 심볼릭 링크를 걸어놓고) 그 일은 신경쓰지 않아도 된다. 10장. 리눅스와 응용 프로그램을 업그레이드하기리눅스 시스템을 최대한 활용하기 위해서는 즉, 기능을 추가하거나 잠재적인 버그를 제거하거나 보안상의 구멍이 없도록 하기 위해서는 -- 리눅스 커널, 모듈, 사용자 응용 프로그램을 포함하여 -- 서버를 계속 업그레이드 해주는 것이 좋다. 때때로는 더 큰 하드 드라이브를 달아준다든지하는 하드웨어의 업그레이도 필요하다. 이 장에서는 이러한 이슈를 다룬다. 10.1. 레드햇 패지지 관리자 (RPM) 사용하기리눅스의 레드햇 배포판은 커널을 포함하여 라이브러리, 응용 프로그램이 모두 RPM 파일로 제공된다. RPM 파일은 "패키지" 라고 부르기도 하는데 소프트웨어를 쉽게 설치, 업그레이드, 조회, 제거할 수 있도록 소프트웨어를 배포하는 방법이다. RPM 파일은 패키지의 이름, 버전, (필요한 경우) 다른 파일의 의존성 정보, (인텔버전인지 알파버전인지 등을 나타내는) 플랫폼, 파일을 설치하는 디폴트 위치 등의 정보를 포함하고 있다. RPM 유틸리티는 레드햇에 의하여 처음 개발되었으며 리눅스 커뮤니티 전체에 오픈 소스 제품으로 제공되었다. 다른 개발자들이 이를 이용하여 추가의 기능을 넣기도 하였다. 파일을 RPM 방식으로 패키징하는 것은 아주 널리 퍼졌으며 이제는 레드햇뿐 만 아니라 다른 배포판에서 사용하기도 한다. 인기있는 리눅스 응용 프로그램은 거의 항상 곧바로 RPM 파일로 공개된다. 하지만 유닉스 세계에서 패키지 배포의 사실상 표준은 여전히 소위 "타르볼(tarball)" 이다. 타르볼은 ``tar'' 유틸리티로 읽을 수 있는 단순한 파일이다. 타르를 이용하여 프로그램을 설치하는 것은 대개의 경우 RPM 을 이용하는 것보더 훨씬 더 지겹다. 그렇다면 왜 사람들은 그렇게들 하고 있는가? 불행히도 최신판의 패키지를 RPM 으로 변환하는데 몇주씩 걸리는 경우가 있다 (많은 개발자들은 최초의 배포판은 타르볼로 내놓는 경우가 많다). 만약 타르를 이용하여 시스템이나 응용 프로그램을 설치하거나 업그레이드하기 시작하면 당신의 RPM 데이터베이스는 낡은 것이 되고 일관성을 잃게 된다. 이게 뭐 엄청난 일은 아니지만 (내가 슬랙웨어를 쓸 당시에는 -- 다른 선택의 여지도 없었지만 -- 대단한 불편없이 타르만을 사용하였다) 가능한한 나는 RPM 이 나올 때까지 인내심을 갖고 기다리거나 패키지의 개발자에게 아주 정중하게 요청을 한다. (당신이 스스로 RPM 파일을 만들어 다른 사람들에게 배포할 수도 있다. 이는 그런 파일을 만들 능력이 없거나 시간이 없는 개발자들에게 도움이 될 수 있다.) 어떤 소프트웨어가 RPM 형태로 있는지를 확인하는 정말로 좋은 장소는 http://rufus.w3.org/linux/RPM/ 에 있는 RPM 창고이다. 이 창고에는 어떤 RPM 파일을 찾는데 도움이 되도록 색인으로 꾸며진 범주를 제공하며 수천가지의 파일에 대한 링크를 갖고 있다. 어떤 패키지를 조회하려면, ``rpm -q 패키지이름'' (예. ``rpm -q pine'') 을 사용하면 된다. RPM 은 현재 어떤 버전이 설치되어 있는지 아니면 설치되지 않았는지를 알려준다. 그 패키지가 이미 설치되어 있고 이전 버전이라서 새로 다운로드 받은 (꼭 미리 받아두어야 함) 패키지로 갱신하고 싶다면 ``rpm -Uvh 패키지이름'' 이라고 하여 갱신을 적용할 수 있다. 모든 것이 순조롭게 실행되면 패키지는 자동으로 설치되고 곧바로 사용할 수 있는 상태가 된다. 만약 문제가 있다면 RPM 은 꽤 상세한 이유를 알려줄 것이다 (예를 들어, 다른 지원 패키지를 먼저 설치하여야 한다든가 하는 식으로). 이런 경우 아주 조금이나마 생각을 해보아야 하겠지만 문제를 알아내는 과정은 아주 단순하다. 한편으로 패키지가 한번도 설치되지 않았고 그래서 설치하기로 했다면 ``rpm -ivh 패키지이름'' 이라고 타이핑하면 된다. 만약 다른 지원 패키지가 필요하다면 RPM 이 알려줄 것이다. 가끔 소스 포맷으로만 구할 수 있는 패키지를 설치하여야 하는 경우가 있다. 사실 믿을만한 곳 (예컨대 레드햇 FTP 사이트) 에서 가져온 패키지를 설치하는 것이 아닌한 바이너리 프로그램은 트로이의 목마나 고약한 것이 들어있을 수 있으므로 (물론 소스 파일에도 그런 것이 들어있을 수도 있지만 다른 개발자에 의하여 곧바로 들통이 나기 때문에 그렇게 하지 않을 것이라고 봐야 한다) 반드시 소스 프로그램으로부터 설치를 하여야 한다. 소스로부터 패키지를 설치하는 방법은 RPM 유틸리티에 ``다시 만들기(rebuild)'' 스위치를 지정하는 것이다. 예를 들어:
위의 명령은 ``foo'' 패키지를 설정하여 컴파일하여 (인텔 플랫폼에서 리눅스를 쓰는 경우에는) ``/usr/src/redhat/RPMS/i386/'' 디렉토리에 바이너리 RPM 파일을 만들어낸다. 그런 다음 보통의 패키지를 설치하듯이 설치하면 된다. 마지막으로, 만약 소스 패키지를 컴파일하는데 문제가 발생한다면 (아마도 makefile 을 수정하거나 설정 옵션을 바꾸거나 한다면) 소스를 컴파일하고 새로운 바이너리 패키지를 만들고 바이너리 패키지로부터 설치하기 위하여 다음과 같은 과정을 밟아야 한다 (다시 한번 상상의 ``foo'' 패키지를 예로 들었다):
무엇이든 간에 ``.spec'' 파일에 수정할 것이 있으면 수정한 뒤 다음과 같이 타이핑한다:
이 명령은 ``.spec'' 에 수정한 내용에 따라 패키지를 다시 만든다. 위에서와 마찬가지로 결과로서 만들어지는 바이너리 RPM 파일은 ``/usr/src/redhat/RPMS/i386/'' 에 들어 있게 되고 나머지 설치과정은 정상적인 RPM 파일처럼 하면 된다. RPM 에 대한 더 자세한 정보는 레드햇의 문서를 참조하여야 한다. 이 도구는 자세하게 배워둘만한 가치가 있는 극도로 강력한 도구이다. RPM 에 대한 정보의 최고의 원천은 ``Maximum RPM'' 인데 이는 포스트스크립트 포맷으로 http://www.rpm.org/maximum-rpm.ps.gz 에서 구할 수 있다. (만약 이 파일을 인쇄하기로 결정했다면 많은 종이가 필요할 것이라는 점을 명심하라!) 좀 간단한 안내서로는 http://www.rpm.org/support/RPM-HOWTO.html 에 있는 ``RPM-HOWTO'' 가 있다. 10.2. RPM 없이 설치하고 업그레이드 하기가끔은 RPM 패키지가 없는 상황에서 어떤 응용 프로그램을 설치하거나 업그레이드해야 하는 경우가 있다. 물론, 그렇게 하는 것도 가능은 하지만 (그리고 "실제" 유닉스 세계에서는 그렇게 하는 것이 "사실상의 표준"이긴 하지만) 절대적으로 필요한 경우가 아니라면 그러지 않도록 추천한다 (그 이유에 대하여는 10.1절를 참조하시요). 어떤 것을 타르볼로부터 설치해야만 한다면, 시스템 전체가 사용할 소프트웨어의 설치 장소에 대한 일반적인 법칙은 ``/usr/local/'' 파일 시스템에다가 갖다 두는 것이다. 따라서, 소스 타르볼은 ``/usr/local/src/'' 에 풀어야 하고 이를 컴파일해서 만든 결과는 ``/usr/local/bin'' 에 들어가야 하며 설정 파일은 ``/usr/local/etc/'' 에 둔다. 이러한 규칙을 따르는 것이 시스템 관리를 조금이나마 편하게 해 줄 것이다. (비록, RPM 만 쓰는 시스템 만큼은 편하지는 않겠지만) 마지막으로 타르볼로부터 개인적인 용도로 소프트웨어를 설치하고자 하는 일반 사용자는 자기의 홈 디렉토리 아래에 설치하여야 한다. 믿을만한 소프트웨어 제공 사이트에서 타르볼을 다운로드한 다음 적당한 상위 수준의 디렉토리로 가서 다음의 예에 나온 것 처럼 (필요하다면 루트로서) 다음과 같은 명령을 타이핑하여 파일을 푼다:
위의 명령은 ``cardgame.tar.gz'' 라는 이름의 압축된 파일로부터 모든 파일을 꺼낸다. ``z'' 옵션은 저장 파일이 gzip 을 이용하여 압축되었다는 것을 의미한다 (따라서 타르볼 파일이 압축되어 있지 않다면 이 옵션을 빼주어야 한다); ``x'' 옵션은 저장 파일로부터 모든 파일을 다 꺼내겠다는 것을 나타낸다. ``v'' 옵션은 자세한 설명을 보여달라는 것이며 따라서 파일을 꺼내면서 파일 이름의 목록을 보여준다. ``p'' 옵션은 저장 파일이 만들어질 당시의 원래 퍼미션을 유지하라는 의미이다. 마지막으로, ``f'' 옵션은 그 다음의 인자가 저장 파일의 이름이라는 것을 의미한다. tar 명령의 옵션은 대소문자를 구분한다는 것을 꼭 명심하여야 한다.
일단 타르볼이 적절한 디렉토리에 설치되면 새로이 설치된 파일에 포함되어 있는 ``README'' 또는 ``INSTALL'' 파일을 찾을 수 있을 것이다. 이들 파일에는 소프트웨어 패키지를 사용하기 위하여 어떻게 해야하는지에 대한 자세한 설명이 들어 있다. 대개의 경우에는 다음의 예시와 같은 명령을 타이핑해야할 것이다:
위의 명령은 당신의 시스템에서 소프트웨어가 성공적으로 컴파일될 수 있는 기능과 라이브러리가 갖추어져 있는지를 확인하여 설정하고, 패키지를 컴파일하여 모든 소스 파일을 실행가능한 바이너리 파일로 바꾸고, 바이너리 파일과 필요한 보조 파일을 적절한 위치에 설치한다. 당신이 실제로 밟아야할 절차는 소프트웨어 패키지가 다양한 만큼 다를 수 있다. 따라서 포함된 문서를 완전히 읽어보야만 한다. 다시 한번 말하지만 절대적으로 필요한 경우가 아니라면 타르볼을 피하고 RPM 에 매달릴 것을 권한다. 10.3. 시스템을 최신으로 유지하는 전략가끔은 여기 저기에서 리눅스 커널이나 사용자 응용 프로그램에 중요한 업그레이드가 있다는 얘기를 듣게 될 것이다. 이런 소식은 잡지, 뉴스그룹, 웹 페이지 등에서 듣게 된다. 아마도 리눅스 관리자가 꼭 -- 아니야, 반드시 -- 살펴보아야 할 최고이자 유일한 온라인 자료는 http://freshmeat.net/ 웹 사이트이다. 이 사이트는 새로운 오픈 소스 응용 프로그램과 프로젝트, 문서, 그외 리눅스 커뮤니티에 관심을 끌만한 발표 등에 대한 설명을 담고 있다. 그 외에 새로운 응용 프로그램 발표를 추적할 수 있는 곳은 comp.os.linux.announce 뉴스 그룹이다. 이 뉴스그룹은 리눅스와 관련된 새로운 응용 프로그램, 커널이나 응용 프로그램의 업그레이드, 웹 페이지 등을 다루고 있다. 이 뉴스그룹은 관리되는 뉴스그룹이기 때문에 높은 "S/N (잡음대 신호 signal to noise)" 비를 나타낸다. 모든 제품이 comp.os.linux.announce 를 통하여 발표되는 것은 아니다. 따라서, 당신이 사용하고 있는 응용 프로그램에 대한 웹 페이지나 FTP 사이트를 방문하는 것도 좋은 생각이다. 10.4. 리눅스 커널 업그레이드가끔은 리눅스 커널을 업그레이드해 주는 것이 좋다. 이렇게 함으로써 새로운 기능의 추가나 버그의 해결이 이루어진 최신판을 유지할 수 있다. 그 외에도 새로 나왔거나 특이한 하드웨어에서 리눅스를 돌리기 위해서 또는 어떤 특별한 기능을 활용하기 위해서는 맞춤 커널이 필요하게 된다. 이 섹션에서는 새로운 커널로 업그레이드 하거나 맞춤 커널을 만드는 방법에 대하여 설명한다. 이는 당신이 생각하는 만큼 어렵지는 않다! 새로운 커널 버전에 대한 발표는 여러 곳에서 얻을 수 있는데 그 중에는 comp.os.linux.announce 뉴스그룹이나 http://freshmeat.net/ 그리고 http://slashdot.org/ 와 같은 웹 사이트가 있다. 현재 커널 개발에는 두 "줄기" 의 흐름이 있음을 알아야 한다 -- 한 줄기는 "안정" 판이고 또 다른 줄기는 "개발" 판이다. 인터넷 서버와 같은 중요한 업무에는 개발판 커널을 멀리하고 안정판을 사용할 것을 강력히 권장한다. 두 줄기의 차이는 개발판 커널에서는 새롭고 아직 검사되지 않은 하드웨어 드라이버, 파일 시스템, 그리고 그 외 "첨단" 개발 내용이 정기적으로 추가된다는 점이다. 이런 커널은 해커들만 사용하는 것이다 -- 이들은 시스템을 리부팅하던지 커널에 엄청난 버그가 숨어있던지 개의치 않는 사람들이다. 안정판 커널에는 새로운 기능이나 드라이버는 완전히 검사된 뒤에 포함시킨다. 이 줄기에서 마이너 릴리즈는 그래도 남아있는 버그를 제거하는 역할을 한다. 두 줄기는 서로 다른 버전 번호를 사용하여 구분하기 쉽도록 되어 있다. 안전판 커널은 두번째 숫자가 짝수이고 (예. 2.0.35, 2.0.36, 2.2.4) 반면에 개발판 커널은 두번째 숫자가 홀수이다 (예. 2.1.120, 2.1.121, 2.3.0). 최신의 안정판 커널은 ftp://ftp.redhat.com/redhat/updates/ FTP 사이트에 소스와 미리 컴파일된 바이너리 형태로 항상 올려져있다. 당신이 사용할 플랫폼과 버전에 맞는 커널 패키지를 찾아서 다운로드한다 (예를 들어, 인텔 플랫폼에 돌아가는 6.1 버전은 ``/6.1/i386/'' 디렉토리에 있는 ``kernel-*.i386.rpm'' 파일을 다운로드 하면 된다).
때때로, 아직 RPM 형태로 만들어져 있지 않은 커널을 사용할 필요가 있는 경우가 있다. 이런 경우에는 최신의 커널을 ftp://ftp.kernel.org FTP 사이트의 /pub/linux/kernel/ 디렉토리에서 찾을 수 있다. 적절한 메이저 버전 서브디렉토리로 가면 (예. ``v2.0'') 그곳에 최신판의 커널이 들어있다. 원하는 커널 패키지를 (예를 들어, 인텔용 압축된 2.0.36 타르볼의 이름은 ``linux-2.0.36.tar.gz'' 이다) 찾아서 ``/usr/src'' 디렉토리에 푼다.
타르볼을 다운로드하여 커널을 업그레이드하기로 결정하였다면 당신 스스로 설정, 컴파일, 설치를 하여야 한다. 아주 최근의 개발판 커널을 요하는 특별한 경우가 아니라면 나는 레드햇이 제공하는 RPM 파일을 사용하여 커널을 업그레이드할 것을 강력히 추천한다 -- 이들 RPM 파일은 미리 설정하여 미리 컴파일되어 있지만 필요하다면 RPM 파일로부터 맞춤 커널을 컴파일 할 수도 있다. 10.5. 레드햇 제공 커널로 업그레이드하기커널을 업그레이드하는 가장 쉬운 방법은 레드햇이 제공하는 기성 커널 RPM 을 이용하는 것이다. 이들 RPM 파일은 미리 컴파일된 바이너리 커널 코드를 포함하고 있고 다양한 하드웨어를 지원하며 인기있는 기능을 제공한다. 기성 커널을 설치히는 것은 쉽고 별다른 위험이 따르지 않는다. 루트로서 그냥 다음과 같은 명령을 주욱 타이핑만 해주면 된다:
새로운 커널의 이름은 앞의 내용중에서 ``ls'' 명령으로 알 수 있다. 눈길을 끄는 파일은 ``vmlinuz'' 파일이다; 예를 들어, 2.0.36 버전 커널의 세번째 RPM 판의 이름은 ``vmlinuz-2.0.36-3'' 이 된다. 이제 LILO 설정 파일을 수정하기 위하여 편집기를 띄운 다음 (예를 들어, ``pico -w /etc/lilo.conf'' 라고 타이핑한다) ``image=/boot/...'' 라고 되어 있는 줄을 수정하여 새로운 커널을 가리키도록 한다. 그런 다음 ``/sbin/lilo'' 라고 타이핑한다. 만약, LILO 가 에러 메시지를 내면 ``lilo.conf'' 파일에 들어있는 커널의 이름과 ``/boot/'' 디렉토리에 있는 커널을 이름을 점검해보아야 한다.
(위의 명령은 당신이 인텔 플랫폼에서 LILO 를 이용하여 부팅한다는 것을 전제로 하고 있다. LILO 부트 로더에 대한 상세한 내용은 4.8절 을 참조하시요). 커널을 업그레이드하고 부트 로더 정보를 갱신한 뒤 시스템을 내린다음 새로운 커널로 재부팅할 수 있다 (시스템을 내리는 방법에 대하여는 6.7절 을 참조하시요). 10.6. 맞춤 커널 만들기기성 커널에서는 지원되지 않는 하드웨어나 기능을 사용하고 싶거나 시스템 메모리를 더 효과적으로 활용하기 위하여 커널 메모리 공간을 줄이고 싶다면 새로운 맞춤 커널을 만들 필요가 있다. 커널을 업그레이드하는 과정은 필요로하는 모듈을 설정하고, 커널과 모듈을 컴파일하고 마지막으로 커널 이미지를 설치하는 과정으로 구성된다. 그런 다음 새로운 커널을 올리기 위하여 (두손 모아 빌면서!) 시스템을 재부팅한다. 이러한 과정에 대하여는 각 커널 패키지에 따라오는 ``README'' 파일에 들어있다. 더 자세한 자료는 ``Documentation/'' 디렉토리 아래에 들어 있다. 거기에 들어있는 파일 중에서 특별히 도움이 될만한 파일로는 ``Configure.help'' 파일이 있는데 이 파일에는 사용가능한 커널 컴파일 옵션과 모듈에 대한 상세한 정보가 들어있다. 다음의 예시 세션은 인텔 플랫폼에서 2.0.36 버전의 맞춤 커널을 만드는 과정을 보여준다. 대개 맞춤 커널을 만드는 것은 그냥 설정하고 컴파일하고 설치하는 과정에 지나지 않는다. 가끔은 (대개 새로운 하드웨어를 사용하려는 경우) 컴파일 하려는 커널이 지원하지 않는 하드웨러를 지원하기 위하여 추가의 드라이버 소프트웨어를 다운로드 받아야 한다. 맞춤 커널을 만드는 첫번째 단계는 RPM (이게 더 낫다) 또는 타르볼을 다운로드하여 커널 소스를 설치하는 것이다. 적절한 파일을 찾는 방법에 대하여는 10.4절 을 참조하시요. 그 다음은 ``rpm'' 유틸리티 (또는 상황에 따라서는 ``tar'') 를 사용하여 커널 소스와 헤더 파일을 설치한다. 예를 들어 2.0.36-3 커널 RPM 파일을 설치하려면:
(만약 노트북에서 리눅스를 실행시킨다면 전원 관리 기능을 제공하는 ``kernel-pcmcia-cs-2.0.36-3.i386.rpm'' 파일도 설치하여야 할 것이다.) 커널 파일을 설치하고 나면 새로운 소스 트리를 ``/usr/src/linux/'' 디렉토리에서 볼 수 있을 것이다. 그 다음 단계는 (만약 필요하다면) 추가의 드라이버 파일을 다운로드하고 새로운 커널 소스 트리에 설치한다. 예를 들어, Mylex DAC960 하드웨어 RAID 컨트롤러를 지원하는 기능을 추가하려면, http://www.dandelion.com/ 웹 사이트에서 드라이버 소프트웨어를 다운로드 한다. 불행히도 그런 드라이버 소프트웨어는 대개 타르볼로만 제공되므로 ``tar'' 유틸리티를 사용하여 설치하여야 한다. 예를 들면:
추가 드라이버 소프트웨에 따라오는 문서가 있다면 꼭 읽어보아야 한다. 예를 들어, DAC960 드라이버에는 ``README'' 파일이 있는데 이 파일에는 새로 다운로드 받은 파일이 어디에 놓여야 하며 어떻게 커널 패치를 적용하는지에 대한 설명이 들어있다:
다음 단계는 시스템의 심볼릭 링크가 새로운 커널 트리를 제대로 가리키고 있는지 확인하는 것이다. 사실 이 단계는 딱 한번 해주면 된다. 따라서 다음의 내용은 이전에 한번도 맞춤 커널을 컴파일 한 적이 없는 경우에만 해주면 된다:
다음 단계는 커널 셋팅을 설정하는 것이다. 이는 맞춤 커널을 만드는데 있어 가장 중요한 단계이다. 어떤 셋팅을 실수로 안쓰도록 하면 어떤 원하는 기능이나 필요로 하는 하드웨어를 지원하지 못하게 될 수 있다. 한편 필요없는 셋팅을 사용하도록 하면 쓸데없이 커널의 크기가 커져서 소중한 시스템 메모리를 낭비하게 된다 (물론 앞의 경우보다는 뒤의 경우가 차라리 낫긴하다). 커널을 제대로 컴파일하는 것인지를 확실히 하는 가장 좋은 방법은 어떤 기능을 필요로 하며 시스템에서 지원을 필요로 하는 하드웨어가 무엇인지를 정확히 아는 것이다. 맞춤 커널을 만드는 경험을 몇 번하고 나면 이 과정은 이제 "뻔할 뻔자"가 되어 별로 두렵지 않게 될 것이다! 다음과 같이 타이핑하면 설정 과정이 시작된다:
(만약 X 윈도우 시스템을 사용하고 있다면 ``make menuconfig'' 대신에 ``make xconfig'' 라고 타이핑할 수 있다; X 윈도우 시스템이 어떻게 동작하는 지에 대한 자세한 정보는 5장 을 참조하시요.) 커널을 설정하려면 다양한 셋팅 중에서 필요로 하는 것들을 (쓸 수 있도록) 선택하고 필요로하지 않는 것들을 (쓰지 않도록) 선택을 꺼주면 된다. 지원기능을 커널에 만들어 넣을 수도 있고 모듈로 만들어서 필요에 따라 커널이 올렸다 내렸다하게 할 수도 있다. (스카시 드라이버처럼 시스템을 부팅하는데 필요한 기능을 모듈로 컴파일한다면 램디스크 이미지를 만들어야 한다. 그렇게 하지 않으면 아예 부팅이 되지 않는다. 이를 위해서는 ``mkinitrd'' 명령을 사용하여야 한다; 이 과정에 대하여는 아래에서 다루었다.) 설정을 하는 도중에 <Help> 를 선택하면 각 커널 옵션이 어디에 사용되는지에 대한 설명을 볼 수 있다. 커널 셋팅을 설정하고 나면 다음과 같은 명령을 타이핑하여 커널을 컴파일 한다:
만약 이전에 갖고 있던 것과 같은 커널을 (이 예에서는 2.0.36-3) 다시 컴파일 하는 것이라서 기존의 모듈을 백업 디렉토리로 옮겨두고 싶으면 다음과 같은 명령을 타이핑하면 된다:
새 모듈을 실제로 설치하기 위해서는 다음과 같이 타이핑하면 된다:
그 다음 단계는 커널을 ``/boot/'' 디렉토리로 복사하고 LILO 를 사용하여 부트 기록을 갱신함을써 새로운 커널을 인식시키는 것이다. 다음의 명령은 기존 커널의 백업본을 만들고 새로운 커널을 덮어서 복사하고 LILO 부트 레코드를 갱신하는 역할을 한다:
마지막으로, ``/etc/lilo.conf'' 파일을 편집하여 "이미지 (image)" 가 새로 만들어진 커널을 확실히 가리키도록 해준다. 그리고 백업 커널을 카리키는 섹션, 예컨대 "OldLinux" 를 만들어 준다. 예시 파일은 다음과 같다:
백업 커널 정보를 이렇게 추가해두면 새로운 커널이 (장치가 제대로 인식되지 않는다거나 데몬이 제대로 시작되지 않는다거나 하는 식으로) 제대로 부팅되지 않을 경우 그냥 ``OldLinux'' 라고 타이핑하여 이전의 커널로 부팅한다음 문제를 조사해 볼 수 있다.
초기 램디스크 이미지를 만들고 사용하는 과정은 다음과 같다:
이제 시스템을 내렸다가 새로운 커널로 부팅한다!
커널이 한번에 재대로 부팅되지 않더라도 허둥댈 필요는 없다. 리눅스를 설치할 때 만든 부트 디스크로 부터 부트를 하면 된다. 만약 이 디스클 갖고 있지 않다면 레드햇 씨디로부터 하나를 새로 만들 수도 있다. 부트 디스켓을 드라이브에 넣고 컴퓨터를 재부팅한 뒤 "boot:" 가 나타나면 다음과 같이 타이핑한다:
위의 명령은 당신의 "/" (root) 파티션이 /dev/hda1 에 있다는 것을 가정하고 있다. 그러면 리눅스는 정상적으로 부팅이 된다 (부트 디스크에 있는 커널을 사용하고 있으므로 이번 세션에서는 모든 서비스나 장치가 제대로 동작하지는 않지만). 그런다음 예전의 커널로 복구하고 LILO 부트 로더 정보를 다시 설정한 뒤에 (즉, ``mv /vmlinuz.old /vmlinuz ; /sbin/lilo'' 라고 한 뒤) 시스템을 내리고/재시작 시킨다. 그리고 나서 다른 옵션을 선택하여 커널을 다시 컴파일 한 뒤 재도전 한다. 10.7. 리눅스 2.2.x 커널로 옮아가기리눅스 커널 2.2.0 은 1999년 1월 25일에 발표되었다. 이 버전은 수많은 새로운 기능과 성능상의 개선, 하드웨어 지원을 추가하였다. 기존의 어떤 리눅스 시스템이라도 이들 새로운 커널로 10.4절 에서 설명한 방법에 따라 똑같이 (약간 주의를 할 필요는 있지만) 업그레이드 할 수 있다. 이 섹션은 레드햇 시스템을 어떻게 새로운 커널로 업그레이드하는지 설명할 것이다. 레드햇 6.0 (과 그 이상의) 버전에서는 이미 디폴트로 새로운 커널과 지원 패키지를 담고 있으므로 이 섹션은 아직까지도 예전 버전, 예컨대 5.2, 을 사용하는 사용자에게만 유용할 것이다. 일단 대부분의 사용자가 6.0 또는 그 이상의 버전으로 옮겨갔다고 확신하게 되면 나는 앞으로 이 문서에 이 부분을 삭제할 생각이다.
레드햇이 제공하는 기성 커널을 이용하여 업그레이드 할 수도 있고 맞춤 커널을 컴파일하여 업그레이드 하는 방법도 있다. 나는 일단 기성 커널을 이용하여 돌아가게 해 놓은 다음 필요하다면 맞춤 커널을 만들어 올리도록 권장한다. (자세한 내용은 10.5절 을 참조하시요.) 최신의 커널을 쓰고 싶으면 우선 최신의 유틸리티와 라이브러리로 업그레이드를 해야 한다. 레드햇은 최신의 커널을 지원하기 위하여 어느 패키지를 업그레이드할 필요가 있는지 정리하여 자신들의 FTP 사이트인 (i386 플랫폼상의 5.2 사용자의 경우) ftp://ftp.redhat.com/redhat/updates/5.2/kernel-2.2/i386/ 에 필요한 RPM 파일을 올려두었다. 2.2.x 로 옮겨가는데 필요한 시스템 도구에 대해 상세한 내용을 담고 있는 매우 좋은 웹 페이지가 http://www-stu.calvin.edu/~clug/users/jnieho38/goto22.html 에 있다; 아래에 정보를 요약하였다 (맨 앞에 ``**'' 로 시작하는 항목은 레드햇 5.2 에서 업그레이드하려고 하면 꼭 필요한 항목을 표시한 것이다; 그런 표시가 없는 항목은 아마도 괜찮겠지만 확인을 해볼만 한 것들이다).
필요한 패키지를 다운로드 받고 RPM 을 이용하여 업그레이드하여야 한다 (RPM 의 사용법에 대한 자세한 내용은 10.1절 을 참조하시요).
시스템 도구를 최신판으로 만든 뒤에 커널 소스를 설치할 수 있다. 이것도 레드햇의 FTP 사이트에서 찾을 수 있다; 나는 레드햇 6.1 수정판으로 제공되는 것을 ftp://ftp.redhat.com/redhat/updates/6.1/i386/ 에서 다운로드 받도록 권장한다. 그렇게 하려면 다음과 같이 타이핑한다:
새로운 커널 소스가 설치되었으므로 modutils 패키지를 업그레이드하더라도 안전하다. 물론 새로운 커널은 커널 모듈을 필요에 따라 올리기 위하여 더이상 ``kerneld'' 모듈을 사용하지 않는다. 따라서 modutils 를 갱신하기 전에 이 모듈을 사용하지 않도록 막아야 한다. kerneld 를 동작하지 않도록 막고 modutils 패키지를 업그레이드 하려면 "루트" 로서 다음과 같이 타이핑 하여야 한다:
이제 보통의 경우처럼 2.2 커널을 설정, 컴파일, 설치할 수 있게 되었다. (자세한 내용은 10.6절 을 참조하시요) 새로운 설정 셋팅이 아찔할 정도로 많은 것을 보고 놀라지 말기 바란다. 친숙하지 않은 옵션에 대하여 도움말을 시간내서 읽어보기 바란다! 운이 따른다면 다음 번에 시스템을 부팅하면 최신의 그리고 최강의 리눅스 커널 버전이 실행될 것이다! 이 과정에 대한 더 자세한 내용은 레드햇 웹 사이트인 http://www.redhat.com/corp/support/docs/kernel-2.2/kernel2.2-upgrade.html 에 있다. 10.8. 아파치 웹 서버 설정하기우리 회사에서는 웹 서비스를 제공하기 위하여 아파치 패키지를 사용한다. 아파치는 HTTP 1.1 표준을 완전히 지원하고 프록시 캐싱, 패스워드 인증 웹 페이지 등 많은 기능을 제공하는 모든 기능을 갖춘 웹 서버이다. 아파치는 가장 널리 사용되는 웹 서버 중 하나이며 (넷크래프트의 최근 조사에 따르면 인터넷 상의 모든 웹 사이트 중 54% 가 아파치 또는 그의 변종을 쓰고 있다고 한다) 상용 서버만큼 또는 그 이상의 성능을 낸다. (공사중. :-p ) 아파치에 추가된 기능과 버그 수정을 활용하려면 가끔식 업그레이드를 해주는 것이 좋을 것이다. 아파치의 웹 사이트는 http://www.apache.org/ 에 있으며 최신판에 대한 정보가 들어 있다. 10.9. Squid HTTP 캐싱 프록시 데몬 설정하기우리 회사에서는 웹 페이지 캐싱 기능을 제공하기 위하여 Squid 패키지를 사용하고 있다. Squid 는 웹 클라이언트는 물론이고 FTP, 고퍼, HTTP 요청에 대한 고성능의 캐싱을 제공한다. 게다가 페이지 캐싱을 엮어서 할 수 있도록 다른 Squid 기반의 프록시 서버와 계층구조로 연결하는 것이 가능하다. 현재 사용가능한 Squid 는 두가지 버전이 있다. 하나는 "일반" 버전으로서 램이 많이 있는 기계에서 잘 돌아가는 것으로 보인다. 두번째 버전은 "SquidNOVM" 버전으로서 이는 상대적으로 적은 램을 가진 (64 MB 이하의 메모리를 갖고 있는 경우에는 이 버전을 쓰는 것이 좋다) 기계에 적당하다. 기본적으로 "NOVM" 버전은 메모리를 적게 쓰는 대신 파일 디스크립터 (descriptor) 를 많이 사용한다. 이 버전을 나는 쓰고 있는데 상당히 잘 동작한다. (공사중 :-p ) 새로운 기능 추가와 버그 수정을 활용하기 위해서는 가끔 Squid 서버를 업그레이드하는 것이 좋다. 자세한 정보는 http://squid.nlanr.net/Squid/ 에 있는 Squid 의 홈페지이를 참고하기 바란다. 10.10. Sendmail 전자우편 데몬 설정하기전자메일 서비스를 제공하기 위해서 나는 Sendmail 패키지를 사용하고 있다. Sendmail 은 가장 확실한 메일 핸들러이다; 사실 인터넷을 통하여 전송되는 전자메일의 80% 이상이 한쪽 또는 양쪽에서 이 프로그램을 사용한다고 추정된다. 이 프로그램이야말로 해야할 일을 제대로 하는 프로그램이며 이 프로그램없이 인터넷 서버를 운용한다는 것은 상상조차 할 수 없다 (Qmail 이라고 불리는 또다른 전자메일 서버도 약간 인기가 있는 모양이다 -- 하지만 나로서는 그 프로그램 사용을 시도할 이유를 찾지 못하고 있다). 새로운 기능과 버그 수정을 활용하고 더 중요하게는 보안상의 이유로 Sendmail 을 가끔 업그레이드하는 것이 바람직하다. 게다가 최신판의 Sendmail 은 강력한 스팸방지 기능이 포함되어 있어 허락받지 않은 사용자가 메일 서버를 남용하는 것을 방지할 수 있다. 이 섹션에서는 Sendmail 을 받는 메일 서버로 사용하려고 할 때 해야할 일에 대하여 약간 다루려고 한다. 그리고 주로 서버 시스템에서 어떻게 하는 지에 대한 내용이 될 것이다. 한편 만약에 받는 메일을 처리할 필요는 없고 보내는 메일 기능만 사용하려고 하는 것이라면 ((여기에 내용을 추가해야함)) 를 해야한다. 이 섹션에서는 최신 버전의 Sendmail (이 글을 쓰는 시점에서는 8.9.3) 을 이미 설치하여 사용하고 있다고 가정하고 있다. 레드햇 배포판에 들어있는 것을 보면 Sendmail 은 대부분의 서버에서 제대로 돌아갈 수 있도록 적절한 설정 정보를 포함하고 있다. 그럼에도 불구하고 ``/etc/sendmail.cf'' 파일을 편집하고 필요에 따라 몇가지 셋팅을 맞춰주어야 한다. 이는 물론 이 문서의 수준을 넘는 내용이다. 하지만, 내 생각에 도움이 될만한 것으로는 스패머들을 차단하기 위하여 설정 파일을 약간 수정하는 것이다. 여기에 포함되는 내용은:
첫번째 변경내용은 스패머가 ``EXPN'' 과 ``VRFY'' 명령을 사용하지 못하도록 하는 것이다. 나는 이들 명령이 너무나도 자주 비도덕적인 사람들에 의해 악용된다는 것을 발견하였다. 두번째 변경내용은 Sendmail 이 연결을 받을 때 표시하는 배너의 내용을 바꾸는 것이다. 내용 중에서 ``C=xx L=xx'' 에 들어있는 ``xx'' 는 국가 코드와 지역 코드로 바꾸어 주어야 한다. 예를 들어, 내 경우에는 캐나다 온타리오이므로 ``C=CA L=ON'' 라고 쓰고 있다. (두번째 변경은 실제로 어떤 영향을 미치지는 않지만 news.admin.net-abuse.email 뉴스그룹에 있는 친구들이 이를 법적인 예방조치로서 해두는 것이 좋다고 권장하고 있다.) 만약 당신의 메일 서버가 실제로 실행되는 실제 기계의 호스트 이름과 다르다면 ``/etc/sendmail.cw'' 파일에 한두개의 별명을 덧붙여 주어야 한다. 예를 들어, 당신 시스템의 이름이 "kirk.mydomain.name" 인데 이 시스템을 mydomain.name 도메인의 우편 교환기로 사용하고 들어오는 메일의 주소가 ``user@mydomain.name'' 형식으로 된 메일이 "kirk" 에게 배달되게 하려면 이 별명을 다음과 같이 추가해주면 된다:
마지막으로 당신의 sendmail 서비스에 연결할 수 있는 도메인 (또는 부도메인 subdomain) 을 제한하려면 ``/etc/mail/access'' 파일을 편집하여 도메인에 대한 정보와 제한의 종류를 입력해주면 된다. 예를 들어:
위의 예는 ``some.domain'' 사이트에서 오는 모든 전자우편 연결을 거부하고 ``hax0r.another.domain'' 기계에서 오는 연결에 대하여는 거부를 하면서 그 다음에 있는 메시지를 내보낸다. 이 파일을 변경한 다음 ``access.db'' 파일을 갱신해주고 난 다음 sendmail 을 다음과 같이 재시작시켜준다:
Sendmail 에 대한 자세한 정보는 http://www.sendmail.org/faq/ 에 있는 FAQ 문서를 참조하시요. 11장. 리눅스를 기업차원에서 쓰기안정성과 신뢰성에서 견실한 명성을 얻게 됨에 따라 기업이나 과학 분야에서 점점 더 결정적인 응용 분야로 활용되고 있다. 이 장에서는 기업에서 리눅스를 사용하는 것과 관련한 이슈들 예컨대 많은 부하가 걸리는 상태에서 더 높은 성능을 내도록 서버를 튜닝하고 RAID 기술을 사용하여 자료를 더 안전하게 보존하고 다른 서버로 업무를 이관하는 절차 등을 다룬다. 11.2. RAID 를 이용한 고가용성 구현저장공간에 대한 수요가 늘어감에 따라 추가의 드라이브를 연결할 필요가 생긴다. 하지만 역설적이게도 확률의 법칙에 따르면 저장 장치의 갯수가 늘어남에 따라 장치의 고장 가능성도 늘어나게 된다. 따라서, 하드 드라이브가 하나 밖에 없는 시스템은 네개가 달린 시스템에 비하여 25% 정도의 고장 가능성 밖에 없다. [ 물론, 이론적으로 그렇다는 얘기다 :-) ] 다행히도 "레이드 Redundant Array of Inexpensive Disks" (RAID) 라고 불리는 기술을 사용함으로써 그러한 고장을 매끄럽게 그리고 더 중요하게는 다운시키지 않고 대처할 수 있다. 이 기술은 자료를 여러개의 디스크에 여유있게 분산시키는 여러가지 방법 중 하나를 사용한다. 이러한 여유(redundancy)는 한 장치가 고장나더라도 자동으로 복구할 수 있게 해준다. 이 장에서는 Mylex AcceleRAID DAC960 컨트롤러를 사용하여 RAID 디스크 어레이를 설치, 설정, 셋업하는 방법을 설명한다. 나는 컨트롤러 그 자체의 성능과 신뢰도에서도 그랬지만 Mylex 사의 기술지원 -- 그들은 매우 친절하다! -- 에서는 더더욱 깊은 인상을 받았다. (물론, 리눅스에서 사용할 수 있는 하드웨어 RAID 솔루션도 다양하게 있고 리눅스 커널 그 자체에도 RAID 기능을 구현해서 넣을 수도 있다.) RAID 의 구현 방식 중에서 가장 유용한 것은 아마도 RAID 레벨 5 인것 같다. RAID 컨트롤러를 리눅스에서 사용하는 첫번째 단계는 하드웨어를 지원하는 드라이버가 내장되도록 맞춤 커널을 만드는 것이다. Mylex DAC960 용 드라이버는 Dandelion 디지털 리눅스 페이지인 http://www.dandelion.com/Linux/DAC960-2.0.tar.gz 에서 구할 수 있다. 리눅스에서 RAID 어레이를 사용하도록 하기 위한 마지막 단계는 ``fdisk'' 유틸리티를 사용하여 제대로 된 파티션을 만드는 것이다. 이는 IDE 나 보통의 스카시 드라이브를 사용할 때와 완전히 같은 방법으로 하면 된다. 어떻게 파티션 정보를 셋업하는지에 대한 자세한 정보는 4.3절 을 참조하기 바란다.
일단 RAID 어레이를 볼 수 있게되면, 정의하고 싶은 대로 스왑 영역이나 파일 시스템을 초기화할 수 있다. 다음의 예는 두번째 드라이브의 세번재 파티션에 스왑 영역을 초기화하고 첫번째 드라이브의 첫번째 파티션에 ext2 형식의 파일 시스템을 초기화하는 과정을 보여준다:
새로이 스왑 영역을 정의하였다면 ``/etc/fstab'' 파일에 항목을 추가하여 그 스왑 영역이 다음번 부팅때부터는 실제로 사용되도록 하여야 한다. 위의 예를 기준으로 한다면 다음과 같은 줄을 추가하여야 한다:
마지막으로 일단 파일 시스템의 초기화가 끝났으면 거기에다가 마운트 포인트를 만들고 필요에 따라 큰 파일 시스템을 어레이로 옮길 수 있다. 실제 업무에 적용하기에 앞서서 며칠 정도 시험을 해보는 것이 바람직하다. Mylex AcceleRAID 컨트롤러에 대하여 더 자세한 정보는 http://www.mylex.com/ 에 있는 Mylex 사의 웹 사이트나 Dandelion Digital DAC960 드라이버 페이지인 http://www.dandelion.com/Linux/DAC960.html 을 참조하면 된다. RAID 에 대한 일반적인 정보는 (소프웨어 솔루션이건 하드웨어 솔루션이건 간에) 리눅스 고가용성 웹 사이트인 http://linas.org/linux/raid.html 를 참조하기 바란다. 11.3. 서버 이관과 확장성사용가능한 하드웨어의 다양함과 증명된 성능과 신뢰성 때문에 리눅스는 점점 더 높은 요구수준을 맞추어야하는 도전에 직면해있다. 여기에 포함되는 것으로는 높은 처리 요구에 대응하기 위한 SMP (대칭형 다중 프로세싱 Symmetric Multi Processing) 설정, (소프트웨어 또는 하드웨어 방식의) RAID 레벨 0 부터 5 지원 등이 있다. 가끔은 현재 가동되고 있는 하드웨어에 비하여 리눅스 서버가 너무 커버렸다고 느끼거나 전혀 새로운 리눅스 버전으로 업그레이드하고 싶거나 전혀 다른 리눅스 배포판으로 바꾸고 싶을 때가 있다. 이를 해내는 방법에는 물론 두가지가 있다. 첫번째는 기존의 하드웨어 그대로 또는 업그레이드해서 가는 방법이고 (이 경우에는 서비스를 내리고 데이터를 백업한 다음 필요한 부분을 수정하고 데이터를 복구해주기만 하면 된다) 또 한가지 방법은 새로운 하드웨어로 이전해가는 것이다. 이 섹션에서는 두번째 경우에 집중할 것이다. 이 경우에는 기존의 서버에서 다양한 서비스를 새로운 서비스로 옮겨가야 한다. 서버를 이관하는데에는 여러가지 전략이 있을 수 있지만 이 섹션에서는 대략의 가이드라인을 제시함으로써 이를 따르기만 하면 사용자들에게 최소한의 충격을 주면서 이관할 수 있도록 하려고 한다.
일단 끝나고 나면 모든 것이 기대한대로 동작하는지 확인하여야 한다! 만약 그렇지 않으면 항상 예전 서버에서 중단시켜두었던 서비스를 다시 가동시켜서 새로운 서버에서 나타난 문제가 해결될 때까지 사용자들이 계속 서비스를 이용할 수 있도록 하여야 한다. (하지만 이렇게 하기로 하였다면 앞에서 얘기한 모든 단계를 몽땅 다시 하여야 한다는 점을 명심하라) 12장. 서버를 안전하게 지키기 위한 전략리눅스는 다른 회사에서 나온 운영체제만큼 -- 또는 더 -- 안전하다고 생각된다. 리눅스가 점점 더 인기가 있어짐에 따라 크래커들이 공격 노력을 집중할 만한 매우 매력적인 표적이 되어가고 있다. 가끔은 헛점이 발견되기도 하지만 리눅스가 갖고 있는 개방성때문에 그러한 헛점은 빨리 패치가 되고 임시로 어떻게 대처할 것인지 또는 갱신된 소프트웨어는 어디서 구할 수 있는지 등을 담은 보안관련 안내문이 널리 배포된다. 나는 보안분야에서 전문가인척 하려는 것은 아니다. 하지만 나는 이러한 문제에 관심을 갖고 있으며 어떤 시스템을 최대한 안전하게 만드는 전투에서 중요한 부분이라고 믿고 있다. 보안관련 최신 뉴스에 관심을 갖고 부지런히 대처한다고 해서 시스템의 보안이 무너지지 않는다고 보장할 수는 없지만 침입의 가능성은 상당히 낮추어 줄 수 있다. 비록 크래커가 시스템에 침입하기 위하여 악용할 수 있는 외부 서비스에서도 보안상 취약성이 발견되기도 하지만 (예를 들어, IMAP 데몬 취약성) 내 생각으로는 어떤 크래커가 시스템을 내부로부터 뚫고 들어올 가능성이 훨씬 높다고 본다. 외부 세계와 통신하는데 사용되는 서비스는 한 줌 밖에 안되는데 비하여 쉘에서 사용할 수 있는 명령과 유틸리티는 수천개가 넘는다. 이들 중 어떤 것은 버그가 있어서 보안을 무너뜨릴 가능성이 있다. (물론, 내가 관리하는 서버 중 하나가 최근에 외부 서비스를 통하여 탈취당한 적이 있긴하다) 이런 이유로 나는 사용자들에게 절대적으로 필요한 경우가 아니라면 쉘 계정을 주는 것을 피하도록 권고한다. 비록 사용자들이 전적으로 믿을만 하고 쉘을 제공하는데 전혀 마음에 꺼림칙한 구석이 없다고 하더라도 사용자중에 간단한 패스워드를 갖고 있는 사람이 하나만 있어도 모든 것은 허사가 된다. 외부의 크래커는 바로 이 간단한 패스워드를 이용하여 들어올 수 있고 이를 발판으로 안에서 작업을 하면서 그 외의 약점을 노리게 된다. 리눅스 시스템의 보안성을 엄청나게 끌어올리는 방법이 다행스럽게도 있다. 보안관련 사항에 대한 자세한 설명은 이 문서의 범위를 넘는 것이므로 보안수준을 높이기 위하여 하여야 할 몇가지 사항에 대한 체크 리스트를 제시하였다:
보안 관련 이슈에 대한 더 자세한 정보는 http://redhat-security.ens.utulsa.edu/ 에 있는 훌륭한 자원인 "Securing RedHat 5.x" 문서를 참조하기 바란다. 리눅스에서의 암호화나 관련 소프트웨어에 대한 훌륭한 정보는 http://replay.com/redhat/ 에 있다. 13장. 사람 살려! 천국에 문제가 생겼어요!리눅스는 세계적으로 성능과 안정성이라는 측면에서 명성을 얻고 있다. 하지만, 어떤 시스템도 완벽할 수는 없다. 살다보면 문제점에 봉착하는 경우가 생긴다. 다행히도 중단없이 운영되는 기간은 월단위로 측정할 정도이니까 (NT의 경우에는 단위자체가 일 단위이나 주 단위인데 반하여) 그러한 장애는 드물고 띄엄띄엄 나타난다고 할 수 있다. 13.2. 정전이나 시스템의 파괴에 따른 파일 시스템의 손상비록 리눅스가 안정적인 운영체제이긴 하지만, (아마도 커널의 버그나 정전으로 인하여) 예상치않게 시스템이 파괴된다면, 당신의 파일 시스템은 마운트가 해제되지 않고 리눅스 시스템이 재시작될 때 자동으로 에러를 검사하게 될 것이다. 대부분의 경우에 파일 시스템의 문제점은 파일 버퍼의 내용이 디스크에 기록되지 않음으로써 나타나는 -- 예를 들어 이미 지워진 inode 가 여전히 사용중인 것 처럼 보이는 식의 -- 사소한 것들이다. 대부분의 경우에 파일 시스템 검사는 그러한 문제점을 자동으로 탐지하여 수리할 수 있을 것이며 수리가 끝나면 리눅스의 부팅 과정이 정상적으로 진행되게 된다. 만약 파일 시스템의 문제가 그 이상 심각한 것이라면 (이런 문제는 결함이 있는 하드웨어 예컨대 불량 하드 드라이브나 메모리 칩 때문에 나타나는 경향이 있다; 만약 파일 시스템 문제가 자주 나타난다면 이러한 사실을 명심할 필요가 있을 것이다) 파일 시스템 검사가 자동으로 문제를 수리하지 못할 수 있다. 이런 경우는, 항상 그렇지는 않지만, 대개 root 파일 시스템 자체가 깨진 경우이다. 레드햇의 부팅과정에 에러 메시지가 나오면서 쉘로 떨어지게 되며 관리자가 수작업으로 시스템을 수리해보아야 한다. 복구 쉘은 모든 파일 시스템의 마운트를 해제하고 root 파일 시스템을 "읽기 전용" 으로 마운트해주기 때문에 관리자는 적절한 유틸리티를 사용하여 완전한 파일 시스템 검사를 실행할 수 있다. 아마, 찾아낸 모든 문제를 e2fsck 를 돌려서 해결할 수 있게 되기를 기대하여야 할 것이다. 만약에 (기대한대로) 어떤 파일 시스템의 문제를 해결하였다면 쉘을 빠져나가서 리눅스는 재부팅 시킴으로써 다시 시작해 보아야 한다. 당연히, 복구할 수 없는 파일 시스템의 문제를 대비하기 위하여 다음에 있는 것 중 한가지 이상을 준비해 두어야 한다:
13.3. 어디에서 도움을 받을까 ?리눅스가 인터넷 커뮤니티의 회원들에 의하여 만들어졌기 때문에 도움을 받을 수 있는 최상의 장소는 아마도 다음과 같은 뉴스 그룹에 글을 올리는 것이라 할 수 있다:
리눅스 고유의 주제가 아닌 경우에는 필요에 따라 comp.* 아래로 많은 그룹이 있다. 그 중에 일부만 뽑아보면 다음과 같다:
웹에도 유용한 자료들이 많이 있다. "Linux" 라는 단어를 이용해서 검색을 해보던지 아니면 다음과 같은 사이트를 가볼 수도 있다:
물음에 대하여 답을 해줄 수 있는 유용한 메일링 리스트도 엄청나게 많이 있다. 이러한 메일링 리스트는 간단히 웹에서 검색해보면 쉽게 찾을 수 있다. (예를 들어, ``linux raid mailing list'' 라고 검색해보면 리눅스에서 RAID 사용에 관련된 메일링 리스트들을 찾을 수 있다.) 내가 추천할 만한 몇몇을 아래에 열거하였다; 이들 리스트에 가입하려면 나와있는 가입주소로 메시지 본문에 "subscribe" 라는 내용을 담아서 전자메일을 보내면 된다:
마지막으로, 다음의 두 사이트를 살펴보는 것이 재미있을 것이다. 이 두 사이트는 모두 내가 "매일 꼭 읽는" 사이트이다. 슬래시도트 (SlashDot) 는 최신 기술 뉴스를 다루고 있는데 확실히 리눅스 편향을 가지고 있다. 한편, 프레시미트 (FreshMeat) 는 오픈 소스 응용 프로그램 발표의 최신 리스트를 제공한다.
13.4. 추가 문서에 대한 포인터리눅스와 그 응용 프로그램에 대하여는 믿을 수 없을 정도로 많은 문서가 있다. 이들 중 대부분은 웹이나 서점에서 구할 수 있다. 하지만, 유용한 문서중 상당수가 이미 당신에게 있다는 것을 알아야 한다. 이들은 레드햇 리눅스를 설치하는 과정에서 설치된 것이다. man 페이지는 어떤 명령이 어떻게 동작하는지 알기 위해서 꼭 보아야 하는 것이다. 예를 들어, ``tar'' 유틸리티를 어떻게 사용하는지 알고 싶다면, ``man tar'' 라고 타이핑하여 명령 옵션을 포함한 매우 자세한 정보를 볼 수 있다. 좀 더 일반적인 정보는 ``/usr/doc/'' 디렉토리에 들어 있다. 여기에는 서브디렉토리별로 유틸리티와 명령에 대한 문서, FAQ (Frequently Asked Questions) 문서, 다양한 주제에 대하여 좋은 지침이 되는 -- 예를 들어, 어떻게 네트웍을 셋업하나, 어떻게 일본어를 지원할 수 있나와 같은 -- HOWTO 문서 등이 들어있다. 그리고 유틸리티, 라이브러리, emacs와 같은 응용 프로그램에 대한 입문서가 들어있는 ``/usr/info/'' 디렉토리도 살펴볼 필요가 있다. 마지막으로, http://www.pobox.com/~aturner/RedHat-FAQ/ 에 가면 리눅스의 레드햇 배포판에 관련한 수많은 정보를 담은 레드햇의 FAQ (Frequently Asked Questions) 문서를 볼 수 있다. |
Your mode of life will be changed for the better because of good news soon. |