· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Knoppix RemasteringRScripts


1. 기본 원칙

KNOPPIX 의 변종이 많이 생기는 것으로 보아 기본 가이드 라인을 정해 놓는 것이 필요할 것 같습니다.
  • KNOPPIX 가 새로운 버전을 출시하면, 바로 한글화 한다.
    우리가 시도한 것과 충돌하는 경우, KNOPPIX 의 방식을 따른다. 가능한 모든 내용을 KNOPPIX 에 알려 반영되도록 한다.
  • 데비안 방식을 지킨다.
    하드디스크에 설치할 경우 데비안 방식을 디폴트로 한다.
  • 가능한 새로운 어플을 추가할 때는 데비안에 있는 것을 사용한다.
  • 한글 관련된 부분을 데비안에 누가 반영되도록 할 것 인가?

이상의 원칙은 debianusers wiki의 DebianKorea:KnoppixKo문서에서 천명권님을 비롯한 knoppix에 관심있는 분들이 밝히신 knoppix 한글화의 기본 가이드라인입니다.

2. 개요

기본적인 아이디어는 매우 간단하다.
  1. remastering 스크립트를 활용하여 knoppix CD에 있는 파일들을 추출하고 이를 /mnt/hdc1/remaster/Knoppix.build/Knoppix.Master에 복사한다.
  2. /mnt/hdc1/remaster를 루트 디렉토리로 chroot하고 리패키징한다.
  3. chroot 상태에서 X를 실행하고 원하는 대로 X 환경을 설정한다.
    • 이때 KDE 설정 내용 외의 프로그램 즉, /home/knoppix/.kde 디렉토리 이외의 다른 설정에 대해서는 고민을 좀 해봐야 할 듯 하다. (특히 mozilla-firefox는 /home/knoppix에서 /etc/skel로 복사될 때 다르게 변환되는 부분이 있나?? 돌아버리는 줄 알았다.)
  4. chroot 상태를 종료하고 CD 이미지로 압축한다.
  5. 압축된 CD 이미지를 CD RW로 구워내면 모든 작업 끝.

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. 로케일 설정

이제부터 본격적으로 한글화를 시작해보자. 이 절의 설정 내용은 모두 chroot 내에서 설정하여 /mnt/hda1/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. 리패키징

이번 절에서 원하는 패키지를 설치/제거한다.

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.4. Xine 한글자막

Xine을 통해서 한글 자막을 볼 수 있도록 다음의 문서를 참고했다. http://bbs.kldp.org/viewtopic.php?t=48878

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

6. chroot 상태에서 X 실행 및 X 환경 설정


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

8. CD 이미지 굽기


9. 참고

DebianKorea:KnoppixKo37천명권, knoppix 3.7 한글화]

DebianKorea:KnoppixCd천명권, 하드디스크 마운트 준비]

DebianKorea:KnoppixKo천명권, 한글 패키지를 위한 공간 만들기]

DebianKorea:KnoppixAddPackagesforHangul천명권, 한글 패키지 설치하기

DebianKorea:KnoppixKo천명권, 한글관련 설정, cd 이미지 생성



10. 커맨트

이 문서에 대한 조언을 부탁드립니다.


ID
Password
Join
He is truly wise who gains wisdom from another's mishap.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-09-30 22:56:12
Processing time 0.0138 sec