리눅스 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
IP alias
이 기능을 사용하기 전에 먼저 커널에 ip_alias.o 모듈이 올라가 있는지 확인

lsmod 로 확인 가능

1.
/etc/sysconfig/network-script/ifcfg-eth0  파일을
/etc/sysconfig/network-script/ifcfg-eth0:0 이라는 이름으로 복사


2.
/etc/sysconfig/network-script/ifcfg-eth0:0
파일을 alias 할 IP 와 기타 정보를 수정하고, DEVICE=eth0:0 으로 수정


3.
/sbin/ifconfig eth0:0 up  명령을 실행한다음
/sbin/ifconfig 명령으로 확인


한번설정해 주시면 리부팅후에도 ifcfg-eth0:0 파일이 존재하는한 계속 적용
2007/09/01 23:25 2007/09/01 23:25
카카카 밑에보듯이 2001년에 어딘지모르는곳에서 퍼온글......
요샌 이정도는 기본세팅으로 되려낭....요샌 리눅스만저본지가 오래되서리..-0-;;;;


리눅스 설치후 초기보안 설정법
--------------------------------------------------------------------------------


작성일자 : 2001년 06월 30일
작성자 : yjchung
조회수 : 25655

--------------------------------------------------------------------------------
보안에 대한 약간내용을 정리해 보았습니다.

1. 서버로 사용할 예정이라면 X-Window는 설치하지 않는다
2. ps aux 또는 ps auxc로 확인하여 불필요한 데몬은 띄우지 않는다.
기본적으로 portmap / identd / atd / lpd /gp -t / xfs 등은 삭제.
3. /etc/rc.d/rc3.d에서 불필요한 서비스는 삭제한다.
4. 불필요한 계정은 삭제 한다.
ftp, xfs, adm, lp, newes, gopher를 /etc/passwd와 /etc/group 에서 주석처리 또는 userdel uid, groupdel gid를 하면 된다.
#userdel adm
#userdel lp
#userdel sync
#userdel shutdown
#userdel halt
#userdel news
#userdel uucp
#userdel operator
#userdel games
#userdel gopher
#userdel ftp (anymous FTP server를 운영하지 않으면 삭제 한다.)
#groupdel adm
#groupdel lp
#groupdel news
#groupdel uucp
#groupdel games
#groupdel dip
#groupdel pppusers
#gropudel slipusers

5. 퍼미션 설정변경-몇몇 중요한 설정 파일의 퍼미션을 변경하영 일반 유저들의 접근을 제한한다.

chmod 700 /etc/exports
chmod 700 /etc/fstab
chmod 700 /usr/bin/chage
chmod 700 /usr/bin/wall
chmod 755 /usr/bin/man
chmod 700 /usr/bin/chfn
chmod 700 /usr/bin/write
chmod 700 /usr/sbin/usernetctl
chmod 700 /bin/mount
chmod 700 /bin/umonut
chmod 700 /sbin/netreport 로 사용을 불가능하게 한다.

chattr +i /etc/fstab와 같이 속성에 Lock을 걸어 파일을 수정 할 수 없게 한다.

6. 시스템 관련 명령어를 특정 그룹에서만 사용가능 하도록 설정
(특정적인 사용자에게만 권한을 줄 수 있다.)
chmod 750 /bin/ps
chmod 750 /bin/netstat
chmod 750 /bin/dmesg
chmod 750 /bin/df
chmod 750 /usr/bin/who
chmod 750 /usr/bin/finger
chmod 750 /usr/bin/last
chmod 750 /usr/bin/top
chmod 750 /usr/bin/w

chgrp wheel /bin/ps
chgrp wheel /bin/netstat
chgrp wheel /bin/dmesg
chgrp wheel /bin/df
chgrp wheel /usr/bin/w
chgrp wheel /usr/bin/who
chgrp wheel /usr/bin/finger
chgrp wheel /usr/bin/last
chgrp wheel /usr/bin/top

- /etc/group을 열어
wheel:x:10:root,tt 와 같이 tt 라는 계정을 wheel 그룹에 추가 한다.
그러면, root를 포함하여 wheel 그룹에 속한 tt라는 계정만이 위 명령어를 수행할 수 있다.
2007/09/01 23:24 2007/09/01 23:24
한때 서버랍시고 집에다가 리눅스켜놓고 도라댕길때 외부에서 갑자기 재부팅시키는 일이생겼는데
아이피가 바껴버리는 바람에....난감했다는....ㅡㅡ;;;;

아래 내용을 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