2012-09-09

FreeBSD] X 디스플레이매니저



4. X 디스플레이 매니저 (XDM, 화면 관리자??)
이하 디스플레이 매니저를 화면 관리자로 통일합니다.


4.1. 개관.

X 화면 관리자(XDM)은 X 윈도우시스템의 추가적인 부분이며, 이는 로긴세션 관리에 사용된다.  XDM은 몇가지의 솔루션에 유용하며, 최소, "X 터미널", 데스크탑, 대규모 네트웍 디스플레이서버에 포함되어 있다.
X윈도우 시스템은 네트?과 프로토콜 독립적이어서, 그것은 광범위하게 X 서버와 클라이언트의 운영을  네트웍을 통해 서로 다른 머신들에 접속이 가능하게 운영하기 위한 설정이 가능하게 되어 있다.

XDM은 그래픽적인 인터페이스를 제공하는데 접속하려는 디스플레이서버를 선택할 수 있고, 로긴과 패스워드 조합과 같은 인증정보를 입력할 수 있다.

XDM의 사상은 getty(8) 유틸리티가 사용자에게 하는 것과 같은 기능을 제공한다(??? => 뭔말이고??? 모르겠당...)


4.2 XDM 사용하기

XDM 데몬프로그램은 /usr/X11R6/bin/xdm에 위치한다. 이 프로그램은 root처럼 언제나 동작가능하며, 로컬머신의 X display 관리를 시작할 것이다.

만약 XDM이 매번 부트될때마다 실행되기를 원하면 /etc/ttys 의 엔트리에 추가해주는게 사용하기 편할 것이다.

/etc/ttys  파일에 XDM 데몬을 가상터미널에서 실행하기 위한 아래의 기본명령어 라인이 있다.

   ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

이 엔트리는 기본값으로 비활성화 되어있다. 활성화 시키기 위해 5번째 필드의 off값을 on으로 변경하고 init 을 재 시작하면 된다.
1번째 필드는 이 프로그램이 관리할 터미널 명이며 , ttyv8 이다. 이 뜻은 XDM은 9번째 가상터미널에서 실행된다는 의미이다.


4.3 XDM 설정

XDM설정 디렉토리는 /usr/X11R6/lib/X11/xdm 에 위치한다. 이 디렉토에는 행위를 변경하고, XDM의 모양을 변경하는 몇몇 파일이 있다.

아래에 그 리스트를 보인다.

File Description

Xaccess Client authorization ruleset.

Xresources Default X resource values.

Xservers List of remote and local displays to manage.

Xsession Default session script for logins.

Xsetup_* Script to launch applications before the login interface.

xdm-config Global configuration for all displays running on this machine.

xdm-errors Errors generated by the server program.

xdm-pid The process ID of the currently running XDM.


또한 이 디렉토리에는 몇개의 스크립트와 XDM실행시에 사용되는 데스크탑설정하는데 사용되는 프로그램이 보인다.

이 파일들의 각각의 목적은 간단히 설명하게 될것이다. 정확한 문법과 사용법은 xdm(1)에 기술되어 있다.



4.3.1 Xaccess

XDM에 접속하여 화면을 제어하는 프로토콜로 X 화면관리자 접속 프로토콜(XDMCP)라고 한다. 이 파일은 XDMCP 원격머신으로부터 접속을 제어하기위한 룰셋이다. 기본적으로, 이것은 모든 접속하고자 하는 클라이언트를 허용하지만, xdm-config 에서 원격접속을 위한 LISTEN을 변경하면  문제가 아니다. (???)


4.3.2 Xresources

이는 화면선택자와 로긴화면을 위한 기본프로그램이다. Xresources는 로긴프로그램의  모양을 띄고 있으며, 수정이 가능하다.


4.3.3 Xservers

Xservers는 원격 디스플레이 선택자를 제공한다.


4.3.4 Xsession

Xsession은 사용자가 로긴한 후 XDM을 실행하기 위한  기본세션스크립트이다.  사용자들은 ~/.xsession 에 최적화된 세션스크립트를 사용할 수 있고 이 스크립트는 오버라이드 된다.


4.3.5 Xsetup_*

Xsetup_*은 선택자나 로긴 인터페이스가 보이기전에 자동빵으로 실행됩니다. 각  디스플레이를 위한 스크립트들이 사용되고,  로컬 디스클레이 번호(예를 들면 Xsetup_0 와 같은 식으로 )에 따라서 이름이 Xsetup_* 으로 부여된다.
Xsetup_*은 전형적으로 하나 혹은 둘 이이상이 xconsole처럼 뒷단(backend)에서 실행될것이다.


4.3.6 xdm-config

xdm-config는 기본프로그램의 형식과 각각 설치, 관리 가능한 형식을 내용으로 가지고 있다. (??? 맞는감??? 잘 모르겠당..)


4.3.7 xdm-errors

xdm-errors는 X 서버가 XDM 이 실행하려는 횟수를 출력한다.  XDM이 어떤 이유로 인해 hang이 발생하면, 이는 에러메시지를 보기위한 좋은 껀수가 되는것이다.  이 메시지는 사용자의 ~/.xsession-error 파일에 매 세션마다 쓰여진다.


4.4 네트웍 디스플레이서버 실행하기

각각 다른 클라이언트가 디스플레이서버에 접속함에 따라서, 액세스컨트롤?이 변경이 되어지고, 커넥션리스너가 허용이 될것이다.  이러한 기본설정은 낡은 값이 되는것이다. XDM 접속을 위한 리슨을 생성하면, xdm-config 파일에서 처음에 아래의 코멘트를 볼수 있다.


! SECURITY: do not listen for XDMCP or Chooser requests! Comment out this line

if you want to manage X terminals with xdmDisplayManager.requestPort:     0



-->" XDMCP나 chooser 리퀘스트를 listen하지 마시오.

만약 X터미널로 xdm을 관리하려면 리퀘스트포트를 0번으로하라 " 는 내용이 아닌가??? 아님 말구...



이후 XDM을 재기동 한다.(restart).  
주석에 있는 내용을 기억하세요. "!" 문자로 시작하는게 주석처리 문자랍니다. "#" 이 아니구여.


더 자세한 내용은 xdm(1) 매뉴얼 페이지를 참고하세요.


4.5 XDM대체하기

kdm(KDE번들)과 같은 것으로 대체가 가능하다.

FreeBSD] X 데스크탑 환경



5. 데스크탑 환경

 X에서 사용되는 여러 데스크탑 환경중 KDE나 GNOME같은 데스크탑 어플리케이션 슈트나 다른 윈도우매니저에 대해 다룬다.


5.1 GNOME


5.1.1 GNOME에 대해...

GNOME는 사용자 친화적인 데스크탑환경이다. 이것은 사용자의 컴퓨터를 쉽게 사용하고 설정가능하게 해주는 환경이다.
GNOME는 패널(애플리케이션시작과 디스플레이 상태를 위한), 데스크탑(데이터와 어플리케이션이 위치한), 표준 데스크탑 툴과 어플리케이션 집합, 일관적이고, 협업적인 어플리케이션을 쉽게 만들기 위한 규약들의 집합들을 포함하고 있다.

서로 다른 OS의 사용자들 혹은 서로 다른 환경의 사용자들은 집에서 바로 사용할 수 있는 강력한 그래픽위주의 환경을  GNOME 제공한다.

더 많은 정보는 FreeBSD GNOME Project 웹사이트에서 보기 바랍니다.


5.1.2 GNOME 설치하기

GNOME설치의 가장 쉬운 방법은 FreeBSD를 까는 중에 "Desktop Configuration" 을 통해 설치하는 방법이다.

다른 방법은 패키지나 포트 컬렉션을 통해서 설치하는 것입니다.

GNOME패키지를 네트워크를 통해 설치할 때 다음과 같이 입력을 하면 간단하다.


# pkg_add -r gnome2

소스로부터 GNOME를 빌드하기 위해서는 포트트리를 사용한다.

#cd /usr/ports/x11/gnome2#make install clean

GNOME은 한번 설치되면, X서버는 실행시 기본 윈도우매니저 대신 GNOME을 실행할 지 물어본다.

일반적으로 .xinitrc가 존재하면, /usr/X11R6/bin/gnome-session 이 실행되면서 현재 기본 윈도우 매니저를 간단하게 대체한다.

설정파일에 특별히 명기된게 없다면 아래의 명령을 입력하는것으로 충분하게 된다.

% echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc


다음으로, startx를 치면 GNOME 데스크탑환경을 시작하게 될것이다.


 NOTE: 만약 XDM같은 디스플레이매니저를 사용한다면, 이 작업은 안할 것이다.             대신에 실행가능한 .xsession 파일을 생성하고, 위와 같은 명령어를 추가한다.             파일을 편집하고, 존재하는 윈도우 매니저를 대체하는 명령은 /usr/X11R6/bin/gnome-session 에 존재하는것을 대체한다.


%echo "#!/bin/sh" > ~/.xsession
%echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession
%chmod x ~/.xsession


 또 다른 옵션은 윈도우 로긴시에 디스플레이매니저 선택을 허용하도록 설정하는 것이다. KDE DM의 kdm 사용 설명에 자세히 기술한다.


5.1.3  GNOME에서 안티알이아싱 폰트 사용하기

X11은 "RENDER" 확장을 통해 안티알리아싱을 지원한다.  GTK 2.0 이상(GNOME에서 사용되는 툴킷) 은 이 기능을 사용하게 만들수 있다.

안티알리아싱 설정은 앞의 게시물의 "X에서 폰트 사용하기" 의 설명을 참조하기 바랍니다.  SW가 개선됨에 따라서, GNOME 데스크탑 간에 안티알리아싱이 가능하게 되었다.

Applications->Desktop Preferences->Font 로 가서,Best shapes, Best contrast,  Subpixel smoothing (LCDs) 중에서 선택하면 된다.

GTK 를 위한 프로그램은 GNOME 데스크탑의 부분이 아니기 때문에,  프로그램을 시작하기 전에 GDK_USE_XFT의 값을 1로 설정해야 한다.


5.2 KDE

5.2.1 KDE에 대해...

KDE는 현재 데스크 환경중에서 사용하기 쉬운것중 하나다.
KDE는 아래의 사항들 중 하나로 사용자들을 끌어들인다.

A beautiful contemporary desktop
A desktop exhibiting complete network transparency An integrated help system allowing for convenient, consistent access to help on the use of the KDE desktop and its applications Consistent look and feel of all KDE applications Standardized menu and toolbars, keybindings, color-schemes, etc.
Internationalization: KDE is available in more than 40 languages
Centralized consisted dialog driven desktop configuration
A great number of useful KDE applications


KDE는 KDE 기반의 "KParts" 기술로 구성된 스프레드쉬트, 프리젠테이션프로그램, 오거나이저, 뉴스 클라이언트 프로그램등등 으로 구성된 사무용프로그램 집합이다.  KDE는 또한 Konqueror라 불리는 웹브라우저를 가지고 있고, Konqueror는 유닉스시스템에 존재하는 다른 웹브라우저와 치열한 경쟁을 보여주고 있다.  KDE에 대한 더 많은 정보는 KDE 웹사?에서 발견할 수 있다.  FreeBSD에 특화된 정보는 FreeBSD-KDE team의 웹사이트에서 볼 수 있을 것이다.


5.2.2 KDE 설치하기

GNOME 또는 다른 데스크탑 환경과 마찬가지로 KDE도 FreeBSD를 설치하는 도중에  "Desktop Configuration" 항목을 통해서 가장 쉽게 설치할 수 있다. 또 다른 방법은 패키지나 포트컬렉션을 통해서 쉽게 설치가 가능하다.


KDE 패키지를 네트워크를 통해 설치할 때 다음과 같이 입력을 하면 간단하다.

# pkg_add -r kde

pkg_add(1)은 자동으로 해당 프로그램의 최신버전을 가지고 온다.

소스로부터 KDE를 빌드하기 위해서는 포트트리를 사용한다. (정말 시간 많이 걸린다.)

# cd /usr/ports/x11/kde3

#make install clean


KDE를 설치 후, X 서버는 기본 윈도우매니저를 대체하기 위해 이 프로그램을 시동할지 물어봐야만 한다. 이 작업을 하기 위해서는 .xinitrc파일을 아래처럼 수정한다.


% echo "exec startkde" > ~/.xinitrc


이제 X윈도우시스템은 startx시에 KDE를 데스크탑으로 실행 할 것이다.


5.3 KDE에 대해 조금 더....

FreeBSD] nabi설치 및 설정방법




이 글은 http://wiki.kldp.org/wiki.php/nabi의 글을 일부 인용 발췌한 것입니다.


1. 나비 설치

- 데비안 :  apt-get install nabi
- Fedora : yum install nabi
- FreeBSD : cd /usr/ports/korean/nabi && make install clean


** 소스로 설치시 GTK 2.2 이상이 필요합니다.


2. 설정

2.1 환경변수 설정

- 데비안

GNOME 사용시 $HOME/.gnomerc  파일에 아래의 내용을 추가합니다.


  export XMODIFIERS="@im=nabi"



- 일반 (FreeBSD포함)

$HOME/.xinitrc파일 또는 $HOME/.xsession을 사용한다면 그 파일 앞쪽에

     nabi &
     export XMODIFIERS="@im=nabi"


를 추가하면 됩니다. 또는 세션관리자를 사용하는데 데스크 탑의 경우는 시작프로그램에 추가하는 방법도 있습니다. 물론 이렇게 나비를 띄우는 경우에도 환경변수는 위와 같이 프로그램을 실행하기 전에 설정될 수 있도록 해야 합니다.
KDE를 사용한다면 $HOME/.kde/env/nabi.sh라는 파일을 만들고 거기에


     nabi &       #만일 나비를 시작할때 띄우고 싶지 않다면 이 라인은 빼셔도 됩니다.

     export XMODIFIERS="@im=nabi"


이렇게 적으면 됩니다.



3. 사용방법

3.1 한영전환

    기본적으로 처음 시작 상태는 영문상태입니다. 이 상태에서는 한글입력이 안됩니다. 이것을 한글모드로 전환을 해야하는데 이 한영 전환방법은 Shift-space 혹은 한/영 키 입니다.  이때부터  한글을 입력할 수 있습니다. 그리고 나서 다시 Shift-space혹은 한/영 키를 누르게 되면 다시 영문상태가 됩니다.



3.2 한자 입력방법

먼저 한글로 입력하기를 원하는 한자의 독음을 힌 후 한자키나 F9키를 누르면 선택할 수 있는 한자 목록이 나오게 됩니다.
각 한자들 앞에는 숫자가 붙어 있는데 그 숫자를 누르면 바로 그 한자가 입력이 됩니다. 또한 좌우방향키를 누르게 되면 선택마크가 움직이면서 현재 선택된 한자를 보여줍니다. 그때 엔터를 치시면 선택된 한자가 입력이 됩니다.

현재의 한자 목록에서 원하는 한자가 보이지 않으면 space 나 PgDn/Up 키를 눌러서 다음 한자 목록을 보실수 있습니다,
또 한자 입력을 취소하시려면 Esc키를 누르시면 됩니다. hjkl로도 움직일 수 있습니다.



3.3 기호입력방법

한글 자음(ㄱㄴㄷㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ)를 하나 누른 상태에서 한자 또는 F9 키를 누르면 기호의 목록이 나타납니다.
이때에도 한자의 경우와 마찬가지로 골라서 입력하시면 됩니다.



4. FAQ

4.1. 한글 입력이 안됩니다, 어떻게 해야 하나요?


보통은 환경 변수 설정의 문제인 경우가 많습니다.
일 단 시스템에 문제가 있는지 없는지 확인하기 위해서 아래에 제시한 테스트를 하시면 빠르게 상황을 파악할 수 있습니다.

다 음과 같은 순서를 따라서 해보십시오. 임의로 건너 뛰거나 순서를 바꿔서 입력하면 안됩니다. 반드시 아래에 제시된 순서대로 빼먹지 말고 입력하십시오.
일단 X가 뜨지 않은 상태의 tty에서 xinit을 실행합니다. 그러면 X 화면이 뜨면서 왼쪽 위에 터미널 화면만이 열립니다.
그럼 그 터미널에서 아래의 명령을 순서대로 치시면 테스트 하실 수 있습니다.
아래에서 $는 프롬프트를 나타내므로 입력하실 필요가 없습니다.
그리고 # 이후 부분은 설명을 위해 써 놓은 것이니 역시 입력 하실 필요가 없습니다.

     $ twm &                         # 윈도우 매니져를 띄우는 것입니다.
                                     twm 이 없다면 fvwm, wmaker, metacity 등을
                                     입력해 보십시오.

     $ unset LC_ALL                  # 잘못된 환경 변수가 있을 경우를 대비해서
                                     기존의 설정 값을 지우는 것입니다.

     $ export LANG=ko_KR.eucKR       # 자기가 사용하고자 locale을 설정합니다.
                                     만일 유니코드 locale을 사용하고 싶다면
                                     export LANG=ko_KR.UTF-8 이렇게 합니다.

     $ nabi &                        # 실제로 입력기를 실행하는 곳 입니다.

     $ export XMODIFIERS="@im=nabi"  # 자기가 사용하고자 하는 입력기를 지정하는
                                     것입니다.

     $ export GTK_IM_MODULE=xim      # gtk2를 쓸때 입력 모듈이 다른 것으로
                                     설정되어 있을 수가 있기 때문에 바꿉니다.

     $ mozilla or gedit or kedit     # 이제 실제로 자기가 한글을 입력하고자 하는
                                     프로그램을 띄웁니다.



실제로 나비를 사용하기 위해서 중요한 환경 변수 ?LANG와 XMODIFIERS 이 두개 입니다. 이것만 제대로 설정이 되어 있으면 대부분의 경우 한글 입력에 지장이 없습니다. 이렇게 해서 띄운 모질라나 gedit, kedit에서 입력이 된다면 프로그램의 문제가 아니라 설정의 문제입니다.



4.2 defined이런 에러가 나는데 문제가 있는 것 아닌가요?

   이 메세지는 무시하셔도 좋습니다. ?Session을 지원하는 윈도우 시스템일 경우 ?SessionManager와 연결이 되지만 ?SessionManager 보다 nabi가 먼저 실행이 되거나 ?SessionManager 가 없는 경우는 이런 Warning이 나옵니다. 물론 입력기의 실행에는 아무런 지장이 없습니다.



4.3 Nabi: Can't load config file이라는 메세지가 나오면서 입력이 안되요.

      nabi의 설정을 저장하는 디렉토리 입니다. 없으면 기본값으로 실행되기 때문에 그 Warning은 무시하셔도 됩니다. 또, 문제가 생기면 설정 디렉토리인 $HOME/.nabi를 지워버리는 것도 방법입니다.



4.4 한컴리눅스 오피스에서 입력이 안되요

    /usr/local/?HancomOffice2/Common/ hcoffice_init 파일의 99번째 라인의 export ims="-im nabi"수정하면 나비로 한글 입력 가능합니다. 한컴 오피스 3에서는 121번째 라인입니다. 수정하니 잘 되네요 -- 한컴오피스 게시판에서 --



4.5 한영키가 작동하지 않아요

$HOME/.Xmodmap파일에 아래와 같은 내용을 추가하시고 X를 다시 시작하시면 됩니다.
만일 $HOME/.Xmodmap파일이 없다면 아래 내용만 넣고 새로 만드시면 됩니다.

! for using hangul key

keycode 121 = Hangul_Hanja
keycode 122 = Hangul



4.5 나비를 종료할 수 가 없어요.

나비 0.13이후의 버젼 부터는 ?SessionManager를 지원합니다. 그리고 나비의 특성을 respawn으로 설정해서 나비가 종료하면 ?SessionManager 가 자동으로 나비를 다시 띄우도록 설정이 되어 있습니다. 따라서 나비를 종료하거나, kill해도 ?SessionManager에서
다시 띄우기 때문에 종료하지 않는 것 처럼 보입니다. 나비를 종료하기 위해서는 메뉴에서 프로그램->기본설정->고급->세션 을 선택해서 세션 프로퍼티 창에서 "현재 세션"을 선택하고 거기서 나비 프로세스를 찾아서 "지우기" 버튼을 누르고 "적용" 버튼을 누르시면 나비가 종료하게 됩니다.



4.6 나비와 아미를 같이 사용할수 있나요?

나비(Nabi)는 ?ami와 충돌하는 프로그램이 아닙니다. nabi를 사용하기 위해서 굳이 ?ami를 삭제하거나 종료해야 하는 것이 아닙니다.
?ami가 떠 있는 상태에서도 nabi를 띄우고 사용하고 싶은 프로그램에 환경 변수
XMODIFIERS="@im=nabi"가 설정되어 있으면 그 프로그램은 nabi로 한글 입력이 가능합니다.



4.7 세벌식 두벌 자판은 무엇인가요?

나비의 세벌식 두벌자판은 자판 배열은 두벌식이고 세벌식 오토마타를 사용한 것으로 shift와 자음을 함께 누르면 종성으로 인식되어 입력 할수 있습니다. 두벌식 사용자가 세벌식 오토마타를 테스트 하기 쉽게 하기 위해서 만든 자판 입니다.
도깨비불현상은 나타나지 않겠지만 쉬프트를 기존의 두벌식자판보다도 훨씬 많이 치므로 손이 많이 피곤해질 수 있습니다.



4.8 ?gaim에서 한글 입력할때 마지막 글자가 잘립니다. 이것은 ?gaim의 버그입니다. 이 문제를 해결하는 패치가 ?gaim의 SourceForge프로젝트 페이지에 여러번 등록 되었지만 아직 적용되지 않고 있습니다.

FreeBSD] FreeBSD의 커널을 내가 원하는 대로 초간단...



안녕 하세요? 조성준입니다.


먼저 간단하게 QUICK


cd /usr/src/sys/i386/conf

cp GENERIC MYKERNEL

vi MYKERNEL



# 커널 옵션보기

# http://www.kr.freebsd.org/handbook-new/kernelconfig-config.html



/usr/sbin/config MYKERNEL


cd ../../compile/MYKERNEL


make depend ; make ; make install


cd /usr/src

make buildkernel KERNEL=MYKERNEL ; make installkernel KERNEL=MYKERNEL



# 만약에 오류가 밸생시

http://www.kr.freebsd.org/handbook-new/kernelconfig-trouble.html

FreeBSD] FreeBSD에서 Zend Optimizer 설치하기.



작성자 : 쥬르

이글은 FreeBSD 5.4R 을 기준으로 설명하며, FreeBSD Q&A Mailing에서 나온 내용을 토대로 작성한것임을 밝힙니다.

OS : FreeBSD 5.4
Web Server : Apache 2.x( Ports로 설치)
PHP : PHP 5.x (ports로 설치)

위와 같은 환경에서 ZendOptimizer를 설치 하려고 하면 라이센스 상의 문제로 인해서 설치가 되지 않습니다. 해당 시스템의 /usr/ports/devel/ZendOptimizer 로 이동한 뒤

        # cat Makefile | egrep PORTVERSION

으로 해당 포트에서 사용하는 ZendOptimizer의 버전을 확인한 뒤  

http://www.zend.com  에서 해당 버전의 파일을 받아서 /usr/ports/distfiles  받아 놓는다. 그 다음 해당 포트 (/usr/ports/devel/ZendOptimizer)로 이동해서

        # make install clean

을 실행해서 설치를 하면 된다.

ZendOptimizer-2.5.7-freebsd5.1-i386.tar.gz  의 경우 정상적으로 설치가 되면 아래 메시지가 출력이 되면서  
       [Zend]
       zend_optimizer.optimization_level=15
       zend_extension_manager.optimizer="/usr/local/lib/php/20020429/Optimizer"
       zend_extension_manager.optimizer_ts="/usr/local/lib/php/20020429/Optimizer_TS"
       zend_extension="/usr/local/lib/php/20020429/ZendExtensionManager.so"
       zend_extension_ts="/usr/local/lib/php/20020429/ZendExtensionManager_TS.so"

이 내용을 php.ini 에 추가하라는 메시지도 보입니다.
이후 서버를 재시작(apache)하고 phpinfo()로 확인을 해도 ZendOptimizer가 올라오질 않는데 이런 경우, 다음 파일을 편집합니다. 파일이 없다면 새로 생성해도 됩니다. (현재 사용하는 FreeBSD 5.4R에는 아래의 파일이 없습니다.)

/etc/libmap.conf

이 파일에 다음 코드를 삽입합니다.

[/usr/local/lib/php/20041030/ZendExtensionManager.so]
libm.so.2 libm.so

시스템을 재부팅 시켜 줍니다.
그리고 phpinfo()로 확인하면 ZendOptimizer가 올라오는것이 확인 가능합니다.

FreeBSD] FreeBSD에서 HDD fail일때 에러메시지에 대해



제 목 : FreeBSD에서 HDD fail일 때 에러메시지에 대해
글쓴이 : 좋은진호(truefeel, http://coffeenix.net/ )
글쓴날 : 2004.09.30(목)


다음은 dmesg 명령을 했을 때 결과이다.
 

spec_getpages:(#da/0x20005) I/O read failure: (error=6) bp 0xde8b9244 vp 0xf980a900
        size: 7168, resid: 7168, a_count: 7060, valid: 0x0
        nread: 0, reqpage: 0, pindex: 0, pcount: 2

spec_getpages:(#da/0x20005) I/O read failure: (error=6) bp 0xde8b9244 vp 0xf980a900
        size: 7168, resid: 7168, a_count: 7060, valid: 0x0
        nread: 0, reqpage: 0, pindex: 0, pcount: 2

 

1) 위의 에러 메시지 중에 #da/0x20005 는 device명으로 /dev 디렉토리에서 major, minor number를 보고 어떤 HDD가 fail인지 알 수 있다.

  ls -l /dev/da* 로 확인해보면 /dev/da0s1f 파티션에서 난 에러임을 알 수 있다.


 crw-r----- 2 root operator  13, 0x00020002 6 30 22:13 /dev/da0s1
 crw-r----- 2 root operator  13, 0x00020000 6 30 22:13 /dev/da0s1a
 crw-r----- 2 root operator  13, 0x00020001 6 30 22:13 /dev/da0s1b
 crw-r----- 2 root operator  13, 0x00020002 6 30 22:13 /dev/da0s1c
 crw-r----- 2 root operator  13, 0x00020003 6 30 22:13 /dev/da0s1d
 crw-r----- 2 root operator  13, 0x00020004 6 30 22:13 /dev/da0s1e
 crw-r----- 2 root operator  13, 0x00020005 6 30 22:13 /dev/da0s1f
 ... 생략 ...

 

2) error=6는 에러 번호로 /usr/src/sys/sys/error.h 에 정의되어 있다.
  자주 나오는 에러 코드는 5, 6, 22 정도

#define EIO       5        /* Input/output error */
#define ENXIO      6        /* Device not configured */
#define EINVAL     22       /* Invalid argument */


참고로 /usr/src/sys/miscfs/specfs/spec_vnops.c 파일을 보라.
         

FreeBSD ] FreeBSD Update(운영체제 소스 업데이트하기)



운영체제 소스 업데이트

* cvsup을 이용하여 운영체제 소스를 업데이트 한다.

# cat  /usr/local/user_bin/cvs_update.sh


내용 =================================

#!/usr/local/bin/bash

CVS_PRO=/usr/local/bin/cvsup
SUPFILE_DIR = /usr/local/etc/cvsup
$CVS_PRO -g -L 2 $SUPFILE_DIR/statble-supfile
$CVS_PRO -g -L 2 $SUPFILE_DIR/ports-supfile


* stable-supfile, ports-supfile을 미리 설정해야 한다.


/etc/make.conf설정

* /etc/make.conf 는 시스템을 컴파일하거나 업데이트할때 필요한 옵션을 설정하는 파일이다.

/etc/defaults/make.conf 파일에 쓸 수 있는 모든 항목이 열거되어 있는데 사용자가 바꾸고자 하는 파일은 /etc/make.conf 에 적용하면 된다.


* diff -r /etc/defaults/make.conf /usr/src/etc/defaults/make.conf  =>바뀐부분 확인


내용=======================================

 # grep -v ^# /etc/make.conf

 CPUTYPE=i686
 CFLAGS= -O -pipe
 BDECFLAGS=      -W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align
                 -Wcast-qual -Wchar-subscripts -Winline
                 -Wmissing-prototypes -Wnested-externs -Wpointer-arith
                 -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings

 NO_FORTRAN=     true    # do not build g77 and related libraries
 NO_I4B= true    # do not build isdn4bsd package
 NO_LPR= true    # do not build lpr and related programs
 NO_OPENSSH=     true    # do not build OpenSSH
 NO_SENDMAIL=    true    # do not build sendmail and related programs
 NOGAMES=        true    # do not build games (games/ subdir)
 NOPROFILE=      true    # Avoid compiling profiled libraries
 NOUUCP= true    # do not build uucp related programs
 SUP_UPDATE=     yes
 SUP=            /usr/local/bin/cvsup
 SUPFLAGS=       -g -L 2
 SUPHOST=        cvsup.kr.FreeBSD.org
 SUPFILE=        /usr/local/etc/cvsup/stable-supfile
 PORTSSUPFILE=   /usr/local/etc/cvsup/ports-supfile
 SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2
 SENDMAIL_LDFLAGS=-L/usr/local/lib
 SENDMAIL_LDADD=-lsasl2
 KERNCONF=FBMyKernel


* openssh, sendmail을 운영체제에 들어있는것을 사용하지 않고 별도로 포트에 있는것 설치하여 사용. 보안업데이트를 편하게 하기 위한 방법입니다. openssl 은 운영체제에 있는것을 사용하였구요.  sendmail은 별도로 설치하여 사용하므로 위의 sendmail옵션은 불필요할 것입니다.



업데이트하기

* object파일 지우기

  # cd /usr/src && make clean

* make -j 8 world :

  두가지 작업으로 나윈다. make build world는 소스코드를 /usr/obj 디렉토리에 컴파일한다. 성공적으로 끝날경우 make installworld를 하게 되면 컴파일된 바이너리를 적당한 위치에 설치한다. (-j옵션을 이용하여 SMP 기능을 사용할 수 있다.)

* -j 는 동시에 몇개의 작업을 수행할 것인지 정하는 옵션으로 SMP일 경우 8이상의 값을 주어 시간을 단축할 수 있다.

* P-3, 메모리 1G인 서버사양에서 make world에 1:30분정도 소요되었다.



컴파일 후 작업

*mergemaster 스크립트를 이용하여 /etc 디렉토리의 설정파일을 업그레이드 한다.

* /dev 디렉토리 업데이트

  # cd /dev/ ; sh MAKEDEV all

* /stand 디렉토리 업데이트

  # cd /usr/src/release/sysinstall; make all install

* 커널 컴파일 및 리부팅



 커널 컴파일하기

* 설정파일 작성

 # cd /usr/src/sys/i386/conf

 # cp GENERIC FBMyKernel

 # FBMyKernel 편집

 # cd /usr/src

 # make kernel KERNCONF=FBMyKernel (KERNCONF 는 /etc/make.conf에 지정됨)

    make kernel은 make buildkernel과 make installkernel 로 구성됨

 # reboot

 ....

 리부팅후

 # uname -a 로 확인