www.arm.co.kr 에서 linux_2.6.17-rebis.zip 파일을 다운받자.

파일들 경로는 자신이 쓰기 편한곳으로 복사 후 사용.

압축을 풀면 Kernel26, Ramdisk Tools mds-u-boot 폴더가 생긴다.

Tools 폴더 안에잇는 oe 폴더를 /usr/local/arm 에 복사.

Kernel26 폴더 안에 있는 커널 소스를 압축풀고 /linux_src/밑에 복사.

Ramdisk 폴더 안에 있는 램디스크를 /tftpboot/myrootdir_2.6 폴더에 램디스크 내용을 옮긴다.

2.6 kernel 용 환경설정 쉘을 만들어 주자.


:
rebis kernel2.6 logo....

png 형식의 image.png 준비

# pngtopnm image.png | ppmquant -fs 223 | pnmtoplainpnm > logo_linux_clut224.ppm

위 명령어로 logo_linux_clut224.ppm 으로 변환.

변환된 ppm이미지를 /커널소스2.6/drivers/video/logo/ 로 이동한후 컴파일..

컴파일 설정 바꿔줄 필요없이 가능하다.

생성된 zImage를 이용하면 자신이 만든 logo로 부팅이 된다.



참고 : http://gentoo-wiki.com/HOWTO_Linux_Logo_Hack
:

             - Rebis 보드에서 mplayer 실행하기 (1) 보러가기 -




-Mplayer 설치

   
1. 다운로드 : < Mplayer받으러가기 > 여기에 들어가서
           
MPlayer-1.0pre7try2.tar.bz2 를 다운.
              (pre8 까지는 그대로 수행되는데 그이후 버전에선 이대로 실행이 안된다)

2. 원하는 위치에 설치. 여기서는 /usr/local/밑에~

    # tar jxvf MPlayer-1.0pre7try2.tar.bz2

    # cd MPlayer-1.0pre7try2
        
    # vi env.sh 이 명령을 실행할때 오류가 나서 자주 쓰게 된다. 이런건 쉘로 만들어 쓰자.
        
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux --prefix=/usr/local/mplayer --enable-static --enable-fbdev --enable-linux-devfs --disable-mpdvdkit --disable-x11
--enable-runtime-cpudetection --as=arm-linux-as --enable    -ossaudio --disable-tv --disable-tv-bsdbt848 --enable-mad --enable-libavcodec
         *****위의 내용은 모두 한줄로 쓴다~ --앞에서만 띄어쓰기~

    # source ./env.sh

    #vi config.mak
    TERMCAP_LIB=-ltermcap -L/usr/local/arm/termcap/lib
    MAD_LIB=-lmad -L/usr/local/arm/libmad/lib     


    #vi libmpcodecs/ad_libmad.c
    #include<mad.h>을
    -------------------------->
    #include "/usr/local/arm/libmad/include/mad.h"로 수정~


    #vi libavcodec/huffyuv.c
    640Line 정도에서 찾아보면 encode_422_bitstream함수 내부를 주석처리한다.
    <함수자체가 아니라 내용만~>
    바로 그 밑에 encode_gray_bitstream함수 내부도 주석처리한다.


    # make

    mplayer 란 파일이 생성되면 타겟보드로 실행할 동영상 파일과 함께 옮겨보자.

    #./mplayer -vo fbdev2 -ac mad [실행 파일명]



* 참고 : http://www.kernelholic.com
:

#### rebis보드에서 mplayer를 통해 동영상 재생


- 필요한 파일 : termcap (mplayer 설치시 필요한 Arm용 termcap라이브러리)
               
                libmad (interger 연산을 위해 필요한 라이브러리 -> Arm용으로 Mplayer를 포팅하면                
                floating 연산 때문에 동영상 재생이 원활하지 못함. libmad를 enable시켜 컴파일하면                 재생이 원활함)
              
                Mplayer(Linux용 소스와 코덱)


- termcap 설치

    1. 다운로드 : termcap-2.0.8.tar.gz 다운받기

    2. 압축풀기
  
    # tar zxvf termcap-2.0.8.tar.gz

    # cd termcap-2.0.8


    # vi Makefile      
CC=gcc를 CC=arm-linux-gcc로 수정.
       CFLAGS=-O -I. -g를 #CFLAGS=-O -I. -g 로 주석 처리.
       AR=ar를 AR=arm-linux-ar로 수정.
       prefix = / 를 prefix = /usr/local/arm/termcap (arm용 termcap을 설치할 디렉토리)으로 수정.


    # vi tparam.c에서 수정
  # define bcopy(s, d, n) memcpy ((d), (s), (n))을 주석 처리.
       --------------->
// #define bcopy(s, d, n) memcpy((d), (s), (n))


     # vi termcap.texi에서 수정       
but in that regard it is obsolete (@xref{Cursor Motion}). "(" ")"를 지움.
       --------------->
but in that regard it is obsolete @xref{Cursor Motion}.


     # mkdir -p /usr/local/arm/termcap/lib

     # mkdir /usr/local/arm/termcap/include


     # make && install

     다음 명령으로 확인

    #ls -al /usr/local/arm/termcap/lib/
       -rw-r--r--       1 bin        bin        13308   7 16 09:58 libtermcap.a
       lrwxrwxrwx      1 bin       bin      45  7 16 09:58 libtermcap.so -> ...
       -rwxr-xr-x      1 bin       bin         18332   7 16 09:58 libtermcap.so.2.0.8



-libmad 설치
   1. 다운로드 : libmad-0.15.1b.tar.gz

   2. 압축풀기

   3. # tar zxvf libmad-0.15.1b.tar.gz
     
      # cd libmad-0.15.1b
      
      #./configure --prefix=/local/libmad --enable-fpm=arm --host=arm-linux        ---> libmad를 설치할 디렉토리를 지정해주고 --host 옵션에 크로스컴파일러의 선행문자를 적어줌.
  
      # make && install



Rebis 보드에서 mplayer 실행하기 (2)
에서 이어서 하겠다.


:
로고이미지를 만들어 주기 위해서는

fblogo 프로그램과 png 형식의 그림 파일이 필요하다.



사용자 삽입 이미지

                        




예제 사진       fblogo-0.5.1.tar.gz

첨부파일 : fblogo소스 압축파일 과 료코사진 (80x80)



png 파일형식   ->  linux_logo.h     로 변환해서 커널에 옮긴다음 컴파일해주면 로고가 변한다.



Rebis보드는 logo image 크기가  80x80이다.

위 예제 사진이 싫다면 원하는 이미지를 80x80 크기로 만들어서 시작하자.

다운받은 fblogo-0.5.1.tar.gz 를 압축풀고 압축 풀린 폴더로 간다.

# tar zxf fblogo-0.5.1.tar.gz

# cd fblogo-0.5.1



fblogo.c 파일을 열어서  line No : 316    정도에있는  height 와  rowbytes를  80으로 바꾼후 make.

# vi fblogo.c

height = 80;
rowbytes = 80;

# make

(다시 make 해줄땐  make clean 해주고 다시 make )

원하는 이미지를 옮겨 온다.

# convert -colors 223 -dither ryo.png ryo_temp.png

ryo.png 이미지를 223색의 ryo_temp.png로 변환해준다. (linux_logo.h 파일안에 223으로 difine되있다)

# ./fblogo ryo_temp.png linux_logo.h


ryo_temp.png 이미지를 커널에 올릴 linux_logo.h 파일로 바꿔준다.

생성된 linux_logo.h 파일을 " Rebis커널소스위치/include/linux/ " 위치로 옮긴 후

커널 컴파일을 다시 해주면 된다.


# cp linux_logo.h /linux_src/Rebis/include/linux/

# cd /linux_src/Rebis

# make menuconfig  (커널 설정)

# make dep && make zImage


생성된 새로운 이미지로 보드 부팅하면 바뀐 그림으로 logo가 뜬다.


***********************************************************
convert 해줬는데 헤더파일로 변환시 PNGs 에러가 뜨면
convert 해줄때 -depth 8 값을 추가해 준다
***********************************************************

참조  : http://sung2ne.tistory.com/5
:
Rebis 보드의 serial을 ttyS0 말고 옆에있는 ttyS1 써보자.

@Rebis $] vi /etc/inittab

T0:12345:respawn:/sbin/getty  -L ttyS0 115200 vt100
써있는곳 복사해서 밑에 붙여넣고 T0 -> T1 으로  ttyS0 -> ttyS1 으로 고치자

T0:12345:respawn:/sbin/getty  -L ttyS0 115200 vt100
#By jjungs, UART1  
T1:12345:respawn:/sbin/getty  -L ttyS1 115200 vt100


serial port를 ttyS1쪽에다 꼽고 reboot

부팅되는 과정은 보이지 않고, 좀 기다리면 바로 로그인창이 뜬다.
:
ftp://ftp.trolltech.com/qt/source/   에서

qt-x11-free-3.3.3.tar.gz 다운로드
    uic, qvfb 사용을 위해 필요

qt-embedded-free-3.3.3.tar.gz 다운로드
    rebis 보드용 lib 설치
    qvfb 용 lib 설치

# mkdir /work

생성된 work 폴더에 다운받은 압축파일 두개 복사해주고 압축풀기.

# cd /work

# tar -zxf qt-x11-free-3.3.3.tar.gz

# tar -zxf qt-embedded-free-3.3.3.tar.gz



qt-embedded-free는 arm용과 x86용 두가지로 빌드.

# mkdir qte-arm qte-x86

# cp -rf qt-embedded-free-3.3.3 qte-arm

# mv qt-embedded-free-3.3.3 qte-x86

# mkdir qtx

# mv qt-x11-free-3.3.3 qtx



환경 설정 파일


vi /work/qtx/qtx_env

export QTDIR=/work/qtx
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib


vi /work/qte-arm/qte_arm_env

export QTDIR=/work/qte-arm
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib


vi /work/qte-x86/qte_x86_env

export QTDIR=/work/qte-x86
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib


qt 설치시 Xlib패키지가 필요하다.
확인해보고 없다면 설치해주자.



== qt/x11 빌드 ==

1) uic 빌드

# cd /work/qtx

# source qtx_env     (환경설정 적용)

# ./configure -no-xft -thread -shared

# make         (qtx/bin 에  uic 빌드된다)

uic 복사해주기

# cp /work/qtx/bin/uic /work/qte-arm/bin

# cp /work/qtx/bin/uic /work/qte-x86/bin


2) qvfb 빌드

# cd  /qtx/tools/qvfb

# make         (qtx/tools/qvfb 에 빌드된다)



== qt/embedded (arm) 빌드 ==


# cd /work/qte-arm/

# source qte_arm_env

# ./configure -embedded ipaq -shared -depths 16 -no-cups -qt-libjpeg
   -qt-mouse-linuxtp –thread

# make



== qt/embedded (x86) 빌드 ==


# cd /work/qte-x86

# source qte_x86_env

# ./configure -qvfb -shared -depths 16 -no-cups -qt-libjpeg -thread

# make


===================================

nfs로 마운트해준  /tftpboot/myrootdir 폴더에 qte-3.3.3폴더를 생성하고,
/work/qte-arm/ 폴더의 내용을 복사해준다.

# cd /tftpboot/myrootdir

# mkdir qte-3.3.3

# cp /work/qte-arm/* /tftpboot/myrootdir/qte-3.3.3



# cd ./qte-3.3.3/lib

# cp libqte.so.3.3.3 ../../lib

# cd ../../lib

# ln -s libqte.so.3.3.3 libqte.so.3.3

# ln -s libqte.so.3.3.3 libqte.so.3

# ln -s libqte.so.3.3.3 libqte.so


타겟 보드에서 환경설정

REBIS# vi ~/.profile

export QTDIR=/qte-3.3.3
export LD_LIBRARY_PATH=/qte-3.3.3/lib:$LD_LIBRARY_PATH
export QWS_MOUSE_PROTO=linuxtp:/dev/ts

REBIS# source ~/.profile


예제파일 실행

REBIS# cd /qte-3.3.3/example/hello

REBIS# ./hello -qws

보드상에 Hello, World 가 뜨는걸 확인하자.

:
기본적으로 fedora 설정법이다.

시작하기전 방화벽은 비활성화 로 해주자.

밑에 것들을 깔기전에 rpm -q [이름] 으로 설치가 되어있는지 확인해보자.

설치가 되어있다면 버전정보가 나온다.

# yum install xinetd                           (ubuntu는 yum 대신 apt-get)

# yum install nfs*

# yum install tftp*

# yum install minicom


# ntsysv                      ( ubuntu는   # rcconf )


파란 화면이 나오면 nfs와 tftp를 찾아서 [*]로 활성화 시켜준다.




tftp를 설치하면 루트에(' / ') tftpboot란 폴더가 생긴다.       ( ubuntu는 직접 만들어 주자 )

fedora로 하기전에 ubuntu로 먼저 설정해줬었는데 그때는 tftpboot란 폴더가 생기지 않아서

직접 만들어주고 진행하였다. 하지만 fedora에서 tftpboot란 폴더를 직접 생성했다면 나중에

커널이미지 올릴때 권한이 없다며 실패하게 된다.

tftpboot 폴더에 제공된 씨디 안에있는 zImage-rebis 파일과 ramdisk-rebis.gz 를 복사




# cd /usr/local/

# mkdir arm

방금 생성된 arm 폴더에 씨디 안에있는 arm-linux-tools.tar.bz2 파일 복사

# tar jxf arm-linux-tools.tar.bz2

2.95.3 이란 폴더가 arm 폴더안에 생겼다.




nfs 설치한후 target보드와 연결해줄 폴더를 생성하자.

# mkdir /project/target -p

# cd /project/target

나중에 보드와 연결후 확인해볼 파일 생성
# vi hello.c

#include<stdio.h>

int main()
{
    printf("Hello\n");
    return 0;
}

# arm-linux-gcc -o hello hello.c

 hello 실행파일 생성 확인

# vi /etc/exports


/project/target *(rw,sync,no_root_squash)



여기 까지 진행 되었다면
                                              (ubuntu는 service를 받아주자.)
# service xinetd restart

# service nfs restart                        (ubuntu는 service nfs-kernel-server restart)

# ifconfig eth0 192.168.0.1 up


minicom으로 보드에 연결하기 위해 설정을 좀 해주자.

# minicom -s

사용자 삽입 이미지

A => /dev/ttyUSB0으로 변경
노트북에 serial port가 없어서 usb로 연결해주어서 ttyUSB0.
컴퓨터에 있는 serial port로 연결했다면 /dev/ttyS0 으로 설정해주면 될것이다.

E => 115200 값 확인
F => No

사용자 삽입 이미지

A => 다 지워준다.

Save setup as dfl  로 저장후

Exit from Minicom 으로 빠져 나온다.

# minicom

보드를 켜주고 엔터

REBIS# set ipaddr 192.168.0.10                   (target 보드 ip설정)

REBIS# set serverip 192.168.0.1                  (host ip설정)

REBIS# save

REBIS# t 32000000 zImage-rebis

REBIS# t 30800000 ramdisk-rebis.gz

REBIS# g 32000000

부팅되면 root로 로그인

# ifconfig eth0 192.168.0.10

# mount -t nfs 192.168.0.1:/project/target /mnt/host

# cd /mnt/host

# ./hello

Hello 가 뜨는것 확인.
:


====     ramdisk를 보드에 직접 안올리고 부팅하기    ====



# cd /tftpboot

# mkdir myrootdir

# mkdir tmp

ramdisk 집파일을 풀어 준 후 tmp 폴더에 마운트 시켜준다음

tmp 폴더의 모든 내용을 ramdisk파일 대신 쓸 myrootdir 폴더로 옮겨준다.

# gunzip ramdisk-rebis.gz

# mount -o loop ramdisk-rebis ./tmp

# cp -rf ./tmp/* ./myrootdir


ps.
# vi /tftpboot/myrootdir/tmp/rebis2440_cfg

에서 주소값이 제대로 설정되어 있는지 확인 필수!!!

이거 때문에 kernel panic 나와서 1시간 삽질했다...




               ====     커널설정   ====


이전에 .config 파일은 백업해두는 센스!!

# make menuconfig

========================
Block devices  ---->    
-----------------------

< > Normal PC floppy disk support
< > XT hard disk support
<*> Loopback device support
< > Network block device support
< > RAM disk support

========================




========================
Networking options ---->
-----------------------

<*> Unix domailn sockets
 [*]   TCP/IP networking
 [ ]        IP: multicasting
 [ ]        IP: advanced router
 [*]       IP: kernel level autoconfiguration
 [ ]             IP: DHCP support (NEW)
 [*]            IP: BOOTP support (NEW)
 [ ]             IP: RARP support (NEW)
< >     IP: tunneling
< >     IP: GRE tunnels over IP
=========================




=========================
Network File Systems ---->
------------------------

< > Coda file system support (advanced network fs)
< > InterMazzo file system support (experimental, replicating fs)
<*> NFS file system support
 [*]     Provide NFSv3 client support
 [*]    Root file system on NFS
<*> NFS server support
 [*]    Provide NFSv3 server support
< > SMB file system support (to mount Windows shares etc.)
< > NCP file system support (to mount NetWare volumes)
=========================




=========================
General setup ---->
------------------------

< > FastFPE math emulation (experimental)
(ELF) Kernel core (/proc/kcore) format
<*> Kernel suppoert for a. out binaries
<*> Kernel suppoert for ELF binaries
< > Kernel suppoert for MISC binaries
 [ ]   Power Management support (experimental)
<*> RISC OS personality
    default kernel command string : <<<< 여기에 입력 >>>>
 [*]   Timer and CPU usage LEDs
 [*]   Kernel-mode alignment trap handler
==========================



<<<< 여기에 입력 >>>>   부분에

root=/dev/nfs rw nfsroot=192.168.0.1:/tftpboot/myrootdir ip=192.168.0.10:192.168.0.1:192.168.0.1:255.255.255.0::eth0:off
                                                                -> 두줄이 아니라 한줄이다.
(server IP) , (board IP), (server IP), (gateway), (netmask) 순...


server IP => 192.168.0.1
board  IP => 192.168.0.10
gateway => 192.168.0.1
netmask => 255.255.255.0




여까지 되었으면 menuconfig 저장하고 나와서


# make dep && make zImage




               ====    보드 설정    ====



REBIS # set serverip = 192.168.0.1
REBIS # set gatewayip = 192.168.0.1
REBIS # set ipaddr = 192.168.0.10
REBIS # setenv bootargs root=/dev/nfs rw nfsroot=192.168.0.1:/tftpboot/myrootdir ip=192.168.0.10:192.168.0.1:192.168.0.1:255.255.255.0::eth0:off         -> 두줄이 아니고 한줄
                                                               
(server ip),(board ip),(server ip),(gateway),(netmask) 순으로 입력

REBIS # setenv bootcmd tftp 32000000 zImage-rebis\;go 32000000
REBIS # save

이제 보드 리셋하고 그냥 있으면 알아서 부팅한다.
: