Sep
Sep
源起
開發 linux 應用需要,利用 VMware Player 來撥放 SLAX Popcorn 作業系統方便測試。

更新紀錄 changelog
- 200 6-0929 新增 smb 說明
建立一個 vmx 檔
一開始需要建立一個檔案,告訴 vmplayer 建立一個具有硬蝶可用的 SLAX PE VM 環境。要準備兩種東西, slax popcorn iso 檔以及自己編的 slax.vmx 檔,當然 vmplayer 要先裝好。
- wget slax-popcorn-5.1.8rc.iso
- mkdir slax-popcorn-vmx
- cp 500MB.vmdk for hd
- modify slax.vmx
- vmplayer slax.vmx
- root/toor
- startx
為了加上硬碟檔,需要改一下 slax.vmx 部份設定。
# hd info ide0:0.present = "TRUE" ide0:0.fileName = "500MB.vmdk" # CDROM Info ide1:0.present = "TRUE" ide1:0.fileName = "slax-popcorn-5.1.8rc.iso" ide1:0.deviceType = "cdrom-image"
按兩下 slax.vmx 應該就有 linux 可以用了。
網路連結 network access
不能上網等於廢物,所以需要檢視一下網路存取的部份。
- ifconfig
- netstat -at
- chmod +x /etc/rc.d/rc.sshd
- /etc/rc.d/rc.sshd start
- netstat -at
建議直接用舊的或是其他的 vmx 檔來改,vmplayer 會有個 DHCP 一直跑,當你的 vmx 按下後,就會找這 DHCP 要一個 IP,同時會替每一個新加入的 NAT 實體的地址加一,例如之前 dsl-n 會自動被指到 192.168.213.130,這次就變成 192.168.213.131。
如果需要互傳東西,最方便的還是 ssh/scp,預設關起來,打開就好。
mount hd
預設只有掛一個目錄,並查看是否抓到 hda。
root@slax:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 225M 112M 113M 50% /
root@slax:~# dmesg | grep hd
ide0: BM-DMA at 0x1050-0x1057, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0x1058-0x105f, BIOS settings: hdc:DMA, hdd:pio
hda: VMware Virtual IDE Hard Drive, ATA DISK drive
hdc: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive
hda: max request size: 128KiB
hda: 1024000 sectors (524 MB) w/32KiB Cache, CHS=1015/16/63, UDMA(33)
hda: unknown partition table
hdc: ATAPI 1X CD-ROM drive, 32kB Cache, UDMA(33)
開始規劃硬碟,並測試。
- fdisk /dev/hda
- n p 1 enter enter w
- mke2fs /dev/hda1
- mkdir /mnt/hda1
- mount /dev/hda1 /mnt/hda1
- scp something to /mnt/hda1/
- power off
重新開機後一定趕快按住 F2 來改 CDROM 開機,這個動作第一次重開才要做,之後 vmplayer 會記起來。
另外 SLAX 會自動幫忙掛上 /dev/hda1,直接可以用。
create ttf-arphic-uming-0.1.mo
中文字型很多,這裡採用自由散佈版權的字形。
How to modify existing SLAX module
基本上這個版只要將字形放到 /etc/fonts/fonts.conf 指定的目錄就可以抓到,firefox 會正常秀出中文網頁,這是第一步。
- mount /mnt/hda1
- cd /mnt/hda1
- wget ttf-arphic-uming_0.1.xxx.tar.gz from http://freedesktop.org/wiki/Software_2fCJKUnifonts
- tar zxvf ttf-arphic-uming_0.1.20060903.orig.tar.gz
- mv ttf-arphic-uming-0.1.20060903 uming
- mkdir -p work/ttf-arphic-uming/usr/share/fonts/zh_TW/TrueType
- mv uming work/ttf-arphic-uming/usr/share/fonts/zh_TW/TrueType/
- cd /mnt/hda1/work
- dir2mo ttf-arphic-uming ttf-arphic-uming-0.1.mo
- fc-list
- uselivemod ttf-arphic-uming-0.1.mo
- fc-list
- firefox to http://www.google.com.tw
問題有兩個,一是網頁字體模糊,一是 firefox 秀 html/title 標題列的地方出現亂碼。先解決字太小會糊的問題,加入網路上的建議。
vi /etc/fonts/local.conf
<match target="font"> <test name="family"><string>AR PL ShanHeiSun Uni</string></test> <edit name="antialias"><bool>false</bool></edit> <edit name="hinting"><bool>true</bool></edit> <edit name="autohint"><bool>false</bool></edit> </match> <match target="font"> <test name="family"><string>AR PL ShanHeiSun Uni</string></test> <test name="pixelsize" compare="more_eq"><int>17</int></test> <edit name="antialias" mode="assign"><bool>true</bool></edit> <edit name="hinting" mode="assign"><bool>true</bool></edit> </match>
反覆測到好,就可以準備重建 mo 檔。至於標題列亂碼議題再登出 X 之後重新 startx 就可以看到了,所以只要在 startx 之前,先 uselivemod 這個字型即可,正常來說,最終這個 mo 放到 CD 中,會在 login 之前載入。
recreate mo with new local.conf
依照上面改好的 local.conf 放到 mo 中,才會一起載入。
- cd /mnt/hda1/work
- mkdir -p ttf-arphic-uming/etc/fonts
- cp /etc/fonts/local.conf ttf-arphic-uming/etc/fonts/
- dir2mo ttf-arphic-uming ttf-arphic-uming-0.1.mo
- reboot
- uselivemod /mnt/hda1/work/ttf-arphic-uming-0.1.mo
- startx
- firefox www.google.com.tw
change to firefox-1.5.0.6.mo (zh_TW)
如何知道載入的 mo 有哪些 ? 需要參考 CD 資料。
root@slax:~# ls /mnt/live/mnt/hdc/base 01_kernel.mo 03_xwindow.mo 09_slax.mo 02_core.mo 04_xap_libs.mo 12_popcorn.mo root@slax:~# mkdir /mnt/popcorn root@slax:~# mount -t squashfs -o loop /mnt/live/mnt/hdc/base/12_popcorn.mo /mnt/popcorn/ root@slax:~# ls /mnt/popcorn etc/ root/ usr/ var/ root@slax:~# ls /mnt/popcorn/var/log/packages/ abiword-2.2.9-i486-1 gaim-1.5.0-i486-2 mozilla-firefox-1.5.0.4-i686-1 bmp-0.9.7-i486-2 gucharmap-1.4.1-i486-2 xfce-4.2.3.2-i486-1 root@slax:~# which firefox /usr/bin/firefox root@slax:/# ls -al /usr/bin/firefox lrwxrwxrwx 1 root root 32 Aug 21 17:45 /usr/bin/firefox -> /usr/lib/firefox-1.5.0.4/firefox*
可以看到這個 mozilla-firefox-1.5.0.4 被包在 popcorn 的 mo 中,用 installpkg -root 方式裝上去的,這種做法讓 firefox 很難單獨更換。
所以採移花接木方式,裝到 /usr/lib/firefox-1.5.0.6-zh_TW 目錄,再將 /usr/bin/firefox 轉連。
這個做法好處是沒裝之前,舊的 firefox 還是可以跑。缺點是沒有在 popcorn 中移除這個套件等於是多餘的,會佔去空間。
如果自製一個 popcorn-firefox 版,是否以後每次改版都要自己來一次 ? 還是另外做一個。
- cd /mnt/hda1
- wget firefox zh_tw version
- tar zxvf firefox-1.5.0.6.tar.gz
- mv firefox firefox-1.5.0.6-zh_TW
- cd /mnt/hda1/work
- mkdir -p firefox/usr/lib/
- cd /mnt/hda1
- mv firefox-1.5.0.6-zh_TW work/firefox/usr/lib/
- cd work/firefox/usr
- mkdir bin
- cd bin
- ln -s ../lib/firefox-1.5.0.6-zh_TW/firefox firefox
- cd /mnt/hda1/work
- dir2mo firefox firefox-1.5.0.6-zh_TW.mo
- uselivemod /mnt/hda1/work/firefox-1.5.0.6-zh_TW.mo
- ls -al /usr/bin/firefox
- firefox to www.google.com.tw
add flash plugin to firefox mo
沒有含 flash player 需要自己再加上。
- reboot first
- wget flash player for linux
- tar zxvf install_flash_player_7_linux.tar.gz
- cd install_flash_player_7_linux
- cp libflashplayer.so /mnt/hda1/work/firefox/usr/lib/firefox-1.5.0.6-zh_TW/plugins/
- cp flashplayer.xpt /mnt/hda1/work/firefox/usr/lib/firefox-1.5.0.6-zh_TW/components/
- cd /mnt/hda1/work
- dir2mo firefox firefox-1.5.0.6-zh_TW.mo
- uselivemod firefox-1.5.0.6-zh_TW.mo
- firefox to about:plugins
- firefox to www.google.com.tw
smb 網路芳鄰
如果要直接分享 HOST 的資料可以用網路芳鄰,需要先做一點工作。
Windows XP Host 端
- 控制台-使用者-啟用 Guest 帳戶
- 建立分享目錄 slax_thing
- 加入 guest 分享權限
Slax 端需要裝個 patch 套件才可以用。
- wget Samba Popcorn Patch for 5.0.6
- uselivemod this mo
- smbclient //host/slax_thing -U guest
- ls and check and exit
- mkdir /mnt/hda1/smb
- smbmount //hostname_or_ip/slax_thing /mnt/hda1/smb -o guest
參考 links
Create a language module for SLAX
Create SLAX modules from source code
SLAX 5.1.7b Standard edition 中文化
考慮分析 XFCE 4.2.3.2 czech language module 看看要如何改。
Sep
install fireflysung font
READ FIRST Fontconfig
NOTE: load font first. then load firefox extension.
如果先掛上 firefox 再掛字型,會讓 firefox 不斷開啟,整個速度變很慢。
- sudo do
- mount /mnt/hda1
- cd /mnt/hda1
- wget http://cle.linux.org.tw/fonts/FireFly/fireflysung-1.3.0.tar.gz
- exit to dsl
- cd /home/dsl
- mkdir .fonts
- cd .fonts
- tar -zxvf /mnt/hda1/fireflysung-1.3.0.tar.gz
- fc-list | grep Sung
- mydsl-load /mnt/hda1/firefox_xxx.uci
- browse http://www.google.com.tw will show zh_TW.UTF-8
install flash plugin in firefox
- cd /mnt/hda1
- wget install_flash_player_7_linux.tar.gz
- cd /tmp
- tar zxvf /mnt/hda1/install_flash_player_7_linux.tar.gz
- cd install_flash_player_7_linux
- ./flashplayer-installer
- answer /opt/firefox
- ls /opt/firefox-plugins/
- browse test page
但是 7 版的 flash 測部落格首頁的 sIFR 會破掉,原來如此。
unicode locale problem
READ FIRST : 打造 Unicode 的環境
dsl-n 沒有中文環境,前面只是加上字體,無法輸入中文,下面是原先狀態。
dsl@dslbox:~$ locale LANG=C LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT="C" LC_IDENTIFICATION="C" LC_ALL= dsl@dslbox:~$ locale -a C POSIX de_DE de_DE.iso88591 deutsch german dsl@dslbox:~$ ls /usr/share/locale C en it sv be es locale.alias uk cs fr ru_RU.cp1251 uk_UA.cp1251 de he ru_RU.koi8r zh_CN dsl@dslbox:~$ ls /usr/X11R6/lib/X11/locale C en_US.UTF-8 iscii-dev iso8859-15 locale.alias compose.dir ibm-cp1133 iso8859-1 lib locale.dir
要使用的 locale-gen 工具並沒有安裝,要另外找。
install locales
READ FIRST : DSL 中文化
- cd /mnt/hda1
- wget http://ftp.osuosl.org/pub/damnsmall/mydsl/system/dsl-dpkg.dsl
- mydsl-load dsl-dpkg.dsl
- apt-get install locales
這裡就出問題,看起來有些地方要改。
Sep
dsl-n
主要差別是核心 2.6 與 gtk2 內建。
READ FIRST : dsl in vmware player
create vm
- wget dsl-n-01RC4.iso
- cp dsl.vmx from dsl-3.0.1-vmx
- cp qemu-img.500mb
- modify dsl.vmx with hda info.
- vmplayer dsl.vmx
setup network
- make sure vmplayer’s nat network address.
- sudo su
- netcardconfig
- ifconfig
- ping gateway
mount vmdk file and upload jre_xxx.bin
- sudo su
- dmesg | grep hd
- fdisk /dev/hda
- mke2fs /dev/hda1
- mount /dev/hda1 /mnt/hda
- passwd
- /etc/init.d/ssh start
- netstat -at
- scp jre_xxx.bin in guest os from host os.
install java to /opt
- cd /opt
- chmod +x /mnt/hda/jre_xxx.bin
- sh /mnt/hda/jre_xxx.bin
- /opt/jre_xxx/bin/java -version
mk dsl extension
- mkdir -p /mnt/hda/work/opt
- cd /mnt/hda/work
- cp -Pr /opt/jre_xxx ./opt/
- chown -R 0.0 ./opt/
- find . > files.txt
- vi files.txt with many dd work (. and ./files.txt and some man page)
- tar cvf java.tar—no-recursion—numeric-owner -T files.txt
- gzip -9 java.tar
- ls
- shutdown -h now
test load java dsl extension
- vmplayer dsl.vmx
- click and F2 to setup bios boot order (cdrom first and one time job)
- mount /mnt/hda1
- su dsl
- mydsl-load /mnt/hda1/work/java.tar.gz
- /opt/java_xxx/bin/java -version
links
Sep
更新記錄
- 2006-0905 因為 SLAX 採用 tgz 方式非常容易改裝新的軟體,延展性比較大,當然代價就是體積大了一點,不過還不超過 150 M,比起其他 500-600 M 的巨大光碟版 Linux 來說,也比較方便,所以將暫時不再使用 Damn Small Linux。
- 如需參考 SLAX Popcorn 在 vmplayer 上面運作的資訊,請參閱 SLAX Popcorn 5.1.8 RC in vmplayer
緣起
建立一個容易使用與開啟的 linux 測試環境,所以用 VMware player on Windows 方式測試看看。
damn small ?
也許會同時跑幾個 VM,所以 guest os 必須不會太大,很好傳送或是帶著跑,所以選之前用過的 damn small linux 來跑。
下載 dsl-3.0.1-vmx.zip 來跑 VMware player 。解開與執行後,除非執行 VMware player poweroff,不然整個記憶體會轉存成下列檔案,這個記憶檔 dsl.vmem 大小是可以設定的,不過一旦將狀態保持下來後,大於300MB size 對有些小隨身碟可能撐不住。
2006/06/20 下午 04:53 51,806,208 dsl-3.0.1.iso 2006/09/01 下午 08:57 847 dsl.vmx 2006/09/01 下午 09:00 8,664 nvram 2006/09/01 下午 09:00 14,019 vmware.log 2006/09/01 下午 09:00 18,123,037 dsl.vmss 2006/09/01 下午 09:00 239,075,328 dsl.vmem
一開始使用沒問題,只是預設的 bridged 連線無法上網,連 gateway 也無法 ping 到,只有 ping host os 可以,出不去這台實體機器。
Broswer Appliance is in the know on the player
於是又去 vm 的目錄拉個 dsl-n 下來試,一樣是無法連到 gateway 機器,只到 host 為止。
VMware player 設定網路說明或是範例並不好找,一定是誤解設定,所以直接找 VMware 官方的 Browser Appliance 來試看看並觀摩其中網路設定,結果上網一切正常。原來是必須用 NAT 模式來共用 host os 的網卡,等於當 host os 是分享器。
回改 dsl-3.0.1-vmx 為 nat 模式,但是誰知道 nat 規則 ?這時候必須找到安裝的 vmnetcfg.exe 來看,預設是 192.168.213.2 為 gateway,很高興的改了 192.168.213.5 卻跑不動,只好仿 Broswser Appliance 的 192.168.213.128 才跑起來。
後來又改為 192.168.213.12 也可以,猜測是之前改完沒有重新啟動的關係 ? 另外 dsl 常常會有些桌面程式開不起來,變成要重新開 VM 才回復正常。
Update: 預設不一定是 192.168.213 區,後來換到 NB 去裝,變成 88 區,這時你必須手動改回 213 區,不然別的機器可以連線的 VM 檔,直接移過來會連不上去。
java vm in vm player ?
dsl 可以直接下載 jre_1_5_0,安裝完可以查看版本,放置於 /opt 下。不過如果關掉 vm 整個 jre 都會消失,因為裝在 ramdisk 之中。
Update: 後來下載只剩下 plugin 與 lib 目錄,不見 bin 目錄,應該是版權問題,請看 這裡 。
BIG jre-1_5_0_08-linux-i586.bin
目前要使用 java 必須到 java.sun.com 下載 jre-1_5_0_08-linux-i586.bin 來裝,注意不要上傳到 dsl os 的根目錄,因為那個目錄只有 3M 可用,要不爆請下到 /tmp 目錄,另外 VM player 預設的 128 M 記憶體會不夠用,因為 dsl os 會分 32M當執行記憶體,其他剩下當 ramdisk。
記憶體設太小會導致安裝有問題發生,因為很多安裝檔在解開時會產生暫存檔,這會讓 ramdisk 爆掉,例如 java 就會裝不進去,所以必須改為 172 M 左右,可以用的 ramdisk 約 128 M,但是裝完並刪掉 bin 檔也只剩約 40M 可用,裝了約 80M 真腫。
root@0[lib]# df -h Filesystem Size Used Available Use% Mounted on /dev/ram0 2.9M 625.0k 2.3M 21% / /dev/scd0 49.4M 49.4M 0 100% /cdrom /dev/cloop 118.1M 118.1M 0 100% /KNOPPIX /ramdisk 126.6M 86.8M 39.8M 69% /ramdisk root@0[opt]# /opt/jre1.5.0_08/bin/java -version java version "1.5.0_08" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03) Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode, sharing)
Is your file mine?
如何交換 host-guest 檔案最方便方式是用網路進出,下用 sshd 方式,可以用 sftp/scp 上下東西。必須先設定密碼後啟動 ssh 服務。
sudo su passwd /etc/init.d/ssh start
want to keep it
下載完或是做完設定後,執行 backup 工作,這樣會產出一個 backup.tar.gz,下次開機用指名方式例如 restore=hda1 存回來。不過這是用磁區方式,所以沒有目錄可以選,必須放在某個磁區的根目錄下,這點比較麻煩。
Update: 後來版本可以指定目錄
make a vmdk
每次指定起動備份檔很麻煩的話,可以直接燒到 iso 檔去。參考 mkmydsl 。使用 mkmydsl 需要一個磁區可以 mount,這時候就需要 QEMU on Windows 的幫助,來讀取 vmdk 檔,用來放建立出來的 iso 檔。
C:\Downloads\qemu-0.8.2-windows>qemu-img.exe create -f vmdk dslhd.vmdk 512M Formating 'dslhd.vmdk', fmt=vmdk, size=524288 kB
這時候這個檔只有 128 K 而已,複製到 dsl-3.0.1-vmx 目錄下,修改 dsl.vmx 檔。
# hd info ide0:0.present = "TRUE" ide0:0.fileName = "dslhd.vmdk"
啟動後可以檢視是否正確找到,可以發現還沒有格式化來用。
root@0[root]# dmesg | grep hd
ide0: BM-DMA at 0x1410-0x1417, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0x1418-0x141f, BIOS settings: hdc:DMA, hdd:pio
hda: VMware Virtual IDE Hard Drive, ATA DISK drive
hdc: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive
hda: attached ide-disk driver.
hda: 1048576 sectors (537 MB) w/32KiB Cache, CHS=520/32/63
hda: unknown partition table
hdc: attached ide-scsi driver.
fdisk /dev/hda 建立一個 ext2 磁區 /dev/hda1,然後 mke2fs /dev/hda1 後就可以 mount /dev/hda1 /mnt/hd 來用。
這時候就可以上傳資料到 /mnt/hd 也不怕停 VM 後又要下載一次。
Update: 後來重新開啟 VM 卻一直開不起來,後來才發現 VM player bios 的啟動順序是 HD 先,然後才找 CD,不知道為何只找 HD 就掛住,只要進 VM player bios 改一下順序就可以用了。
create a dsl iso with java
- normal dsl boot
- mount /dev/hda1 /mnt/hd
- mkdir /mnt/hd/master
- mkdir /mnt/hd/iso
- chmod +x /mnt/hd/jre_xxx.bin
- cd /opt
- sh /mnt/hd/jre_xxx.bin
- click /opt/jre_xxx add2filetool in emelfm on desktop
- cat /home/dsl/.filetool.lst
- backup hda1 on control panel
- mv /mnt/hd/backup.tar.gz /mnt/hd/master
- reboot at dsl 2 toram
- mount /dev/hda1 /mnt/hd
- mkmydsl
- answer /mnt/hd/master
- answer /mnt/hd/iso
- OK
- passwd
- /etc/init.d/ssh start
- scp /mnt/hd/iso/mydsl.iso file
- replace dsl-3.0.1.iso by this iso file.
- modify dsl.vmx for this new iso file.
- boot this vmx by player and test /opt/java_xxx/bin/java -version
這個方式有點取巧,其實還是直接轉成 xxx.dsl 再放到目錄來做比較理想。
(謎之音:取個複雜的巧)