시스템이야기2015. 6. 29. 13:16

왜 FreeBSD는 2015년 7월의 윤초(Leap Second)에 대한 얘기가 없을까 싶을 것이다. 얼마전에 쓴 '2015년 윤초(Leap second) 삽입 관련 서버 점검사항'(2015.6.22.)에서도 리눅스(Linux)만 언급했다. 얘기가 없는 건 문제가 없기 때문이다.



2012년 윤초 삽입 때, 저는 FreeBSD서버에서 아무 것도 한 것이 없다.

윤초로 발생하는 문제가 없기 때문에 서버는 단지 1초의 시간차만 맞춰주면 된다.
이미 서버들은 시간동기화가 셋팅되어 있기 때문에 1초는 자동으로 맞춰진다. 따로 할 것이 없는 것이다.


(1) 상위 NTP 서버들(당신의 서버 아님) <-> (2) 내부 NTP서버 (당신이 관리하는 서버) <-> (3) ntpdate를 실행하는 다수의 서버들


위에서 나와 관련된 서버는 2번과 3번.


(2) ntpd 데몬을 돌리는 서버는 자동으로 상위 NTP 서버로 부터 윤초 삽입이 되어 시간동기화된다.
(3) 나머지 서버들은 내부 NTP서버를 통해 자동 동기화된다. (ntpdate 명령)


FreeBSD에서 윤초는 신경쓰지 말고, 편히 운영하세요.

FreeBSD 문서에 윤초를 다룬 'FreeBSD Support for Leap Seconds' 글이 하나 있는데 참고로 읽어보세요.


We believe and expect that FreeBSD, if provided correct and stable NTP service, will work as designed during this leap second, as it did during the previous ones.
... 생략 ...
In practice, leap seconds are usually not a problem on FreeBSD. We hope that this overview helps clarify what to expect and how to make the leap second event proceed more smoothly.



Posted by 좋은진호
시스템이야기2013. 5. 20. 18:56

로컬에서 root ID를 얻을 수 있는 커널 취약점이 발견되었다. 해당 커널 버전은 2.6.37~3.8.9 이다.
그러나 CentOS 6.x(또는 RHEL)의 커널 2.6.32버전은 2.6.27에서 백포팅된 것이 있는데 해당 취약점까지 백포팅된 것으로 알려졌다.



CentOS 6.x버전을 사용중이면 커널 업데이트(지난주에 커널패치가 나옴)를 반드시 해야한다.

* CentOS 6.x에서 취약점없는 버전 : 2.6.32-358.6.2.el6.x86_64 <-- 패치 번호 -358.6.2가 문제 없음.

* Linux PERF_EVENTS Local Root

http://packetstormsecurity.com/files/121616/semtex.c
http://downloads.securityfocus.com/vulnerabilities/exploits/59846.c

커널 취약점 테스트 결과다. gcc 컴파일할 때 반드시 -O2 optimize 옵션을 넣고 테스트해야 한다.

[ 커널 패치 전 ]

$ gcc semtex.c
$ ./a.out
2.6.37-3.x x86_64
sd _at_ fucksheep.org 2010
a.out: semtex.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8 )' failed.
중지됨
$ gcc -O2 semtex.c  <-- -O2 옵션 넣고 컴파일
$ ./a.out
2.6.37-3.x x86_64
sd _at_ fucksheep.org 2010
-sh-4.1# id
uid=0(root) gid=0(root) groups=0(root),501(true)  <-- root권한 획득
-sh-4.1# exit
logout


[ 커널 패치 후 ( yum update kernel* 명령 후 ) ]

$ uname -r
2.6.32-358.6.2.el6.x86_64
$ ./a.out
a.out: a.c:51: sheep: Assertion `!close(fd)' failed.
중지됨
$

※ expolit 소스를 링크하고 싶지 않았다. 하지만 이미 공개가 많이 되었고, SE가 직접 취약성을 테스트하도록 링크를 걸었다.

Posted by 좋은진호
IT이야기2012. 10. 8. 08:50

신용카드 크기만한 라즈베리 파이(Raspberry Pi)에 xbmc( http://www.raspbmc.com/download/ )를 설치한다.
설치 시간은 20~30분 정도 소요가 된다. xbmc 설치 후에 기본적으로 '시스템' -> '설정'에서 언어, 시간대 등을 변경해야 한다.

라즈베리 파이(Raspberry Pi)[ 라즈베리 파이. 인터넷은 유선 대신에 USB 무선랜카드로 연결했다. ]


라즈베리 파이를 리눅스 장난감(?)과 영화감상용 PC용으로 사용하기 위해서 구매했다.

  • 리눅스 장난감으로 쓸 때는 데비안 기반의 Raspbian + 모니터 구성으로 사용하고,
  • 영화감상으로는 xbmc + 프로젝터로 사용한다.


1. 라즈베리 파이 xbmc에서 설정하기

시스템 -> 설정 -> 서비스 -> 웹서버를 선택한다. 포트는 기본포트 대신에 8888으로 변경을 했다. ID와 비밀번호를 설정한다.
IP로 원격제어하므로 라즈베리 파이가 같은 네트웍이 아니어도 상관없다.

xbmc[ xbmc의 웹서버 설정 화면 ]



2. 스마트폰에서 설정하기

스마트폰에는 xmbc remote 어플을 설치한 후 Manage XBMC Hosts에 접속할 라즈베리 파이 xbmc서버를 추가한다.

xmbc remote[ xmbc remote어플에서 접속할 xmbc 서버를 추가하는 화면 ]



라즈베리 파이의 IP를 모를 경우에 라즈베리 파이 xbmc의 '시스템' -> '시스템 정보'에서 확인할 수 있다.
라즈베리 파이 xbmc에서 IP를 DHCP로 할당받는다면 부팅할 때 IP가 바뀔 수도 있다. IP가 바뀔 때마다 스마트폰에서 접속할 IP를 설정한다면 불편할 것이다. 공유기에서 '라즈베리 파이의 MAC주소'에 대해서는 '고정 IP'를 할당받도록 설정하는게 좋다.


xbmc remote[ 추가한 xbmc 서버 목록 ]


접속하면 다음과 같은 화면을 볼 수 있다. Remote Control를 터치한다.


xbmc remote[ xbmc에 연결된 어플 화면 ]


리모콘 버튼은 세부분으로 나누는데 크게 불편함이 없다.

1. 비디오, 음악, 사진, TV 등 바로 실행 버튼
2. play/stop 등의 재생 관련 버튼
3. 상하좌우 이동, 선택 버튼


xbmc remote[ xbmc remote 리모콘 ]


xbmc remote어플에서 'Now Playing'를 선택하면 다음과 화면을 볼 수 있다.


xbmc remote[ xbmc remote어플의 Now Playing ]


다음은 라즈베리파이 xbmc + 유선 USB 랜카드 + 프로젝터 + 스마트폰 xbmc remote 어플 조합으로 조작하는 xbmc화면이다.



xbmc[ 프로젝터로 본 xbmc 화면 ]


xbmc[ xbmc 영화 화면 ]


xbmc[ xbmc 음악 감상 ]





라즈베리 파이와 xbmc remote어플로 즐거운 영화감상하세요.

Posted by 좋은진호
시스템이야기2012. 9. 12. 18:38

SAN 스위치는 설치 후에 버전상의 문제가 없다면 펌웨어를 업그레이드 할 일이 거의 없다.
저는 SAN 스위치(SAN Switch)를 운영하지만 스토리지 전문 엔지니어가 아니다. SAN에서 CLI명령을 조금 사용하는 정도다. 이번에 펌웨어 업그레이드할 기회가 생겼고, 직접 해보고 싶어서 전문 엔지니어에 맡기지 않고 해봤다.



참고로 Brocade SAN 스위치의 Febric OS는 리눅스 기반으로 만들어졌다. OS적 관점에서 몇가지 특징을 이야기 하면 다음과 같다.

  • 패키지는 rpm으로 되어 있다.
  • CLI접속시 restricted bash(rbash)가 동작한다.
  • CLI용 명령은 쉘스크립트로 이뤄진 것이 많다. (memshow, version, ... 등)
  • CLI는 admin ID로 접속하지만 리눅스 기반이니 root ID도 있을 것이다. 하지만 ssh접속은 admin만 가능하게 제한되어 있을 것이다. (추측)


1. 현재 SAN 스위치 정보 확인하기

version, firmwareshow 등으로 버전 정보를 미리 확인한다.

SAN2:admin> firmwareshow
Appl     Primary/Secondary Versions
------------------------------------------
FOS      v6.4.2a                       <-- Primary   버전
         v6.4.2a                       <-- Secondary 버전
SAN2:admin>

SAN2:admin> version
Kernel:     2.6.14.2                   <-- 기반 OS인 리눅스 커널 버전
Fabric OS:  v6.4.2a                    <-- OS버전
Made on:    Mon Jul 18 22:27:42 2011
Flash:      Tue Feb 21 18:35:31 2012
BootProm:   1.0.9
SAN2:admin>



2. FTP 설정

펌웨어 v6.4.2a -> v6.4.2b로 업그레이드 한다고 가정하자. 펌웨어 파일 v6.4.2b.zip을 FTP서버에 풀어놓는다.


FTP 서버 종류는 다양하므로 FTP서버 셋팅은 따로 설명하지는 않겠다.
저는 /data/brocade/v6.4.2b/ 디렉토리에 펌웨어가 있고, /data/brocade/ 를 FTP의 root 디렉토리로 지정했다.


3. SAN 스위치 펌웨어 업그레이드 (CLI 환경)

firmwaredownload 명령 하나로 쉽게 업그레이드할 수 있다.


SAN2:admin> firmwaredownload -s
Server Name or IP Address: 10.10.10.10       (FTP 서버의 IP를 지정)
User Name: ftpuser
File Name: /v6.4.2b/release.plist            (FTP의 release.plist 파일 경로를 지정한다. 경로 지정 주의. 아래에 별도 설명)
Network Protocol(1-auto-select, 2-FTP, 3-SCP) [1]: 2
Password:
Do Auto-Commit after Reboot [Y]: y           (리부팅 후 auto commit 여부)
Reboot system after download [N]: y          (download후 자동으로 rebooting 여부)
Server IP: 10.10.10.10, Protocol IPv4
Checking system settings for firmwaredownload...
System settings check passed.

You are running firmwaredownload with auto-reboot and auto-commit enabled. After the firmware is downloaded the system will reboot and commit firmware automatically.


Do you want to continue (Y/N) [Y]: y
Firmware is being downloaded to the switch. This step may take up to 30 minutes.
Preparing for firmwaredownload...
Start to install packages...
dir                         ##################################################
ldconfig                    ##################################################
... 생략 ...
awk                         ##################################################
ipsec                       ##################################################
Removing unneeded files, please wait ...
Finished removing unneeded files.

All packages have been downloaded successfully.
Firmware has been downloaded to the secondary partition of the switch.
HA Rebooting ...


위에서 'File Name: '에 release.plist 경로를 지정할 때 주의가 필요하다.
release.plist 파일은 /v6.4.2b/ 아래에 스위치 타입 디렉토리(SWBD??/)마다 존재한다. 업그레이드시에 타입은 자동으로 파악된다. 따라서 /v6.4.2b/SWBD83/release.plist 로 지정하지 않고 /v6.4.2b/release.plist 처럼 지정해야 한다.


리부팅 후에 version, firmwareshow 등으로 버전 정보를 다시 확인한다.
펌웨어 업데이트시에 auto commit을 선택하지 않았을 경우에 리부팅 후 firmwarecommit 을 한번 해주면 commit이 된다.

GUI화면에서 업그레이드 방법 등 자세한 것은 '커피닉스에 올려둔 글'을 확인하기 바란다.

Posted by 좋은진호
시스템이야기2009. 2. 26. 09:30

FreeBSD 7.0부터는 오픈솔라리스의 ZFS(Zettabyte File System)을 사용할 수 있다. ZFS는 파일시스템과 볼륨관리자가 통합되어 있는 장점을 최대한 살려 한두개의 과정만으로 파일시스템을 바로 사용할 수 있다. 또한 마치 찰흙을 붙였다 떼었다 하는 듯한 느낌으로 볼륨 관리의 유연성을 맛 볼 수 있다. 그러나 FreeBSD에서는 아직 실험적으로 동작중이며, IO 성능 또한 만족스럽지 못하다. 결국 FreeBSD에서 만큼은 미래를 위해 맛보기용 파일시스템로 즐기면 될 듯 싶다.

간단한 ZFS의 특징을 정리하면.

- 파일시스템 + 볼륨관리자가 통합되었다.
- 128비트 파일시스템이며, 디렉토리와 파일의 갯수에 제한이 없다.
- 미러링, 그리고 RAID기능에 해당하는 raidz를 지원한다.
- 물리적 disk를 쉽게 스토리지 풀에 추가할 수 있다.
- 상태 모니터링이 효과적이다. (iostat, status, history, get 등)
- 스냅샷 기능을 지원한다.

1. ZFS 풀과 파일시스템 생성 (zpool create, zfs create, zpool list, zfs list)

# zpool create data mfid0s1h
# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
data                   31.8G    110K   31.7G     0%  ONLINE     -
# df -t zfs
Filesystem    1K-blocks    Used    Avail Capacity  Mounted on
data           32771968       0 32771968     0%    /data

zpool create 명령만으로 쉽게 '스토리지 풀'을 생성했다. 이 명령 하나만으로 바로 파일시스템을 이용할 수가 있다. 매우 간단하지 않는가?
리눅스의 LVM과 비교해보자. LVM은 PV 생성 -> VG 생성 -> LV 생성의 3과정을 거쳐야 한다. 1) 디스크나 파티션을 LVM으로 사용하겠다고 선언하는 PV(Physical Volume) 생성(pvcreate) 과정. 2) 이후 PV를 하나의 큰 덩어리로 묶는 VG(Volume Group) 생성(vgcreate) 과정. 3) 필요한 만큼만 떼어 내어 실제 사용가능한 파일시스템으로 만드는 LV(Logical Volume) 생성 과정. 이와 비교하면 zfs는 정말 간단하다.

이제 하나의 풀에 여러 파일시스템을 만들어보자.

# zfs create data/backup
# zfs create data/log
# zfs create data/photo
# zfs list
NAME          USED  AVAIL  REFER  MOUNTPOINT
data          182K  31.3G    22K  /data
data/backup    18K  31.3G    18K  /data/backup
data/log       18K  31.3G    18K  /data/log
data/photo     18K  31.3G    18K  /data/photo

data 풀에 data/backup, data/log, data/photo 파일시스템을 생성했다. 그런데 마운트포인트가 모두 /data 아래로 생성되었는데, 다른 곳으로 할 수는 없을까? zfs set 명령 하나면 바로 변경 가능하다. 또는 생성할 때 -o mountmpoint=/backup 옵션으로 지정할 수 있다.
(※ zfs get all 또는 zfs get mountpoint로 속성 정보를 얻을 수 있다.)

# zfs set mountpoint=/backup data/backup
# zfs list /backup
NAME          USED  AVAIL  REFER  MOUNTPOINT
data/backup    18K  31.3G    18K  /backup
# df -h -t zfs
Filesystem    1K-blocks    Used    Avail Capacity  Mounted on
data              31G      0B     31G     0%    /data
data/log          31G      0B     31G     0%    /data/log
data/photo        31G      0B     31G     0%    /data/photo
data/backup       31G      0B     31G     0%    /backup

위의 파티션을 보면 용량이 모두 31GB로 표시되었다. zfs의 각 파티션이 '스토리지 풀'의 최대 용량까지 함께 사용하기 때문이다. data/photo 파티션은 5G만 사용하라고 쿼터를 할당해보자. 이 쿼터는 허용치만큼 늘릴 수도 줄일 수도 있다. 리눅스의 LVM이 확장하는 것만 가능(lvextend)한 것과 비교하면 상당히 유연한 자세를 취하고 있다.

# zfs set quota=5g data/photo
# zfs list data/photo
NAME         USED  AVAIL  REFER  MOUNTPOINT
data/photo    18K  5.00G    18K  /data/photo
#
# zfs set quota=3g data/photo
# zfs list data/photo
NAME         USED  AVAIL  REFER  MOUNTPOINT
data/photo    18K  3.00G    18K  /data/photo
#
# df -h data/photo
Filesystem    Size    Used   Avail Capacity  Mounted on
data/photo    3.0G    128K    3.0G     0%    /data/photo

만약 다른 파티션에서 용량을 사용하게 되면 그 양만큼 다른 파티션은 사용할 공간이 줄게 된다. 아래를 보면 /data/log가 11G를 사용중이다. 그래서 다른 파티션은 31GB-11GB 뺀 용량이 전체 사이즈로 표현된다.

# df -h -t zfs
Filesystem     Size    Used   Avail Capacity  Mounted on
data            20G      0B     20G     0%    /data
data/log        31G     11G     20G    35%    /data/log
data/photo     3.0G    128K    3.0G     0%    /data/photo
data/backup     20G      0B     20G     0%    /backup

ZFS는 자체에 데이터 안정성을 높을 높이는 mirror와 RAID-Z 기능을 제공한다. mirror기능으로 풀을 만들어 보자.

# zpool create backup mirror mfid1 mfid3
# df -h -t zfs
Filesystem    Size    Used   Avail Capacity  Mounted on
backup         66G      0B     66G     0%    /backup

디스크는 SAS 73GB짜리이다. ufs 또는 zfs로 1개의 파일시스템을 만들면 66GB가 나온다. 2개 디스크인데, 132GB가 아닌 66GB로 표시되는 것은 mirror로 생성되었음을 보여준다. mirror로 설정되어 있는지 확인하는 방법은 뒤에서 다시 얘기하겠다.

2. zfs는 당신이 한 일을 모두 알고 있다. (zfs history)

# zpool history
History for 'data':
2009-02-16.18:32:06 zpool create data mfid0s1h
2009-02-16.18:33:23 zfs create data/backup
2009-02-16.18:33:31 zfs create data/log
2009-02-16.18:33:50 zfs create data/photo
2009-02-16.18:35:19 zfs set mountpoint=/backup data/backup
2009-02-16.18:41:17 zfs create -o mountpoint=/work data/work
2009-02-16.18:51:07 zfs set quota=5g data/photo
2009-02-16.19:00:09 zfs set quota=3g data/photo
2009-02-16.19:16:41 zfs set quota=5g data/photo
2009-02-16.19:21:36 zfs set quota=3g data/photo
2009-02-16.19:28:49 zfs destroy data/work

'data' 풀에 적용된 작업이 모두 나왔다.

3. 상태 살펴보기 (zpool iostat, zpool status)

# zpool iostat 2
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
data        11.4G  20.4G      8     63   881K  1.58M
data        11.6G  20.1G      0  1.75K  32.0K   128M
data        11.9G  19.9G      0  1.88K  64.0K   133M
data        12.1G  19.7G      0  2.09K  32.0K   128M
data        12.3G  19.4G      0  2.17K  64.0K   131M
data        12.6G  19.2G      0  2.20K  32.0K   137M
data        12.8G  18.9G      0  2.33K  32.0K   139M
data        12.9G  18.9G    610  1.49K  75.8M  77.8M
data        12.9G  18.9G    521  1.61K  65.0M  89.7M
data        12.9G  18.9G    615  1.35K  76.5M  71.2M

IO 상태를 2초간격으로 살펴본 것이다. 리눅스나 FreeBSD에서 iostat를 해봤을 것이다. iostat는 디스크별로 IO를 보는 것이며, zpool iostat는 '스토리지 풀'별로 살펴보는 것이다. 'data' 풀의 ONLINE상태를 확인할 수 있다.

# zpool status
  pool: data
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        data        ONLINE       0     0     0
          mfid0s1h  ONLINE       0     0     0

다음은 'backup'풀이 mfid1, mfid3 2개 disk를 사용하여 mirror되어 있는 것을 볼 수 있다.

# zpool status
  pool: backup
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        backup      ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            mfid1   ONLINE       0     0     0
            mfid3   ONLINE       0     0     0

errors: No known data errors

4. ZFS 풀과 파일시스템 unmount & 지우기 (zpool destroy, zfs umount, zfs destroy)

파일시스템를 umount하기 위해서는 'zfs umount 파일시스템' 형태로 하며, 완전 제거는 'zfs destroy'로 한다. 파일시스템이 사용중이지 않으면 바로 unmount와 제거가 가능하다.

# cd /data/log
# zfs umount  data/log
cannot unmount '/data/log': Device busy
# cd /
# zfs umount  data/log
# zfs mount   data/log
# zfs destroy data/log

스토리지 풀 전체를 제거할 때도 마찬가지로 zpool destroy로 하면 된다.

# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
data                   31.8G   10.9G   20.9G    34%  ONLINE     -
# zpool destroy data
cannot unmount '/backup': Device busy
could not destroy 'data': could not unmount datasets
# cd /
# zpool destroy data
# zpool list
no pools available

5. FreeBSD에서는 ZFS를 서비스에 적용할 수 있을까? (성능 및 기타 사항)

ZFS는 최소 1GB이상의 메모리를 권장한다. 그러나 ZFS는 실제 많은 메모리를 사용하는 경우가 있다. 파일시스템 성능 체크를 하는 동안 panic: kmem_malloc(16305): kmem_map too small: 332353536 total allocated 같은 메시지를 뿌리면서 몇 번 다운되었다. i386 환경에서는 kmem address space(vm.kmem_size_max)의 최대값이 320M으로 되어 있다. 그러나 이 수치는 ZFS을 사용하기에는 낮은 수치이므로 기본값을 그대로 사용할 경우에는 커널 패닉이 발생할 수 있다고 한다. 그래서 나도 다운이 된 것이었다. vm.kmem_size는 read only값이므로 /boot/loader.conf 에 다음 2줄을 추가한다. 그리고 부팅을 하고, 필요시 이 수치는 더 늘리면 된다.

vm.kmem_size="512M"
vm.kmem_size_max="512M"

[ 부팅 전 ]
# sysctl -a|grep kmem
vm.kmem_size_scale: 3
vm.kmem_size_max: 335544320
vm.kmem_size_min: 0
vm.kmem_size: 335544320

[ 부팅 후 ]
# sysctl -a|grep kmem
vm.kmem_size_scale: 3
vm.kmem_size_max: 536870912
vm.kmem_size_min: 0
vm.kmem_size: 536870912

bonnie++로 Sequential Output/Input/Create, Random, Random Create의 성능 비교를 했다. ufs 파일시스템과 비교했을 때 각 항목별로 대략 2~5배 이하의 만족스럽지 못한 성능이 나왔다. zfs 기본 생성외에 mirror로 이뤄진 풀, raidz 로 이뤄진 풀도 낮은 수치인 것은 마찬가지였다.

그리고, 부팅 후 ZFS를 처음 create할 때는 다음과 같은 메시지가 나온다.

This module (opensolaris) contains code covered by the
Common Development and Distribution License (CDDL)
see http://opensolaris.org/os/licensing/opensolaris_license/
WARNING: ZFS is considered to be an experimental feature in FreeBSD.
ZFS filesystem version 6
ZFS storage pool version 6

'WARNING' 부분이 보이는가? FreeBSD에서는 실험적인 상태이고, 성능 또한 상당히 낮으니, 편리함과 유연함을 높이 산다고 하더라고 서비스에 적용하기는 무리가 있다. 아직 FreeBSD에서는 재밌게 즐기면 된다. 즐기다 보면 미래에 적용해도 괜찮을 때가 오겠지...

6. 참고 자료

* ZFS 시작하기
* ZFS Tuning Guide
* FreeBSD 7.1 달라진 것 몇가지 (2009.1.20, 글 좋은진호)
* FreeBSD 7.0 사용기 (2008.3.7, 글 좋은진호, ZFS 사용기 일부 포함)



Posted by 좋은진호
IT이야기2009. 2. 3. 19:37
리눅스에서는 GQview( http://gqview.sourceforge.net/ ), gThumb 등으로 Exif 정보를 쉽게 살펴볼 수 있다.

01


사진의 Exif 정보에는 찍은 시간, 어떤 디카를 갖고 있는지 등 너무 상세한 정보가 적나라게(?) 드러난다. '아~ 이사람 그시간에 저기에 있었군'이라는 느낌을 받기 싫다면 gimp에서 Exif 정보를 지우고 저장할 수 있다. 저장할 때 Exif 정보를 함께 저장할 것인지 선택('Save EXIF data')할 수 있는데, 체크만 해제(기본값은 체크되어 있음)하면 된다.


Exif정보가 말끔히 사라졌다.

Posted by 좋은진호
시스템이야기2008. 7. 28. 21:23
2주전의 일인 것 같다. 문득, 리눅스에서는 인터페이스명이 eth0, eth1 처럼 사용하는데, 반드시 eth로 시작해야할까라는 생각이 들었다. 서버에 있는 2개의 랜카드중 하나만 설정을 변경해봤다. /etc/sysconfig/network-scripts/ifcfg-eth1을 ifcfg-coffeenix0을 변경하고, 설정값 중 DEVICE=coffeenix0로 설정한 다음 리부팅했다. (CentOS 기준)

DEVICE=coffeenix0
BOOTPROTO=static
BROADCAST=192.168.XX.XXX
HWADDR=00:0F:XX:XX:XX:XX
IPADDR=192.168.XX.XXX


아~ 임의로 인터페이스명을 지정해도 된다.

# ifconfig
coffeenix0 Link encap:Ethernet  HWaddr 00:0F:XX:XX:XX:XX
          inet addr:192.168.XX.XXX  Bcast:192.168.XX.XXX  Mask:255.255.XXX.XXX
          inet6 addr: ...생략.../64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13 errors:0 dropped:0 overruns:0 frame:0
          TX packets:453 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:832 (832.0 b)  TX bytes:47862 (46.7 KiB)
          Interrupt:217
eth0      Link encap:Ethernet  HWaddr 00:0F:XX:XX:XX:XX
... 생략 ...

'그럼 변경해서 뭐하냐? 쓸모 없는 것 같고...'라고 한다면, 인터페이스명을 보고 직관성을 높일 수 있다. 미러링을 하는 포트라면 mir0 처럼 인터페이스를 설정하면 보다 직관적으로 확인이 가능할 것 같다. 랜카드가 3개이상이고, 그 중 하나는 meta data 통신용이라면 meta0처럼 지정하면 보다 쉽게 알 수 있을 것이다. 참고로 ifcfg-eth1 파일명을 그대로 두고 안의 DEVICE= 설정만 변경해도 된다. 단지 파일명은 직관적으로 보기위한 용도일뿐이다.

주의할 것은 몇몇 프로그램은 eth로 시작하지 않는 것은 인식하지 못할 수도 있다는 것. mii-tool은 eth0~eth7의 인터페이스만 자동으로 체크하므로 다른 인터페이스일 경우 별도로 지정해줘야 한다. sysctl로 'net.ipv4.conf.인터페이스명' 설정시 인터페이스별로 설정하여  사용해왔다면 이부분도 수정이 필요하다.

# mii-tool
eth0: negotiated 100baseTx-FD, link ok
# mii-tool coffeenix0
coffeenix0: negotiated 100baseTx-FD, link ok

고정관념이 무섭다. ^^

Posted by 좋은진호
IT이야기2008. 4. 22. 00:52
CrossOver Office로 잘 알려진 CodeWeavers에서 리눅스와 Mac에서 윈도우즈 게임을 할 수 있는 CrossOver Games 7.0.0 을 발표했다. 발표한지는 시간이 좀 지났는데, 국내 리눅스 관련 커뮤니티나 블로그에서는 조용해서, 얘기를 끄집어 낸다.

사용자 삽입 이미지

CrossOver Games은 최신 Wine을 만들어졌으며, 맥 OS X는 Tiger와 Leopard에서 모두 잘 동작한다. 그리고, 리눅스는 우분투(Ubuntu) 7.10과 데비안(Debian) Etch에서 테스트가 되었다. 2개의 배포판에서 테스트되었다는 뜻이지 다른 배포판에서 안되는 것은 아니다. 공식 홈페이지에는 없는 내용이지만, FreeBSD와 FreeBSD기반의 데스크탑BSD인 PC-BSD, DesktopBSD에서도 운영되는 것으로 알려졌다. ( ./ 의 'CrossOver Games for FreeBSD' 참고)

지원하는 게임은 World of Warcraft(WoW), EVE Online, Guild Wars, Prey, Half-Life 2, Team Fortress 2, Counterstrike 등 다양하며, 전체 게임 목록은 CrossOver Games의 Compatibility 페이지에서 확인할 수 있다.

사용자 삽입 이미지
사용자 삽입 이미지

[ 이미지 출처 : CrossOver Games 에서 ]

Linux, Mac 버전 모두 39.95달러이며, trial 버전을 홈페이지에서 받아볼 수 있다.

구글의 리눅스용 피카사(Picasa)가 Wine을 최적화하여 만들어진 것인데,  윈도우즈보다는 느리게 동작한다. CrossOver Games도 Wine기반이다보니, 게임할 때 느려지는 문제가 있을 건데, 게임에 지장이 없을 만큼 속도감을 주느냐가 CrossOver Games의 가치 판단 기준이 될 것 같다.

Posted by 좋은진호
IT이야기2008. 4. 1. 14:29
아침부터 구글의 사투리 번역( http://www.google.co.kr/landing/saturi/ )과 티스토리의 '샨새교 교주'검색( http://tistory.com/AF/searchAF/ )등으로 떠들썩하다. 4월은 늘 이렇게 떠들썩하게 시작한다.

사용자 삽입 이미지

kernel.org도 만우절 이벤트(?)에 동참하기 위해 재밌는 메일링을 발송했다. 발송시간이 'Tue, 01 Apr 2008 01:01:17'. 제목 또한 눈에 띤다. 'Kernel.org Downtime Notice - Please read *very* important'. mirror 서버, 공개된 서버, 백엔드 마스터 서버 등 kernel.org의 모든 서버를 OS 업그레이드를 이유로 서버를 내린다는 것이다. 그것도 'Linux Kernel Organization'에서 리눅스를 안쓰고 FreeBSD를 쓰겠다는 얘기를 꺼낸다. FC5에서 FreeBSD 7.0로 ^^. 메일의 뒷부분에는 SlashDot의 링크 등을 걸어놓으며, 이러한 결정하게된 근거를 써놨다. 가볍게 결정하지 않은 것 처럼 말이지...

메일링 전체 내용 : http://lkml.org/lkml/2008/3/31/367

I and the other Kernel.org admins would like to announce downtime for
ALL kernel.org machines (this includes all of the mirror machines, the
public machines and the backend master).  The downtime is scheduled to
start on or around April 2nd, 2008 on or around 0001 UTC.

After much deliberation, research and argument in #korg (along with
screaming matches between HPA and I over dinner) we are upgrading the
kernel.org machines from Fedora Core 5 to FreeBSD 7.0.  This decision
does not come lightly to the Kernel.org admins, and we would like to
point out several key things that helped us form our decision:

이 메일링에 대한 답변( http://lkml.org/lkml/2008/3/31/369 ) 또한 재밌다.

Highly commendable.  You should take this opportunity to also upgrade
network facilities to meet the requirements as laid out in RFC1149 (CPIP).

매우 훌률하다고 칭찬의 말로 띄워준다. 이번에 RFC1149(CPIP) 서술된 요구사항을 만족시키기 위해, 네트웍 설비 또한 업그레이드할 기회를 가져야 한다고 덧붙인다. 여기서 재밌는 것은 RFC1149다. RFC1149(Standard for the transmission of IP datagrams on avian carriers, 조류를 이용한 IP datagrams 전송 표준)는 RFC 유머중에 하나로, 공식 RFC문서가 아니다. CPIP는(Carrier Pigeon Internet Protocol)는 얘기 안해도 이해가 될 것이다.

Posted by 좋은진호
시스템이야기2008. 2. 11. 23:22
리눅스 커널 2.6.17부터 2.26.24.1 까지의 vmsplice() 콜의 버그로 로컬에서 root 권한을 획득할 수 있다. KLDP에도 나와있듯이, milw0rm에는 2개의 local root exploit 코드가 공개되어 있다. 테스트결과 너무 쉽게 root 권한이 획득되었다.

$ uname -r
2.6.18-8.1.8.el5
$ ./exploit
-----------------------------------
 Linux vmsplice Local Root Exploit
 By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7ee1000 .. 0xb7f13000
[+] root
# id
uid=0(root) gid=0(root) groups=501(truefeel)
#

개인사용자나 외부 접근이 제한된 시스템은 그나마 다행인데, 커널 2.6.x을 사용하는 호스팅업체나 공동 사용 서버는 빨리 대처해야할 것이다. 커널 패치를 적용하여 리부팅을 해야할 것이나 재부팅할 수 없는 서버도 있을 것이다. 이 땐 임시 메모리 패치hkpco님의 방어 커널 모듈을 이용하면 된다.

* 관련글


------------------------------------------------------------------
[ 내용 추가 ]

*2.13(수) 현재 RHEL5, Cent5 패치 커널 나옴
http://lists.centos.org/pipermail/centos-announce/2008-February/014684.html
https://rhn.redhat.com/errata/RHSA-2008-0129.html

==================================================================== Package                 Arch       Version          Repository        Size
==================================================================== Installing:
kernel                  i686       2.6.18-53.1.13.el5  updates            13 M
kernel-devel            i686       2.6.18-53.1.13.el5  updates           4.7 M
Updating:
kernel-headers          i386       2.6.18-53.1.13.el5  updates           785 k
====================================================================

Posted by 좋은진호