들어가기 전에
이 문서는 좀더 편리하게 요피를 사용하기 위한 문서이다. 앞에서 다루지 않았던 내용을 중점적으로 살펴 보도록 할 것이다.
주로 쉘 스크립트를 이용해서 설명하겠다.
하드 리셋 후 기존의 설정 백업
여기서는 불의의 사고로 하드 리셋을 해야만하는 경우, 기존의 공들여 왔던 설정들을 허무하게 날리는 삽질을 하기 않기 위한 방법을 설명할 것이다.
우선 먼저 백업해야 할 것들을 알아보자!!
기본 파일 시스템에서 내가 나중에 따로 수정해줬던 파일들은 다음과 같다.
- 데스크 탑 파일들 /usr/share/gnome/apps
- X 윈도우 설정 파일 /etc/X11/icewm/preferences
- 자동시작 스크립트 파일 /etc/X11/xinit/Xclients
- 설치한 프로그램 : 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 명령어로 남은 공간을 확인한다. 나의 경우
- 요피 가계부
- LocateAlarm
- 요피폰
- jv 리더
- cm 라이브러리
- qiv
- qpeyopy
- qt
- vlc
- 영어사전
나의 경우 위의 프로그램들을 저장한 후 약 87% 정도 용량 나왔다. 그후에 벨소리와 뒤에 만들 쉘 스크립트 파일을 넣어주니, 약 97% 정도가 되었다.
자~아 이제는 하드리셋을 했을 때 위의 프로그램들은 자동으로 설치가 된다. 남은 건 나머지 .tar 프로그램과 설정파일들이다.
스크립트 파일 만들기
이제는 .tar 프로그램과 설정파일들을 설치하는 일이다. /flash 공간이 거의 찼기 때문에 어쩔 수(?) 없이 확장 메모리에 저장을 할 수 밖에 없다. 참고로 256M 이다. 여기 부터는 나의 설정을 예로 들면서 설명하겠다. 우선 프로그램을 저장할 디렉토리를 만든다.
#cd /mnt/mmc #mkdir setup // 저장할 디렉토리 #cd setup #mkdir etc image tar // etc 는 설정파일, tar 는 프로그램, image 는 배경화면을 저장할 디렉토리
나의 경우 tar 디렉토리에는
- moin
- apmServer
- python
- subnav
- yopyrotate
을 저장했다. 또 etc 디렉토리에는
- Xclients
- apps.tar
- 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
마무리 작업
위의 과정이 순조롭게 끝났다면, 직접 확인해보자! 제대로 설치가 되었는지…
나의 경우 아직 자동화시키지 못한 바탕화면 설정의 단축키 설정을 해주어야 했다.
자~ 이제는 하드리셋을 두려워하지 않아도 된다. ^^;