DOS용 (타자연습) 프로그램을 /usr/share에 집어넣고 $HOME에 프로그램 데이터를 집어넣을 수 있는 방법을 간략하게 연구해 봤습니다. overlayfs는 root 권한이 있어야지만 사용이 가능해서 unionfs-fuse와 fuse-zip을 써서 프로그램과 프로그램 데이터를 분리했습니다. root가 아닌 일반 유저가 직접 실행하는 쉘 스크립트를 작성하였습니다.
#!/bin/sh
# Command Arguments
zipfile=/usr/share/한컴타자연습-97/htt.zip
dosboxconf=/usr/share/한컴타자연습-97/dosbox.conf
progname=한컴타자연습97
exepath=HTT.exe
# Internal Variables
lower=/tmp/dosbox-launcher/$progname/lower
merged=/tmp/dosbox-launcher/$progname/merged
upper=~/.dosbox-launcher/$progname
fuse-zip -r $zipfile $lower
unionfs -o cow,hide_meta_files $upper=RW:$lower=RO $merged
dosbox -exit \
-userconf \
-conf $dosboxconf \
-conf ~/.config/dosbox-launcher/dosbox-$progname.conf \
$merged/$exepath
fusermount -u $merged
fusermount -u $lower
이 쉘 스크립트는 그냥 예제일 뿐이므로 실제로 패키지를 만들면 좀 더 잘 만들어야겠죠. 예를 들어서 파이썬으로 만들 수도 있구요. 이 쉘 스크립트를 각각의 DOS 프로그램 패키지에 직접 포함시킬 수도 있고 아니면 dosbox-launcher라는 프로그램으로 분리해서 여러 DOS용 프로그램과 공유할 수도 있다고 봅니다.
제가 구상한 한컴타자연습 97 패키지의 구성을 보여드리겠습니다.
1. /usr/share/한컴타자연습-97/htt.zip
2. /usr/share/한컴타자연습-97/dosbox.conf
3. /usr/bin/hancom_typing_practice-97
dosbox-launcher -zipfile /usr/share/한컴타자연습-97/htt.zip -dosboxconf /usr/share/한컴타자연습-97/dosbox.conf -progname 한컴타자연습97 -exepath HTT.exe
4. /usr/share/applications/hancom_typing_practice-97.desktop
[Desktop Entry]
Type=Application
Name=한컴타자연습 97
GenericName=DOS용 타자연습 프로그램
Comment=DOS용 타자연습 프로그램
Exec=hancom_typing_practice-97
Icon=한컴타자연습-97 # 적당한 아이콘이 없으면 dosbox 아이콘 또는 dos 아이콘을 활용하는 것을 추천
5. /usr/share/icons/hicolor/**x**/apps/한컴타자연습-97.png