리눅스 Kernel Compile

운영체제/Unix/Linux 2007/09/01 23:26 posted by zekill
이건 어디서 본 자료인지 역시 나지 않는다....ㅜㅜ
이것도 꽤 된 자료같아서리.....뭐 정리삼아 올려놓으니 실제 커널 컴파일 하실분은
확실히 알아보시고 하세용...전 책임 못짐...-0-a

==============================================
Kernel Compile

  배경지식

기본적으로 커널 소스의 디렉토리는 /usr/src/linux 이다.
커널 컴파일 방법에는 3가지가 있다
make config -> 옵션을 잘못 선택하면 처음부터 다시해야하는 단점이 있다.
make menuconfig -> 가장 추천하는 방법(단, ncurses가 있어야 한다.)
make xconfig -> X에서 볼수 있다.( 화려하다. 그냥 구경한번 해보길...)
시스템 사양을 잘 알아야 한다.(이더넷 카드, 사운드 카드, CPU가 몇개(?)인지등...)
어떠한 환경에서 사용할건지 결정하여야 한다.(커널의 최적화를 위해...)
Kernel Compile Option
꼭 주의깊게 살펴볼것!!(나에게 어떤 옵션이 필요한지 볼것)
제 2회 리눅스 공동체 세미나 자료에서 추출(이규호님께 감사)
커널 2.4 Intro중 커널옵션설정
일반적인 데스크탑 PC사양에서 필요로하는 커널옵션들을 설명하고있다.
  따라하기

커널 소스를 받는다.( http://www.kr.kernel.org/pub/linux/kernel/)
소스를 /usr/src 방으로 옮긴다.(예: mv linux-2.2.12.tar.gz /usr/src )
전에 있던 커널소스 /usr/src/linux 디렉은 다른이름으로 바꾸던지 지워라.(예: mv linux linux-2.2.11)
만약 linux라는 이름으로 심벌릭 링크되어있다면 링크만 해제하라.(예: rm linux)
커널 소스를 푼다.(예: tar xvvzf 커널버전.tar.gz 또는 tar xvvIf 커널버전.tar.bz2)
linux라는 디렉토리가 생겼을 것이다. 그 디렉으로 들어간다.( cd linux )
# make menuconfig ( 현재 위치 /usr/src/linux )
커널 컴파일 옵션을 보고 시스템에 맞는걸 선택한다.(중요하다!)
# make clean (예전 오브젝트 파일 제거)
# make dep (의존성을 검사)
# make bzImage (커널 이미지를 압축생성한다.)
# mv arch/i386/boot/bzImage /boot/vmlinuz-커널버전 (예: mv arch/i386/boot/bzImage /boot/vmlinuz-2.2.12)
# mv System.map /boot/System.map-커널버전 (예: mv System.map /boot/System.map-2.2.12)
# vi /etc/lilo.conf ( 리로를 편집한다 )
     boot=/dev/hda
     map=/boot/map
     install=/boot/boot.b
     prompt
     timeout=50
     image=/boot/vmlinuz-2.2.12 -> 새로운 커널이미지를 linux라는
     label=linux              ?   레이블로 한다.
     root=/dev/hda1
     read-only

     image=/boot/vmlinuz-2.2.11 -> 혹시나 모를 커널 패닉에 대비하여     
     label=old                     예전 커널을 old란 레이블로 해놓는다.
     root=/dev/hda1                (예전 버전이 2.2.11일때)
     read-only
# /sbin/lilo ( lilo.conf의 내용을 인식시켜 주기위해 )
여기까지 커널 컴파일은 과정은 끝.
  모듈 인스톨 하기

커널 옵션에서 모듈(M)으로 선택한것을 컴파일 하기위해
# cd /usr/src/linux
# make modules
# make modules_install
위와같이 하면 '/lib/modules/커널버전' 디렉에 모듈들이 위치한다.


Kernel Patch


패치란 매번 커널이 바뀔때 마다 13MB가 넘는 커널 소스를 다시 받을 필요없이 바뀐 차이점만 담고있는 작은 용량의 파일로 커널을 업하는걸 말한다.
장점 : 적은용량으로 패치파일로 커널을 금방 업 할 수 있다.
단점 : 중간의 한 단계를 건너 뛸 수 없다. 예를들어 현재 커널 버전이 2.2.10 인데 바로 2.2.12로 패치 할 순없다.(꼭 2.2.11을 패치하고 나야 된다)
  따라하기

패치 파일을 다운받아 bzip2이든 gzip으로 압축되어있던지 간에 압축을 푼다.
압축을 푼후 /usr/src/linux 방으로 옮긴다.
# patch -p1 < 패치파일?
에러 없이 넘어가면 다음은 커널 컴파일 과정과 같다.
만약 압축을 풀지않고 패치하려면 gzip 또는 bzip2에 따라 다음과 같이한다.
# gzip -cd 패치파일.gz | patch -p1(물론 패치파일의 위치는 /usr/src/linux)
# bzip2 -cd 패치파일.bz2 | patch -p1
2007/09/01 23:26 2007/09/01 23:26
한때 서버랍시고 집에다가 리눅스켜놓고 도라댕길때 외부에서 갑자기 재부팅시키는 일이생겼는데
아이피가 바껴버리는 바람에....난감했다는....ㅡㅡ;;;;

아래 내용을 rc추가하면 부팅시마다 자동으로 아이피 메일로 전송


DATE="ip_address `date`";export DATE; ifconfig | mail zekill@shinbiro.com -s "$DATE"
2007/09/01 23:24 2007/09/01 23:24

postgresql 리눅스에 설치

운영체제/Unix/Linux 2007/09/01 23:23 posted by zekill
예전에 첨 설치해보면서 적어둔거...-0-;;;

========================================

adduser postgres
su - postgres

mkdir /usr/local/pgsql
mkdir /opt/pgsql/data

##권한설정을 postgres로..

./configure --prefix=/usr/local/pgsql --enable-syslog
( --with-java <==jdk 설치후에 가능옵션)
gmake
gmake install

/etc/ld.so.conf 파일에 다음 한 행을 추가한다.
/usr/local/pgsql/lib
ldconfig <==실행

##bashrc파일 수정
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
PGLIB=/usr/local/pgsql/lib
PGDATA=데이터저장경로
export PATH MANPATH PGLIB PGDATA

source .bashrc <-실행


/usr/local/pgsql/bin/initdb -D 데이터저장경로
/usr/local/pgsql/bin/postmaster -D 데이터저장경로 > logfile 2>&1 &
(7.1.X 이상에서는 /usr/local/pgsql/bin/pg_ctl -D 데이터저장경로 -l logfile start )
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
2007/09/01 23:23 2007/09/01 23:23

MySQL 리눅스에서 세팅

운영체제/Unix/Linux 2007/09/01 23:23 posted by zekill
뭐 크게 달라진거 없다면 에전처럼 해도 되거찌 뭐...안대면 그냥 메녈보면서 하고..-0-;;;;
요즘엔 캐릭터셋은 urf-8로......

# MySQL

mkdir /home/db
./configure --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/home/db
make ; make install
mysql_install_db (루트로 실행중이라면 데이터저장폴더에 가서 mysql권한으로 바꾸라~몽땅)

./safe_mysqld  --language=korean &    //데몬을 시작


mysqladmin -u root -p password '뉴패스워드'
패스워드 묻는곳에 한번 엔터

mysql -u root -p (디비접속 테스트해보기)

참고) 외부클라이언트로 디비에 접속하여 관리하려면 mysql디비의 user테이블 안에
호스트를 '%' 나 접속할 아이피 또는 네임을 저장하기 '%'는 모든걸 뜻함.

#자동실행
cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld -----//데몬을 복사
chmod  755  /etc/rc.d/init.d/mysqld
chown  mysql.mysql  /etc/rc.d/init.d/mysqld
ntsysv 해서 mysqld 를 체크하시면 부팅될때마다 자동 실행
2007/09/01 23:23 2007/09/01 23:23