Archive for 8월, 2008

나는 3류?

목요일, 8월 28th, 2008

힘들 때 우는 자는 3,

힘들 때 참는 자는 2,

힘들 때 웃는 자가 1.

ubuntu 리눅스 커스텀 커널 컴파일 하기

목요일, 8월 28th, 2008

사용하는 머신의 램이 8기가인데 우분트 웍스테이션의 기본 커널이 4기가까지 지원이라 커널을 새로 빌드해야 할 일이 있었습니다.

 

우분투에서 채용된 원래 커널 소스에 설정을 가지고 램 설정만 바꿔서 컴파일했습니다.

 

다음은 하는 방법입니다.

1. 커널 소스 구하기

우분투는 데비안 계열이니 바로 소스 설치 가능합니다.

그리고 커널은 특별히 소스 패키지 이름이 따로 있습니다.

$ sudo apt-get install linux-source

그러면 /usr/src 아래에 깔립니다.

image

 

2. 커널 개발용 패키지 설치

개발용 패키지를 미리 다 받아둔다기 보단 필요한 패키지가 있다고 에러 메시지가 나므로, 그 때 설치했습니다.

예를 들어,

$ sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 kernel-wedge xmlto

 

3. configuration 복사해오기

이제 지금 돌고 있는 커널의 소스를 받았으니 configuration을 복사해 와야겠지요

이제부턴 편의를 위해 루트로 작업하겠습니다.

$ sudo su

# cp /boot/config-2.6.24-19-generic linux-2.4.24/config_old

 

4. make menuconfig (-> configuration)

# make menuconfig

그리고 Load an Alternate Configuration File를 선택해서 config_old를 불러옵니다.

image

그리고 저 같은 경우 여기서 하나만 바꾸면 됩니다.

Processor type and features -> High Memory Support (4GB)

이렇게 돼 있는 걸 64GB로 바꿉니다.

image

그리고 추가로 General setup 에서 Local version - append to kernel release 항목을 고쳐주면 커널의 정보에서 이름이 추가됩니다.

예를 들어 -custom-bigmem 로 써주면 되지요. (실제 제가 할 때는 -를 앞에 빼먹고 custom-bigmem으로 썼습니다. -가 자동으로 붙는 줄 알았어요…)

image

그리고 exit. 저장하고 나옵니다.

 

5. 컴파일 && deb 패키지 생성

이제 빌드해봅니다.

# make-kpkg clean

# fakeroot make-kpkg  –initrd kernel_image kernel_headers

이렇게 하면 주욱 빌드할 것이고 커널 헤더와 커널 이미지 패키지가 만들어집니다.

 

6. 새로운 커널 설치

만들어진 패키지를 설치해줍니다.

# dpkg -i linux-image-2.6.24.3custom-bigmem_2.6.24.3-custom-bigmem-10.00.Custom_i386.deb 
# dpkg -i linux-headers-2.6.24.3custom-bigmem_2.6.24.3-custom-bigmem-10.00.Custom_i386.deb

 

7. 재부팅

일단 /boot/grub/menu.lst 에 부팅 설정이 제대로 써졌는지 보고, (저의 경우 새 커널로 부팅하도록 우선순위가 자동으로 매겨져서 추가돼 있더군요.)

재부팅

# reboot

 

부팅하고나서 현재 커널이 어떤 건지 확인하려면 uname -a나 /proc/version을 보시면 됩니다.

# uname -a
Linux danwon 2.6.24.3custom-bigmem #1 SMP Tue Aug 26 16:08:04 KST 2008 i686 GNU/Linux

image

토끼와 거북이

수요일, 8월 27th, 2008

토끼와 거북이가 경주를 했습니다.

토끼는 빨리 달려서 일찌감치 멀리 도착해 중간에 잠깐 쉬었습니다.

거북이는 열심히 길만 보고 기었습니다.

토끼가 세상모르게 잠든 사이 거북이는 결승점에 도착. 이겼습니다.

 

토끼와 거북이가 경주를 했습니다.

토끼는 빨리 달려서 일찌감치 멀리 도착해 중간에 잠깐 쉬었습니다.

거북이는 열심히 길만 보고 기었습니다.

쉬던 토끼의 눈에 향긋한 꽃내음을 내는 꽃밭이 보였습니다.

토끼는 관찰하고, 향기 맡고, 생각하고, 충전했습니다.

그리고 달렸습니다.

거북이는 열심히 길만 보고 기었습니다.

경주가 끝나고 토끼가 물었습니다.

"경주에서 얻은 게 무어니?"

거북이는 열심히 길만 보고 기었습니다.

 

다음 경주 때 거북이는 생각했습니다.

"그래, 수영을 하자.

그리고 나도 좀 쉬자"

nload 콘솔에서 네트웍 부하 보기

화요일, 8월 26th, 2008

nload 라는 프로그램이 있습니다.

image

네트웍 부하를 콘솔에서 볼 수 있습니다.

원격으로 관리할 때 편리하겠네요.

 

관리하는 서버에서 누군가 네트웍을 심하게 쓰는군요. 음. 살펴봐야겠습니다.

성공하려 한다면

일요일, 8월 24th, 2008

만일 내가 의사라면,
지방 소도시에 개업할 것이다.
사람은 많은데 의사가 없다.

만일 내가 약사라면,
역시 지방 소도시에 개업할 것이다.
역시 마찬가지다.

만일 내가 먹는 장사를 하려고 한다면,
청주에 스타벅스 체인을 하거나 여수나 평택에 아웃백을 열겠다.
거긴 인구도 많고 학교도 있는데 아직 그런 집이 없다.

숙박 장사를 한다면
원주에 폐교를 빌려 “별이 보이는 방”으로 은하수 마케팅을 할 거다.

뭐든 하려면 남들이 다 가지 않는데 필요한 데를 가야한다.

내가 갈 길이 아닌 곳들은 어떻게 하면 되겠다 생각이 난다.

그런데 프로그래머는,,
어디로 가면 될까?

… 잘 모르겠다.

왜 내가 하는 일은 잘 안보일까?

configure에서 –host와 –build의 차이

수요일, 8월 20th, 2008

configure 스크립트에서 받는 옵션으로 –host, –build, –target이 있습니다.

만약에 빌드를 x86 리눅스 머신에서 하고 실제 실행은 리눅스이면서 eabi를 쓰고 ARM 플랫폼에서 실행하고 싶다면

./configure –target=arm-none-linux-gnueabi –host=arm-none-linux-gnueabi –build=linux

./configure –target=arm-none-linux-gnueabi –host=arm-none-linux-gnueabi –build=i486-pc-linux-gnu

이런식으로 할 겁니다.

–build : 내가 지금 작업하고 있는 컴파일 시스템 - 그러니까 코딩 작업하고 있는 호스트

–host : 빌드하고 나서 실행파일이 실행될 시스템을 명시합니다. 컴파일 결과물이 돌아갈 환경. 실제 타겟 이름. 예를 들어 arm-none-linux-

–target : (대부분 host와 같은 거이 일반적이고) 크로스 컴파일러를 빌드할 때 등에 쓰는 것으로 빌드된 파일이 실행됐을 때 내놓을 바이너리 포맷입니다.

target을 쓰는 경우는 예를 들어 x86 리눅스에서 ARM 컴파일러를 PowerPC에서 실행시킬 바이너리를 만든다면

./configure –target=arm-linux-gnu –host=powerpc-linux-gnu –build=i686-pc-linux-gnu

정도로 쓰면 됩니다.

영문으로 자세히 설명된 canadian cross http://www.airs.com/ian/configure/configure_6.html

http://kelp.or.kr/korweblog/stories.php?story=04/09/22/9919655

————-

KLDP에서 퍼온 것

http://www.belgeler.org/autobook/autobook-Building-with-a-Cross-Compiler…

즉 Linux에서 빌드를 하는데 만드는 컴파일러가 dos에서 실행되는 컴파일러이고, 이 컴파일러의 출력코드는 mips용이라면
–build : linux
–host : dos
–target : mips
가 됩니다. 이런 경우를 canadian cross라고 하죠. 캐나다에 세 민족이 살아서 그런데나… 물론 이런 canadian cross는 library 때문에 빌드가 상당히 복잡해집니다.

기본적으로는 host, target, build를 모두 적어주어야 합니다. 단, 적어주지 않는 경우 config.guess script에서 나머지를 default로 현재 platform으로 설정합니다.

그래서
canadian cross 인 경우에는 –host, –target을 정확히 적어주어야 하고,
cross인 경우에는 –target 만을 정확히 적어주면 되고,
일반적인 경우에는 아무것도 적어주지 않아도 됩니다.

풍요, 감사

수요일, 8월 20th, 2008

저는 매일 아침 참 감사하게 여기는 것이 있습니다.

바로 깨끗하고 따듯한 물로 샤워하고, 맑고 시원한 물을 마실 때입니다.

지금 제가 누리는 이런 편리와 청결은 예전의 왕들도 누리기 힘들었던 겁니다.

힘 안들이고 적당한 온도의 물로, 깨끗하게 샤워하고, 새벽에 물 뜨러 나가지 않아도, 한여름에도 시원한, 그리고 깨끗한 미네랄 워터를 마실 수 있다니 감사하지 않나요?

지금 세상은 그런 면에서 정말 많은 사람들이 이런 좋은 혜택을 누리고 삽니다.

그것이 가능하게 한 것이 새로운 에너지의 발견과 생활 과학의 발전이겠지요. 전 상하수도를 발명한 사람들이 정말 존경스럽습니다. 인류의 삶에 지대하게 영향을 미쳤습니다. 그리고 전기. 전기를 사용한 전등과 에어컨등은 정말 삶을 살만하게 만들었다고 생각합니다.

어떤 사람들은 그런 문명의 이기가 사람들의 정신세계를 망쳐놨다고 하지만,,
그것은 이런 풍요를 당연한 것으로 여기고 과용하는 사람들 얘기일 것입니다.
(저기 바다 건너 어떤 나라에서는 우리나라보다 훨씬 국민소득이 높은데도 겨울에 내복을 입고 방바닥에 난방 안하고 산다죠 아마)

더불어 지금 우리가 쓰고 있는 에너지와 자원은 어쩌면 유한한, 그리고 한꺼번에 너무 많이 사용하면 부작용이 생길 수도 있는 것들입니다. 우리가 누리는 이 풍요로운 삶을 멀리 다음 세대까지 유지하려면 분명 분별력있고 절제된 소비를 해야겠지요. 그리고 되도록 더 많은 인류가 누릴 수 있도록 나누는 게 필요할 겁니다.

항상 감사하고 있습니다. 이런 풍요를 누릴 수 있게 되어서요.
비록 전쟁 한 번에, 천재지변에 다 허물어질 수도 있는 취약함일지라도, 그걸 지키는 누군가가 필요하지만, 누리는 지금을 참 감사하고 있습니다.

하나님 감사합니다.

살고 싶다

월요일, 8월 18th, 2008

주의 궁정에서의 한 날이 다른 곳에서의 천 날보다 나은즉 악인의 장막에 사는 것보다 내 하나님의 성전 문지기로 있는 것이 좋사오니 -시 84:10

 

힘들어요

살고싶어요

나도 예배당서 예배만 하며 살아봤으면

예약한 시각에 명령어 실행하기 - at

금요일, 8월 15th, 2008

학교가 토요일에 정전된다길래 정전 되기 직전에 리눅스 서버를 꺼줘야겠습니다.

제가 직접 가서 꺼야되는 상황은 만들고 싶지 않기에 예약해서 꺼야겠지요

이럴 때 쓰기 쉬운 명령어, at가 있습니다.

이대로 따라 하면 됩니다.

리눅스에서 컴퓨터 끄기 예약.

지정된 시간에 자동으로 끄려면 at를 사용하면 됩니다.

0. 먼저 시스템 시간을 확인합니다. 시간과 날짜가 맞아야지요.

$ date

2008. 08. 14. (목) 21:38:27 KST

1. 루트로 변경합니다. (끄려면 권한이 있어야 하므로)

daniel@server $su

root@server #

su가 안되는 시스템에서는 sudo su로 사용자를 바꾸실 수 있을 겁니다. 안되면 루트로 로그인하시든지요.

daniel@server $ sudo su

root@server #

2. at으로 시간 입력 & 할 일 입력

root@server # at 8:30am Aug 16

warning: commands will be executed using /bin/sh

at> poweroff (혹시 poweroff가 아니고 다른 명령 – 예를 들어 shutdown –h now – 인지는 알아서 확인)

at> (Ctrl+D입력으로 종료)

job 1 at Thu Aug 16 08:30:00 2008

  • atq로 예약된 명령을 볼 수 있습니다.

root@server # atq

1       Thu Aug 16 08:30:00 2008 a danielsong

  • atrm으로 예약 명령을 취소할 수 있습니다.

root@server # atrm 1

추가 정리하자면,

1. at 명령어로 원하는 시간에 명령을 실행할 수 있다. (명령은 한줄이 아니어도 됨.)

2. 그리고 입력받는  시간 형식은 다양해서 at 4pm + 3 days , at 1am tomorrow 등으로 입력도 가능.

ubuntu에서 firewall 설정

목요일, 8월 14th, 2008

ubuntu linux에는 처음에 기본적으로 firewall을 작동시키지 않습니다.

iptables를 이용한 firewall 셋업은 원래 좀 피곤합니다. 이걸 GUI로 쉽게 해주는 툴이 있으면 좋겠는데요

찾아보면 많아서 뭘 써야할 지 모르는데, 인터넷 검색으로 추천하는 툴을 찾았습니다.

(http://linuxappfinder.com 라는 사이트에서 카테고리별로 브라우즈 할 수 있습니다. 랭크가 나와요)

기본 기능만 원한다면 firestarter를,

좀더 자세한 기능을 쓰려면 Guarddog을,

더 강력한 그리고 복잡한 기능을 쓰려면 fwbuilder를 쓰라는군요

예전에 iptables를 직접 스크립트를 작성해서 써봤지만 이번엔 간단하게 가고 싶어서 firestart를 썼습니다.

http://useopensource.blogspot.com/2007/03/how-to-setup-firewall-in-ubuntu.html 이쪽 링크에 잘 나옵니다.

설치방법은

$ sudo apt-get install firestarter

이렇게 하면 됩니다.

실행은

$ sudo firestarter

하시면 되구요

처음에 간단한 기능만 물어보는 마법사가 뜨고, Next Next로 설정하고 나면


image

이런 모양으로 나옵니다.

Policy 탭에서 열기 원하는 포트와 ip주소를 적어주고, Start Firewall 버튼을 눌러 활성화시키면 됩니다.

image

ps. 참고로 Lock Firewall 버튼은 누르지 마세요. 모든 통신을 끊어버립니다. 원격으로 실행하다가 이걸 누르면 서버 콘솔까지 달려가야 됩니다.

나머지 설명은 여기 링크에서 읽어보세요.

나머지 Guarddog, fwbuilder 도 위 링크에서 읽어보시기 바랍니다.