Your wish is my command

It’s a long journey

VMWare에서 Xen설치할때 Vmnet 어쩌구저쩌구..

Ubuntu에서 VMWare를 사용하고 있었습니다. 원래는 VirtualBox를 사용했었지만, 그녀석이 안의 가상머신에서는 가상화 기술(vmx or svm)을 지원해주지 않아서 말이죠..

그런데 VMware에 Xen을 설치하고 재부팅하면 네트웍 카드를 promiscuous로 허용하지 않는다고 메시지가 뜹니다. 보안때문이라나.. 간단히 아래처럼 하면 됩니다.

$ chmod a+rw /dev/vmnet*

이렇게하면 되기는 하는데, 시스템을 리부팅하면 /dev/vmnet*의 권한이 다시 재설정됩니다. ㅡㅡ 그래서 또 권한을 주고 udev에 등록을.~

$ cp -a /dev/vmnet* /lib/udev/devices

삽질 끝~

Screen 상태표시줄에 세션 이름 표시하기

screen을 여러 세션을 쓰다보면 현재 어떤 세션에 있는지 헷갈린다. 지금만 봐도 세션을 열어놓은게 5개정도이고, 거기서 한 4~5개씩 윈도우를 열어넣고 있으니…

그래서 세션 이름을 상태줄에다 표시하는 방법을 찾아봤다.

screen이 실행하면 $STY 환경변수에 세션이름을 가지고 있는데, 이걸 표시하면 된다. 그런데 이걸 screenrc에 넣으면 표시가 안된다. 그래서 screen -X로 스크린에 명령을 직접 내리는 방식으로 변경했다.

if [ "$STY" != " ]; then
    _STY=`echo $STY | sed 's/^[0-9]*\.//'`
    screen -X hardstatus alwayslastline "$_STY] %-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
fi

훨씬 쾌적한 screen life!

커널 옵션 한방에 수정하기

요즘 Xen을 가지고 놀고 있습니다.

아직 공부하는 중이라 커널 컴파일을 자주하게 되는데 이럴때 정말로 귀찮은게 커널의 옵션들을 일일이 맞춰주는 겁니다. 정말로 귀찮습니다.

그래서 걍 스크립트질로 처리해버렸네요~~

#!/bin/sh
# Xen 관련 설정들: http://wiki.xensource.com/xenwiki/XenParavirtOps 참고
configs="CONFIG_PARAVIRT=y
CONFIG_XEN=y
CONFIGPARAVIRTGUEST=y
CONFIGPARAVIRTSPINLOCKS=y
CONFIGHVCDRIVER=y
CONFIGHVCXEN=y
CONFIGXENFBDEV_FRONTEND=y
CONFIGXENBLKDEV_FRONTEND=y
CONFIGXENNETDEV_FRONTEND=y
CONFIGXENPCIDEV_FRONTEND=y
CONFIGINPUTXENKBDDEVFRONTEND=y
CONFIGXENFBDEV_FRONTEND=y
CONFIGXENXENBUS_FRONTEND=y
CONFIGXENSAVE_RESTORE=y
CONFIGXENGRANTDEVALLOC=m
CONFIGXENTMEM=y
CONFIG_CLEANCACHE=y
CONFIG_FRONTSWAP=y
CONFIGXENSELFBALLOONING=y
CONFIGX86IO_APIC=y
CONFIG_ACPI=y
CONFIGACPIPROCFS=y
CONFIGXENDOM0=y
CONFIGPCIXEN=y
CONFIGXENDEV_EVTCHN=y
CONFIG_XENFS=y
CONFIGXENCOMPAT_XENFS=y
CONFIGXENSYS_HYPERVISOR=y
CONFIGXENGNTDEV=y
CONFIGXENBACKEND=y
CONFIGXENNETDEV_BACKEND=m
CONFIGXENBLKDEV_BACKEND=m
CONFIGXENPCIDEV_BACKEND=m
CONFIGXENPRIVILEGED_GUEST=y
CONFIGXENBALLOON=y
CONFIGXENSCRUB_PAGES=y
CONFIGXENDEV_EVTCHN=y
CONFIGXENGNTDEV=y
"
# Xen 추가 설정
configs="$configs
CONFIGXENBLKDEV_TAP=y
CONFIGXENBLKDEV_BACKEND=y
"

# initramfs에 필요한 설정들
configs="$configs
CONFIGMDRAID0=y
CONFIGMDRAID1=y
CONFIGMDRAID10=y
CONFIGMDRAID456=y
"

config_script='scripts/config'

for _config in $configs ; do
    key=`echo $_config | awk 'BEGIN {FS="=";} {print $1}'`
    value=`echo $_config | awk 'BEGIN {FS="=";} {print $2}'`

    case "$value" in
        y)
            $config_script -enable $key
            ;;
        m)
            $config_script -module $key
            ;;
        *)
            $config_script -disable $key
    esac
done
  • Update: BLKDEV_TAP 추가 (blktap2 디바이스 사용)

Netsted Screen

screen 안에서 screen을 사용할 경우(방화벽을 통해서 들어가는 시스템… 등등)에 ctrl + a를 누르면 최초 실행한 screen이 이 명령을 먹어버린다.

그럼 screen 안의 screen에는 어떻게 명령을 내릴까? 아주 간단하다.

Ctrl + a, a 명령으로 내리면 된다. screen이 netsted된 횟수만큼 a를 누르고 다음 명령~

ㅋㅋ

Gnu Screen에서 스크린 이동

음.. 말로 설명하기 좀 거시기 한데.. screen에서 계속 윈도우를 만들면 비어있는 윈도우중 가장 빠른 번호의 윈도으로 만들어 집니다.

윈도우가 0, 1, 4, 5, 7 이렇게 있다면 새로운 윈도우를 만들면 3으로 할당되는 것이죠.

그런데 가끔 이 윈도우를 맘대로 이동하고 싶을 때가 있습니다. 비슷한 작업을 하는 윈도우는 바로 옆에 놓고 싶은데요.. 그럴 경우는

^a:number: 1

이렇게 합면 됩니다. 저거 보고 좀 헷갈리긴 하죠.

  1. ^a: 를 입력하면 screen prompt가 나옵니다.
  2. number: 1 을 입력합니다.

http://lists.gnu.org/archive/html/screen-users/2007-11/msg00002.html

즐거운 screen 생활 하시길~

VirtualBox에서 Unubtu를 복제할 경우의 Eth0의 문제

최근 VirtualBox를 가지고 놀고 있는데, 너무 자주 설치하는 것 같아서 기본 시스템을 만들어 놓고 거기서 복제하는 방식으로 가려고 했다.

그런데 복제를 하면 eth0가 사라지고 eth1이 생기는 것 아닌가? 이러니 dhcp로 설정을 하더라도 제대로 네트웍 카드를 못찾는 문제가 발생한다.

수동으로 이 문제를 해결하려면 lshw 명령으로 네트웍 카드의를 확인하고 /etc/network/interface 파일을 수정하면 된다.

$ lshw -class network

/etc/network/interface:
auto eth0
iface eth0 inet static
    address 115.68.55.200
    netmask 255.255.255.0
    network 115.68.55.0
    broadcast 115.68.55.255
    gateway 115.68.55.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers ?

우선 수동으로 해결하고 문제가 뭔지 잠깐 구글링 해보니 역시나 문제는 우분투 시스템이었다.

Duplicated Virtual Machines Have Same IP Address

Ok, that Ubuntu issue is a known problem. It saves the assignment of MAC <==> ethX using an udev rule. Have a look at /etc/udev/rules.d and you will find a file 70-persistent-net.rules there. You can savely remove this file. This file is auto-generated by /lib/udev/rules.d/75-persistent-net-generator.rules. You can remove that file as well. From now on, the guest will no longer store the assignment between the MAC and ethX interface.

정리하자면 우분투는 MAC 주소화 ethX를 mapping하고 있고, 그 데이터는 /etc/udev/rules.d/70-persistent-net.rules에 있는 것이구나.

잠깐 더 조사해보니 그냥 /etc/udev/rules.d/70-persistent-net.rules를 지워버리는 건 의미 없다. 어짜피 그 파일은 현재 상태를 NIC와 ethX를 지정해 놓는 파일이고, 실제로 이 짓을 하는 것은 /lib/udev/write_net_rules 다.

$ chmod -x /lib/udev/write_net_rules

근데 잠깐 더 생각해보니, 이 기능이 있는건 NIC가 막 바뀌는 경우는 해당 디바이스와 네트웍 설정을 기억하게 해서 괜찮은 기능이겠다. 없다면 물리적 순서에 의해서 eth0부터 정해질 것이고, 이 순서가 바뀔 가능성이 있는 시스템이면 네트웍 잡기가 혼란스럽겠다.

결국 실행권한을 주는 것 보다는, 네트웍 환경이 바뀌면 저 파일을 지워버리자~

Lucid(10.04)에서 Ubuntu-xen-server 설치하기

Lucid에서는 공식적으로 Xen을 지원하지 않는다.

아래 페이지에 나온 PPA를 설정해서 Xen을 설치해야한다. 대략적은 과정은 다음과 같다.

/etc/apt/sources.list에 PPA 추가

deb http://ppa.launchpad.net/xtaran/xen-tools/ubuntu lucid main
deb-src http://ppa.launchpad.net/xtaran/xen-tools/ubuntu lucid main

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:xtaran/xen-tools
sudo apt-get update
sudo apt-get install ubuntu-xen-server

https://help.ubuntu.com/community/Xen#Installation

Google, iCloud의 iPhone에서 교통정리

아이폰에서 메일 / 캘린더 / 연락처 / 메모 등의 사용을 정리하면 다음과 같다.

  • Gmail as Exchange: 메일 / 캘린더 연락처
  • Gmail: 메모(근데 실제로는 에버노트를 주로 사용, 아주 간단한 것만 이걸로..)
  • iCloud: 메일 / 캘린더 / 연락처 / 메모를 제외한 서비스
Gmail을 그냥 gmail로 등록하면 연락처가 동기화 되지 않으므로~~
* 마지막 남은 문제는 개인 개정의 gmail 연락처와 회사에서 쓰는 gmail 계정의 주소록 데이터를 mac에서 사용할 수 있게 하는 것인데.. 이건 현재로써는 3rd party 소프트웨어를 사용하지 않고선 해결할 수 없다. ㅡㅡ

Checking Battery State…

아침에 우분트 머신을 켜는데 “Checking battery state….”라는 메시지를 뱉은 후 멍하니 아무것도 안한다… 열심히 찾아보다가 한 방에 끝냈다.

$ sudo apt-get install -reinstall gdm xorg

아침부터 생 쑈를..~

~/.ssh/ssh_config

Host *
TCPKeepAlive yes

HOST hostname
IdentifyFile ~/.ssh/host.rsa