- 2013/11/28 11:47
- K4425515.egloos.com/3063014
- 덧글수 : 0

- 2013/11/26 19:03
- K4425515.egloos.com/3062751
- 덧글수 : 0
장히어려웠던 작업이었다.무려 2주일이소모되었다 -_-
그만큼크로스 컴파일에는 세심한 주의가 필요한 작업이다.작업은 크게두가지 이다.한가지는라즈베리파이에서 직접 native환경에서작업을 하는것과 크로스컴파일 환경에서 작업을하는것이다.두가지중에서어느것이 쉽냐고 물어본다면,당연히첫번째 작업이다.
하고나서 문제는 라즈베리 파이의 Wheezy는 /dev/mem가 이미 I/O에 사용되는 물리주소를 선점중이다. 당연히 이짓은 뻘짓이다
1.
먼저라즈베리서 작업을 하는것을 설명하겠다.커널은3.1.9+이다.재미있는점은 나는 2012-07-15에빌드된것 같은 2012-07-15-wheezy-raspbian.img를사용해서 먼저 이미지를 덮어 씌웠다.그렇게라즈베리를 준비시켜주고 라즈베리에 원격접속하거나직접 화면을 보면서 아래의 명령을 입력시켜주자.
$cd /usr/src $sudo wget -O raspberrypi-linux-3.1.9.tar.gz https://github.com/raspberrypi/linux/tarball/ rpi-patches $sudo tar xzf raspberrypi-linux-3.1.9.tar.gz $sudo ln -s /usr/src/raspberrypi-linux-eab45cb /lib/modules/`uname -r`/build $cd /usr/src/raspberrypi-linux-8fa2e19 $sudo sh -c 'zcat /proc/config.gz > .config' $sudo sed -i 's/EXTRAVERSION =.*/EXTRAVERSION = +/' Makefile $wget http://www.grendelman.net/files/raspi/Module.symvers $sudo cp ~/Module.symvers . $sudo make oldconfig $sudo make modules_prepare |
대충명령의 개요는 일반적으로 리눅스에 적재되있는소스파일의 디렉토리에 소스파일을 적재시켜주고서oldconfig를사용하고 modules_prepare를사용하는것이다.사실은 Module.symvers를다운받아도 상관이 없고 직접 컴파일해서 복사해도상관없다.나는이것을 두번얻었는데,첫번째는그냥 웹문서를 참고하면서 두번째는 크로스 컴파일을꾸미는 과정에서 과정에서 얻었다.
위의과정이 무사히 끝났다면 이제 기본적인 준비는 완료가된것이다.이제 기본적인helloworld를 시작해보자.아래의문서를 같은 디렉토리에 작성한다.
hello.c |
// Defining __KERNEL__ and MODULE allows us to access kernel-level code not usually available to userspace programs. #undef __KERNEL__ #define __KERNEL__
#undef MODULE #define MODULE
// Linux Kernel/LKM headers: module.h is needed by all modules and kernel.h is needed for KERN_INFO. #include <linux/module.h> // included for all kernel modules #include <linux/kernel.h> // included for KERN_INFO #include <linux/init.h> // included for __init and __exit macros
static int __init hello_init(void) { printk(KERN_INFO "Hello world!\n"); return 0; // Non-zero return means that the module couldn't be loaded. }
static void __exit hello_cleanup(void) { printk(KERN_INFO "Cleaning up module.\n"); }
module_init(hello_init); module_exit(hello_cleanup); |
Makefile |
obj-m := hello.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd)
all: $(MAKE) -C $(KDIR) M=$(PWD) modules |
전부파일작성을 완료하였다면.아래와 같이명령을 입력하자.
$sudo insmod hello.ko $sudo rmmod hello |
그리고나서dmesg명령을실행시켜주면 확인이 가능하다.
$dmesg . . . [ 2042.460603] Hello world! [ 2092.632882] Cleaning up module. |
- 2013/11/26 18:57
- K4425515.egloos.com/3062750
- 덧글수 : 0
#sudo apt-get install ia32-libs |
#./configure #./ct-ng menuconfig |






#./sudo ct-ng build |
- 2013/11/19 21:49
- K4425515.egloos.com/3061578
- 덧글수 : 0
- 2013/11/15 17:38
- K4425515.egloos.com/3060861
- 덧글수 : 0


- 2013/01/19 00:15
- K4425515.egloos.com/2996603
- 덧글수 : 0
SNS의 보급으로 정말로 손쉽게 자신의 의견을 오만방에 퍼뜨릴수있고, 한편으로 너무나 쓰레기같은 생각을 인간들이 많다는것 또한 확인하였다. 이곳도 예외는 아니다. 맛집블로거도 그런 쓰레기중에 하나다. 글을 쓰면서도 짜증이 솟아오른다.
이곳도 예외는 아니었다. 보면서 얼굴을 찡그리게 하는 인신공격을 너무나 많이 봐왔고, 트위터로 따지만 팔로워(?)같은 이웃을 급격하게 늘려서 자신의 존재를 주목받고 싶어하는 사람들도 너무나 많다. 예전에 댓글이 귀하다고 했던가? 씨발진짜 좆같다.
그렇지만, 정말로 부족한 솜씨이지만 누군가 보면 웃을만한 일들을 적기도 하고, 개인적으로 누군가에게 하고 싶은 이야기도 적어보고 싶었다.
내가 변한점은 pogoplug를 이용하여 Web서버기능을 사용할수 있다는 점이고, 또한 도메인또한 소유하고 있다는 점이다. 뿐만 아니라 지난 시간동안 기술력이 많이 늘어서 전문적으로 배우지도 않았고, 전공도 아니지만 부족하게나마 나만의 웹사이트를 구축할수있는 능력이 있다는것이다.
아마도 구축하는데 시간이 꽤나 소유되겠지만, 안녕을 고할수 있다. 이제는 쓰레기들하고 안만날수있다.
- 2013/01/17 01:57
- K4425515.egloos.com/2996130
- 덧글수 : 0

#pacman -Syu #pacman -S postfix |
#/etc/rc.d/postfix stop #/etc/rc.d/postfix start |
- 2013/01/17 00:18
- K4425515.egloos.com/2996111
- 덧글수 : 0

- 2013/01/10 14:59
- K4425515.egloos.com/2994530
- 덧글수 : 0
따라서 툴체인을 사용해서 크로스 컴파일을 생각할수밖에 없었고 아래의 git명령으로 툴체인을 다운받으면 된다. 문제는 몇가지 버젼의 컴파일러를 제공하는것으로 보여 그중하나를 가지고 실행했지만 helloworld가 실패를 하면서 알수없게 되버렸다.
여기에는 제공되는 컴파일러중에서 tools/arm-bcm2708/arm-bcm2708-linux-gnueabi 위치에 있는 컴파일러를 사용하면 될거 같다. 역시나 이것또한 몸으로 익힌것이라 이유를 물어보면...
다만 해외에서는 그냥 대충하더만 커널까지 컴파일했다고하는데, 그쪽은 어떻게 했는지 잘모르겠다. 호스트시스템이 다른가?
#git clone https://github.com/raspberrypi/tools.git |
최근 덧글