Knoppix RemasteringRScripts
1. 기본 원칙 ¶KNOPPIX 의 변종이 많이 생기는 것으로 보아 기본 가이드 라인을 정해 놓는 것이 필요할 것 같습니다.
![]() 2. 개요 ¶기본적인 아이디어는 매우 간단하다.
3. 준비 : knoppix CD에서 파일 추출하기 ¶영문 knoppix를 CD로 구워내서 부팅한다. knoppix가 부팅한 뒤에 독문 로케일, 독문 키 배열로 전환되어버리면 당황스럽기 때문에 부팅 때 cheat code lang을 지정해서 부팅하자.
knoppix lang=us 부팅이 끝났으면 하드디스크를 파티셔닝하고 포멧한다.
cfdisk /dev/hda1 mke2fs -vj /dev/hda1 방금 포멧한 /dev/hda를 마운트하고 remaster 디렉토리를 만든다.
mount -t ext3 /dev/hda1 /mnt/hda1 mkdir /mnt/hda1/remaster remaster 스크립트를 다운로드한다. (http://debian.tu-bs.de/knoppix/remaster/)
다운로드 위치는 /mnt/hda1이며 압축을 풀고 scripts 디렉토리를 만들어 옮긴다. (remaster 스크립트를 제대로 실행하기 위해 디렉토리 이름을 바꾸어 줘야 한다.)
tar zxvf remaster-0.1-6.tar.gz mv remaster-0.1 scripts cd scripts 이제 스크립트를 실행시켜 knoppix CD에서 파일을 추출해 보자. 다음과 같이 명령을 내리면 새로운 창이 나타날 것이다.
./knoppix-remaster /mnt/hda1/remaster DeleteMe knoppix-remaster, 메뉴에 대한 설명
4.1. 로케일 변경 ¶/etc/locale.gen 파일을 수정하여 로케일을 변경한다. 다른 내용은 모두 지우고 한글 로케일만 남겨두었다.
ko_KR.EUC-KR EUC-KR
ko_KR.UTF-8 UTF-8 dpkg-reconfigure로 로케일을 변경한다. 기본 로케일은 ko_EUC-KR로 정했다.
dpkg-reconfigure locales 4.2. knoppix-autoconfig ¶/etc/init.d/knoppix-autoconfig는 knoppix가 제공하는 자동설정 스크립트이다. knoppix-autoconfig에 LANG, KEYTABLE 등의 쉘 변수를 지정함으로서 knoppix가 부팅한 뒤의 로케일을 비로소 eucKR로 전환할 수 있다. 또한 XMODIFIERS를 nabi로 설정함으로서 한글입력기 nabi가 제대로 실행될 수 있도록 하는 것을 잊지 말자.
LANGUAGE="$(getbootparam lang 2>/dev/null)"
[ -n "$LANGUAGE" ] || LANGUAGE="ko" ko) # Korean version COUNTRY="ko" LANG="ko_KR.UTF-8" KEYTABLE="us" XKEYBOARD="us" KDEKEYBOARD="us" CHARSET="iso8859-1" # Additional KDE Keyboards KDEKEYBOARDS="us" XMODIFIERS="@im=nabi" TZ="Asia/Seoul" ;; 4.3. 45xsession ¶/etc/X11/Xsession.d/45xsession은 knoppix가 부팅하는 X 환경을 자동적으로 설정해주는 파일이다. 즉 파일에 설정되어 있는 내용을 통해 매번 부팅때마다 /home/knoppix가 새로 생성되는 셈이다.
mozilla-firefox의 언어, 글꼴에 대해 설정한다. 여기에서 설정되는 내용은 mozilla-firefox 의 부팅 후 prefs.js에 반영된다.
if [ -n "$LANGUAGE" ]; then
# Set mozilla and netscape preferred languages for f in `ls -1 $HOME/.mozilla/*/*/prefs.js $HOME/.netscape/preferences.js 2>/dev/null`; do echo 'user_pref("intl.accept_languages", "'"$LANGUAGE"', en");' >>"$f" case "$LANGUAGE" in ko) echo 'user_pref("general.useragent.contentlocale", "KR");' >>"$f" echo 'user_pref("general.useragent.locale", "ko-KR");' >>"$f" de|at|ch) echo 'user_pref("general.useragent.contentlocale", "AT");' >>"$f" echo 'user_pref("general.useragent.locale", "de-AT");' >>"$f" ;; esac # Else leave default language done 45xsession에서 knoppix에서 mozilla-firefox profile은 /usr/share/knoppix/profile/.mozilla에서 참조한다는 사실을 발견했다. 왜 이제까지 이 코드를 못 보고 지나쳤을까.
if [ ! -e $HOME/.mozilla -a "$FREESPACE" -gt 1500 ] && [ -d /etc/skel/.mozilla -o -d /usr/share/knoppix/profile/.mozilla ]; then
rsync -Ha --ignore-existing /etc/skel/.mozilla $HOME/ 2>/dev/null [ "$USER" = "knoppix" ] && rsync -Ha --ignore-existing /usr/share/knoppix/profile/.mozilla $HOME/ 2>/dev/null fi knoppix.net의 how to : remaster knoppix the easy way using menu based remaster scripts 문서에 있는 대로 chroot 내부에서 /etc/skel을 없애고 /home/knoppix를 그대로 /etc/skel로 덮어버리면 remastering후 mozilla-firefox를 실행할 때에 user profile을 재설정해야 하는 문제가 발생할 수 있다. 따라서 위 작업 후에 /etc/skel은 원본 영문 knoppix CD의 /etc/skel의 내용으로 덮고 profile을 직접 수정해야한다.
prefs.js와 userChrome.css를 취향에 맞게 수정한다.
한글 입력기 nabi가 실행되기 위해서 다음과 같이 설정한다.
startkde()
lnusertemp socket >/dev/null # start nabi if [ -n "$LANGUAGE" ]; then case "$LANGUAGE" in ko) /usr/bin/nabi& export XMODIFIERS="@im=nabi" ;; esac fi ksplash sleep 2 4.4. rebuildfstab ¶일반적으로 한글 디렉토리명, 파일명을 보기 위해서는 /etc/fstab에 iocharset 옵션을 주어 사용한다. 그러나 knoppix는 부팅때마다 하드디스크의 파티션을 검색하여 /etc/fstab을 재작성해버리기 때문에 아무리 옵션을 적용한다한들 소용이 없다. 따라서 다음과 같이 /etc/fstab을 작성하는 스크립트를 수정함으로서 문제를 해결할 수 있다.
/etc/fstab을 수정하는 스크립트는 /usr/sbin/rebuildfstab이다.
count=0
while read device mountpoint fstype relax; do stringinfile "$device " "$TMP" || \ { count="$((count + 1))" [ -d "$mountpoint" ] || mkdir -p "$mountpoint" 2>/dev/null options="noauto,users,exec" case "$fstype" in ntfs) options="${options},iocharset=cp949,ro,umask=000" ;; vfat|msdos) options="${options},iocharset=cp949,umask=000" ;; swap) options="defaults" ;; esac 5.1. 패키지 업데이트 ¶first, edit /etc/resolv.conf
apt-get을 활용하기 위해 소스리스트 정보를 수정한다. 필자는 기존의 /mnt/hdb1/etc/apt/source.list 파일을 복사해왔다.
cp /mnt/hdb1/etc/apt/sources.list /etc/apt/ apt-get을 업데이트한다.
apt-get update 업데이트가 끝났으면 한텀, 백묵글꼴, 한글 입력기 나비, 아미, imhangul을 설치한다.
apt-get install hanterm-xf ttf-baekmuk xfonts-baekmuk nabi ami imhangul 다른 이쁜 글꼴들도 받아두자.
apt-get install ttf-alee ttf-unfonts 5.2. openoffice.org 한글지원 ¶미리 설치되어 있는 독일어 openoffice를 삭제하고 한국어 openoffice를 설치한다.
apt-get remove openoffice-de-en apt-get install openoffice.org apt-get install openoffice.org-l10n-ko 패널의 아이콘을 변경하기 위해서 다음과 같이 설정한다.
cd /usr/share/applnk/ ls cd Office/ ls mkdir OpenOffice cd OpenOffice/ cp /usr/share/applications/ooo645writer.desktop openoffice.desktop vi openoffice.desktop Icon 항목을 ooo_gulls로 수정하면 openoffice를 상징하는 갈매기 아이콘이 패널에 나타날 것이다. (이 아이콘은 앞에서 한 설정에 의해 openoffice writer를 실행할 것이다.)
Icon=ooo_gulls
5.3. mozilla-firefox 한글지원 ¶knoppix 3.8부터는 기본 웹브라우저가 mozilla-firefox로 바뀌었다. firefox의 독일어 언어팩을 삭제하고 한글 언어팩을 설치한다.
apt-get remove mozilla-firefox-locale-de apt-get install mozilla-firefox-locale-ko firefox의 profile 파일을 수정한다.
prefs.js
...
user_pref("browser.display.use_document_fonts", 0); user_pref("browser.preferences.lastpanel", 0); user_pref("browser.search.selectedEngine", "Google"); user_pref("browser.startup.homepage", ""); user_pref("browser.startup.homepage_override.mstone", "rv:1.7.10"); user_pref("extensions.disabledObsolete", true); user_pref("extensions.lastAppVersion", "1.0"); user_pref("font.default", "sans-serif"); user_pref("font.language.group", "ko"); user_pref("font.minimum-size.ko", 13); user_pref("font.name.monospace.ko", "UnDotum"); user_pref("font.name.monospace.x-western", "monospace"); user_pref("font.name.sans-serif.ko", "UnDotum"); user_pref("font.name.sans-serif.x-western", "sans-serif"); user_pref("font.name.serif.ko", "UnDotum"); user_pref("font.name.serif.x-western", "serif"); user_pref("general.useragent.contentlocale", "KR"); user_pref("general.useragent.locale", "ko-KR"); user_pref("intl.accept_languages", "ko, en"); user_pref("intl.charset.default", "EUC-KR"); user_pref("intl.charset.detector", "ko_parallel_state_machine"); user_pref("intl.charsetmenu.browser.cache", "UTF-8, EUC-KR"); user_pref("network.cookie.prefsMigrated", true); user_pref("security.warn_entering_secure", false); user_pref("security.warn_leaving_secure", false); user_pref("security.warn_submit_insecure", false); userChrome.css
...
* { font-size: 9pt !important; font-family: UnDotum !important; } 5.5. 불필요한 언어팩 제거 ¶localepurge를 통해 한국어를 제외한 모든 언어팩을 제거한다. localepurge를 통해 굉장히 많은 공간을 절약할 수 있다.
apt-get install localepurge 5.6. kde 한글지원팩 설치 ¶이제 kde 한글지원 팩을 설치하자. kde 기반의 한소프트리눅스에서 kde 한글화팩을 구할 수 있다. 다음의 haansoftlinux ftp링크에서 받을 수 있다!
ftp://ftp.haansoftlinux.com/pub/haansoftlinux/OS/2005/Workstation/RPMS/
kde3.3버전용 i18n 패키지이지만 kde3.4에서 사용하는 것도 가능하다.
다운로드한 kde-i18n-korean RPM 패키지를 deb 패키지로 변환한다.
alien kde-i18n-Korean-3.3.0-4hs.noarch.rpm dpkg로 kde-i18n-korean을 설치한다.
dpkg -i --force-overwrite kde-i18n-Korean-3.3.0-4hs.noarch.rpm 5.7. 불필요한 패키지 삭제 ¶데비안 소스리스트가 제공하는 모든 패키지들을 다 쓸 수 있다면 얼마나 좋을까? 그러나 knoppix로 부팅할 수 있는 이미지의 크기는 CD 1장 분량의 700MB을 넘을 수 있다. 따라서 다음과 같이 불필요한 시스템에 불필요한 패키지를 삭제해야 한다.
패키지 삭제 작업을 자동화하기 위해 먼저 삭제할 패키지 리스트를 kicklist라는 이름으로 작성한다.
x3270
3270-common xfonts-x3270-misc ibod ipppd isdnactivecards isdnlog isdnlog-data libcapi20-2 isdnutils-base isdnutils-xtools isdnvboxclient pppdcapiplugin isdnactivecards isdn-config kde-i18n-cs kde-i18n-da kde-i18n-de kde-i18n-es kde-i18n-fr kde-i18n-it kde-i18n-ja kde-i18n-nl kde-i18n-pl kde-i18n-ru kde-i18n-tr xtel manpages-de mozilla-locale-de-at trans-de-en user-de euro-support euro-support-console euro-support-x dpkg 명령으로 kicklist에 등록되어 있는 패키지들을 일괄적으로 삭제한다.
dpkg -P `cat kicklist` 몇 가지 더 삭제해야할 불필요한 정보가 남아있다.
cd /etc rm -Rf isdn rm -Rf 3270 7. chroot 종료 및 최종 환경 설정 ¶/mnt/hdc1/remaster/Knoppix.build/Knoppix.Master /KNOPPIX.CUSTOM/boot/isolinux/isolinux.cfg을 수정해서 부팅할 때 cheat code lang을 ko로 전환하자. 여기서 설정해주는 cheat code는 쉘 변수 LANG에 반영된다.
lang=ko GIMP 등을 이용해서 knoppix의 바탕화면을 수정한다.
knoppix.png
편집기로 index.html 파일을 수정한다.
index.html
9. 참고 ¶![]() ![]() ![]() ![]() ![]() |
The wise shepherd never trusts his flock to a smiling wolf. |