IT
-
리눅스 배포판을 선택하는 방법IT/DevOps 2013. 3. 3.
Linux.org에서 읽은 배포판 선택에 대한 글이 있어서 공유한다. 원본은 여기에서 읽으면 된다. 어떤 배포판을 써야할까??하나의 회사에 의해 배포하고 지원하는 윈도우나 맥OS 같은 상용 운영체제와 달리 상대적으로 리눅스는 버전은 여러가지이다. 수많은 회사와 단체, 그리고 개인이 리눅스를 개발해서 배포하고 있기 때문이다. 이런 다양한 버전이 공개적으로 사용 될 때, 이를 배포판(distributions)이라고 한다. 일반적으로 배포판들은 특정 목적을 가지고 만들어진다. 예를 들어 네트워크 트래픽을 처리하기 위해 웹 서버를 설치하여 운영하기 위한 서버용 리눅스 버전이 있다. 또한 네트워크 보안을 위한 리눅스 버전이 있다. 사실 방화벽(firewall)들은 대부분 리눅스를 통해 만들어진 경우가 많다. 라우..
-
안드로이드 커널의 통합IT/Linux Kernel 2013. 3. 2.
안드로이드는 Linux-base 운영체제를 사용하는 타블릿과 스마트폰과 같은 터치스크린 모바일 장비이다. 커널은 리눅스 커널을 사용한다. 하지만 모바일 최적화>를 위하여 커널에 driver를 추가해서 사용한다. 그렇기 때문에 리눅스 커널 코드를 복사하여 필요한 드라이버를 포팅한 커널을 따로 관리하고 있었는데, 리눅스 커널 3.3 버전부터 안드로이드 커널에 필요한 드라이버 코드들이 통합되기 시작했다. 앞으로도 계속 통합될 예정이라고도 한다. 아래는 LInux 3.3 버전 릴리즈노트에 표기되어 있는 안드로이드 통합에 대한 이야기이다. 1.1. Android mergeRecommended LWN article: Bringing Android closer to the mainlineThe Android proj..
-
Ubuntu Kenrel BuildIT/Linux Kernel 2013. 2. 26.
linux kernel을 다운받고 코드를 살펴보는 것은 쉽다. 인터넷만 빠르면 바로 받아서 볼수가 있다. 하지만 빌드하고 테스트하는 것은 linux 배포판마다 차이가 있어서 준비가 간단하지 않다. 보통은 커뮤니티에서 확인할 수 있는데 이 글에서는 Ubuntu 환경에서 커널 모듈을 작성하고 빌드 하는 방법을 정리하는 글이다. Ubuntu 커널 컴파일 가이드https://help.ubuntu.com/community/Kernel/Compile 개발 도구 설치 sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge sudo apt-get build-dep linux sudo apt-get install g..
-
System call과 glibcIT/Linux C 2013. 2. 24.
System call이란?자, 일단 System call이란 사용자 공간(User Space)에서 시스템(Kernel)에게 필요한 기능을 직접 요청하는 것으로 프로세스 또는 디스크 I/O, 메모리 요청등 종류도 다양하다. 리눅스에서 사용자 공간에 제공되는 System call들은 다양한 아키텍쳐(i386, powerPC,..)등을 지원하며 약 300여개 정도 명령들을 지원한다. ex) 리눅스 커널에서 x86 시스템에 대한 System call Table(arch/x86/kernel/syscall_table_32.S)ENTRY(sys_call_table) .long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */ .l..
-
int type을 bool type으로 활용하는 방안IT/Linux C 2013. 1. 18.
C언에서 !을 사용하게 되면, 0이 아닌 숫자의 경우에 대해서 0으로 변경하고 0인 경우에는 1로 값을 변화시켜준다. !을 한번만 사용하게 되면 자연스럽게 0 or 1의 값을 갖게 되고 !!을 하게 되면 최초 0일 경우에는 0으로 그리고 0이 아닌 값인 경우에는 1로 값이 변환되게 된다. 즉, bool type처럼 0 or 1의 값으로 활용 가능하다. int i = 12345; printf("%d\n", !i); printf("%d\n", !!i); 출력01 위의 내용들이 사실 필요할까 싶지만 다음의 linux kernel에서의 일부 코드를 살펴보면, static int ethtool_get_one_feature(struct net_device *dev, char __user *useraddr, u32 ..
-
Ubuntu에서도 Evernote를 실행해보자IT/Tools 2013. 1. 14.
윈도우 배포판 프로그램들은 윈도우에서만 실행되고, 맥에서 빌드된 프로그램들은 맥에서만 실행된다. 빌드된 환경에 따라서 binary format(Native)이 다르기 때문에 다른 운영체제에서는 실행을 할 수 없다. 리눅스에서는 오픈소스들로 만들어진 프로그램들은 쉽게 설치해서 사용할 수 있지만, 회사에서 만든 프로그램들은 소스코드를 오픈하지 않기 때문에 만든 곳에서 다른 운영체제에 대한 지원을 해주지 않으면 사용할 수가 없다. 보통은 Virtualbox와 같은 Virtual Machine으로 윈도우를 설치해서 사용해야 한다. Wine 윈도우용 프로그램을 리눅스에 직접 동작시켜주는 Wine이란 프로그램을 찾았다. http://www.winehq.org/ 엄밀히 말해 Wine은 POSIX 호환되는 운영체제에 ..
-
vim plugin manager, vundleIT/Tools 2013. 1. 12.
얼마전에 vim plugin 들에 대해 포스팅을 했었다. 2013/01/09 - [리눅스(Linux)/개발(Developemnt)] - 개발 생산성을 위한 필수 vim plugin plugin들은 설치하기 위해서는 vim-scripts 사이트에서 다운을 직접 받아서 설치해야 하며, 특별한 케이스는 설치 후 사용까지 몇가지 절차가 필요하다. 게다가 업그레이드 정보도 직접 웹사이트에서 확인해야 하는 불편함이 있다. vundlevundle이란 vim plugin을 관리하는 plugin이다. git에 등록된 plugin들을 가져와서 자동 설치와 자동 업그레이드, 삭제까지 편의성을 제공해준다. vundle은 설치할 plugin인들을 vimrc에 적어놓고 설치 또는 업그레이드 명령을 내리기만 하면 알아서 설치가 된..
-
kernel macro, container_ofIT/Linux Kernel 2013. 1. 11.
container_of 란?#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) container_of는 커널 매크로로써, 구조체의 멤버변수의 주소값만 알고 있다면 그 구조체 주소를 얻어 올 수 있는 방법입니다. 세가지 인자를 갖습니다.1. 멤버변수의 주소값(ptr)2. 구조체 type(struct)3. 멤버변수 이름(member) 이 세가지 정보를 가지고 구조체에 해당하는 주소를 가져오는데요. 원리는 간단합니다.일단, 해당 멤버변수가 구조체 시작 위치에서 어디에 위치하는지 offset..