Table of Contents

들어가기 전에

이 문서는 좀더 편리하게 요피를 사용하기 위한 문서이다. 앞에서 다루지 않았던 내용을 중점적으로 살펴 보도록 할 것이다.
주로 쉘 스크립트를 이용해서 설명하겠다.

하드 리셋 후 기존의 설정 백업

여기서는 불의의 사고로 하드 리셋을 해야만하는 경우, 기존의 공들여 왔던 설정들을 허무하게 날리는 삽질을 하기 않기 위한 방법을 설명할 것이다.
우선 먼저 백업해야 할 것들을 알아보자!!
기본 파일 시스템에서 내가 나중에 따로 수정해줬던 파일들은 다음과 같다.

  1. 데스크 탑 파일들 /usr/share/gnome/apps
  2. X 윈도우 설정 파일 /etc/X11/icewm/preferences
  3. 자동시작 스크립트 파일 /etc/X11/xinit/Xclients
  4. 설치한 프로그램 : LocateAlarm, jv리더, 서브나브, YopyRotate, 요피가게부, 영한사전, QT 관련 라이브러리, Python, APM, 노스모크 모인모인등..

위의 파일들만 복사하면, 지금 현재 설정의 요피와 같이 만들 수 있다. /flash/RPM 디렉토리에 가보자! 그러면 rpm 형식의 파일들이 있을 것이다. 이것들은 모두 하드리셋 시에 자동으로 설치되는 파일들이다. 거의 NATE 관련 프로그램들이다. 이 파일들은 flash 메모리에 저장이 되기 때문에 하드리셋을 하더라도 지워지지 않는다.
나의 경우 NATE 폰을 제외하고는 다른 프로그램들은 사용하지 않는다. 사용하지 않는 프로그램을 flash 에 저장할 필요는 없는 것 아닌가?? 필요없는 것들을 지우도록 하자.
df 명령으로 확인해보면 flash 사용량이 줄어든 것을 볼 수 있다. 이곳에 앞에서 본 백업해야 할 파일들을 넣어두면 된다.
용량 제한때문에 설치한 프로그램을 모두를 flash 에 넣을 수 없다. 위에서 몇가지만 넣고, 나머지는 나중에 따로 설치해주어야 한다.

자동으로 설치하는 스크립트 만들기

하드리셋을 하면, 자동으로 /flash/RPM 디렉토리에 있는 프로그램들이 자동으로 설치가 된다고 앞에서 얘기했다. 이 일(?)은 바로 스크립트가 해주는 데, 그것이 바로 /etc/rc.d/init.d/hr-rpminst 이다.

#hr-rpminst --help    // 도움말을 볼 수 있다.

run level 을 보면 알겠지만, 이것은 run level 5 일 때 실행된다. 아마도 run level 5 가 하드리셋 후 부팅인 듯 하다.
/etc/rc.d/init.d/hr-rpminst 파일을 보도록 하자!

#!/bin/sh
 
# Source function library.
. /etc/rc.d/init.d/functions       // function 라이브러리를 include 하는 부분, 모든 init 스크립트는 모두 동일하다.
 
BASE_RPM_DIR=/flash/RPM            // 설치할 프로그램이 있는 디렉토리
 
case "$1" in
    force)
        /usr/bin/hr-rpminst $BASE_RPM_DIR/*.rpm
        sync
        ;;
    start)                          // 기본적으로 이 루틴이 실행된다.
        RESET_TYPE=`cat /proc/sys/pm/reset`
        if [ "$RESET_TYPE" = "0" ] ; then
            /bin/boot_print "Installing NATE RPMs..."
            /usr/bin/hr-rpminst --init $BASE_RPM_DIR/*.rpm     // 프로그램 설치
            if [ $? = "0" ] ; then
                sync
                /bin/boot_print "RPM Installation Success"
            else
                /bin/boot_print "RPM Installation FAIL:"$?
            fi
        fi
        ;;
 
    stop)
        ;;
    *)
        echo "Usage: hr-rpminst {force|start}"
        exit 1
esac
 
exit 0

위에서 보았듯이 /flash/RPM 에 설치할 프로그램(.rpm) 을 넣어주면 자동으로 설치된다. 하지만 여기서 문제가 있다. .rpm 이 아닌 프로그램들은 어떻게 설치할 것인가?
이것은 어쩔 수 없이 하드 리셋후에 수동으로 설치할 수 밖에 없다. 물론 파일시스템을 통째로 수정해서 다시 올리는 방법도 물론 있다. 하지만 여기서는 첫번째 방법으로 구현 해볼 것이다.

flash 에 저장하기

우선 .rpm 프로그램 파일을 /flash/RPM 디렉토리 아래에 저장한다. 용량이 부족할 수 있으므로 수시로 df 명령어로 남은 공간을 확인한다. 나의 경우

  1. 요피 가계부
  2. LocateAlarm
  3. 요피폰
  4. jv 리더
  5. cm 라이브러리
  6. qiv
  7. qpeyopy
  8. qt
  9. vlc
  10. 영어사전

나의 경우 위의 프로그램들을 저장한 후 약 87% 정도 용량 나왔다. 그후에 벨소리와 뒤에 만들 쉘 스크립트 파일을 넣어주니, 약 97% 정도가 되었다.
자~아 이제는 하드리셋을 했을 때 위의 프로그램들은 자동으로 설치가 된다. 남은 건 나머지 .tar 프로그램과 설정파일들이다.

스크립트 파일 만들기

이제는 .tar 프로그램과 설정파일들을 설치하는 일이다. /flash 공간이 거의 찼기 때문에 어쩔 수(?) 없이 확장 메모리에 저장을 할 수 밖에 없다. 참고로 256M 이다. 여기 부터는 나의 설정을 예로 들면서 설명하겠다. 우선 프로그램을 저장할 디렉토리를 만든다.

#cd /mnt/mmc
#mkdir setup    // 저장할 디렉토리
#cd setup
#mkdir etc image tar   // etc 는 설정파일, tar 는 프로그램, image 는 배경화면을 저장할 디렉토리

나의 경우 tar 디렉토리에는

  1. moin
  2. apmServer
  3. python
  4. subnav
  5. yopyrotate

을 저장했다. 또 etc 디렉토리에는

  1. Xclients
  2. apps.tar
  3. preferences

을 저장했다. 마지막으로 image 디렉토리에는 linux.jpg 를 저장했다.
우선은 일반적인 .tar 로 되있는 프로그램들을 /flash 아래나 sd 확장 메모리에 저장해둔다. /flash 용량이 부족하다면 sd 메모리에 저장한다.
이제는 파일들을 설치할 스크립트 파일만 만들어 주면 된다. 물론 /flash 아래에 만든다. 이로서 준비작업은 끝났다. 본격적으로 쉘 스크립트 파일을 만들어보자!
먼저 내가 만든 스크립트 파일은 다음과 같다.

#!/bin/bash
#
# init setup script
#
# made by fat81
#
 
# setup to subnav
/bin/tar xzvf /mnt/mmc/setup/tar/subnav_0.6.tar.gz -C /
 
# setup to yopyrotate
/bin/tar xzvf /mnt/mmc/setup/tar/yopyrotate_0.2.tar.gz -C /
 
# setup tp python
/bin/tar xzvf /mnt/mmc/setup/tar/py2_eam_02.tar.gz -C /usr
 
# setup to apm
/bin/tar xzvf /mnt/mmc/setup/tar/apmServer.tgz -C /home/root
/bin/sh /home/root/apmServer
/bin/rm -rf /home/root/apmServer
 
# setup to moin
/bin/tar xzvf /mnt/mmc/setup/tar/moin.tar.gz -C /var/www
 
# set of submenu
/bin/rm -rf /usr/share/gnome/apps
/bin/tar xvpf /mnt/mmc/setup/etc/apps.tar -C /usr/share/gnome
 
# set of panel
/bin/rm -rf /etc/X11/icewm/preferences
/bin/cp -af /mnt/mmc/setup/etc/preferences /etc/X11/icewm
 
# set of auto start
/bin/rm -rf /etc/X11/xinit/Xclients
/bin/cp -af /mnt/mmc/setup/etc/Xclients /etc/X11/xinit/Xclients
 
# restart icewm
/usr/bin/killall -HUP icewm
 
# copy to background image
/bin/cp -rf /mnt/mmc/setup/image/linux.jpg /root/picture

내가 각각 마다 주석을 달았기 때문에 어떤 내용인지는 알 수 있을 것이다. 이 파일을 setup 이라는 이름으로 저장하고, /flash 아래에 저장한다.
이제 모든 것이 끝났다. 이제 하드리셋을 하는 일만 남았다. 하기전에 핌스 백업을 반드시 하기 바란다.

문제점

하드리셋을 하면 우선 위에서 /flash/RPM 디렉토리에 저장한 프로그램들이 설치 된다. 이제는 .tar 와 설정파일만 설치하면 된다.
여기서 문제가 하나 있다.
나의 경우 /flash 아래서 바로

#cd /flash
#sh setup

이런 식으로 실행을 해줬다. 그런데 오랜 시간이 지나도 작업이 끝나지 않았다. 확인해 보니 /flash 용량이 100% 였던 것이다.
내가 부랴부랴 작업을 멈추고, 파일을 지우려고 했지만, 이조차도 제대로 되지 않았다. 결국 커널과 파일시스템을 다시 설치해야만 했다. 스크립트 파일을 /flash 디렉토리에서 실행하면, 실행하면서 생긴 tmp 파일이 /flash 디렉토리에 생긴다. 그래서 결국 얼마 남지 않는 공간을 초과해 버리는 것이다.
해결방법은 한가지다. 바로 스크립트 파일을 /flash 가 아닌 다른 디렉토리로 복사해서 실행하면 되는 것이다. 실제로 이렇게 해서 문제없이 작업을 끝낼 수 있었다.

#cd /flash
#cp setup /root
#cd /root
#sh setup

마무리 작업

위의 과정이 순조롭게 끝났다면, 직접 확인해보자! 제대로 설치가 되었는지…
나의 경우 아직 자동화시키지 못한 바탕화면 설정의 단축키 설정을 해주어야 했다.
자~ 이제는 하드리셋을 두려워하지 않아도 된다. ^^;