고객의 요구를 전개하여 기술특성을 도출해 보면 기술 특성들 간의 상충관계가 발생하는 경우가 적지 않다. 이러한 경우 한쪽 특성을 개선하려고 하면 다른 특성이 나빠지기 때문에, 종래에는 이들 두 가지 특성의 값을 적당한 선에서 서로 절충하였다. 그러나 TRIZ의 표준특징과 모순행렬을 이용하면 기술 특성들 간의 상충을 근원적으로 해결할 수 있는 창조적 문제해결의 가능성이 상당히 높아진다. 따라서, TRIZ는 품질기능전개에서 파악한 정보를 토대로 제품혁신을 위한 실행 안을 도출하는데 상당히 유용하게 쓰일 수 있다.
- TRIZ를 이용한 문제해결 방법2가지 소개
1. 효과와 현상을 이용한 문제해결
문제를 해결하려고 할 때 발명가들은 물리, 화학, 기하 효과들을 이용할 필요가 있다. 보통 엔지니어들은 약 50~100개의 물리효과와 현상들을 이용한다고 한다. 하지만, 과학문헌을 조사해보면 약 6000개 이상의 효과가 있다고 한다. 각각의 효과와 현상들은 문제를 해결하는데 있어서 매우 중요한 역할을 할 수 있다. 뫼비우스의 띠를 응용한 두 가지 사례를 살펴보자
뫼비우스의 띠는 알고 보면 매우 간단하지만 오늘날 다양한 발명문제를 해결하는데 사용된다. 띠와 같이 생긴 전통적인 벨트를 생각해보자. 벨트의 바깥쪽 표면은 연마물질로 덮여있다. 어떤 물체에 광택을 내고자 할 때 그 물체를 구동벨트에 대고 누른다. 하지만 벨트는 곧 닳게 되고, 새로운 벨트로 교환해야만 한다. 이것은 상당한 생산시간의 낭비를 초래한다. 벨트의 길이를 늘이지 않고 벨트 수명을 두 배로 늘릴 수는 없을까?
이 외에도 뫼비우스 띠의 원리를 이용한 장치와 기계에 관한 특허는 전세계적으로 100개가 넘는다고 한다.
- TRIZ를 교육하고 있는 기업
: 모토롤라, 포드, GM, 3M, 모빌정유, BMW, 볼보, 코닥, 맥도널 더글라스, 프록터 앤드 갬블, 미국 공군
- 트리즈에 대한 의견
1)트리즈는 과학자나 엔지니어들에게 있어서 경쟁의 기본을 바꿀 것이다
–리처드 헤이(3M)
2)트리즈는 나의 발명 비전을 확장시켰다 – 찰스 슐츠(모토롤라)
3)이 시대의 기념비적인 과학기술 방법론이다 – 래리 스미스(포드자동차)
2. 분리의 원리를 이용한 물리적 모순(Physical Contradiction : PC)의 해결
어떤 상황에서는 증가하기를 원하고 다른 상황에서는 감소하기를 원하는 파라미터가 있는 경우, 혹은 어떤 상황에서는 있어야 하고 다른 상황에서는 없어야 하는 파라미터가 존재하는 상황을 물리적 모순이라고 한다.
물리적 모순을 해결하기 위해서 TRIZ는 다음의 4가지 분리의 원리(Separation Principle)를 이용
1) 시간적 분리 (Separation in Time)
2) 공간적 분리 (Separation in Space)
3) 부분과 전체를 분리 (Separation between the Parts and the Whole)
4) 조건에 따른 분리 (Separation upon Conditions)
① 시간에 의한 분리
하나의 속성이 어떤 때는 높고, 어떤 때는 낮게 한다. 혹은 하나의 속성이 어떤 때는 존재하고, 어떤 때는 존재하지 않게 한다. 전투기의 날개는 물리적 모순을 시간적 분리로 해결한 예이다. 전투기가 이착륙을 할 때에는 날개를 넓게 펴지만, 비행 중에는 날개를 접는다.
② 공간에 의한 분리
하나의 속성을 한쪽에서는 높고, 다른 쪽에서는 낮게한다. 혹은 하나의 속성이 한쪽에서는 존재하고, 다른 쪽에서는 존재하지 않게 한다. 초점이 두개인 안경이 대표적인 예라고 할 수 있다.
[
③ 부분과 전체에 의한 분리
전체 시스템의 수준과 부품수준에서 각기 다른 속성치를 갖도록 한다. 혹은 하나의 속성이 전체 시스템의 수준에서는 존재하지만 부품수준에서는 존재하지 않게 한다. 예를 들어, 자전거의 체인은 마이크로 수준에서는 단단하지만 매크로 수준에서는 유연하다.
과학현상을 이용한 문제해결
보통 엔지니어들은 문제해결을 위해 약 50∼100개의 물리현상과 효과를 이용한다고 한다. 그러나 과학문헌을 조사해 보면 약 6,000개 이상의 현상과 효과가 있다. 각각의 현상과 효과는 문제를 해결하는데 있어서 매우 중요한 역할을 할 수 있다. 대부분의 엔지니어들은 이러한 현상과 효과를 실상황에 적용하는 것을 배우지 않았기 때문에 이를 효과적으로 이용하지 못한다. 알트슐러는 문제를 해결하는데 있어서 물리현상과 효과를 이용할 수 있는 체계를 제안하였다.
[사례 4] 백열전구의 내부압력 측정
백열전구를 생산하는 어떤 회사는 고객들로부터 많은 불만을 접수 받았다. 그 원인은 전구 내부압력의 크기가 제품마다 균일하지 않아서 생긴 품질 문제였다. 전구의 내부압력을 어떻게 측정할 수 있을까? 어느 엔지니어가 무게를 측정하자고 제안했다. 이론적으로 이 해결책은 가능하다. 가스를 채우기 전과 채운 후의 전구 무게를 비교해 보면 된다. 그러나 가스의 무게가 매우 가볍기 때문에 이러한 해결책은 일반 작업장에서 사용하기 어렵다. 두 개의 전극간에 전압을 가하면 부분적인 방전이 일어나면서 크라운 모양의 빛과 소리를 낸다. 이와 같은 현상을 코로나방전이라고 한다. 백열전구의 내부압력을 측정하는데 이 현상을 이용할 수 있다. 만일 전구에 높은 전압을 가하면 코로나방전이 발생할 것이다. 크라운의 밝기는 전구 내부의 가스압력에 따라 결정되기 때문에 크라운의 밝기를 이용하여 백열전구의 내부압력을 측정할 수 있다.
[사례 5] 권총의 발사 여부 판단
한 형사가 권총을 들고 전문가를 찾아와서, 이것이 1주일 전에 사용되었는지 물어왔다. 그는 권총을 주의 깊게 살피고 나서 고개를 가로 저었다. "총신이 세척되어 탄소 흔적이 남아있지 않기 때문에 이 문제를 해결할 수 없습니다"라고 대답했다. 권총이 1주일 전에 사용되었는지 어떻게 판단할 수 있을까? 권총이 1분전에 발사되었다고 생각해 보자. 이 경우 우리는 눈을 감고도 쉽게 권총의 발사 여부를 알 수 있다. 왜냐하면 총신에 온기가 남아 있을 것이기 때문이다. 그러나 온기가 남아 있는 기간이 매우 짧기 때문에 1주일 전에 권총이 발사되었는지는 알 수가 없다. 금속이 갖고 있는 다른 특성을 살펴보자. 권총이 발사되면서 변하는 속성이 무엇일까? 금속은 온도가 퀴리점(Curie point) 이상일 때 자성을 잃게 된다. 또한 충격을 받으면 자성을 잃게 된다. 화약가스는 총알을 때림과 동시에 총신의 내부를 때린다. 보통 총신은 지구의 자기장 때문에 어느 정도의 자성을 띠고 있다. 권총이 발사되면 총신은 자성을 잃게 된다. 그로부터 약 3주내지 4주 동안 권총은 자성을 잃은 상태로 있다가 점차 다시 자성을 되찾는다. 이제 해결책은 확실해졌다. 권총의 발사 여부를 알기 위해서는 두 개의 권총에 대해 자성의 정도를 비교해 보면 된다.
트리즈는 기존의 문제해결 방법들과 큰 차이가 있다. 기존의 방법들은 문제를 근본적으로 해결하는 것이 아니라 적절한 선에서 상호 절충 또는 타협함으로써 모순으로 인한 피해나 부작용을 줄여보자는 것이었다. 그러나 트리즈의 기본개념은 문제를 야기시키는 모순 자체를 제거하자는 것이다. 이를 위해 트리즈는 다양한 방법론과 지식베이스를 제공한다.
4.기술적인 기능(technical functions)과 특정한 디자인 해결책(design solution), 기술, 자연과학의 지식간의 mapping 조직하는 포인터(pointer)
1) 기술의 기원과 진화에 관한 이론
앞에서 말한대로 TRIZ는 단지 기술의 기원과 진화에 관한 이론의 수준에서 과학으로 간주될 수 있다. 주요한 이론적 발견들은 다음과 같다.
·기술이 모순의 해결을 통하여 진화한다는 것
·대립되는 모수들간의 모순 제거를 통한 발명의 정의
·발명 해결책들의 새로운 조직화
·이상의 개념
·기술진화의 일반적인 규칙과 유형에 관한 발견
·기술진화의 법칙과 추세의 정립
2) 심리적 타성
-은유적인 수준에서 생각하는 것을 개선하기 위하여 심리적 타성을 극복하기 위한 기법들이 사용되어왔다.
-구두정보(verbal information)는 시각정보(visual information)와 밀접한 관련이 있다
-단순히 특정한 용어의 사용을 자제하는 것조차도 어려운 문제를 해결하는데 도움을 준다.
- TRIZ는 심리적 타성을 극복하기 위한 방법
·Multi-screen diagram
·이상기능과 이상시스템의 관점에서의 사고
·연산자 STC와 같은 심리적 타성을 제거하기 위한 각각의 기법들
·SLP(smart little people)를 이용한 모델링
·창조적인 성격을 형성하기 위한 전략, 등.
3) 문제해결
TRIZ의 문제해결 기법들은 추상화(abstraction)의 과정을 다룬다. 우리는 문제의 핵심을 도출하여 그것들을 일반화 시킨다. 우리는 문제를 안고 있는 제품에 대한 모든 정보들을 사용하지 않고, 문제를 일으키는 부분에만 초점을 맞춘다. 특정한 상황으로 일반화하는 방법은 문제를 모순이나 SFM(substance-field model) 혹은 요구기능으로 나타내는 것이다. 그리고 나서 우리는 가이드라인이나 일반적인 해결책 유형을 사용하고 문제를 해결책 개념으로 변형시킨다. 다음 과정은 특정한 가능한 해결책을 도출하는 개념을 찾는 것이다. 만일 우리가 특수화에 성공하지 못한다면, 문제를 다시 정립한다.
TRIZ 문제해결 기법들:
·기술적 모순을 제거하기 위한 발명 원리들
·물리적 모순을 제거하기 위한 분리 원리들
·표준(standards)
·ARIZ
·기능/비용 분석과 트리밍
·Feature transfer외 다른 기법들
TRIZ에서 빠뜨린 부분은 바로 특수화이다. 문제해결로부터 도출한 개념들은 보통 매우 일반적이고 우리들이 개념들의 실현가능성에 대하여 결론 내릴 수 있을 만큼 상세하지 않다. 특수화의 실패는 도출한 개념이 틀렸다는 것을 의미하는 것은 아니고, 아마도 우리가 그 문제를 해결하는 특정한 지식을 소유하지 않았을 따름이다. 효과와 기술에 대한 포인터들은 TRIZ의 원리들과 해결책 유형들보다 많은 특정한 지식을 포함하기 때문에 이 단계에서 필요한 지식을 발견하는데 종종 도움을 준다. 그러나 이것이 항상 가능한 것은 아니다. 그럼에도 불구하고 필자의 경험으로 비추어볼 때, 개별 전문가들이 TRIZ의 도구를 이용하여 문제를 해결한다면 실용적인 해결책을 도출할 가능성이 보다 높다. 왜냐하면 TRIZ는 문제를 다르게 보도록 도와주기 때문이다.
TRIZ는 2가지 방법으로 문제를 다룬다. 첫 번째 방법은 문제를 모순이나 SFM의 관점에서 모델링하는 것을 제안하고 나서, TRIZ의 해결책 유형과 가이드라인을 사용하여 문제를 해결책으로 변환하는 것이다. 두 번째 방법은 기술진화의 추세에 따라 문제를 해결책으로 변환하는 것이다. TRIZ는 언제 어떤 방법을 사용해야 하는지에 대한 명확한 해답을 제공하지 않는다. 일반적으로 우리가 디자인 제품이 미래에 어떻게 진화하는지를 예측하고자 할 때는 두 번째 방법을 사용해야 한다고 추천한다. 반면에 많은 특정한 진화의 유형들이 TRIZ의 문제해결 기법들과 함께 통합된다. 이와 같은 상황은 초심자가 TRIZ를 배우기 시작하여 지식시스템(system of knowledge)으로서의 TRIZ에 대한 명확한 이해를 갖지 못했을 때 혼란을 야기할 수 있다.
4) 기능-효과 매핑
효과에 대한 포인터들은 정밀한 과학과 기술간의 격차를 이어준다. TRIZ는 다음과 같은 포인터들을 제공한다:
·물리, 화학, 기하학의 현상과 효과에 대한 포인터
·다양한 영역에서 응용할 수 있는 특정한 기술에 대한 포인터
포인터들은 아마도 TRIZ에서 가장 사용하기 쉬운 도구이지만, 그것들을 만드는 것은 쉬운 일이 아니다. 포인터들은 완전히 기능적인 접근만을 제공한다: 그것들은 기술적인 기능과 이러한 기능들을 제공할 수 있는 효과간의 매핑을 설정한다. 효과들은 물리학, 화학, 기하학에서 알려진 자연현상과 효과들이다. 뿐만 아니라 포인터들은 일반적 기술적인 기능들과 측정한 기술들과도 관련이 있다.
비록 포인터들이 문제를 해결하는데 곧바로 사용될 수 있을지라도, 대부분의 경우 특히, 잘 정의되지 않은 문제를 다룰 때에는 문제에 대한 심층적인 분석이 여전히 요구된다. 문제를 해결하기 위해서 어떤 기능이 필요한지에 관한 지식은 문제해결과정의 초기 단계에서 반드시 알 수 있는 것은 아니다.
기술적 모순과 물리적 모순
트리즈는 일반적으로 다음과 같은 두 가지 유형의 모순을 제거할 수 있는 방법론을 제공한다.
● •·
기술적 모순(Technical Contradiction)
시스템의 파라미터 A를 개선하면 다른 파라미터 B가 악화되는 경우를 기술적 모순이라고 한다. 이 경우 <그림3-1>에서 볼 수 있듯이 A를 올리려면 B가 내려가게 된다.
-기술적 모순의 예이다:
▪ 빔의 강도를 좋게 하려면 무게가 증가한다.
▪ 대역폭을 증가시키려면 더 많은 전력이 필요하다.
일반적으로 기술적 모순의 해결에는 상호절충이 고려되어 왔다. 모순을 일으키는 두 개의 파라미터간의 적절한 타협점을 설정하는 이러한 해결책은 모순을 근원적으로 제거하지는 못한다. 트리즈는 기술적 모순을 제거하기 위한 두 가지 방법을 제공한다. 하나는 모순행렬에서 제시하는 발명원리들을 이용하는 것이고, 다른 하나는 다음에 설명할 물리적 모순으로 변환한 후 이를 해결하는 것이다.
● 모순 행렬
모순행렬은 39가지의 표준특징과 40가지의 발명원리로 구성되어 있다. 표준특징은 길이, 부피, 힘, 속도 등과 같은 공학적 모수들이다. 발명원리는 기술적 모순을 해결하는데 사용될 수 있는 원리들로서, Altshuller가 전세계의 특허들을 조사하면서 도출한 것들이다. 모순행렬의 좌측에는 개선하려는 표준특징들이 놓이고, 상단에는 이로 인하여 악화되는 표준특징들이 놓이게 된다. 행렬의 내부에는 이 기술적 모순을 해결하는데 사용될 수 있는 발명원리들이 놓이게 된다.
< 표 3-1. 모순행렬 >
악화되는특징
개선하려는특징
1. 움직이는
물체의 무게
2. 고정된
물체의 무게
···
38.
자동화의 정도
39. 생산성
1. 움직이는
물체의 무게
-
·
·
26, 35
18, 19
35, 3
24, 37
2. 고정된
물체의 무게
-
·
·
2, 26
35
1, 18
15, 35
···
···
···
·
···
···
38.
자동화의 정도
28, 26
18, 35
28, 26
34, 10
·
·
5, 12
35, 26
39. 생산성
35, 26
24, 37
28, 27
15, 3
·
·
5, 12
35, 26
* 물리적 모순(Physical Contradiction)에 대해서는 다음 장에서 자세히 강의하기로 한다.
2. 파일 관리AID CDATA tip1(LABEL)LABEL 2.1 파일시스템 모두 복사하기 , 장범수(bschang@kldp.org) - 2000.05.16 2.2 깨진 타 (tar) 파일 복구 시도 , 장범수(bschang@kldp.org) - 2000.05.16 2.3 특정 사용자 소유의 모든 파일을 찾을때는? , 관리자 - 99.10.7 2.4 tar와 bzip2 , Kapsoo Jeon - 99.04.27 2.5 짜증나는 tarball , 관리자 - 99.04.15 2.6 파일 크기 0로 만들기 , 관리자 - 99.04.15 2.7 gzip대신 bzip2쓰기 , 관리자 - 99.04.14 2.8 파일 여러개로 자르기 , 관리자 - 99.04.14 2.9 하드 공간 절약 , 관리자 - 99.04.15 2.10 파일 정보 알아내기 , 관리자 - 99.04.15
3. 프로그램AID CDATA tip2(LABEL)LABEL 3.1 파일을 제외하고 디렉토리 이름만 보기 , 장범수(bschang@kldp.org) - 2000.05.16 3.2 프로세스 남겨 놓고 집에 가기 , 장범수(bschang@kldp.org) - 2000.05.16 3.3 grep 사용팁 , 겨울아이(winchild@kldp.org) - 2000.03.02 3.4 egrep 사용하기 , 관리자 - 2000.02.04 3.5 more,less에서 편집하기 , 관리자 - 99.11.29 3.6 less 사용팁 , 박 종대 - 99.11.27 3.7 less 사용팁 , 문 원석 - 99.05.20 3.8 한텀에서 한자 입력 , 관리자 - 99.05.07 3.9 안죽는 프로그램 처리 , 관리자 - 99.04.22 3.10 프로그램 실행 시간 , 관리자 - 99.04.22 3.11 mp3 끊김 현상 , 관리자 - 99.04.22 3.12 less 사용팁 , 관리자 - 99.04.15
4. 시스템 관리AID CDATA tip3(LABEL)LABEL 4.1 memtest-메모리부분의 에러를 발견해주는 유틸리티 , 양유성(yooseong@kldp.org) - 2000.05.03 4.2 리눅스 표준시간 설정하기 , 겨울아이(winchild@kldp.org) - 2000.02.07 4.3 스왑 파일 만들기 , 정원영 - 2000.02.03 4.4 로긴 전,후 메세지 편집하기 , 관리자 - 99.05.07 4.5 메모리 절약하기 , from Small-Memory mini-HOWTO - 99.05.07 4.6 일반 유저 마운트 허용하기 , 관리자 - 99.05.04 4.7 kernel 버젼 확인 , 관리자 - 99.04.22 4.8 syslogd 사용 , 관리자 - 99.04.15 4.9 로드된 모듈 확인 , 관리자 - 99.04.15 4.10 root의 텔넷로긴 허용 , 관리자 - 99.04.15 4.11 특정 사용자, 그룹에게 root권한 명령주기 , 관리자 - 99.04.15 4.12 현재 시스템의 메모리와 스왑 상태를 알아보려면? , 관리자 - 99.04.15 4.13 모니터가 없는 시스템의 halt상황은 어떻게 알것인가? , 관리자 - 99.04.15 4.14 idle상태에서 hardpower down시키기 , 관리자 - 99.04.15 4.15 su root ? 아니면 su - ? , 관리자 - 99.04.15 4.16 nologin 안내문 , 관리자 - 99.04.15 4.17 ctrl-alt-del을 shutdown으로 , 관리자 - 99.04.15
7. 네트워크AID CDATA tip6(LABEL)LABEL 7.1 내 시스템이 다른곳에서의 ping에 응답하지 않게 하려면? , 관리자 - 99.05.07 7.2 모뎀 튜닝 , 관리자 - 99.05.06 7.3 BIND 버젼 확인법 , 김 승영 - 99.04.29
8. XAID CDATA tip7(LABEL)LABEL 8.1 그놈 패널에서 아이콘 이동하기 , 특그비(ganadist@dacome.co.kr) - 2000.05.03 8.2 리눅스에서 윈도우키 사용하기 , 관리자 - 99.11.04 8.3 X 배경화면 일정 시간마다 바꾸기 , 관리자 - 99.05.04 8.4 xdm에서 환경파일 , 강정희 - 99.04.20 8.5 X screenshot은 어떻게? , 관리자 - 99.04.20 8.6 윈도 매니저 골라 쓰기 , 관리자 - 99.04.20 8.7 마우스 포인터 속도 조절 , 김 종연 - 99.04.13 8.8 MC(Midnight Commander)에서 기능키 , 관리자 - 99.04.20
9. 프린팅AID CDATA tip8(LABEL)LABEL 9.1 맨 페이지 프린트하기 , 박천구(mix1009@mail.hananet.net) - 2000.05.17 9.2 troff,groff로 문서 포맷 , 이 범석 - 99.07.11 9.3 man페이지 프린팅1 , 관리자 - 99.04.15 9.4 man페이지 프린팅2 , 관리자 - 99.04.15
10. bashAID CDATA tip9(LABEL)LABEL 10.1 tcsh에서 vi 에디팅 모드 사용하기 , 김강석(kskim@rtbase.com) - 2000.03.29 10.2 bash에서 vi 에디팅 모드 사용하기 , 김재석(typist@hitel.net) - 2000.03.28 10.3 bash 팁 , 이 범석 - 99.07.11 10.4 bash 팁 몇가지 , 관리자 - 99.04.22
11. rpmAID CDATA tip10(LABEL)LABEL 11.1 SRPM 컴파일하기 , 임은재 - 2000.03.14 11.2 rpm 패키지와 파일 용량 , from usenet - 2000.01.28 11.3 rpm 패키지에서 원하는 파일만 풀어내기 , from usenet - 99.10.8 11.4 rpm 리스트 만들어 놓기 , 관리자 - 99.04.15 11.5 퍼미션 복구 , 관리자 - 99.10.7
메모리 부분의 에러부분을 발견해주는 유틸리티인 memtest는 설치가 간단하고 사용하기가 편합니다. http://www.qcc.sk.ca/~charlesc/software/memtester/ 에서 소스를 얻어 $tar -xvzf memtester-x.xx.tar.gz 를 하고 (x는 버젼을 의미) $make 를 통해 memtest라는 실행파일을 만든 후 원하는 만큼의 메모리와 반복횟수를 정하여 테스트 할 수 있다.
4.2. 리눅스 표준시간 설정하기 , 겨울아이(winchild@kldp.org) - 2000.02.07
한국표준연구소에서는 세슘원자시계를 이용한 시간 서비스를 인터넷에서 하고 있지요. 리눅스의 시간을 그 시계와 동조시키려면
# rdate -s time.kriss.re.kr
적당한 시간대에 cron에 등록해 두면 되겠습니다.
4.3. 스왑 파일 만들기 , 정원영 - 2000.02.03
스왑 파티션으로 스왑용량이 모자라 파일로 스왑만드는 방법
# dd if=/dev/zero of=/swap1 bs=1024 count=204800 (1024 바이트의 크기로 204800 블럭을 만드는거죠 즉 200M , 만들고 싶은 크기x1024 해서 204800 대신 적어주세요.) # mkswqp /swap1 204800 (스왑 파일 생성) # sync; sync (확실하게 하기위해) # swapon /swap1 ( 스왑 파일 활성화 )
free 명령으로 확인해 보세요.
해제할때는 swapoff /swap1 하시면 되겠죠.
부팅시 마다 스왑 파일을 활성화 시킬려면 /etc/rc.d/rc.local 파일 끝에 swapon /swap1 이라고 추가하면 됩니다.
4.4. 로긴 전,후 메세지 편집하기 , 관리자 - 99.05.07
로긴 전,후에 나오는 메세지를 바꾸고 싶을때는 로긴 전에 나오는 메세지는 /etc/rc.d/rc.local 로긴 후에 나오는 메세지는 /etc/motd 를 편집한다
4.5. 메모리 절약하기 , from Small-Memory mini-HOWTO - 99.05.07
대부분의 리눅스 배포본은 기본적으로 6개 정도의 가상 콘솔이 있다. 주로 X를 쓰거나 가상 콘솔을 많이 쓰지 않을 경우 /etc/inittab 파일안에 다음과 같은 라인을 주석처리 하여 메모리를 절약할수 있다.
# Run gettys in standard runlevels 1:12345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 #3:2345:respawn:/sbin/mingetty tty3 #4:2345:respawn:/sbin/mingetty tty4 #5:2345:respawn:/sbin/mingetty tty5 #6:2345:respawn:/sbin/mingetty tty6
4.6. 일반 유저 마운트 허용하기 , 관리자 - 99.05.04
일반 유저에게 mount,unmount를 허용하려면? /etc/fstab 을 수정한다. /dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 위와 같이 user라는 옵션을 추가하면 된다.
4.7. kernel 버젼 확인 , 관리자 - 99.04.22
현재 사용중인 Kernel 버전 확인은? uname -a
4.8. syslogd 사용 , 관리자 - 99.04.15
여러대의 컴퓨터가 연결되어 있는 네트워크 관리자라면 syslogd -r 옵션을 사용하여 여러대를 동시에 감시할수 있을것이다
4.9. 로드된 모듈 확인 , 관리자 - 99.04.15
lsmod 로 로드된 모듈을 확인해볼수 있다
4.10. root의 텔넷로긴 허용 , 관리자 - 99.04.15
root의 telnet login을 허용하려면? /etc/securetty 를 편집한다. man securetty
하지만 넷트웍상의 컴퓨터라면 어떠한 경우에라도 root의 텔넷허용은 위험합니다. su - 하시는게 좋겠습니다.
root 로 telnet로긴 하는것은 위험하다 그러면 알리아스나 ls color등의 설정이 안되어 불편한데... su - 로 한다. 그러면 /etc/profile을 읽어들인다.
4.16. nologin 안내문 , 관리자 - 99.04.15
system 공사중일때 root외에 다른 사용자는 로긴하지 못하게 한다 /etc/nologin 이라는 파일을 만들고 공사중이라는 안내문을 넣으면 된다
4.17. ctrl-alt-del을 shutdown으로 , 관리자 - 99.04.15
혼자만 사용하는 박스에서 가끔은 su로 shutdown시키는 것이 귀찮을때도 있다. 더 간단한 방법이 없을까? /etc/inittab 을 다음과 같이 # Trap CTRL-ALT-DELETE #ca::ctrlaltdel:/sbin/shutdown -t3 -r now ca::ctrlaltdel:/sbin/shutdown -h now 원래 reboot하게 되있지만 halt되게 바꿨다 reboot할때는 halt메세지후 한번 더 누르면 된다. 더 좋은 방법은 없을까요?
5. 메일, 뉴스
5.1. 메일 같이 받아보기 , 관리자 - 99.04.15
silver계정으로 오는 메일중에 다음주소로 부터 오는 편지는 sujin으로 보낸다. 물론 silver도 받고... silver home디렉토리에 다음과 같은 rc파일을 만든다. [ gate@silver ]cat .procmailrc :0 c * ^From: newsmail@ns.khan.co.kr ! sujin
5.2. pine에서 From: 바꾸기 , 관리자 - 99.04.15
pine에서 작성한 메일의 From: 라인을 내마음대로 바꾸고 싶을때는? .pinerc파일에 직접 다음과 같은 라인을 추가한다.
저의 경우 윈도우 매니저를 afterstep을 쓰므로, 해당 feels 파일에 다음과 같은 항목을 넣어주었습니다.
# Window keys Key Menu A A Popup "Start" Key Meta_L A A WarpFore Key Meta_R A A WarpBack
메뉴키는 메뉴가 뜨도록, 윈도우키는 윈도그상에서 ALT-TAB과 비슷한 역할을 하도록 설정하였습니다. 각자 취향에 맞게 설정하시면 되겠죠?
8.3. X 배경화면 일정 시간마다 바꾸기 , 관리자 - 99.05.04
X 배경화면을 일정 시간마다 랜덤하게 바꾸고 싶은데? 다음을 cron에 등록한다 xv -root -quit -random /home/silver/wallpaper/* 배경 화면이 있는 path는 본인에 맞게...
8.4. xdm에서 환경파일 , 강정희 - 99.04.20
startx로 잘 써오다가 xdm으로 바꾸고 한텀 등에서 키맵 등이 사라져 당황할 수 있다. 그럴 땐 이렇게 해보자. /etc/X11/xdm/Xsession 파일을 에디터로 연다. exec Xclients로 되어 있는 부분을 exec xinitrc로 바꾼다. 이제 설정이 적용된 것을 볼 수 있을 것이다.
8.5. X screenshot은 어떻게? , 관리자 - 99.04.20
X screenshot은 어떻게? import -window root root.jpeg
8.6. 윈도 매니저 골라 쓰기 , 관리자 - 99.04.20
만약 여러개의 윈도매니저를 쓴다면 .xinitrc에 다음과 같은 문장으로 원하는 매니저를 골라 쓸수 있다.
xmessage -center -buttons 'fvwm2':1,'fvwm':2 'AfterStep':3 "Choose window manager" ANS=$? if [ $ANS -eq 1 ]; then exec fvwm2 fi if [ $ANS -eq 2 ]; then exec fvwm fi if [ $ANS -eq 3 ]; then exec afterstep fi
8.7. 마우스 포인터 속도 조절 , 김 종연 - 99.04.13
마우스 포인터를 빨리 움직이게 하려면? /etc/X11/XF86Config에 다음을 추가한다.
9.1. 맨 페이지 프린트하기 , 박천구(mix1009@mail.hananet.net) - 2000.05.17
PostScript 지원 프린터나 Ghostscript을 설치했다면, man -t lilo > lilo.ps 를 사용하면 더 좋은 출력 결과가 나옴. a2ps, enscript, psutils 등의 유틸리티로 장당 여러 페이지 인쇄가능.
9.2. troff,groff로 문서 포맷 , 이 범석 - 99.07.11
troff 또는 groff로 포맷팅된 깨끗한 문서를 프린팅 할 수 있습니다.
9.3. man페이지 프린팅1 , 관리자 - 99.04.15
man 페이지를 프린팅할때는? man 명령어 | lpr
9.4. man페이지 프린팅2 , 관리자 - 99.04.15
man - vi | col -b > filename.txt
이렇게 하시면 쓸데없는 제어문자들이 싹 빠지므로 편집, 인쇄하기 편해집니다.
10. bash
10.1. tcsh에서 vi 에디팅 모드 사용하기 , 김강석(kskim@rtbase.com) - 2000.03.29
vi mode는 bindkey -v emacs mode는 bindkey -e
10.2. bash에서 vi 에디팅 모드 사용하기 , 김재석(typist@hitel.net) - 2000.03.28
bash에서 기본 에디팅모드는 emacs입니다. 즉, 명령어 입력시 emacs의 편집키들이 사용된다는 뜻입니다. 그런데, 리눅스를 제외한 다른 Unix 계열들은 대부분 vi 에디팅모드를 사용합니다.
그런데, 저는 리눅스가 아닌 Unix를 많이 사용해서 인지 vi 에디팅 모드가 훨씬 편하게 느껴져서 bash에서 vi 모드를 사용하고 있습니다.
vi 모드를 사용하기 위해서는 bash의 입력방법 설정을 수정해야 하는데, 그 설정은 환경변수 INPUTRC, /etc/inputrc, $HOME/.inputrc 등에 의해서 결정됩니다.
보통 레드햇계열은 전체입력환경으로 /etc/inputrc를 사용자별 환경 으로 $HOME/.inputrc를 사용하며, 원하는 화일에
set editing-mode vi set keymap vi
를 삽입하면 다음 로그인부터는 vi 에디팅모드로 바뀝니다.
10.3. bash 팁 , 이 범석 - 99.07.11
(kill-line) ctrl-k를 누르면 현재 커서위치에서 끝까지 지워집니다. (reverse-search-history) ctrl-r을 누르고 이전에 썼던 명령어의 일부를 입력하면 히스토리에서 그 문장을 포함하는 명령어가 찾아집니다. 찾아진 명령이 원하는 것이 아닐경우 다시 ctrl-r을 눌러 검색을 반복할 수 있습니다.
10.4. bash 팁 몇가지 , 관리자 - 99.04.22
ctrl-L을 눌러보세요, clear명령어와 같은 효과가 있습니다.
bash shell에서는 cd 명령어에 * 즉 와일드카드를 사용할수 있다. cd blah*
ctrl-t를 누르면 두개문자가 서로 뒤바뀐다.
ctrl-u, ctrl-w를 누르면 현재 커서의 왼쪽에 있는 문자들만 삭제된다.
바로 전에 위치하고 있던 디렉토리로 이동할때는? cd -
Bash는 tab-completion(tab 자동 채워주기?)를 지원한다. 예를 들어 blahblah라는 명령어가 있을때 bla까지만 입력하고 tab을 치면 나머지는 알아서 채워준다. 물론 디렉토리명도...
11. rpm
11.1. SRPM 컴파일하기 , 임은재 - 2000.03.14
rpm은 RPM 패키지를 만드는 소스패키지 입니다. 컴파일 방법은 rpm --rebuild blah.srpm 하면 쉽게 됩니다. 성공적으로 컴파일이 끝나면 만들어진 rpm 패키지는 redhat계열이라면 /usr/src/redhat/RPMS 안에 놓여지게 됩니다.
#!/bin/sh for i do /bin/rpm -qi $i | /bin/awk '/^Size *: / { printf "%8d %sn", $3, "'"$i"'" }' done ______________________________________________________________________
이를 rpm -qa와 결합하면 자신의 시스템에 설치된 모든 패키지의 크기를 잘 정리된 형태로 뽑아볼 수 있습니다.
$ rpm -qa | xargs rpmsize | sort -rn | less
이 예는 디스크가 모자랄 때 유용합니다. 덩치가 큰 것 중에서 잘 쓰지 않는 것을 골라서 삭제할 수 있으니까요.
11.3. rpm 패키지에서 원하는 파일만 풀어내기 , from usenet - 99.10.8
rpm 패키지를 설치하지 않고 그냥 풀거나, 특정 파일만 골라내고 싶을때는? rpm2cpio filename.rpm | cpio -i --make-directories -E filename
11.4. rpm 리스트 만들어 놓기 , 관리자 - 99.04.15
가끔 내가 가지고 있는 redhat 배포본 CD에 어떤 패키지가 있는지 그 rpm안에 어떤 파일들이 들었는지 찾아봐야 할때가 있다 그럴때를 위해 다음과 같은 파일을 하나 만들어 놓고 grep 같은것 으로 쉽게 찾아볼수 있다 rpm -qpil /mnt/cdrom/RedHat/RPMS/*rpm > rpm_db.txt
11.5. 퍼미션 복구 , 관리자 - 99.10.7
레드햇등과 같이 rpm으로 설치했던 시스템의 파일들의 그룹과 오너등의 퍼미션이 원하지 않게 변경되었는데..., 어떻게 하면 원래대로 복구할수 있을까? rpm --setperms -a
12. PHP
12.1. PHP Zend에서 한글깨지는 문제 , 정원영(suni00@kernel.pe.kr) - 2000.04.14
기본적으로 default_charset이 iso-8859-1로 설정되어있습니다.
html문서 부분에
이렇게 해줘도 되겠지만 이것마저 귀찮다면
php.ini 파일에서 default_charset = "iso-8859-1" 이부분을 찾아 주석을 풀고 default_charset = "euc_kr" 이렇게 하시면 됩니다.
제가 perl을 DSO로 설치할려고 자료를 찾아봤더니 거의 없더군요. 그래서 원문을 바탕으로 어렵게성공 했습니다.
# 내가 적용한 DSO(Dynamic Shared Objet)방식은 아파치가 구동 중에 클라이언트로 # 부터 perl스크립트의 해석을 요청 받았을 때 비로서 perl이 구동하는 방식이다. # 이는 항상 메모리에 상주하는 static방법보다 더 효율적이다. # # 여기에 대략적으로 설명을 남긴다. # DSO를 설치하는 두가지 방법 중 아파치가 이미 설치된 경우로 했다. # 이 경우는 apxs으로서 아파치에서 cgi스크립트가 활성화 되어야 하고 # mod_so가 모듈화 되어 있어야한다.(httpd -l) # apxs setup방식 # # $ cd apache-1.3.12 # $ ./configure --prefix=/usr/local/apache # >--enable-shared=max # # 먼저 perl모듈패키지를 적당한 곳에 다운 받는다. # 압축을 푼다. # $ tar -xzvf mod_perl-1.23 # # 압축 푼곳으로 이동한다 # $ cd mod_perl-1.23 # $ perl Makefile.PL # >USE_APXS=1 # >WHITH_APXS=/usr/local/apache/bin/apxs # >EVERYTHING=1 # $ make # $ make install # # 이렇게 하면 자동으로 httpd.conf파일에 LoadModule과 AddModule라인이 # 추가된다. 쌍으로 되어있기 때문에 절대 순서가 바뀌면 안되다. # # 이제 아파치를 재시작한다.
그 밖에 httpd.conf의 cgi정의 부분도 경로에 맞게 수정해야합니다. 그리고 설치 전에/usr/bin/에 perl5.0이후 버전이 있어야합니다.
오랫동안 기계를 쓰지 않고 방치해 두어서 패스워드를 잃어버리거나, 다른 관리자가 쓰던 기계의 업무를 물려 받은 경우 따위로 루트 패스워드 를 아예 모르는 경우에는 다음의 방법을 써서 복구를 "시도"해 본다. (리눅스 설치 도중에 정전이 되는 등으로 루트 패스워드를 잃어 버린 경 우는 기술 상의 문제로 해당이 안됨을 미리 밝혀 둔다).
우선 릴로 프롬프트가 나올 때 [탭] 키를 눌러서 부트 가능한 이름들을 둘러 본다. 그 중에는 'linux'라는 것이나 비슷한 놈이 하나쯤 있기 마련...
linux init=/bin/bash
일단 프롬프트를 얻게 되면 부트 파일시스템을 리마운트 해 준다.
mount -wno remount / :루트를 읽기-쓰기용으로 리마운트 함. /bin/vi /etc/passwd :패스워드 문서 다듬기 : vi가 싫으면 아무거나 원하는 것으로...
전통적인 방법은 패스워드 문서를 다듬어서 루트의 패스워드를 지우는 것이었다. passwd 문서에서 첫 번째 ':'와 두 번째 ':' 사이의 암호화되 어 적혀 있는 패스워드를 지워 주고 나서 다시 루트로 로그인하는 것이 었는데, 레드 햇이 범용적으로 사용된 요즘에는 (특히 레드 햇에 기존한 배포본이 거의 모두라고 할 수 있는 우리 나라의 경우에는) 이 방법은 먹혀들지가 않는다. 왜냐하면...
[1]. 쉐도우 패스워드! [2]. 레드 햇은 루트의 패스워드가 비어 있으면 로그인을 허락하지 않는다.
방법: 0. 만약을 대비해서 우선 passwd 문서를 복사해 둔다. 'passwd.orig? inal' 따위 등으로...
1. 레드 햇 이외의 배포본에서 쉐도우 패스워드를 사용 안하는 경우: /etc/passwd를 다듬어서 첫 번째 ':'와 두 번째 ':' 사이에 있는 암호화된 패스워드를 지워 버린다. 저장한 후, 루트로 로그인하면 패스워드를 안 물어 올 것이다. 루트로 일단 로그인이 되었으면 반드시 새로운 패스워 드를 설정하고 적당한 곳에 이 새로운 패스워드를 적어서 보관한다. (안그럼 "언젠가는 또 이 짓을 반복하게 될 것"은 머피의 법칙 어디에서 인가 본 것 같다). 만약 이 방법이 통하지 않으면 3.1로 가라.
2. 레드 햇 이외의 배포본에서 쉐도우 패스워드. 사용의 경우: 이 경우에는 /etc/passwd를 보면 (배포본에 따라서 장소는 다를 수 있 다) ':'와 ':' 사이에 'x'가 보일 것이다. 이 때에는 /etc/passwd 대신에 /etc/shadow 등을 보듬어 주면 된다. (배포본에 따라서 shadow 문서의 위치가 다를 수 있다. 이 때에는 '/'에서 'find -name shadow'를 써서 shadow 문서가 어디에 있는지 찾아본다). 찾았으면, 여기서부터는 1의 방법과 같다.
3. 레드 햇 / 변종의 경우 (쉐도우 패스워드 사용): 레드 햇이나 이 것의 아종/변종의 경우인 경우에는 단순히 /etc/passwd 의 첫 번째 ':'와 두 번째 ':'를 비우는 짓을 했다가는 아예 로그인이 안되 는 불상사가 생길 수 있으므로 우선 passwd 명령어를 먼저 사용해 본 다. (배포본에 따라서 - ':'와 ':' 사이가 비어 있으면 passwd 명령어가 안될 수 있으므로). 만약 이 전의 패스워드를 모르더라도 passwd 명령어를 쓰면 새로운 패 스워드를 적어 넣을 수 있을 것이다. 만약 passwd를 쓰는 방법도 안된 다면 3.1을 쓰라. 당연히 새 패스워드는 적어놓고 안전한 곳에 보관할 것.
3.1 passwd 명령어가 안 먹히잖아! 다. 만약 지금 고치려는 기계에 여러분의 계정이 있는 경우에는 /etc/shadow 문서 어디엔가 여러분의 (루트가 아닌 다른 계정으로) 패스 워드가 암호화되어서 저장되어 있을 것이다. 이것을 복사해서 루트의 암호로 대신 넣어 주면 된다. 당연히 루트로 로그인한 후에는 여러분 패스워드를 넣어 주면 된다. 이 후에는 패스워드를 다시 바꾸어서 안전 한 곳에 보관한다. (사용자 계정과 루트 계정의 암호가 같으면 그것도 보안 관리 장애물이다).
그 이후에: 일단 기계를 루트 권한으로 손에 넣었으면 여기에서 일이 끝나는 것이 아니다. 이전의 사용자가 혹시 백도어용으로 쓰기 위해서 루트가 아닌 다른 이름으로 수퍼유저 계정을 만들어 놓았을 수 있으니까.
1. 패스워드나 쉐도우 문서를 잘 살펴서 UID가 0으로 되어 있는 계정을 잘 살펴보도록 하라.
2. 기계 전반의 보안을 기초부터 다시 구성하라. 리눅스 보안 하우투 문 서 및 다른 문서를 kldp.org에서 구하거나 말거나 는 여러분이 할 일이 다. (싫음 말고... 하지만 보안 책임은 전적으로 "너!"에게 있는 것이다. 루트잖아!)
3. 사정이 허락한다면 사용자 전체의 패스워드를 바꿔 준다. 갑자기 바 꿔 놓거나 무조건 바꾸라는 요구를 하면 사용자들이 개떼같이 몰려와서 여러분을 마구 갈구고 갈 수 있으므로 다소 외교적인 방법을 사용한다. 예를 들면 "여러분의 패스워드는 다음 2 주일 이내에 교체해 주십시오. 이 후에는 패스워드가 x 달마다 자동으로 교체됩니다." 하는 등의 사용 자가 이해해 줄 수 있는 보안 방법을 쓰면 된다. 패스워드를 자동으로 변환 설정해 주는 방법은 여기에서는 생략하겠다.
4. 가능하다면 기계 안에 적어 보관하는 일지 (日誌) 말고도 손으로 적는 일지 (아니면 시스템 일기장 (日記帳))을 적는 것도 좋은 방법이다. 당 연히 이 곳에는 루트 패스워드를 원본 그대로 적어 두면 안된다. 하지 만 여러분 본인이나 다음 인수자가 알아볼 수 있는 방법을 쓴다. PGP 등을 써서 암호화된 문서를 저장한다든지 하는 기법은 여러분이 알아서 구해 보시기를...
혹 위의 방법을 도용해서 다른 사람이 여러분 시스템의 패스워드를 훔쳐 가려고 할 지도 모를 일이다. 그런 만큼 보안 하우투 (선전! 선전! = 본 인이 번역했음 ^^; ) 등의 문서를 읽어 보아서 기계 전반의 보안 능력을 올려놓는 방법을 많이 많이 쓰자.
만약 Glimpse와 임의 단어검색기가 필요하다면 다음의 장소를 찾아봐라. http://glimpse.cs.arizona.edu/ LXR은 GNU/Linux상에서 아파치 웹서버를 사용한 테스트를 최근에 끝냈다. 다른 유닉스계열의 운영체제상의 웹서버에서는 잘 작동할 것이다.
LXR을 설치하기 위하여:
-펄이 설치되어있고, LXR을 설치하기 원하는 시스템안에서 makefile안의 PERLBIN 변수와 INSTALLPREFIX변수 를 셋팅하라. [보충] 만약 perl 바이너리가 /usr/bin에 있다면 PERLBIN=/usr/bin 으로, INSTALLPREFIX는 LXR스크립트가 설치될 곳을 가리킨다. 만약 그대가 INSTALLPREFIX=/home/httpd/html/lxr로 했다면, Makefile은 몇개의 디렉토리를 그 곳에 생성할 것이다.
바로 위와 같은 디렉토리 들이다. 소스코드 참조(cross reference)를 하고,참조데이터베이스를 만들고, 또 참조된(crose referenced) 소스코드를 탐색키 위해서 각각 다음과 같은일을 해야 한다. -"make install" root권한으로 해야한다. -$(INSTALLPREFIX)/http/lxr.conf 화일을 편집해야 한다. [보충]lxr.conf에는 LXR이 작동하기 위한 부가적인 몇몇의 설정들이 있다. 기본 설정에서 다음과 같은것들을 바꿀 수 있을 것이다.
baseurl: http://[자신의 서버]/lxr/http/ 여기서 lxr/http는 웹서버의 document root와 연결(하위 디렉토리로)되어 있어야 한 다.
예를 들어 만약 그대의 document root가 /home/httpd/html이고 INSTALLPREFIX가 /home/httpd/html/lxr이면 baseurl은 다음과 같이 되어야 한다.
baseurl : http://[자신의 서버]/lxr/http/ (주의)주소의 끝에 /를 쓰는것을 명심하라. 위의 예에 이어서, htmlhead: /home/httpd/html/lxr/http/template-head htmltail: /home/httpd/html/lxr/http/template-tail htmldir: /home/httpd/html/lxr/httpd/template-dir
이 설정들은 html의 head, tail, 그리고 디렉토리리스트를 세팅하는 것이다. 이 화일들의 HTML태그들은 cross-reference웹페이지에 덧붙여질 것들이다. sourceroot 항목은 참조하고 싶은 소스가 있는 디렉토리를 가리킨다. 그리고 끝에 /를 붙이는 것을 잊지마라.
dbdir 항목은 $INSTALLPREFIX/source 디렉토리를 가리킨다. 예를 들면 dbdir: /home/httpd/html/lxr/source/
-$INSTALLPREFIX/http 안의 화일들은 웹브러우져가 읽을 수 있는 위치에 있어야 한다는 것을 잊지마라. 웹브러우져는 search, source, ident, diff등의 화일들을 cgi-script로 해석해서 실행하기 때문이다. 아파치웹서버를 사용한다면 다음과 같은 설정이 필요하다.
$(INSTALLPREFIX)/http/.htaccess안에 다음과 같은 설정을 해주기 바란다. SetHandler cgi-script
[보충] 아파치를 사용한다면, access.conf(혹은 httpd.conf)안에 다음과 같은 설정을 해야 한다.
______________________________________________________________________ Options All AllowOverride All
위에 적은 /home/httpd/html/lxr경로는 INSTALLPREFIX와 같아야 한다. -identifier 데이터베이스의 생성. 위에서 "dbdir"로 설정을 했던 디렉토리로 가서 "./genxref [source code directory]"를 실행 시키면 된다. -이것은 옵션이지만, Glimpse 데이터베이스를 생성시킬 수 있다. "dbdir"로 설정한 디렉토리에서 "glimpseindex -H [source code direc? tory]"를 실행시킨다. 자세한 Glimpse의 활용과 명령은 관련 문서를 참고하기 바란다.
사용:
위에 언급한 설정들이 끝나면 웹서버를 다시 시작시켜야 한다. (역자의 경우 /etc/rc.d/init.d/httpd restart) 그리고 웹브러우져에서 http://[자신의 서버]/lxr/source/ lxr/source는 INSTALLPREFIX밑이며 웹서버의 document root의 하위 디렉토리 이다.
만약 작동을 하지 않는다면:
-Permission을 확인한다. 웹서버가 실행시킬 스크립트들의 실행 권한이 올바르게 주어졌는가 확인 한다.
-Perl스크립트들이 라이브러리를 제대로 쓸 수 있는 지 확인한다. 그리고 웹서버에의한 실행권한도 있어야 한다. (genxref같은 화들일이 펄로 작성되어 있다.)
lxr.conf화일: LXR은 사용자의 디렉토리 구조에 상관없이 쓸 수 있지만, 모든 관련 경로들은 lxr.conf에 기록이 되어있어야 한다. 이 화일은 perl로 작성된 스크립트 화일들과 위치가 같아야 한다. LXR은 다음의 설정화일 내의 옵션들을 인식한다.
htmlhead : 모든 html화일들의 헤더가 되는 템플릿 화일. htmltail : html페이지의 맨 밑에 쓰일 템플릿 htmldir : 각 페이지에서 디렉토리를 리스팅하는 템플릿 sourceroot : index를 만들기 원하는 소스코드가 있는 최상위 디렉토리 sourcerootname : 최상위 디렉토리에 붙일 이름 incprefix : 그 소스에 쓰이는 include 화일들의 위치 dbdir : LXR이 필요로 하는 데이터베이스화일들이 있는 위치 (fileidx xref 그리고 glimpse화일) glimpsebin : glimpse 바이너리 화일이 설치된 위치 variable : 템플릿과 설정화일이 사용하는 변수들. 문법은 다음과 같다. variable : ,,, 은 변수의 이름이다. 는 설명. 필드는 변수의 값으로 가능한 것들을 리스팅한것이다. 리스트는 "("으로 시작해서 ")"으로 끝난다. 이것은 [ ]과 같이 쓰일 수도 있다. 이 경우 그 값들은 한 줄에 하나씩 하나의 파일로부터 읽어들인다. map: 변수를 통해 디렉토리들을 다시 쓸 수 있게 한다. 리눅스의 소스코드들은 몇개의 다른 아키텍쳐를 지원한다. 이런 경우 include화일들은 include/asm-/. 있게 된다. 이런 코드들은 다시 매핑시키기위해 변수 $a가 다음과 같이 쓰이게 된다. map: /include/asm[^/]*/ /include/asm-$a/
1. 커널 2.3/4를 사용하기 위해 꼭 필요한 것들.(리눅스 커널 문서의 Changes참조) - Kernel modutils 2.3.10 ; insmod -V - Gnu C 2.7.2.3 ; gcc --version - Binutils 2.9.1.0.7 ; ld -v - Linux libc5 C Library 5.4.46 ; ls -l /lib/libc* - Linux libc6 C Library 2.0.7pre6 ; ls -l /lib/libc* - Dynamic Linker (ld.so) 1.9.9 ; ldd --version or ldd -v - Linux C++ Library 2.7.2.8 ; ls -l /usr/lib/libg++.so.* - Procps 1.2.9 ; ps --version - Procinfo 16 ; procinfo -v - Psmisc 17 ; pstree -V - Net-tools 1.50 ; hostname -V - Loadlin 1.6a - Sh-utils 1.16 ; basename --v - Autofs 3.1.1 ; automount --version - NFS (client) 2.2beta40 ; showmount --version - nfs-utils (server) 0.1.4 - Bash 1.14.7 ; bash -version - Ncpfs 2.2.0 ; ncpmount -v - Pcmcia-cs 3.1.2 ; cardmgr -V - PPP 2.4.0b1 ; pppd --version - Util-linux 2.9i ; chsh -v - isdn4k-utils v3.1beta7 ; isdnctrl 2>&1|grep version
2. modutils modutils를 업데이트 하면 설정파일이 변경되어 있음을 알수 있습니다. conf.modules 에서 modules.conf 로 변경되어있습니다. (기존의 설정도구들 완전히 다 바꿔야 합니다. -.-; 만약 conf.modules가 있으면 modules.conf를 읽고 conf.modules는 무시하니 지워버리라는 경고메세지가 뜹니다.(그리고 친절하게 지우는 명령까지 가르쳐 줍니다. -.-; 그리고 modules.conf에 들어갈수 있는 예약어가 대폭적으로 늘었습니다. (따로 modules.conf man페이지도 추가되었습니다.) if같은 제어문까지 사용할수 있습니다. 다음은 modules.conf에서 사용할수 있는 예약어 리스트 입니다.
[add] above module module_list alias alias_name result [add] below module module_list define VARIABLE WORD depfile=A_PATH else elseif EXPRESSION endif if EXPRESSION include PATH_TO_CONFIG_FILE insmod_opt=GENERIC_OPTIONS_TO_INSMOD install module command ... keep [add] options module MODULE_SPECIFIC_OPTIONS path=A_PATH path[TAG]=A_PATH [add] probe name module_list [add] probeall name module_list post-install module command ... post-remove module command ... pre-install module command ... pre-remove module command ... remove module command ...
3. devfs 처음 2.3.99를 설치하고 제일 황당하였던것이 이것입니다. 부팅 하자마자 멋대로 /dev에 마운트 시켜버리더군요. /dev의 장치이름들이 몽땅 바뀌어져 있습니다. 파티션 마운트도 제대로 못시키더군요. -.-;; 그리고 기타 부가장치들을 거의 사용할수 없습니다. 예를 들어 콘솔은 tty? 라는 장치를 사용합니다. 하지만 devfs에서는 vc/?라는 장치를 사용합니다. (로그인도 못할것입니다. -.-)
이것을 해결하는 방법은 이만용님 홈(http://kldp.org/~yong/kernel/2.3/)에 나온것과 같이 커널옵션에 아예 devfs를 제거하던지 lilo같은데에 옵션으로 devfs=nomount를 사용하면 됩니다. 하지만 있는기능은 다써봐야 하는 극성 리눅서들을 위해(저같은) devfsd를 사용하면 됩니다. 일종의 하위버젼 호환성을 위해 만들어진 데몬 입니다. 하는 역할은 /dev에 있는 장치파일들을 2.2이하 커널에서 사용하던 것과 같은 파일 이름으로 링크를 자동으로 걸어 줍니다. devfsd를 얻으려면 http://www.atnf.csiro.au/~rgooch/linux/ 에서 구할수 있습니다. (서기현님(nefsall@nef.sarang.net)께서 정보를 주셨습니다. 감사합니다.) 저같은 경우에는 지금 /etc/rc.d/rc.sysinit 스크립트에 다음과 같이 적어놓았습니다 39 # Fix console loglevel 40 /bin/dmesg -n $LOGLEVEL 41 42 # Starting devfsd 43 action "Mounting devfs filesystem" mount none /dev -t devfs 44 action "Starting devfsd" /sbin/devfsd /dev
그런데 이렇게 구성하고 나서 문제가 한가지 더생겼습니다. 일반유저로는 콘솔로 로그인이 잘되는데 root로는 로그인이 안되더군요. 문제가 있는 프로그램들을 곰곰히 생각해보다가 /etc/securetty 가 생각이 났습니다. 이 파일의 역할은 루트가 로그인 할수 있는 장치들을 나열한 것이죠. 기본 설정은 tty[1-6] 입니다. 분명히 링크는 되어 있더군요. 그런데 일반유저로 들어 가서 다시 빠져 나간다음 다시 들어가보니 마지막 로그인 위치가 "1"이라고 나오더군요. 앞에 있듯이 tty?는 vc/?에 링크 되어 있습니다. 링크되어 있는 파일의 실제이름을 그대로 따라간다는 뜻이죠. 그래서 저는 /etc/securetty 의 내용을 tty?대신 ?로 바꾸었습니다. 로그인 잘되더군요.
4. usbmouse, keyboard 사용하기. module로 사용하는 것을 기준으로 설명하겠습니다. 일단 mouse를 사용하기 위해 올려야 하는 모듈은 다음과 같습니다.
usbcore, usb-uhci, input, usbmouse, mousedev 이중 의존성이 걸린 모듈은 usb-uchi 모듈을 올리면 자동으로 usbcore usbmouse 모듈을 올리면 자동으로 input, usbcore mousedev 모듈을 올리면 자동으로 input 모듈이 올라갑니다. 그리고 이 3모듈은 어떠한 연관성이 없으므로 따로따로 올려야 합니다. 하나라도 올리지 않으면 마우스가 작동을 하지 않습니다. -.-;; 이것은 modules.conf에서 pre-install을 이용하면 쉽게 해결이 될껍니다.
그리고 마우스를 가르키는 디바이스 파일은 /dev/input/mouse? 입니다. 그리고 작동하는 프로토콜방식은 ps/2입니다.
키보드를 사용하기 위해 올려야 하는 모듈은
usbcore, usb-uhci, input, usbkbd, keybdev이고 이중 의존성이 걸린 모듈은 usbkdb 모듈을 올리면 자동으로 input, usbcore keybdev 모듈을 올리면 자동으로 input모듈이 올라갑니다. 이또한 usb마우스관련 모듈과 같이 동작을 합니다.
5. 추가된 가상파일 시스템 shm : sysv 공유메모리 : 권장 마운트 위치 : /var/shm devfs : dev 파일 시스템 : 권장 마운트 위치 : /dev usbdevfs: usb 장치 파일 시스템 : 권장 마운트 위치 : /proc/bus/usb
여기서 shm을 마운트 시키지 않으면 sysv 공유메모리를 사용하는 apache프로그램 등등이 동작 하지 않습니다.
그리고 usbdevfs 같은경우에는 usb모듈을 올렸을경우에만 마운트 됩니다.
modules.conf에 다음과 같이 하면 되겠죠? post-install usb-uhci /bin/mount none /proc/bus/usb -t usbdevfs
SGML은 주로 html이나 dvi 파일을 만드는 데 사용됩니다. 저도 조금 써보았는 데, 그림이 아쉽더군요. 그래서 sgml-tools의 파일들 중 dtd 파일을 읽어보고 다음과 같은 해결법을 찾았습니다.
이렇게 하시면 dvi의 경우 자동으로 그림 넘버링이 됩니다. 그리고 eps file 부분은 dvi에만 영향을 미치며 img src 부분은 html에만 영향을 미칩니다. height 옆에다 width를 쓸수도 있으나 이것만 쓰는 것은, 없어도 되지만 이것만 써서 그림의 확대/축소 배율을 지정할 수 있다는 것입니다.
그리고 여기에서 xxxx 및 yyy는 아시다시피 아무개 값을 말합니다. 특히 yyypt는 예를 들어서 386pt를 말합니다. ImageMagick 팩키지의 identify 라는 유틸로 eps 파일을 매개변수로 주면 이런 width x height 값들을 확인하실 수 있으실 겁니다. pt 는 point를 말한다고 합니다.
나중에는 table을 넣는 방법에 대해서 연구해보아죠....
sgmltools 팩키지는 최준호님께서 패치하신 것이 몇년째 그대로 사용만 되고 있는 것 같습니다. 메이저 버전 차이가 영문판과 벌써 생길 정도이니.... 우리의 조그만 노력이 있어야 할 것 같습니다.
mailman은 거의 모든 작업이 웹브라우저를 통해서 이루어지며 사용자 입장에서는 가입/탈퇴가 매우 쉽고 관리자 입장에서는 메일링 리스트 아카이브/설정이 매우 쉽다는 장점이 있습니다.
기존의 majordomo를 통해 관리되는 메일링 리스트의 아카이브(메일 모음)를 설정하기 위해서는 따로 MHonarc등의 프로그램을 설치해야 했으나 mailman은 아카이브를 위한 프로그램이 기본적으로 내장되어 있고 아카이브를 보여줄 것인가 숨길 것인가를 관리자가 선택해 줄수도 있습니다.
또 메일-뉴스 게이트웨이를 아주 쉽게 구현할 수 있게 해줍니다.
mailman의 관리자 인터페이스에서 메일-뉴스 게이트웨이 부분을 클릭하고 뉴스 서버와 뉴스그룹을 적어주기만 하면 곧바로 뉴스그룹의 내용이 메일링 리스트로, 메일링 리스트의 내용이 뉴스그룹으로 상호 교환되기 시작합니다. 아주 간편하지요.
제가 사실 mailman을 설치해둔 것은 아주 오래전 일이었는데 이번에 gtk, qt 개발자 오픈 메일링 리스트를 만들면서 오랜만에 다시 손을 좀 대보았네요.
mailman이 동작하는 모습을 보고싶은 분은 http://list.kldp.org 를 방문하셔서 gtk, qt 개발자 메일링 리스트에 가입해 주시고 mailman을 설정하여 메일링 리스트를 구축하고자 하는 분들은 http://www.list.org 에서 mailman 소스코드를 구하시기 바랍니다.
아, mailman의 장점이 또 한가지 있군요. 라이센스가 GPL인 완전한 오픈소스 프로그램이라는것. majordomo는 완전한 오픈소스 프로그램이 아니기 때문에 데비안의 경우 majordomo는 기본 메일링 리스트 프로그램에 포함되어 있지 않습니다. 뭐 GPL이다 아니다가 중요한건 아니지만....하여간 여러모로 편리한 점이 많습니다.
mailman을 사용하시려면 python이 시스템에 설치되어 있어야 하니 최신 버전의 python을 먼저 설치하신 후 mailman을 사용하시기 바랍니다....
Email : ihoneymon@gmail.com
안녕하세요, 꿀괴물 입니다. ^^
멋진 비행을 준비 하는 블로그 입니다.
만능형 인간이 되어 많은 이들에게 인정받고, 즐겁고 행복하게 살기를 간절히 원합니다!!
달콤살벌한 꿀괴물의 좌충우돌 파란만장한 여정을 지켜봐주세요!! ^^