Ubuntu를 사용하다보면 가끔 시간이 맞지 않는 경우가 있다.
이 때 시간을 맞추고 싶으면 어떻게 해야 할까?

X-Windows 화면에서 처리하는 방법에 대해서는 여기서 언급하지 않겠다.



Ubuntu 환경에서 주로 사용하는 시간맞추기 명령은 "ntpdate"이다.
없으면 apt-get으로 설치하면 된다.


설치는 쉽다.

$ sudo ntpdate time.kriss.re.kr

시간 정보를 알려주는 서버만 알고 있으면 된다.
많은 서버가 있으니 그 중 하나 골라잡으면 된다.

time2.kriss.re.kr
time.bora.net
ntp.kornet.net
ntp.postech.ac.kr
ntp.ewha.net
ticktock.ewha.net
time.bora.net

그런데, 위와 같이 했을 때 에러가 발생하는 경우가 있다.

$ sudo ntpdate time.kriss.re.kr
 9 Aug 16:09:27 ntpdate[17111]: no server suitable for synchronization found

보통 위와 같은 에러는 방화벽 등의 보안 문제로 종종 발생한다.
ntp 서버들과 통신할 때 123포트 등의 일반적이지 않은 포트를 사용하기 때문에 방화벽에서 막히는 것이다.

이럴 때엔 [ -u ] 옵션을 사용하면 보통 해결이 된다.

$ sudo ntpdate -u time.bora.net


위 서버 목록 중에서 주로 사용하는 것 중 하나가 time.kriss.re.kr 인데,
짧은 시간 동안 자주 접근하면 접속을 차단해버린다. 주의하기 바란다.
 
반응형

Ubuntu를 사용하면서 가장 중요한 것 중 하나가 바로 [ apt-get ] 명령이다.

그런데, 회사에서 Ubuntu를 사용하려고 하면 종종 부딪치는 문제가 바로 proxy이다.
보안을 위해서 또한 여러가지 이유로 어쩔 수 없는 proxy이지만...
사용자 입장에서는 정말 엄청 많이 번거로운 놈이 아닐 수 없다.


Ubuntu에서 기본 네트웍 설정에서 proxy를 설정해주었는데도
[ apt-get ] 명령을 시도하면 repository에 연결이 안되는 경우가 있다.

이는 [ apt-get ]에서 별도로 proxy 설정을 필요로 하기 때문이다.

$ sudo nano /etc/apt/apt.conf

Acquire::http::proxy "http://xxx.xxx.xxx.xxx:8080/";
Acquire::ftp::proxy "ftp://xxx.xxx.xxx.xxx:8080/";
Acquire::https::proxy "https://xxx.xxx.xxx.xxx:8080/";

[ /etc/apt/apt.conf ] 파일이 기존에 없을 것이다(물론 상황에 따라 이미 있는 분도 계시겠지만... 일반적으로).
새로 만들어서 위와 같이 proxy 설정을 해주면.... 슈루룩~

집에서는 당연히 proxy 환경이 아니고... 일부러 proxy 환경을 만들어놓기는 번거롭고...
회사에서는 보안문제로 스크린샷을 찍을 수 없고...
그래서 샘플 화면은 없습니다~!!! ^^


proxy 환경에서도 아름다운 ubuntu 생활을 합시다~ ^^
반응형

SSH 접속을 하게 되면 초기 화면이 좀 썰렁하게 나오곤 한다.

그래서 종종 접속 화면을 꾸미기도 하는데... 그냥 꾸미는 것이 아니라 시스템 정보가 나오면 어떨까?


1. 접속 화면?

     - ssh 터미널 접속을 하게 되면 Ubuntu에서 보여주는 기본 내용이나 공지(?)들이 나오곤 한다.




2. landscape

     - Ubuntu에서는 접속 화면에 시스템 정보를 보여주는 용도의 패키지를 제공해준다.


$ sudo apt-get install landscape-common


     - 이렇게만 하면 끝이다~!!!



3. 접속 화면

     - 아래와 같이 접속화면에 기본적인 시스템 정보가 나타난다.


     - 뭔가 있어보이는 화면이 너무나 손쉽게 설치를 할 수 있다!!!

 
반응형

'OS > Ubuntu' 카테고리의 다른 글

Ubuntu 시간 맞추기 (ntpdate)  (0) 2012.08.11
Ubuntu apt-get proxy  (0) 2012.08.10
Ubuntu에서 distcc 사용하기  (0) 2012.06.30
우분투 버전 확인 (lsb_release -a)  (0) 2012.06.30
Ubuntu in PowerPC (Mac Mini - A1103) - Wireless  (4) 2012.06.17

빌드 시간을 줄이기 위해서 최근 각광을 받고 있는 방법은.... 바로 분산 빌드이다.
형상관리 도구인 Git 도 바로 분산 형상관리인데...
여하튼 분산이 유행이다.

     - distcc: a fast, free distributed C/C++ compiler
     - https://code.google.com/p/distcc/


빌드를 나누어서 분산하여 수행을 한다라....
듣기만 해도 왠지 어려울 것 같고, 설정하기 힘들 것 같은데...
정작 해보면 의외로 쉽게 적용이 가능하다.


그런데, 실제 검증을 회사에서 진행을 해서리.... 스크린샷이 없습니다!
회사에서는 보안 이슈로 인하여, 스크린샷 같은 바이너리를 외부에 전송을 못한답니다.
아직 대출금이 많아서 회사에서 잘리면 안되기에..... ^^ 양해바랍니다!!!!!

(집에서 다시 하면 안되냐구요 ?! ㅋㅋ 지금 HDD 복구 프로젝트로 인하여 여건이 그닥 좋지가 않아서요...
 네... 네... 맞습니다. 귀차니즘 때문에..... 흑흑.... 흑흑.....)



1. Server 설치

     - distcc 에서는 Server와 Client가 필요하다.

     - 빌드를 수행하는 놈이 Client가 되고,
     - 빌드가 분산되어서 날라오는 것을 처리해주는 애들이 Server가 된다.

     - 빌드를 실행하는 놈도 같이 빌드를 수행하면 좋으므로 Client이지만, Server도 된다.

$ sudo apt-get install distcc distccmon-gnome

     - [ distcc ] 설치는 당연히 진행을 해야하는 것이고,
     - 그래픽컬한 모니터링을 위해서 추가로 [ distccmon-gnome ]을 설치해주면 좋다.

$ sudo nano /etc/default/distcc

STARTDISTCC="true"
ALLOWEDNETS="111.111.111.111 222.222.222.222 127.0.0.1"
LISTENER = “Server 자신의 실제 IP, not 127.0.0.1”

     - distcc를 사용하기 위해서는 기본값을 설정하는 부분이 있고, 실제 실행하는 스크립트가 있다.
     - 기본 설정값을 명시하기 위해서 위와 같이 작성하면 된다.

     - [ ALLOWEDNETS ] 값은 분산 빌드를 받아줄 IP를 명시하는 곳이다.
     - 어디에서 요청받은 것인지에 따라서 선택적으로 분산 빌드를 실행하는 것이다.

     - 경험적으로 보건데, 저 나열하는 순서를 기준으로 빌드를 할당하는 것으로 보인다.
     - 그러므로 당연한 이야기이지만 자신의 PC가 성능이 괜찮으면 자신을 앞으로 놓는 것이 좋을 것이고.
     - 자산의 PC 성능이 나뻐서 분산 빌드를 수행하는 것이라면 다른 서버를 앞에 위치하는 것이 좋다.

     - [ LISTENER ] 부분은 실제 빌드를 수행하는 Client라면 그냥 "127.0.0.1"이라고 해줘도 되지만,
        외부로부터의 빌드 요청을 받는 Server라면 자신의 실제 IP를 적어줘야 한다.


2. distcc PATH

     - ccache와 유사한 방식으로 동작을 하는 distcc 이므로, ccache와 같은 방식으로 환경을 맞춰주자.

$ cd /srv/install/distcc/path

$ ln -s /usr/bin/distcc arm-generic-linux-gnueabi-c++
$ ln -s /usr/bin/distcc arm-generic-linux-gnueabi-cc
$ ln -s /usr/bin/distcc arm-generic-linux-gnueabi-g++
$ ln -s /usr/bin/distcc arm-generic-linux-gnueabi-gcc
$ ln -s /usr/bin/distcc arm-generic-linux-gnueabi-gcc-4.3.2

     - distcc의 장점 중 하나는 Cross-compile 환경에서도 적용이 가능하다.
     - 빌드 실행 환경만 맞춰주면 된다.

     - 위의 예는 freescale 환경의 Cross-compiler 들의 동적링크를 distcc로 설정한 것이다.

     - [ arm-generic-linux-gnueabi-g++ ]을 실행하려고 하면, 대신에 [ /usr/bin/distcc ]가 실행되도록 하면 된다.

     - 위와 같이 설정한 것을 distcc에게도 알려줘야 한다.

$ sudo nano /etc/init.d/distcc

PATH=/srv/install/distcc/path:/컴파일러경로:$PATH

     - 위와 같이 설정을 했다면 이제 실행하자.

$ sudo /etc/init.d/distcc start




3, execute

     - 이제 분산 빌드가 필요한 어떤 소스코드를 빌드를 해보자.

$ export PATH=/srv/install/distcc/path:$PATH
$ export MAKE="make -j8"
$ make

     - 이렇게 하면 끝이다.
     - 그냥 자기가 알아서 적당히 분산해서 빌드해주고 결과를 만들어준다.

     - make j 옵션의 숫자를 좀 크게 적어주면 된다.
     - 여기에서는 로컬 PC의 core 갯수가 기준이 아니다. 분산으로 쪼개서 빌드를 수행할 기준이다.

     - 지금 어떻게 빌드가 되고 있는지 보고 싶다면...

$ distccmon-text

$ distccmon-gnome

     - 텍스트로 보는 것 보다는 예쁜 화면으로 보는 것이 보기 좋다.

     - 어떻게 분산되어서 빌드가 되는지를 막대기로 보여주는데...
     - 빨간색으로 표시된 부분은 분산을 해서 빌드를 하려고 했는데,
       에러가 나서 그냥 로컬에서 다시 빌드를 수행한다는 의미이다.
     - 즉, 분산 시도가 에러가 나면 그냥 로컬에서 빌드룰 수행함으로써 결과물에는 지장이 없도록 해준다.



4. error

     - 사정이 여의치 않아서 발생하는 error 들에 대해서 집중적으로 파고들지는 못했다.

     - 우선, 빌드가 수행되다 보면, 아래와 같은 메시지가 나온다.

(dcc_mkdir) ERROR: mkdir '//.distcc' failed: Permission denied

     - [ .distcc ] 파일을 생성해야하는데, 권한 문제가 발생해서 제대로 하지 못했다는 것인데...
     - distcc는 자신의 실행 권한을 위해서 [ distccd ]라는 계정을 만들어서 활용한다.

     - 계정도 빌드 실행 계정과 distcc 계정 간의 관계도 있고 뭐 복잡하고 하니 그냥 막 권한을 풀어주면 될 것 같은데,
     - 권한 문제를 풀어줘도 다른 문제가 발생하는 등 여러 이슈가 있다.

     - [ zeroconf ] 문제도 이어서 발생하는데, 이걸 사용하지 않는다라고 환경 설정을 해도 여전히 발생하곤 한다.

     - 이게 ubuntu에 포함된 패키지의 버그인지 검증해보기 위해서 소스 설치해서 진행해보고....해야하는데...
     - 귀차니즘이.... 그냥 막....

     - 위에 명시한 에러가 발생을 해도 분산 빌드가 잘 실행이 된다.

     - 나중에 직접 분산빌드를 수행할 일이 생기면, 이 부분에 대해서 추가로 검증을 해보기로 하고...
     - 지금 이번에는 그냥 무시~~~!!!




5. 잡소리

     - 회사에서 빌드가 약 500~600분 정도 소요되는 것이 있어서 빌드시간을 단축하고자 distcc를 적용해보았다.
     - 그랬더니 약 40% 이상의 시간을 단축할 수 있었다!!!! 와우~!!!
     - 그 외에도 몇 건의 빌드에 적용 검증을 해보았는데, 40~60% 정도의 이득을 볼 수 있었다.

     - ccache의 경우에는 탁월한 빌드 시간 단축이 가능하지만,
     - 최초 빌드 시에는 1~2% 정도의 시간이 오히려 증가한다라는 단점이 있다.

     - 그래서, 자료들을 찾아보면 ccache와 distcc를 동시에 적용해서 사용하는 것을 추천하곤 한다.


     - QT Library 빌드도 필요해서 distcc를 적용해보았는데, 많은 문제가 있어서 결국 제외를 했다.
     - QMake 라는 것을 사용하기 때문에 발생하는 문제로 보이기는 하지만.... 심도있는 분석은 다음 기회에...
     - QT의 경우에는 distcc의 pump mode라는 것을 적용하면 쓸만하다는 이야기가 있지만... 잘 안되었다.



     - distcc가 최근 집중하는 것은 pump mode인 것 같다.
     - 하지만, 개인적으로 아직은 안정적이지는 않은 것으로 보인다.
     - pump 관련하여서는 추가적으로 검증 작업을 진행 후에 적용할 계획이다.

     - 기본 mode에 비해서 엄청 많이 빠르다고 하는데.... 꼭 검증해봐서 적용할 수 있으면 좋겠다.


반응형

VirtualBox 등을 설치할 때 Host가 Ubuntu인 경우 버전 등을 확인해야할 때가 있다.


Ubuntu 버전은 무엇인지, 32bit/64bit 어떤 것인지.... 등에 따라서 배포되는 패키지가 다르기 때문이다.

그런데, 내가 사용하고 있는 Ubuntu가 어떤 버전인지 잊어버렸다면 어떻게 해야할까?


$ lsb_release -a

위와 같이 실행하면 친절하게도 잘 나온다.

어?! 그런데 "No LSB modules are available."이라는 문구가 나온다.

본래 [ lsb_release ]라는 명령어의 의미는
"The lsb_release command prints certain LSB (Linux Standard Base) and Distribution information."이다.

'No LSB ...' 문구가 보기 싫으면 다음과 같이 하면 된다.


$ sudo apt-get install lsb

한 두개가 아니라 총 41개의 패키지를 설치한다.


다시 [ lsb_release -a ]를 실행하면 위와 같이 나온다.
오히려 더 지저분하게 된다.


뭐 여하튼, 이렇게 하면 어떤 버전의 Ubuntu를 설치했는지 확인이 가능하다.

그런데, 32bit 버전을 설치했는지, 64bit 버전을 설치했는지는 확인이 안된다.


$ uname -a

위 스크린샷을 잘 살펴보면 뒷 부분에 [ i686 ] 이라는 문구가 보일 것이다.
이렇게 되어있으면, [ 32bit ]이다.

그러면, 64bit 버전이 설치되어있는 경우엔 뭐라고 나올까?
같은 부분에 i686 대신에 [ x86/64 ]라고 표기가 된다.


자신이 사용하고 있는 Ubuntu가 어떤 놈인지 확인하면서 즐거운 Ubuntu 생활이 되시길...
반응형

이 놈의 예쁜 맥미니는 착하게도 Wireless Lan이 가능하다.
그런데, Ubuntu의 단점 중 하나로 Wireless 설정을 알아서 착하게 샤라락 되지를 않는다.

지금은 응급(?)으로 공유기에서 유선으로 주우욱 연결해 놓은 상태~

지금부터는 Wireless 연결을 하는 과정을 포스팅해보려 한다.


앞에서 설치부터 살펴보신 분은 아시겠지만,
여기 이 포스팅은 Ubuntu 12.04 버전 기준이다.




1. SSH로 연결하기

     - Mac-Mini에서 작업한 것을 포스팅하기 힘들거 귀찮으므로 SSH로 접속해서 작업하기로 한다.


     - 처음엔 접속이 안될 수도 있다.

$ sudo apt-get install openssh-server
$ ifconfig

     - [ openssh-server ] 패키지는 기본으로 설치되어있지 않다. 설치를 해주면 되고...
     - 접속할 IP를 확인하기 위해서는 [ ifconfig ]를 실행하면 된다.



2. Driver

     - Wireless Device의 Driver가 올바르게 설치되어있는지 먼저 확인해야 한다.


$ lspci | grep Network
$ dmesg | grep -i woreless

     - 이런! driver가 설치되어있지 않단다.

     - 설치에 들어가자!!!

$ sudo apt-get install b43-fwcutter firmware-b43-installer bcmwl*
$ sudo reboot

     - 이렇게만 하면 뭔가 변경되어있다!



     - 스크린샷 찍어서 전송할 수도 있지만, 귀차니즘으로 폰카로 찍어버렸다....^^

     - 이전에는 찾아내지 못했던 것들을 찾아내는 이쁜 나의 Mac-Mini ~ !!!
     - 이젠 주렁주렁 지저분한 UTP Cable을 걷어내고 Wireless 생활을 하자~!!!



우리 나이 많이 먹은 Mac-Mini를 사랑하는 여러분들 모두 파이팅~!!!

반응형

필자의 집에는 오래된 맥미니(Mac Mini)가 있다.
얼마나 오래되었냐면.... CPU가 PowerPC인 모델로...  Intel CPU 기반의 Mac-OS나 Ubuntu 설치를 하지 못한다.



1. Mac Mini

     - 설치를 하고자 하는 Mac Mini에 대해서 먼저 살펴보자.


     - 너무나 오래되어서 모델명은 커녕 스펙조차 기억이 나지를 않아서 폰카로 사진 찰칵찰칵 해봤다.


     - 바닥의 윗쪽을 찍으니 스펙도 찍혀있다~!!!

 Model A1103 
 CPU G4 - 1.42 GHz 
 Ram 512 MB 
 HDD 80 GB 

     - 해당 모델로 인터넷 검색을 하다보니, 이런 슬픈 말이 있었다...
       " 되는 것 빼곤 나머지는 안되는" 그런 제품이라는....^^

     - 일단 CPU가 G4 PowerPC 이기에.... 쉽게 말해서 이제는 Apple에서도 버린 제품라인이다.




2. Ubuntu

     - Mac-OS를 설치해봐야 개인적으로 잘 아는 분야도 아니고...
     - iPhone 앱 프로그래밍을 위해서 써먹으려 하다가... iPhone을 팔아버리니 그닥 땡기지도 않고... ^^

     - 그래서, 개인적으로 좋아하는 Ubuntu를 설치해보기로 마음먹었다.

     - 그러다가 알게된 사실... PowerPC 用 Ubuntu도 꾸준히 지원을 해주고 있다!!!!!!
     - 물론 Intel 기반의 Ubuntu에 비해서는 지원이 살짝 부족하긴 하지만...

     - Ubuntu 사이트를 살펴보면 LTS 기준으로는 꾸준히 제공을 해준다.
          ▷ http://cdimage.ubuntu.com/releases/precise/release/

ubuntu-12.04-desktop-powerpc.iso

     - 위 파일을 다운로드 받아서 CD로 구워서 설치를 진행하면 된다.

     - PowerPC 用 이라고 하여 별다를 것은 전혀 없다!!! 이 얼마나 친절한 Ubuntu란 말인가~!!!




3. Install

     - 화면 캡쳐를 하기 애매한 상황이니만큼 텍스트로 설치 과정 時 겪게 되는 상황을 적어보겠다.

     - 일단, Booting 時 우리가 만든 CD로 부팅을 하기 위해서 재빨리 키보드로 "c"를 눌러줘야 한다.
     - 조금 늦을 경우 기존 OS로 그냥 바로 넘어간다 ^^

     -그 다음 boot 옵션을 묻는데, 그냥 뭐 바로 엔터를 눌러버리자.

     - live로 부팅이 되는데, 부팅 후 바탕화면을 보면 Install Ubuntu 12.04 LTS 가 있다. 클릭!
     - 한국어로 선택 후 계속........

     - 속도가 좀 벅벅~벅벅~ 그러지만, 그래도 뭐 설치는 되니까.... ^^

     - 설치할 때에 화면보호기 때문에 조금 짜증이 나지만 뭐 마우스 한 번씩 꿈틀거리면 된다.
     - 물론 메뉴를 통해 화면보호기를 끌 수도 있지만... 그렇지 않아도 벅벅거리는지라....^^

     - 많이 답답하지만, 정말 벅~벅~ 그래도 Ubuntu가 설치된다는 기대감을 갖고 기다리고... 기다리고...
     - 뭔가 징~ 징~ 드르륵~ 드르륵~ 움직이는 것만으로도 사실 좀 신기하다 ^^

     - 물론 GUI 환경 포기하고... 옵션 조정해서 필요없는거 제외해서 커널 컴파일하고... 하면 좀 더 쾌적해지겠지만
       필자가 원하는건 그냥 편하게 쓸 수 있는 Linux machine이었기 때문에... 뭐... 귀차니즘도 한 몫하고...

     - 설치가 모두 끝나고 재시작을 묻는 창이 등장하니 살짝 두근두근....^^

     - 재부팅을 하던 중 freezing이 되기도 했지만, 그냥 강제 재부팅을 하니 또 잘 되었다.

     - update-manager를 구동하면 한국 서버(kr.ubuntu...)에서는 파일을 찾지 못한다고 에러가 발생을 하기도 한다.
     - 즉, 주서버만 사용을 해야한다.
     - 아무래도 kr.ubun.... 한국 쪽 서버에서는 powerpc 쪽 파일들이 없는 것으로 추정된다.



이후 Mac Mini에서 Ubuntu 생활을 하면서 특이한 일이 생기면 계속 포스팅해보겠다.

반응형

'OS > Ubuntu' 카테고리의 다른 글

우분투 버전 확인 (lsb_release -a)  (0) 2012.06.30
Ubuntu in PowerPC (Mac Mini - A1103) - Wireless  (4) 2012.06.17
sudo 패스워드 없이 사용하기 ( in Ubuntu )  (1) 2012.06.15
서버 모니터링 - Munin  (0) 2012.04.21
Linux Version 확인  (0) 2010.04.09

Ubuntu를 사용하게 되면 가장 많이 사용하는 명령어가 바로 "sudo"이다.
즉, root 권한으로 특정 명령을 실행하는 것인데...


Desktop 운영체제로 Linux를 사용하는 경우 기본 사용자를 종종 root로 하곤 한다.
하지만, Linux를 공부하게 되면 제일 자주 듣는 이야기 중 하나 "root는 위험해요~!!!"

그래서 Ubuntu는 기본적으로 root가 아닌 사용자를 사용하도록 하고 있다.
대신에 sudoer라는 그룹을 두고 해당 그룹에 속하는 계정들에게만
root 권한을 임의로 사용할 수 있도록 허용해준다.
그 방법이 바로 "sudo"이다.


그런데, sudo 명령을 사용할 때에 password 입력을 자꾸 요구하는 것이 번거로울 때가 있다.
그래서 이번 포스트에서는 sudo를 사용할 때에 password를 입력하지 않는 방법을 알아보고자 한다.



1. Password

     - sudo 명령을 이용하는 경우에 password 입력을 요구한다.


     - 물론 한 번 입력하면 한 동안은 password 입력 없이 sudo를 이용할 수는 있지만...




2. /etc/sudoers.d/

     - 특정 계정에 대한 설정을 입력하기 위해서는 파일 하나를 생성해야 한다.


$ sudo nano /etc/sudoers.d/mysudoers

     - 기존 파일을 수정하는 것이 아니라 파일을 하나 만들어야 한다.


chani ALL = NOPASSWD: POWEROFF, SHUTDOWN, HALT, /usr/bin/update-manager

     - 앞의 "chani"는 설정을 할 계정이름이다. 내 경우에 "chani"라는 것이고 다른 분들은 각자 상황에 맞춰서...

     - 뒤의 설정값은 살펴보면 다 알 수 있을 것이라 기대한다.
     - 패스워드 입력안할래... 파워도 끌 수 있고 셧다운도 할 수 있고..........

     - 만약 "apt-get"을 패스워드 입력없이 사용하고 싶다면, 위 파일을 편집하면 된다.

chani ALL = NOPASSWD: POWEROFF, SHUTDOWN, HALT, /usr/bin/update-manager, /usr/bin/apt-get

     - 위처럼 뒤에 해당 명령어를 추가해주면 된다.


$ sudo chmod 0440 /etc/sudoers.d/mysudoers

     - 방금 만든 파일의 속성값을 바꿔주면 이제 모두 끝~!!!





이제부터는 sudo 명령을 사용할 때에 chani 계정은 패스워드 입력없이 사용할 수 있다.

여러분 모두 즐거운 Ubuntu 생활 하세요~~~~

반응형

+ Recent posts