ติดตั้ง dosemu บนอูบุนตู

Topic: 
 

เอาของเก่าที่เคยลองไว้มาทดสอบใหม่

จากการที่ apt-get install dosemu แล้วไม่สามารถรันได้
จึงเอาซอร์สมาคอมไพล์เอง
ก่อนอื่นต้องลบของเก่าออกให้หมดก่อน

$ sudo dpkg --purge dosemu
$ cd
$ sudo rm -rf .dosemu

ตามด้วยติดตั้งใหม่

$ su
# apt-get install bsdmainutils checkinstall libsdl1.2-dev flex bison
# cd /usr/src
# wget http://heanet.dl.sourceforge.net/sourceforge/dosemu/dosemu-1.3.3.tgz
# wget http://heanet.dl.sourceforge.net/sourceforge/dosemu/dosemu-freedos-b9r5a-bin.tgz
# tar xvfz dosemu-1.3.3.tgz
# cd dosemu-1.3.3
# ./configure --with-x --with-fdtarball=/usr/src/dosemu-freedos-b9r5a-bin.tgz --x-includes=/usr/include/X11 --x-libraries=/usr/lib/X11 --with-slangdir=/usr/lib
( ถ้าเป็นเดเบียนใช้ # ./configure --with-fdtarball=/usr/src/dosemu-freedos-b9r5a-bin.tgz เฉย ๆ )
# make
# checkinstall -D make install
( # dpkg -i dosemu-1.3.3_1.3.3-1_i386.deb )
# exit

ทดสอบการรัน

$ dosemu

เขาจะขึ้นเป็น xdosemu โดยอัตโนมัติ

ไฟล์ของ freedos จะอยู่ที่ ~/.dosemu/drive_c

คำสั่งสร้างเน็ตเวิรกไดร์ฟคือ

C:\ lredir h: \linux\fs/mnt/smbfs/data
C:\ lredir i: \linux\fs/mnt/smbfs/app

ไดรฟ์ h จะโยงไปหา /mnt/smbfs/data
และไดรฟ์ i จะโยงไปหา /mnt/smbfs/app


บันทึกส่วนตัว
ทำไดร์ฟ d เป็น ~/dos (เพื่อไม่ให้ไฟล์ปนเปกับไดเรคทอรี่ ~/ )
โยงลิงก์เน็ตเวิร์กไดรฟ์ h: และ i:

$ mkdir ~/dos
$ cd ~/.dosemu/drives
$ ln -sf ~/dos d
$ vi ~/.dosemu/drive_c/autoexec.bat
ลบบรรทัด  lredir d: linux\fs%DOSDRIVE_D% ออก
เพิ่มบรรทัด lredir h: linux\fs/mnt/smbfs/data
เพิ่มบรรทัด lredir i: linux\fs/mnt/smbfs/app

แก้ไข config.sys ให้สามารถเปิดไฟล์ได้มากขึ้น

$ vi ~/.dosemu/drive-c/config.sys

เพิ่มบรรทัด

files=100

เพิ่มเครื่องพิมพ์จากเครือข่าย 2 ตัวคือ epson และ epson2
ติดตั้งเครื่องพิมพ์จาก cups โดยเรียกเข้าไปที่ http://localhost:631/
เพิ่มเครื่องพิมพ์ของเครือข่าย samba คือ epson และ epson2
ต่อด้วยการเรียกใช้ lpadmin อีกที

$ lpadmin -p epson -u allow:all -E -v smb://server1/epson -P /etc/cups/ppd/epson.ppd
$ lpadmin -p epson2 -u allow:all -E -v smb://server2/epson2 -P /etc/cups/ppd/epson2.ppd
$ vi ~/dosemurc

$_printer_command = "lpr -l -P epson, lpr -l -P epson2"

Comments

 

(49-09-05 รุ่นนี้เก่าแล้ว มีปัญหากับเครื่องพิมพ์ ใช้อันข้างบนใหม่กว่าแทน)

มาอ่านเจอใน Ubuntu forum ทีหลังว่า
แพคเกจ dosemu ของอูบุนตู มี bug เยอะ
มีคนเอาแพคเกจของเดเบียนมาติดตั้งเอง ได้ผลดีกว่า
ลองแล้วก็ได้ผลจริง ๆ ด้วย ไม่มีผลข้างเคียงแบบคอมไพล์เองด้วย

รุ่นที่ทดสอบแล้วได้ผลคือ
$ sudo dpkg -i dosemu_1.2.2-3_i386.deb
$ sudo dpkg -i dosemu-freedos_0.0.b9r5a-2_i386.deb
$ sudo dpkg -i xfonts-dosemu_1.2.2-3_all.deb

49-09-05
มีปัญหากับ printer แฮะ พิมพ์ไม่ออก
สรุปว่า ถึงตอนนี้ คอมไพล์เองยังดีกว่า

 

ปัญหาเดิมของ dosemu บนอูบุนตูคือ apt-get แล้วรันไม่ได้
ต่อมาแก้ปัญหาด้วยการคอมไพล์รุ่น 1.3.3 เอง มีปัญหาหลุดกับ foxpro ในบางสถานการณ์
ต่อมาแก้ปัญหาด้วยการใช้รุ่น 1.2.2 ของเดเบียน มีปัญหาพิมพ์บนเครือข่ายไม่ออก
เลยคิดว่าตอนนี้ freedos ออกรุ่น 1.0 มาแล้ว จะทดลองคอมไพล์อีกครั้ง

ลงมือ (จับตั้งแต่แรกเลย จะได้เอาไว้อ้างอิงได้)
(ไม่มีความรู้ลึกนะครับ ห้ามเอาไปอ้างอิง)

ลบของเก่าออกก่อน
$ sudo dpkg --purge dosemu dosemu-freedos
$ cd
$ rm -rf .dosemu*

ส่วนของ dosemu
คอมไพล์ dosemu ใหม่
$ su
# apt-get install bsdmainutils checkinstall libsdl1.2-dev flex bison
# cd /usr/src
# wget http://heanet.dl.sourceforge.net/sourceforge/dosemu/dosemu-1.3.3.tgz
# tar xvfz dosemu-1.3.3.tgz
# cd dosemu-1.3.3
# ./configure --with-x --x-includes=/usr/include/X11 --x-libraries=/usr/lib/X11 --with-slangdir=/usr/lib
# make
# checkinstall -D make install
# cd ..

ส่วนของ freedos-1.0
เอาอิมเมจไฟล์มา 2 ไฟล์
# wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdbasecd.iso
# wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img

ต่อไปนี้เป็นลูกทุ่งจริง ๆ ถ้าใครรู้วิธีอื่น ช่วยบอกด้วยนะครับ
แตกไฟล์ fdboot.img ไปไว้ที่ /var/lib/dosemu เพื่อทำเป็น hdimage
# mkdir -p /mnt/tmp
# mount -t vfat -o loop fdboot.img /mnt/tmp
# mkdir -p /var/lib/dosemu/freedos-1.0
# cp -xa /mnt/tmp/* /var/lib/dosemu/freedos-1.0
# umount /mnt/tmp

แตกไฟล์ fdbasecd.iso เพื่อคัดลอกไฟล์ของ freedos เข้าไปใน hdimage
# mount -t iso9660 -o loop fdbasecd.iso /mnt/tmp
# mkdir -p /var/lib/dosemu/freedos-1.0/bin
# cp -xa /mnt/tmp/freedos/setup/odin/* /var/lib/dosemu/freedos-1.0/bin
# umount /mnt/tmp

คัดลอกไฟล์ไบนารีของ dosemu เข้าใน hdimage
# mkdir -p /var/lib/dosemu/freedos-1.0/dosemu
# cp -xa /usr/src/dosemu-1.3.3/commands/* /var/lib/dosemu/freedos-1.0/dosemu/

ปรับแต่ง (ตรงนี้แก้ตามใจชอบนะครับ)
# cd /var/lib/dosemu/freedos-1.0/
# mv fdconfig.sys fdconfig.bak
# vi config.sys

SWITCHES=/F
DOS=UMB,HIGH
dosdata=umb
lastdrive=Z
files=140
stacks=0
rem buffers=10
device=c:\bin\himem.exe
shellhigh=c:\command.com /e:1024 /p

# vi autoexec.bat

@echo off
path c:\bin;c:\dosemu
set TEMP=c:\tmp
set BLASTER=A220 I5 D1 H5 T6
prompt $P$G
rem ----- NETWORK DRIVE -----
lredir i: linux\fs/mnt/smbfs/data
lredir j: linux\fs/mnt/smbfs/app
rem ----- END NETWORK DRIVE -----
unix -s DOSDRIVE_D
if "%DOSDRIVE_D%" == "" goto nodrived
lredir d: linux\fs%DOSDRIVE_D%
:nodrived
unix -s DOSTMP
if "%DOSTMP%" == "" goto fidostmp
if "%DOSDRIVE_D%" == "" goto dostmpd
lredir h: linux\fs%DOSTMP%
set TEMP=E:\
goto :fidostmp
:dostmpd
lredir d: linux\fs%DOSTMP%
set TEMP=D:\
:fidostmp
rem uncomment to load another bitmap font
rem loadhi display con=(vga,437,2)
rem mode con codepage prepare=((850) c:\bin\cpi\ega.cpx)
rem mode con codepage select 850
rem chcp 850
rem uncomment the following to load cdrom support
rem shsucdx /d:mscd0001
unix -s DOSEMU_VERSION
echo "Welcome to dosemu %DOSEMU_VERSION%!"
unix -e

เปลี่ยนการอนุญาตใช้ไฟล์ของ hdimage เผื่อสำหรับการติดตั้งและปรับแต่งภายหลัง
# chmod -R 0777 /var/lib/dosemu/freedos-1.0

แก้ไขค่าตั้งต้นของ dosemu
# vi /etc/dosemu/dosemu.conf

...
$_hdimage = "/var/lib/dosemu/freedos-1.0"
...

ตัวอย่างติดตั้งการใช้เครื่องพิมพ์ของเครือข่าย
# vi /etc/dosemu/dosemu.conf

...
# NETWORK PRINTER //server1/epson1=lpt1: , //server2/epson2=lpt2:
# PRE-CONFIG WITH COMMAND
# $ sudo lpadmin -p epson1 -u allow:all -E -v smb://$USER:$PASSWORD@server1/epson1
# $ sudo lpadmin -p epson2 -u allow:all -E -v smb://$USER:$PASSWORD@server2/epson2
$_printer_commands = "lpr -l -P epson1, lpr -l -P epson2"
...

# lpadmin -p epson1 -u allow:all -E -v smb://$USER:$PASSWORD@server1/epson1
# lpadmin -p epson2 -u allow:all -E -v smb://$USER:$PASSWORD@server2/epson2

หมดแล้วออกจาก su เลย
# exit

ทดลองรันด้วย
$ dosemu

ถ้าใช้งานและปรับแต่งจนเป็นที่พอใจแล้ว ก็สามารถปรับให้อ่านค่าได้อย่างเดียว
$ sudo chmod -R 0755 /var/lib/dosemu/freedos-1.0

ผลการทดลอง รันได้ราบเรียบดีมาก