2010년 11월 10일 수요일

puppy를 usb로 부팅하는 경우, 사용자 저장 파일의 크기로 인하여 사용할 수 있는 메모리가 제한받는 경우

puppy를 hdd에 직접 인스톨하지 않고, usb에 설치한 후 사용하게 되면,

puppy를 시작하면서 usb에 있는 저장 파일을 읽어 메모리에 로드하고,

puppy를 종료하면서 usb에 사용환경을 저장한다. 그런데, 저장파일의 크기가 작거나

설치한 파일들이 많은 경우, 메모리가 부족하다는 메시지가 바탕화면에 표시된다.



또는 화면 하단의 인터넷 옆의 메모리 상태가 붉은 색으로 표시되면서 메모리 부족을 알린다.



이 경우, Menu>Utility>Resize personal storage file 을 실행시키면

저장파일의 크기를 늘릴 수 있다.



명령을 실행시킨 후, 반드시 컴퓨터를 Reboot해야

부팅과정에서 저장파일의 크기를 늘린다.

다음은 부팅과정에서 개인 저장 파일의 크기를 변경하는 과정이다.

puppy 5.x에서부터 개인 저장 파일을 ext2 뿐만 아니라 ext3도 지원하는데, 다음 화면에서 보이는

것은 ext3로 저장된 개인 저장 파일을 256M 증가시키는 과정이다.

puppy에서 임베디드 리눅스 target 보드를 연결하고자 하는데, eth0가 잡히지 않을때..

puppy가 설치된 호스트와 embedded linux가 설치된 target을 네트워크을 이용하여 파일을

전송하고자 할 때에는, 호스트의 puppy에는 네트워크 드라이버가 두개 잡혀야 한다.

일반적으로 wireless와 wired 두개의 네트워크를 잡는데, 어떤 영문인지 하나만 잡히는 경우가

있다.



이런 경우, Load module을 선택한 후, 현재 로드되지 않은 네트워크 모듈을 선택하면 시스템에 설치된

네트워크를 설정할 수 있다.

참고로, Marvell Yukon 2 드라이버는 sky2로 잡히지 않고, skge로 잡힌다. (특정 보드만 그럴 수 있다.)

따라서 Marvell Yukon 드라이버를 사용하는 경우, sky2와 skge 모두를 선택해보길 바란다.

2010년 2월 17일 수요일

참고자료


LETOK 850 보드 설정

LETOK850 보드 구성도 및 Toolkit

  • LETOK850 보드 구성도

letok850.PNG

  • LETOK850 교육용 툴킷

letok860-picture.PNG

LETOK850보드 실습환경 설정


  • 부팅 후 2초안에 아무런 키나 눌러 자동 부팅 종료
  • 초기 화면

    • mpc-1.png

  • printenv 확인

    • mpc-2.png

  • 환경 설정

    • 보드의 ip address 변경

      • setenv ipaddr 192.168.0.100
    • 보드의 ip에 대한 gateway 변경

      • setenv gateway 192.168.0.1
    • 서버 ip 지정 { 이 경우, gateway와 서버는 동일 }

      • setenv serverip 192.168.0.1
    • 부트 초기 설정 변경 {빨간 색 글씨 꼼꼼히 확인 필요}

      • setenv bootargs root=/dev/nfs rw nfsroot=192.168.0.1:/initrd/mnt/dev_save/nfs nfsaddrs=192.168.0.100:192.168.0.1

    • 환경 저장

      • saveenv
  • 자동 부팅 재시작

    • bootcmd


새롭게 컴파일된 vmlinux.ppcboot로 부팅하기

  • LETOK850 의 스위치를 켠다
  • 자동 부팅 상태에서 아무키나 눌러 자동 부팅을 종료한다.
  • protect off all
  • erase ffc30000 ffcbffff {만약 cp.b에서 Flash not erased 오류가 발생하면 두번째 인수의 크기를 증가한다. }

    예; erase ffc30000 ffccffff

  • tftpboot "vmlinux.ppcboot"

    ##################################### ( xxxxx hex )

  • cp.b 10000 ffc30000 {커널의 크기 - 16진수, 바로 위줄의 hex 앞의 십육진수}
  • bootcmd 실행

HDD에 ELDK 설치하기

설치할 HDD 공간 확인하기

  • 파일 시스템이 리눅스 (ext2, ext3) 인 경우
  • 공간이 약 600M (여유있게 하려면 1G 정도) 이상 있는지 확인한다.
  • USB에서 Puppy로 부팅한 경우
  • 아마도 지급된 용량이 2G정도 이기 때문에 설치하기에는 공간이 턱없이 부족함
  • Windows 컴퓨터의 D 드라이브 (아마도 바탕화면에 sda5 라고 표시되었을 것)


    • sda5.png


  • sda5를 한번 클릭하면 Mount, 다시 한번 더 클릭하면 Umount 됨


ELDK 설치


  • [첫번째 방법] 그냥 ntfs에다 설치하려면
  • 윈도우로 부팅하였을 경우, 디렉토리 내의 모든 파일구조가 다 보임
  • 모든 파일이 실행 가능한 플래그가 할당됨
  • cd /mnt/sr0 { ppc-2005-03-07.iso 를 구운 CD를 삽입하면 자동으로 마운트 됨 }
  • ./install -d /mnt/sda5/ELDK ppc_8xx

  • [두번째 방법] 윈도우 드라이브에 가상 파일을 만들고 마운트 하여 사용
  • 윈도우 드라이브에 가상 파일을 만들고, 그 가상 파일을 마운트하여 사용 { ramdisk에서 아이디어 가져옴 }

    • 윈도우 드라이브에 HDD에 1G의 공간을 할당

      • dd if=/dev/zero of=/mnt/sda5/ELDK bs=1k count=1024000
    • 파일 시스템 생성

      • mke2fs -vm0 /mnt/sda5/ELDK 1024000
      • 일반 파일을 파일 시스템으로 만들건데 괜찮냐? 하고 물어봄 (당연히 괜찮지...)

    • 마운트할 디렉토리 생성

      • mkdir /opt/ELDK
    • 파일 시스템 마운트

      • mount -o loop /mnt/sda5/ELDK /opt/ELDK

    • ELDK 설치

      • cd /mnt/sr0
      • ./install -d /opt/ELDK ppc_8xx
    • 장점

      • 윈도우즈 디렉토리 명칭을 사용하지 않고 /opt/ELDK 를 사용할 수 있다.
      • 파일들의 attribute (속성)이 보존된다.
      • /opt/ELDK 하부의 ppc_8xx를 nfs로 export 할 수 있다.

    • 부팅시 자동으로 /opt/ELDK가 마운트 되도록 하길 원한다면

      • /etc/fstab에 다음 두 줄을 추가하면 된다.
      • /dev/sda5 /mnt/sda5 auto rw 1 1
        /mnt/sda5/ELDK /opt/ELDK auto rw,loop 2 2


MPC850보드의 시동 환경 조성하기


  • nfs 서버가 설치되었다면, MPC 850 보드의 시동 환경을 조성하기 위하여 ELDK의 파일들을 복사한다.
  • cd {ELDK설치 디렉토리}/ppc_8xx/images
  • gunzip ramdisk_image.gz
  • mount -o loop ramdisk_image /mnt/data
  • cp -a /mnt/data/* /initrd/mnt/dev_save/nfs {exports에서 설정한 nfs 디렉토리}


Embedded Linux를 사용해보자

ELDK 다운로드

  • http://www.denx.de/wiki/DULG/ELDK

    DENX는 Embedded Linux와 Realtime Linux에서 소프트웨어 공학 서비스를 제공하며, ELDK를 배포하는 곳

  • 3.5.2 Downloading the ELK 를 찾아가서

    • 수정 (2009/08/07)
    • ppc-2008-04-01.iso를 다운로드 받은 후 (2G이기 때문에 다운 받는데 시간이 많이 걸림)
    • http://phoenix.hnu.kr/ysyun/cp/ppc-2008-04-01.iso 에서 다운로드 받기 바람.
    • dvd-rom으로 구운다. (iso 파일이기 때문에 쉽게 구울 수 있죠?^^)
    • ppc-2008-04-01 버전은 리눅스 커널 2.6.x에서 개발된 것이기 때문에, 커널 동작시에 panic이 발생함


CDROM 마운트하기

  • ppc-2008-04-01.iso ppc-2005-03-07.iso를 다운로드 했는데, CD-ROM으로 굽기는 그렇고, 그냥 설치하면 안 될까?
  • $ mkdir -p /mnt/iso
  • $ mount -o loop -t iso9660 -r [다운로드 받은 iso 이미지] /mnt/iso 실행하면
  • /mnt/iso 디렉토리에 CD-ROM 내용이 보인당..


ELDK 설치하기

  • CD-ROM을 삽입하면, 거의 대부분 CD-ROM을 자동 마운트 한다.
  • 안되면 손으로 해야쥥..
  • 이때 명령어는 바탕화면의 Console을 실행하여 입력한다.
  • $ mount -t iso9660 /dev/cdrom {또는 /dev/sr0 } /mnt/cdrom
  • 이때 /mnt/cdrom이 없다고 나오면 $mkdir -p /mnt/cdrom 해주는 센스
  • cd /mnt/cdrom 또는 마운트 된 CD-ROM의 디렉토리
  • ./install -d /usr/local/ELDK ppc_8xx 를 실행하면, /usr/local/ELDK에 관련 파일들을 설치한다.

    • Puppy Linux의 경우 /usr/local/ 디렉토리는 ram disk이기 때문에 용량 부족으로 설치가 되지 않는다.
    • 컴퓨터의 C나 D 드라이브를 마운트 한 후, Windows XP 시스템의 드라이브에 설치를 한다.


  • 다음은 설치 화면..

  • eldk-install.png


ELDK 설치 확인하기

  • $ export PATH=/usr/local/ELDK/bin:/usr/local/ELDK/usr/bin:$PATH
  • 실행 한 후,
  • $ ppc_8xx-gcc 실행하면
  • ppc_8xx-gcc: no input files
  • 라고 메시지를 표시하면 성공..

커널 컴파일하기 (현재 MPC850 보드에 대한 patch나 수정 사항을 구할 수 없어 PASS!!!)

  • 자신의 home directory에서
  • $ mkdir -p ~/build/kernel 을 실행한다.
  • 그런 다음,
  • cd /usr/local/ELDK/ppc_8xx/usr/src/linux 를 한 다음
  • make O=~/build/kernel menuconfig
  • 를 실행하자..

  • kernel-compile.png

  • 위와 같은 화면이 보이면 커널을 수정할 준비가 다 되었다..
  • 만약 위 단계에서 curses.h를 찾을 수 없다거나 KEYDOWN 등이 설정되지 않았다면 ncurses-devel이 설치되지 않은 까닭..
  • 현재 자기가 사용하는 리눅스에 ncurses-devel을 설치하도록 한다.

linux-2.4.2를 컴파일한 후 LETOK-850에 이식하기

  • linux kernel 2.4.2 를 다운로드 한다. (다운로드: linux-2.4.2.tar.gz)
  • tar xvfz linux-2.4.2.tar.gz 를 실행한다.
  • export PATH=/opt/ELDK/usr/bin:/opt/ELDK/bin:PATH

    가 제대로 설정되었는지 확인한다. (echo $PATH 해서 /opt/ELDK/usr/bin이 path에 포함되었는지 확인)

  • make menuconfig 실행
  • make dep 실행
  • make vmlinux.ppcboot 실행
  • 컴파일된 vlinux.ppcboot를 /tftpboot 에 복사 (tftpboot 설정 참조)

nfs 서버 설치

nfs 서버 프로그램 설치


<두번째 방법>

  • http://www.murga-linux.com/puppy/viewtopic.php?t=45090 페이지의 중간에서
  • nfsd-k2.6.21.7-i486.pet과 nfs_common.tar.gz 를 다운로드함
  • 바탕화면의 file을 클릭하여, Downloads 폴더의 저장된 nfsd-k2.6.21.7-i486.pet 을 인스톨함
  • 바탕화면의 Console을 클릭하여 창을 열고, nfs_common.tar.gz를 풀어 설치함
  • >> cd /
  • >> tar xvfz /root/Downloads/nfs_common.tar.gz

  • 두개의 파일이 모두 설치되었으면,
  • 재부팅 (가장 간단한 방법)


<세번째 방법>

  • nfs-utils-1.2.0.tgz 를 다운로드 함

    • Console에서 저장되어 있는 디렉터리로 이동
    • tar xvfz nfs-utils-1.2.0.tgz
    • cd nfs-utils-1.2.0-i486
    • ./install

nfsd 실행하기


  • nfsd-2.2.pet을 설치한 경우

    • cd /etc/rc.d/init.d
    • ./portmap start
    • ./nfs-user-server start

  • nfsd-k2.6.21.7-i486.pet을 설치한 경우

    • cd /etc/rc.d
    • ./rc.portmap start
    • ./rc.nfsd start

  • nfs-utils-1.2.0 을 설치한 경우

    • /etc/rc.d/init.d/nfs start

  • nfs 동작 확인

    • rpcinfo -p 를 실행하여

    • rpcinfo.png

    • 와 같이 100003/2 과 100005/1 등이 설정되어 있으면 제대로 동작하는 것임.

    • MPC850 부팅 화면에서 (아래 3줄)에서 위의 두 포트를 확인함

    • mpc-3.png

    • 위 화면 마지막 줄과 같이
    • VFS: Mounted root (nfs filesystem). 메시지가 출력되면 성공

/etc/exports 수정하기

  • mkdir /initrd/mnt/dev_save/nfs
  • 다음 내용을 /etc/exports 에 추가

    • /initrd/mnt/dev_save/nfs *(rw,no_subtree_check,no_root_squash,no_all_squash)
    • /etc/rc.d/init.d/nfs-user-server restart 또는 /etc/rc.d/init.d/nfs restart 실행

  • nfs-utils-1.2.0을 설치한 경우 다음 명령에 의하여 확인 가능
  • $ exportfs -a { 메시지가 출력되지 않아야 정상 }
  • $ showmount -e { 다음과 같은 메시지가 보여야 함}
    Export list for puppypc:

/initrd/mnt/dev_save/nfs *

또는 Rebooting Computer

hosts.allow 수정하기

  • 만약 모든 설정이 제대로 되었는데도 동작이 안된다면
  • /etc/hosts.allow

portmap rpc.mountd rpc.nfsd rpc.statd statd nfsd mountd : ALL

을 추가하자.

MPC850보드의 시동 환경 조성하기


  • nfs 서버가 설치되었다면, MPC 850 보드의 시동 환경을 조성하기 위하여 ELDK의 파일들을 복사한다. ELDK 설치 참조

  • cd {ELDK설치 디렉토리}/ppc_8xx/images

  • gunzip ramdisk_image.gz

  • mount -o loop ramdisk_image /mnt/data

  • cp -a /mnt/data/* /initrd/mnt/dev_save/nfs {exports에서 설정한 nfs 디렉토리}