리눅스 커널 다운로드 URL

리눅스/OS 일반|2014. 12. 31. 00:03
반응형

http://www.kernel.org/pub/linux/kernel/v2.6/

 

위 URL 접속 후 원하는 버전을 다운로드 받으면 됩니다.

2.6 이외 버전은 뒤 버전을 수정하여 접속하면 됩니다.

반응형

댓글()

리눅스 tar.gz 분할 압축하기

리눅스/OS 일반|2014. 12. 31. 00:03
반응형

아래 예제를 따라서 압축하면 됩니다.

 

# tar cvzf - /home/sysdocu | split -b 100m - sysdocu.tar.gz

 

- /home/sysdocu : 압축할 디렉토리

- 100m : 분할 압축 단위 (100 mega byte)

- test.tar.gz : 파일명

 

결과 : 아래와 같이 파일이 나뉘어 생성됩니다.

sysdocu.tar.gzaa

sysdocu.tar.gzab

sysdocu.tar.gzac

반응형

댓글()

CENTOS 5.3에서 GFS 구성하기

리눅스/OS 일반|2014. 12. 31. 00:02
반응형

< CENTOS 5.3에서 GFS 구성하기 >

 

이런거 정리해도 될라나.. ..

 

아래는 node1과 node2 두대의 서버에서 gfs2로 구성하는 세부 방법이다.

[root@]# uname -a
Linux VM1.test.co.kr 2.6.18-128.1.10.el5.xs5.5.0.51xen #1 SMP Fri May 29 07:20:04 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux


>>>GFS 구성을 위한 패키지 설치

 

 

yum groupinstall "Cluster Storage"
 yum groupinstall "Clustering"
 

 

 

 기존 5.3버젼에 openais에 버그가 있어서 
 service cman start시에 아래와 같은 오류가 나타난다. 이는 버그이므로 아래의 버젼으로 다운그레이드 해서 재설치 해야한다.
  Starting cman... failed
  /usr/sbin/cman_tool: aisexec daemon didn't start

 

 

 rpm -e --nodeps openais-0.80.3-22.el5
 wget http://people.centos.org/z00dax/misc/c53/x86_64/RPMS/openais-0.80.6-8.el5.x86_64.rpm
 rpm -ivh openais-0.80.6-8.el5.x86_64.rpm


 

>>> cluster 설정파일을 만든다.
우선 한대의 노드에서 system-config-cluster를 이용하여 만들 수 있따.

 

 

[root@]# cat /etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster alias="cluster112" config_version="5" name="cluster112">
        <fence_daemon post_fail_delay="0" post_join_delay="30"/>
        <clusternodes>
                <clusternode name="vm1.test.co.kr" nodeid="1" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="mf1" nodename="vm1.test.co.kr"/>
                                </method>
                        </fence>
                </clusternode>
                <clusternode name="vm2.test.co.kr" nodeid="2" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="mf1" nodename="vm2.test.co.kr"/>
                                </method>
                        </fence>
                </clusternode>
        </clusternodes>
        <cman expected_votes="1" two_node="1"/>
        <fencedevices>
                <fencedevice agent="fence_manual" name="mf1"/>
        </fencedevices>
        <rm>
                <failoverdomains>
                        <failoverdomain name="fd_domain" ordered="0" restricted="0">
                                <failoverdomainnode name="vm1.test.co.kr" priority="1"/>
                                <failoverdomainnode name="vm2.test.co.kr" priority="1"/>
                        </failoverdomain>
                </failoverdomains>
                <resources/>
        </rm>
</cluster>


만드는 방법은 system-config-cluster에서 cluster이름을 넣고, 노드들을 만들고, fence device를 지정하고, resource와 서비스는 만들지 않고 저장하고 나온다.
보다 상셍한 것은 
http://kbase.redhat.com/faq/docs/DOC-4293 를 참고한다.
위의 파일과 같이 한대에 만들어 지면, 다른 노드의 /etc/cluster/cluster.conf 파일로 복사한다.
잘 모르겠으면 위의 메뉴얼 팬스로 사용한 것을 그냥 복사한다.


>>>gfs2 파일시스템의 생성
 5.3부터 gfs2 가 들어가 있으므로 gfs2 파일시스템으로 만들 수 있다.

 
 1. gfs로 쓸 파티션을 lvm으로 만든다. (공유 스토리지가 /dev/sda일 경우, 이 디스크는 node1과 node2에서 동시에 보여야 한다.)

  pvcreate /dev/sda
  vgcreate volGFS /dev/sda
  lvcreate  -L 8G volGFS
  pvscan
  vgscan

 

 2. gfs 파티션으로 포맷 (혹시 몰라서 저널은 3개로 넣었다. 이 값은 gfs의 node 개수를 의미한다.)

  mkfs.gfs2 -p lock_dlm -t cluster112:gfs1 -j 3 /dev/volGFS/lvol0

 

 3. gfs 파티션을 마운트
  

mount -t gfs2 -o upgrade /dev/volGFS/lvol0  /mnt/gfs

 

 4. /etc/fstab 에 마운트정보 삽입 

 /dev/volGFS/lvol0       /mnt/gfs                gfs2    defaults        0 0

 

 

>>>서비스의 시작과 설정
 양쪽노드에서 서비스를 하나씩 실행해서 마운트 한다.

 service cman start
 service clvmd start
 service gfs2 restart


 chkconfig cman on
 chkconfig clvmd on
 chkconfig gfs2 on
 chkconfig acpid off


>>>서비스의 확인

 

[root@VM1 mnt]# cman_tool nodes
 Node  Sts   Inc   Joined               Name
    1   M     12   2009-10-19 20:17:01  vm1.test.co.kr
    2   M     16   2009-10-19 20:17:01  vm2.test.co.kr


 [root@VM1 mnt]# cman_tool status
 Version: 6.2.0
 Config Version: 5
 Cluster Name: cluster112
 Cluster Id: 41720
 Cluster Member: Yes
 Cluster Generation: 16
 Membership state: Cluster-Member
 Nodes: 2
 Expected votes: 1
 Total votes: 2
 Quorum: 1
 Active subsystems: 8
 Flags: 2node Dirty
 Ports Bound: 0 11
 Node name: vm1.test.co.kr
 Node ID: 1
 Multicast addresses: 239.192.162.155
 Node addresses: 192.168.0.192

 


>>>주의 사항
 1. /etc/hosts 안에는 두 노드간 통신할 수 있는 ip가 사설로 되어 있어야 하며, 이 ip를 gigabit으로 연결되는 구성이어야 한다.
 /etc/hosts 내에 
 192.168.0.11 vm1.test.co.kr
 192.168.0.12 vm2.test.co.kr
 위와 같은 형태 여야 한다.

 2.두 노드에서 /etc/sysconfig/network 에는 hostname이 fqdn으로 vm1.test.co.kr 과 같이 설정되어 있어야 한다.
 3. acpid는 off되어 있어야 한다.

 

 

[출처] RedHat X 엔지니어 기술공유 까페 | 가우스 (http://cafe.naver.com/redhatx/1)

반응형

댓글()

쉘스크립트 암호화 (바이너리 파일로 변환) - shc, bash-obfuscate

리눅스/OS 일반|2014. 12. 31. 00:01
반응형

[방법1]

# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz

# tar zxvf shc-3.8.7.tgz

# cd shc-3.8.7

# make

# ./shc -r -v -T -f script.sh

 

최근에 (2021. 11) 확인해보니 간단히 레포지토리에서 받아올 수 있었습니다.

# yum install shc

 

* 참고

- script.sh.x 라고 생성된 파일이 바이너리 파일입니다.

- 스크립트 상단에 반드시 #!/bin/bash 가 있어야 변환됩니다.

- 스크립트 구동 가능 날짜 제한

# shc -e 31/12/2016 -m "The end" -f script.sh

// 2016년 12월 13일 이후에는 "The end" 라는 메세지가 출력되며 구동이 되지 않습니다.

* 단점 : sleep 등 스크립트 내 지연 작업이 있는경우 ps 명령으로 소스가 노출 됨

 

 shc-3.8.7.tgz

 

[방법2]

CentOS 8 에서 테스트 하였습니다.

# npm install -g bash-obfuscate
# bash-obfuscate script.sh -o script_new.sh

 

실제로는 바이너리 파일로 변환하는게 아니고 문자열을 쪼개서 변수에 넣고 변수를 조합하는 식으로 난독화 합니다.

변환 된 파일을 쉘스크립트 처럼 구동 하면 됩니다.

# sh script_new.sh

 

 

반응형

댓글()

iconv 로 파일 캐릭터셋 일괄 변경하기

리눅스/OS 일반|2014. 12. 31. 00:00
반응형

아래 내용으로 파일을 만들어 실행하면 됩니다.

 

#!/bin/sh
files=$(find . -type f -name "*.php")
for file in $files; do

iconv -c -f euckr -t utf8 $file > $file.tmp

mv -f $file.tmp $file

done

exit 0

 

[출처] 곽범생's Blog | 곽범생 (http://kwakyc87.tistory.com/102) 내용

반응형

댓글()

apr-1.4.2 및 apr-util-1.3.9 설치

리눅스/OS 일반|2014. 12. 30. 23:59
반응형

1. apr-1.4.2 설치

 

# cd /usr/local/src

# wget http://archive.apache.org/dist/apr/apr-1.4.2.tar.gz
# tar xvzf apr-1.4.2.tar.gz
# cd apr-1.4.2

# ./configure

 

[./configure 시 에러출력]

config.status: executing libtool commands
rm: cannot remove `libtoolT': No such file or directory
config.status: executing default commands
config.status: include/apr.h is unchanged
config.status: include/arch/unix/apr_private.h is unchanged
 

위와 같은 에러 출력시 아래처럼 파일을 복사해주고 진행을 계속 합니다.

# cp -arp libtool libtoolT
# ./configure

# make

 

[make시 에러 출력]

make[1]: Entering directory `/usr/local/src/APM_setup/apr-1.4.2'
/bin/sh /libtool --silent --mode=compile gcc -g -O2 -pthread   -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE   -I./include -I/usr/local/src/APM_setup/apr-1.4.2/include/arch/unix -I./include/arch/unix -I/usr/local/src/APM_setup/apr-1.4.2/include/arch/unix -I/usr/local/src/APM_setup/apr-1.4.2/include  -o passwd/apr_getpass.lo -c passwd/apr_getpass.c && touch passwd/apr_getpass.lo
/bin/sh: /libtool: No such file or directory
make[1]: *** [passwd/apr_getpass.lo] Error 127
make[1]: Leaving directory `/usr/local/src/APM_setup/apr-1.4.2'
make: *** [all-recursive] Error 1
 

위와 같은 에러가 나온다면 아래처럼 심볼릭 링크를 걸어주고 진행을 계속 합니다.

# ln -s /usr/bin/libtool /

# make clean

# make

# make install

 

2. apr-util-1.4.2 설치

 

# cd ..

# wget http://archive.apache.org/dist/apr/apr-util-1.3.9.tar.gz
# tar xvzf apr-util-1.3.9.tar.gz
# cd apr-util-1.3.9
# ./configure --with-apr=/usr/local/apr
# make
# make install

반응형

댓글()

64bit 에서 컴파일 오류. -fPIC 가 필요할때

리눅스/OS 일반|2014. 12. 30. 23:59
반응형

64비트에서 설치되지 않는 프로그램이 있습니다.

컴파일시 오류가 나면서 -fPIC 옵션을 같이 주어 설치하라는 메세지도 보이는데

이경우 아래와 같이 'CC=gcc -m64 -fPIC' 옵션을 주어 설치시킬 수 있습니다.

 

예)

./configure --enable-auth-module=mysql --enable-tcprules-prog=/usr/local/bin/tcprules --enable-logging=y --disable-many-domains --enable-domainquotas 'CC=gcc -m64 -fPIC'

반응형

댓글()

tar 파일 내용보기

리눅스/OS 일반|2014. 12. 30. 23:58
반응형

# tar -tvf 파일명.tar.gz

반응형

댓글()

강제로 파티션 언마운트 하기

리눅스/OS 일반|2014. 12. 30. 23:58
반응형

프로세스 종료도 하고 해당파티션 내에 위치하고 있지도 않은데

언마운트 (umount) 가 되지 않을때가 있습니다.

이럴때 아래명령어로 해결 가능합니다.

 

# cd /                           // 언마운트 시킬 디렉토리 상위로 이동합니다.

# fuser -km /backup    // backup 디렉토리를 강제로 언마운트 시킵니다.

반응형

댓글()

일반사용자 root 권한 주기 및 특정 실행파일만 권한주기

리눅스/OS 일반|2014. 12. 30. 23:57
반응형

root 사용자로 sudoers 파일에 일반계정이 사용할 명령어를 설정 해두어야 합니다.

아래 파일을 열어 붉은색 글씨를 추가 합니다.

(예시 : sysdocu 사용자에 blkid, fdisk 명령 권한 주기)


# vi /etc/sudoers

 

root    ALL=(ALL)   ALL
sysdocu    ALL=(ALL)   NOPASSWD:/usr/sbin/blkid, /usr/sbin/fdisk


* 해설

sysdocu 계정은 blkid, fdisk 명령시 root 패스워드 없이 실행 가능하며, 그 외 명령어는 root 패스워드를 받게 됩니다.



/etc/sudoers 가 수정되면, 이후에 로그인 한 사용자에게 적용이 됩니다.

아래와 같이 명령어 앞에 sudo 를 꼭 붙여야 실행이 가능합니다.


[sysdocu@localhost ~]$ sudo /usr/sbin/blkid

[sysdocu@localhost ~]$ sudo /usr/sbin/fdisk -l



* 참고1

/etc/sudoers 파일의 'Defaults requiretty' 옵션은 터미널 (쉘 환경) 에서만 사용한다는 옵션입니다.

웹페이지로 접속하려는 경우에는 (nobody, apache 등) 해당 옵션을 주석처리 해주어야 명령이 가능 해집니다.


* 참고2 : php 에서 사용시

<?

$a = shell_exec("sudo blkid");

$a = preg_replace("/[\\n]/", "<br>", $a);

echo $a;

?>



반응형

댓글()

vi 에디터 - 라인 범위정해서 주석처리하기

리눅스/OS 일반|2014. 12. 30. 23:57
반응형

현재줄부터 3줄 주석처리하기

:.,+3s/^/#/g

 

5~8번째 줄 주석처리하기

:5,8 s/^/#/g

 

8번째 줄부터 마지막줄까지 주석처리하기

:8,$ s/^/#/g

 

모든라인 주석처리하기

%s/^/#/g

반응형

댓글()