iSCSI설정하기

Linux/Tip & Tech 2016. 7. 11. 17:44

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

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows  : Windows 7 Pro
설치된 CentOS Server  : CentOS 6.8
설치된 VMware Program : VM workstation 11.0.0

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


-- iSCSI Target 설정 --


1. iSCSI 를 이용하기 위해 패키지 설치

  - 패키지명 : scsi-target-utils


2. 패키지 설치 완료 후 서비스 자동화 및 데몬 실행

  - # chkconfig --list | grep tgt

  - # chkconfig --level 345 tgtd on

  - # /etc/rc.d/init.d/tgtd restart


3. iSCSI target 으로 설정하기

CMD : tgtadm

Info : --lld

       --mode

       --op

       --tid

       --targetname


 a. iSCSI 설정 확인하기

  - # tgtadm --lld iscsi --mode target --op show


 b. 신규 Target 설정

  - # tgtadm --lld iscsi --mode target --op new --tid 1 --targetname nas0.net2free.net:disk1


 c. 신규 Target 내 디스크(LUN) 할당

  - # tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/sda


 d. 신규 Target 내 권한 설정

  - # tgtadm --lld iscsi --mode target --op bind --tid 1 -I ALL       (전체 허용)

  - # tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 10.1.1.0/24    (네트웍 대역폭 허용)





DDOS_Check_All.zip


AND

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

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows  : Windows 7 Pro
설치된 CentOS Server  : CentOS 6.5
설치된 VMware Program : VM workstation 10.0.0

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

가상화 기반(VMware 와 같은) DHCP 환경의 리눅스 서버에서 자주 발생되는 현상으로

/etc/resolv.conf 파일을 수정하고 저장한뒤 서버 리부팅이나 network restart시

resolv.conf 파일의 내용이 초기화 되는 현상이 확인됩니다.


이 내용은 버그 및 오류가 아니라는 부분은 분명히 언급하고 지나가야 될 듯합니다.

/etc/resolv.conf 파일 상단에 보면 아래와 같은 주석 문구가 있는데 이 내용은


; generated by /sbin/dhclient-script


DHCP를 이용하여 IP를 자동으로 할당 받을 때 '/sbin/dhclient-script' 명령에 의해

/etc/resolv.conf 파일이 재생성되게 되어있다는 뜻으로 해석됩니다.


따라서 오류가 아니므로 그대로 사용하셔도 무방하나 /etc/resolv.conf 파일이 자주

재생성되면 귀찮아 질 수 있고, 실 운영서버에서는 치명적인 오류가 될 수 있으므로

이를 방지하기위해 /sbin/dhclient-script 파일 내용에서 'make_resolv_conf’함수를

호출하는 부분이나 함수부분을 찾아 주석 처리해주면 됩니다.


# vi /sbin/dhclient-script


     97번 행에서 정의된 'make_resolv_conf()' 함수 부분을 조정하셔도 되고

     아래와 같이 ip설정을 맞추기 위한 부분의 함수에서 'make_resolv_conf()' 함수 호출 부분을 주석처리 해주셔도 됩니다.


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

    309 dhconfig() {

....

    464     if [ -n "${new_host_name}" ] && need_hostname; then

    465         hostname ${new_host_name}

    466     fi

    467

    468     #make_resolv_conf

    469

    470     if [ -n "${DHCP_TIME_OFFSET_SETS_TIMEZONE}" ] &&

    471        [[ "${DHCP_TIME_OFFSET_SETS_TIMEZONE}" = [yY1]* ]]; then

    472         if [ -n "${new_time_offset}" ]; then

    473             # DHCP option "time-offset" is requested by default and should be

    474             # handled.  The geographical zone abbreviation cannot be determined

    475             # from the GMT offset, but the $ZONEINFO/Etc/GMT$offset file can be

    476             # used - note: this disables DST.

    477             ((z=new_time_offset/3600))

    478             ((hoursWest=$(printf '%+d' $z)))


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

    538 dh6config() {

    539     case "${reason}" in

    540         BOUND6)

    541             if [ -z "${new_ip6_address}" ] &&

    542                [ -z "${new_ip6_prefixlen}" ]; then

    543                 exit_with_hooks 2

    544             fi

    545

    546             add_ipv6_addr_with_DAD

    547

    548             #make_resolv_conf

    549             ;;

    550

    551         RENEW6|REBIND6)

    552             if [ -n "${new_ip6_prefixlen}" ] &&

    553                [ -n "${new_ip6_address}" ] &&

    554                [  ! "${new_ip6_address}" = "${old_ip6_address}" ]; then

    555                 add_ipv6_addr_with_DAD

    556             fi

    557

    558             if [ ! "${new_dhcp6_name_servers}" = "${old_dhcp6_name_servers}" ] ||

    559                [ ! "${new_dhcp6_domain_search}" = "${old_dhcp6_domain_search}" ]; then

    560                 make_resolv_conf

    561             fi

    562             ;;

    563



AND

이유없이 디스크 유틸이 튀거나 '/var' 경로가 Full 이 자주 되는 경우, 디스크 성능에 영향을 받게 되는 경우 등

Cron 에 의한 스케쥴이 상당 수 영향을 미칠 수 있으므로 꼭 확인하세요.


리눅스 설치 시 기본적으로 등록되는 두 가지 크론 스케쥴이 있을 수 있으니 꼭 확인하시길!!

Default Cron Jobs (CentOS 6.X 버전의 경우)
OS 설정에 따라 다르겠지만, CentOS를 설치하게 되면 다음과 같이 배치 작업이 등록이 되어 있습니다.

$ cat /etc/anacrontab

# /etc/anacrontab: configuration file for anacron

.. 중 략 ..

#period in days delay in minutes job-identifier command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly @monthly 45 cron.monthly nice run-parts /etc/cron.monthly $ cat /etc/crontab

.. 중 략 ..

# For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed

위처럼 'anacrontab, crontab' 에 의해서 시스템에 기본 적용된 스크립트들에 의한 스케쥴링 작업이 진행되게 되며,

이에 따라 '/etc/cron.XXXXX' 의 경로에 있는 내용이 동작하게 됩니다.


해당 스케쥴에 따라서 기본 스케쥴링으로 아래의 두 항목이 동작하게 되는데, 이 때 데이터베이스의 트랜잭션 로그

혹은 데이터 파일 쪽 디스크에 영향을 줄 수 있습니다.

/etc/cron.XXXXX/mlocate.cron /etc/cron.XXXXX/makewhatis.cron

1. mlocate
- 정의 : 파일 검색을 빠르게 검색하기 위해, 파일에 대한 색인 정보를 모아 데이터베이스를 만드는 역할
mloate.cron에 포함된 내용은 아래와 같습니다.

$ cat /etc/cron.daily/mlocate.cron
 
#!/bin/sh
nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "zfs" { print $2 }')
renice +19 -p $$ >/dev/null 2>&1
ionice -c2 -n7 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "$nodevs"

또한 이와 관련된 설정은 /etc/updatedb.conf 에 위치합니다.

$ cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs ...... sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /net /sfs /tmp ...... /var/tmp"

각 항목을 확인해보면

 * PRUNE_BIND_MOUNTS : '0, no, 1, yes' 중에서 사용가능하며 0=no, 1=yes 의 의미이기도함. 마운트된 경로를 탐색할 것인지 설정

 * PRUNEFS : 'updatedb' 가 탐색하지 않을 파일시스템 타입을 정의

 * PRUNENAMES : 'updatedb' 가 탐색하지 않을 파일명(확장자로도 이해할 수 있음)을 정의

 * PRUNEPATHS : 'updatedb' 가 탐색하지 않을 경로명을 정의


2. makewhatis
- 정의 : man에 관련된 내용을 신규 생성 또는 업데이트하며, '/var/cache/man/whatis' 파일이 없거나 '/usr/sbin/makewhatis' 파일이
 더 최신이라면 전체를 새로작성하며, 그외의 경우 증분으로 작성합니다.

## 일단위 크론잡
$ cat /etc/cron.daily/makewhatis.cron
#!/bin/bash
LOCKFILE=/var/lock/makewhatis.lock
.. 중략 ..
if [ ! -f /var/cache/man/whatis ] ||
   find /usr/sbin/makewhatis -newer /var/cache/man/whatis |grep -q .
then
        makewhatis -w
else
        makewhatis -U -w
fi
exit 0
'LOCKFILE' 항목에 따라 man 셋팅파일이 정의됨


AND

Kernel Parameter 조회하기

# cat /proc/sys/시스템정보명/세부정보명/설정파라미터명

 

Kernel Parameter 사용하기

* 커널 파라미터 설정파일 : /etc/sysctl.conf


* 커널 파라미터 설정 명령어

# sysctl [옵션] '변수 = 값'

(옵션)

a : 설정 확인

p : 파라미터 설정파일(/etc/sysctl.conf) 재적용

n : 변수 질의

w : 값 설정

 

 

명령어로 설정하는 예제)

# vi /etc/sysctl.conf 파일내 "net.ipv4.tcp_syscookies=1" 설정 후 # sysctl -p
또는
# sysctl -w net.ipv4.tcp_syscookies=1

※ echo 명령이나 vi 명령을 이용하여 '/etc/sysctl.conf' 파일에 적용하는 것을 권장한다.

  -> 추후 변경이 용이하며 내용증적이 남기때문에...

 


[ 권장 Parameter 설정 ] - 'echo" 를 이용한 방법을 권장

* ping 신호 차단
  - 모든 ping(icmp) 신호에 대한 응답 거부, [기본값 : 0]

# echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.icmp_echo_ignore_all=1

 

* broadcast로 보내는 ping 신호 차단
  - Broadcast 주소를 대상으로 한 ping 신호를 거부 (스머프 공격 방지) 

     # echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" >> /etc/sysctl.conf
     또는
     # sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

 

* TCP SYN Flooding 공격 차단
  - dos공격 방지를 위한 커널 값에서 차단

# echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.tcp_syncookies=1

 

* IP Spoofing 악용 차단
  - dos 공격의 소스 IP로 사용될 가능성을 차단 

# echo "net.ipv4.conf.default.rp_filter = 1" >> /etc/sysctl.conf    [기본값 : 0]

# echo "net.ipv4.conf.conf.rp_filter = 1" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.rp_filter = 1" >> /etc/sysctl.conf

# echo "net.ipv4.conf.eth0.rp_filter = 1" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.conf.default.rp_filter=1    [기본값 : 0]

# sysctl -w net.ipv4.conf.conf.rp_filter=1

# sysctl -w net.ipv4.conf.lo.rp_filter=1

# sysctl -w net.ipv4.conf.eth0.rp_filter=1

 

* 세션 종료시간 지정
  - 접속종료 후 세션 정보를 유지하는 시간(단위:초), [기본값 : 60] 

# echo "net.ipv4.tcp_fin_timeout = 10" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.tcp_fin_timeout=10

 

* TCP Keep Alive 시간조절
  - 접속 후 유후 대기 시간에 따른 세션 유지 가능 시간(단위:초), [기본값 : 7200] 

# echo "net.ipv4.tcp_keepalive_time = 1800" >> /etc/sysctl.conf
또는
# sysctl net.ipv4.tcp_keepalive_time=1800

 

* 서버 날짜/시간 정보 유출방지
  - 서버내 TimeServer 정보에 대한 유출 방지, [기본값 : 1] 

# echo "net.ipv4.tcp_timestamps = 0" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.tcp_timestamps=0


* IP source routing 차단
  - 라우팅 패킷을 허가 불가. 신뢰 호스트로 위장되는 것을 방지 (spoofing 공격 대비) 

# echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf

# echo "net.ipv4.default.accept_source_route = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.eth0.accept_source_route = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.accept_source_route = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.default.accept_source_route = 0" >> /etc/sysctl.conf
또는

# sysctl -w net.ipv4.conf.all.accept_source_route=0

# sysctl -w net.ipv4.default.accept_source_route=0

# sysctl -w net.ipv4.conf.eth0.accept_source_route=0

# sysctl -w net.ipv4.conf.lo.accept_source_route=0

# sysctl -w net.ipv4.conf.default.accept_source_route=0

 

* ICMP Redirect 차단(수신 패킷 차단)
  - 서버의 라우팅 경로를 확인하는 icmp redirect를 허용하지 않음

    (임의로 라우팅 테이블을 테이블을 변경할 수 없도록한다.) 

# echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf   [기본값 : 1]

# echo "net.ipv4.conf.eth0.accept_redirects = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.accept_redirects = 0" >> /etc/sysctl.conf

또는
# sysctl -w net.ipv4.conf.all.accept_redirects=0   [기본값 : 1]

# sysctl -w net.ipv4.conf.eth0.accept_redirects=0

# sysctl -w net.ipv4.conf.lo.accept_redirects=0


* ICMP Redirect 차단(발송 패킷 차단)
  - 서버에서 내보내는 icmp redirect 패킷을 허용하지 않음 

# echo "net.ipv4.conf.default.send_redirects = 0" >> /etc/sysctl.conf   [기본값 : 1]

# echo "net.ipv4.conf.eth0.send_redirects = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.send_redirects = 0" >> /etc/sysctl.conf

# echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.conf.default.send_redirects=0   [기본값 : 1]

# sysctl -w net.ipv4.conf.eth0.send_redirects=0

# sysctl -w net.ipv4.conf.lo.send_redirects=0

# sysctl -w net.ipv4.conf.all.send_redirects=0

 

* IP 패킷 로그 파일로 저장
  - 스푸핑, 소스 라우팅, 리다이렉트된 패킷에 대한 로그 기록 

# echo "net.ipv4.conf.all.log_martians = 1" >> /etc/sysctl.conf   [기본값 : 0]

# echo "net.ipv4.conf.eth0.log_martians = 1" >> /etc/sysctl.conf

# echo "net.ipv4.conf.lo.log_martians = 1" >> /etc/sysctl.conf

# echo "net.ipv4.conf.all.log_martians = 1" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.conf.all.log_martians=1   [기본값 : 0]

# sysctl -w net.ipv4.conf.eth0.log_martians=1

# sysctl -w net.ipv4.conf.lo.log_martians=1

# sysctl -w net.ipv4.conf.all.log_martians=1

 

 

[ 기타 Parameter 설정 ]

* SYN flooding 공격 대응
  - 정상적인 ACK 패킷이 아닌 경우 backlog queue 에 저장하지 않거나 Queue 사이즈를 늘임 

# echo "net.ipv4.tvp_max_syn_backlog = 1024" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.tvp_max_syn_backlog=1024


* Port 범위 설정
  - Well-know port 를 제외하고 local port로 사용가능한 범위를 지정 

# echo "net.ipv4.ip_local_port_range = 32768 61000" >> /etc/sysctl.conf
또는
# sysctl -w net.ipv4.ip_local_port_range=32768 61000


* IP forwarding 방지
  - 현재 서버를 통한 포워딩을 허용불가 

# echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf

또는
# sysctl -w net.ipv4.ip_forward=0


 

AND

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

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows  : Windows 7 Pro
설치된 CentOS Server  : CentOS 6.5
설치된 VMware Program : VM workstation 10.0.1

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

 

CentOS 를 사용하다보면 NetworkManager 에 의해서 SYSTEM 상에서 변경된 NIC 정보를 받아올 수 없어 "Auto-eth"가

발생하는 경우가 상당 수 있습니다.

 

그런 경우 Auto-eth 로 사용하면 "ifconfig" 명령을 치는 경우에도 고정값이 없으므로 확인하기 번거로울 때가 종종 있습니다.

아래의 내용을 이용하여 "eth0" 또는 다른 명칭으로 강제설정을 해보도록 하죠.!!! Follow ME~!

 

우선 시스템상에 입력된 Mac Address 를 알아야겠죠???

아래에 기재된 2개의 NIC Mac Address 를 확인하면 서로 다르기 때문에 Auth-eth 가 발생되는 것을 알 수 있습니다.

ㄱ. VM-Ware 내 Mac Address : 가상머신내 설정편집에서 NIC 부분 주소를 확인

ㄴ. Linux 내 Mac Address : /etc/sysconfig/network-scripts/ifcfg-XXXXX 파일내 "HWADDR" 항목

 

초기화를 진행하는 방법도 있고, 초기화를 하지 않고 강제로 적용하는 방법도 있지만 가능한 원본을 삭제하지

않는 것이 관리자의 소임이므로 강제적용법으로 알려드립니다.

 

우선 Windows VM-ware 에서 확인된 NIC Mac Address 정보를 확인 후 메모해두시기 바랍니다.

아래의 예제는 임의로 작성된 제 Mac Address 이므로 여러분들 정보에 맞게 수정하여 사용하셔야 합니다.

제 Mac Address 가 "00:50:56:82:30:16" 이라고 가정하겠습니다.

 

리눅스에서는 아래의 스크린샷과 같이 출력되고 있다고 보고 수정을 하도록 하겠습니다. 

[ "/etc/sysconfig/network-scripts/ifcfg-eth0" File]

 

보시면 기존 Mac Address 가 입력해야 되는 부분과 다르므로 수정을 합니다.

해당 파일의 수정할 곳은 2군데 입니다.

 

또한, 기존에 사용하던 NIC Mac Address 가 저장되어서 "eth0" 라는 이름을 갖도록 설정하는 곳이

"/etc/udev/rules.d/" 경로에서  "70-persistent-net.rules" 파일에 지정되어 있습니다.

아래와 같이 해당 파일의 내용을 수정합니다.

 

 

 

모든 작업이 완료되고 나면 시스템을 재부팅해서 NIC 가 정상적으로 동작하는지 확인하시면 됩니다.^^

참~~~ 쉽죠잉~~!!!

AND

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

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows  : Windows 7 Pro
설치된 CentOS Server  : CentOS 6.7
설치된 VMware Program : VM workstation 10.0.0

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

리눅스를 처음 공부하고 배우다보면 패키지를 설치하기 위한 Command 로써 'rpm' 을 배우게 되며,

rpm 을 사용하다보면 dependency(이하 '의존성') 로 인해 설치가 번거로운 부분이 많이 발생합니다.


rpm 파일의 의존성을 해결하여 설치나 업그레이드를 편리하게 가능하도록 제공하는 것이 "YUM" 이라는

패키지 관리자가 있으나 이 것 또한 Repository 라고 하는 패키지 제공 서버와 통신이 되어야 한다는

전제조건이 필요합니다.


아래의 내용은 Repository Server 를 구성하는 방법과 Client 에서 Repo 를 설정하여 해당 서버와 통신이

가능하도록 설정하는 내용을 안내하고 있습니다.


- Repository Server -

1. Repository Server 구축을 위한 패키지

  - createrepo

-- 의존성 : deltarpm, python-deltarpm

 

  - python-urlgrabber

 

  위 두개 패키지를 설치합니다.

 

 

2. repository 로 사용될 디렉터리를 설정하고 rpm 파일들을 업로드 및 추가해둡니다.

  ※ 아래의 내용은 [ /cent/repo ] 경로를 repository 경로로 사용합니다.

  - #createrepo /cent/repo/

 


3. Repository 설정 후 각 RPM 파일들을 어떤 서비스로 제공하는가에 따라서 필요한 서비스를 동작시켜줍니다.

  - FTP : vsftpd 또는 proftpd 와 같은 파일전송 서비스를 동작시켜둠. (#netstat -lntup | grep -i ftp 로 확인)

  - WEB : apache 또는 Tomcat 과 같은 웹 서비스를 동작시켜둠. (#netstat -lntup | grep 80 로 확인)

 



- Client -

Client 가 리눅스라고 가정하고 진행합니다.

'/etc/yum.repos.d/' 경로아래로 "Name.repo" 파일 생성

(※ 파일명은 원하는 내용으로 정해도 되나 확장자로 쓰이는 ".repo" 부분은 꼭 마지막에 지정되어야 합니다.)

 

# vi /etc/yum.repos.d/Name.repo

== Name.repo ==

[DefaultName]                                                  - noose_Repo, GC_repo 등 원하는 내용을 입력합니다.

name = Yum repolist Name                                 - 클라이언트에서 yum list, yum repolist 명령으로 출력되는 Repo Server 의 이름입니다.

baseurl = URL... (IP or Domain)                            - 서버측에서 제공하는 서비스에 맞추어 내용을 입력하여야 합니다.

                                                                      (ftp 로 제공 : ftp:///ServerIP:/cent/repo  , Web 으로 제공 : http:///ServerIP:/cent/repo)

gpgcheck = 0                                                   - RPM 패키지 제공 해쉬값에 대한 체크 ('0' 으로 두어 체크하지 않아야 오류가 적음)

enabled = 1                                                     - Client 에서 현재 설정하는 Repo 파일의 사용여부

 

 

#yum repolist 또는 yum list 로 확인

 

#yum install RPM 또는 #yum update RPM 으로 테스트


즐겁게 세팅해보세요^^

AND

DNS 를 구성하다보면 IPv4 Address 를 사용하는 A type 및 IPv6 Address 를 사용하는 AAAA type,

그리고 Reverse 형식을 지원하는 PTR type 등 여러 record 를 지원하는데요.. 아래의 표에서 각각의

레코드 타입을 확인할 수 있습니다.

p.s 그림은 클릭하면 원본사이즈로 보실 수 있어요~!!

 

 

AND

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

[ 시스템 설정을 위한 내용 ]

설치된 Main OS : Windows 7 Pro K SP1

설치된 VMware : VMware Workstation 10

설치된 CentOS Server  : CentOS 6.5

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

해당내용은 가상 머신 상에서 진행한 내용으로 설치된 정보가 다소 다를 수 있습니다.

참고하시기 바라오며, 패키지의 경우는 아키택처와 버전에 영향을 받으니 자신의 Linux Server 의 필요한 아키택처와

버전을 꼭 확인하여 진행하시기 바랍니다.

 

우선적으로 Linux Server 를 사용하면 자원의 절약 및 속도제어 부분에서 좋은 CLI 환경을 선호하는 경우가 많습니다.

다만, 솔루션이나 특정 프로그램을 설치하는 경우 그래픽 환경만 지원을 하는 경우가 발생할 수 있습니다.

그래서 CLI 환경에서 GUI 환경으로 구성하기 위해서는 필요한 패키지를 설치하여야 하는데요... 간단히 YUM 을

이용하여 작업하면 훨씬 수월하지만 YUM 이 안되는 환경에서도 Linux 설치시디를 이용하여 진행할 수 있게

각 패키지 정보를 아래에 나열해드립니다. (의존성에 대한 부분은 언급되지 않았습니다.)

 

################################ 필 수 설 치 영 역 ##################################

=========================================================================== "X-Windows" RPM group ===
* xorg-x11-server-Xorg
* xorg-x11-xinit
* xorg-x11-xauth
* xorg-x11-drivers
* xorg-x11-utils
* xorg-x11-server-utils
* hal
* plymouth-system-theme
* wdaemon
* wacomexpresskeys
* spice-vdagent
* firstboot
* glx-utils
* xvattr

 


============================================================================== "Desktop" RPM group ===
* nautilus
* control-center
* gvfs-smb
* xdg-user-dirs-gtk
* gnome-power-manager
* alsa-plugins-pulseaudio
* at-spi
* gdm
* notification-daemon
* NetworkManager
* NetworkManager-gnome
* polkit-gnome
* gnome-session
* gnome-terminal
* gnome-panel
* gvfs-fuse
* metacity
* gnome-screensaver
* yelp
* dbus
* gvfs-archive
* gdm-user-switch-applet
* control-center-extra
* eog
* gnome-packagekit
* gok
* gnome-media
* gnome-vfs2-smb
* openssh-askpass
* pulseaudio-module-x11
* pulseaudio-module-gconf
* gnome-applets
* orca
* vino
* gdm-plugin-fingerprint


======================================================= "GNOME Desktop Environment" RPM group ===

 ※ RedHat6.X 이전 경우 설치하려는 그룹 패키지이며, 상위에 있는 "Desktop" 그룹패키지와 같은 역할을 한다.
###########################################################################################

 

################################ 선 택 설 치 영 역 ##################################

================================================================================= "Fonts" RPM group ===
※ 그래픽 환경인 경우 좀 더 깔끔한 폰트를 제공하는 패키지를 모아둔 그룹 패키지
* jomolhari-fonts
* wqy-zenhei-fonts
* dejavu-serif-fonts
* lohit-assamese-fonts
* lohit-bengali-fonts
* lklug-fonts
* dejavu-sans-mono-fonts
* liberation-serif-fonts
* thai-scalable-waree-fonts
* abyssinica-fonts
* liberation-sans-fonts
* lohit-kannada-fonts
* khmeros-base-fonts
* paktype-tehreer-fonts
* kurdit-unikurd-web-fonts
* tibetan-machine-uni-fonts
* liberation-mono-fonts
* lohit-devanagari-fonts
* vlgothic-fonts
* smc-meera-fonts
* lohit-gujarati-fonts
* paktype-naqsh-fonts
* cjkuni-uming-fonts
* sil-padauk-fonts
* lohit-punjabi-fonts
* dejavu-sans-fonts
* un-core-dotum-fonts
* lohit-tamil-fonts
* stix-fonts
* lohit-telugu-fonts
* madan-fonts
* lohit-oriya-fonts

 


=========================================================== "General Purpose Desktop" RPM group ===
※ 설치시 그래픽 환경을 이용하도록 (RunLevel 5) 설치한 경우와 유사하도록 설정하는 그룹 패키지
* cheese
* gnome-disk-utility
* gnome-themes
* gedit
* gucharmap
* gnome-power-manager
* evince
* gnome-system-monitor
* *Kit-gstreamer-plugin
* gnome-backgrounds
* rhythmbox
* compiz-gnome
* nautilus-sendto
* gnome-bluetooth
* mousetweaks
* scenery-backgrounds
* gvfs-afc
* gnome-user-share
* gvfs-obexftp
* totem-nautilus
* gnote
* nautilus-open-terminal
* file-roller
* gnome-user-docs
* totem
* gnome-utils
* evince-dvi
* gvfs-gphoto2
* authconfig-gtk
* system-config-firewall
* seahorse
* system-config-users
* gcalctool
* gthumb
* sound-juicer
* brasero-nautilus

 


============================================================================ "FireFox" browser RPM ===
* firefox

AND

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

[ 시스템 설정을 위한 내용 ]

설치된 Main OS : Windows 7 Pro K SP1

설치된 VMware : VMware Workstation 10

설치된 CentOS Server  : CentOS 6.5

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

 

시스템을 관리하다보면 정보가 필요한 경우가 상당히 자주 발생합니다.
그래서 관리자는 시스템 정보를 확인하는 명령을 자주 사용하는데요..


"/proc" 경로를 이용하여 확인할 수도 있지만, 이 글에서는 "dmidecode" 라는
명령을 이용하여 추출하는 방법을 알아보도록 하겠습니다.


우선 "dmidecode" 명령은 root 계정으로 사용하셔야 된다는 것을 기억하시기 바라며,
정보를 아주 깔끔하게 표시 해주는 아주 유용한 툴입니다.

 

또한 "dmidecode" 에서 출력되는 정보는 아래의 내용을 참고하세요.

 

a. BIOS Information                    // BIOS 설정 상태 정보
b. System Information                 // 시스템 정보. 메인보드 모델 및 제조사 등의 정보를 출력
c. Base Board Information           // 메인보드의 제조사 및 BIOS, S/N등 을 표시
d. Chassis Information               // 시스템 구조 정보
e. Processor Information            // 시스템 프로세서 정보
f. Cache Information                  // 프로세서 캐시 정보
g. Memory Controller Information  // 메모리 컨트롤러 정보
h. Memory Module Information     // 메모리 모듈 정보
i. Port Connector Information       // 시스템 포트 정보
j. System Slot Information           // 확장 슬롯 정보
k. BIOS Language Information     // BIOS 언어 정보
l. Physical Memory Array           // 물리적 (하드웨어) 메모리 정보
m. Memory Device                    // 메모리 정보


또한, 위 정보를 모두 출력하거나 선택하여 출력할 때는 아래의 형식을 참고하세요.

ㄱ. 모든 정보 출력 - # dmidecode
ㄴ. 원하는 정보 출력 - # dmidecode -t Argument

 

[ Argument ]

* bios - BIOS 정보

* system - System 정보
* baseboard - Mainboard 정보
* chassis - 구조 정보
* processor - 프로세서 정보
* memory - 메모리 정보
* cache - 캐시 정보
* connector - 포트 정보
* slot - 슬롯 정보

AND

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

[ 시스템 설정을 위한 내용 ]

설치된 Main OS : Windows 7 Pro K SP1

설치된 VMware : VMware Workstation 10

설치된 CentOS Server  : CentOS 6.5

설치 Kernel 정보 : linux-3.13.4.tar.gz

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

 현재 CentOS 6.5 를 설치하면 Kernel 버전은 "2.6.32-431.3.1" 로 설치가 완료됩니다. (yum update 도 진행한 상태임)

다만, 커널의 가장 최신버전은 3.XX 로 상당히 많은 버전업이 된 것을 알 수 있습니다.

커널에 대한 부분은 www.kernel.org 에서 확인이 가능하시며, 다운로드를 위해서는

아래의 경로에서 원하는 버전을 다운로드 하세요.

필자의 경우는 "3.13.4" 버전을 이용하여 진행할 계획이며, 다른 버전도 거의 동일한 방법으로 진행하시면 됩니다.

 

 - 커널 다운로드 : https://www.kernel.org/pub/linux/kernel/

 

커널에 대한 자료를 다운로드 하셨으면, 컴파일을 위해 필요한 패키지들을 설치하여야 합니다.

Yum 이나 RPM 을 이용하셔서 아래의 패키지들을 설치하신 후 내용을 따라서 진행하세요.

 

 - 필요 패키지 : ncurses-devel / hmaccalc / zlib-devel / binutils-devel / elfutils-libelf-devel / qt-devel

 - 추가 설치 패키지 : #yum groupinstall "Development Tools"  [ 그룹에 포함된 패키지는 아래와 같습니다. ]

flex / gcc / redhat-rpm-config / rpm-build / make / patch / pkgconfig / gettext /
automake / bison / libtool / autoconf / gcc-c++ / binutils / patchutils / byacc /
indent / systemtap / diffstat / elfutils / cvs / rcs / subversion / gcc-gfortran /
doxygen / intltool / git / ctags / cscope / swig

 

※ 패키지 설치와 관련되어서 RPM 을 이용하는 경우 의존성이 발생할 수 있으므로 의존성 패키지를 포함하여

   설치에 필요한 패키지를 모두 스크린샷으로 첨부해드립니다. 참고하세요. 

 

 

모든 자료준비(커널파일 및 패키지 설치가 완료되면 다운로드한 커널 파일을 "/usr/src/" 경로에서 압축을 해제하세요.

물론 다른 곳에 원하시면 다른 곳에다 압축을 해제하셔도 좋습니다.

 

 

위 스크린샷과 같은 경로를 기준으로 모든 것을 진행하도록 하겠습니다.

 

- linux-3.13.4]# make mrproper

//

- linux-3.13.4]# make clean

// 커널을 컴파일하기 위해 작업한 소스파일들의 찌꺼기를 정리

- linux-3.13.4]# cp  /boot/config-`uname -r`  ./.config

// 현재 리눅스가 사용하는 커널 설정파일을 이용하여 3.13.4 커널 버전의 컴파일할 소스파일 복사

- linux-3.13.4]# make menuconfig

// 3.13.4 버전 커널의 설정을 변경하기 위한 툴을 실행

 

 

아래 스크린샷을 참고하시어 내용을 입력하세요.

(단, 스크린샷의 "config(일반파일)"은 테스트를 위한 부분으로 ".config(숨김파일)"으로 하셔야 오류가 발생하지 않습니다.)

 

 

위 스크린샷처럼 모든 작업을 진행하시면 아래 스크린샷과 같은 화면으로 동작하게 됩니다.

가장 아래쪽에 있는 "<Load>" 를 선택하시기 바랍니다.

(방향키를 이용하여 움직이고, Enter 키로 선택하시면 됩니다.)

 

 

Load 메뉴를 선택하면 설정의 소스파일을 받아오는 부분이 있는데

여기에서 ".config"을 수정하지 않고 그대로 확인을 하시기 바랍니다.

 

소스파일 로딩이 마무리되면 "General setup" 항목을 선택하시기 바랍니다.

 

 

"General setup" 항목을 선택 후 아래 스크린 샷을 참고하시어

"Enable deprecated ~~~~ tools" 항목을 선택([*] 은 space 키)하시기 바랍니다.

 

 

항목을 선택하셨으면 가장 아래쪽에 있는 항목에서 "<Save>" 를 선택하시기 바랍니다.

 

 

<Save> 선택 후 출력된 메세지에서 아래 스크린샷과 같이 꼭 "100%" 를 확인하시고 <Exit>를 선택하시기 바랍니다.

 

 

저장완료 후 "General setup" 항목창도 종료하시기 바라며, menuconfig 대화창도 모두 종료하시면 됩니다.

 

 

menuconfig 까지 모두 완료하시고 나면 다시 프롬프트가 출력되어지며, 이제 소스파일 설정을 모두 마쳤으니 make 를

이용하여 컴파일하는 단계만 남았습니다.

거의 다 왔으니 조금만 더 힘을 내시고 바로 Fallow ME~~~!!!

 

설정파일을 이용하여 커널 빌드 및 컴파일을 진행하겠습니다.

- linux-3.13.4]# make all

// ".config" 설정파일을 이용하여 커널 소스 빌드

(상당한 시간이 소요될 수 있으니 참고 기다리세용.)

- linux-3.13.4]# make modules_install

// 커널 소스 빌드내용을 모듈로 설치

- linux-3.13.4]# make install

// 커널 설치

 

커널 빌드 및 컴파일이 완료되고 나면 해당 커널 버전이 부팅이 될 수 있도록  진행하겠습니다.

먼저 리눅스 부트로더인 grub.conf 를 열어서 내용을 확인합니다.

 

- linux-3.13.4]# vi /boot/grub/grub.conf

위 스크린샷의 파란색 부분은 커널 설치 후 자동으로 입력된 값이고, 빨간색이 수정부분입니다.

빌드된 커널버전으로 기본 부팅될 수 있게 설정해주었습니다.

 

모든 설정 및 커널 빌드가 완료되었습니다. 재부팅만 남았고, 재부팅 후 정상동작되는지 여부를 확인합니다.

- linux-3.13.4]# uname -a

 

재부팅까지 모두 완료되어 커널 버전을 확인하니 정상동작하는 것이 보이시나요? 스크롤 압박에도 불구하고 잘 따라오셨습니다.

앞으론 3.13.4 버전의 커널로 사용하시면 되겠습니다~!!!!! 완전 잘하셨어요!!!!!! 대박 나세요~~^_^

AND