java links

0

JavaWorld@TW 討論資料很多,值得一看

eclipse

onjava

SLAX Popcorn 5.1.8 RC in vmplayer

0

源起

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

更新紀錄 changelog

  1. 200 6-0929 新增 smb 說明

建立一個 vmx 檔

一開始需要建立一個檔案,告訴 vmplayer 建立一個具有硬蝶可用的 SLAX PE VM 環境。要準備兩種東西, slax popcorn iso 檔以及自己編的 slax.vmx 檔,當然 vmplayer 要先裝好。

  1. wget slax-popcorn-5.1.8rc.iso
  2. mkdir slax-popcorn-vmx
  3. cp 500MB.vmdk for hd
  4. modify slax.vmx
  5. vmplayer slax.vmx
  6. root/toor
  7. 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

不能上網等於廢物,所以需要檢視一下網路存取的部份。

  1. ifconfig
  2. netstat -at
  3. chmod +x /etc/rc.d/rc.sshd
  4. /etc/rc.d/rc.sshd start
  5. netstat -at

建議直接用舊的或是其他的 vmx 檔來改,vmplayer 會有個 DHCP 一直跑,當你的 vmx 按下後,就會找這 DHCP 要一個 IP,同時會替每一個新加入的 NAT 實體的地址加一,例如之前 dsl-n 會自動被指到 192.168.213.130,這次就變成 192.168.213.131。

如果需要互傳東西,最方便的還是 ssh/scp,預設關起來,打開就好。

ssh server on slax standard

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)

開始規劃硬碟,並測試。

  1. fdisk /dev/hda
  2. n p 1 enter enter w
  3. mke2fs /dev/hda1
  4. mkdir /mnt/hda1
  5. mount /dev/hda1 /mnt/hda1
  6. scp something to /mnt/hda1/
  7. power off

重新開機後一定趕快按住 F2 來改 CDROM 開機,這個動作第一次重開才要做,之後 vmplayer 會記起來。

另外 SLAX 會自動幫忙掛上 /dev/hda1,直接可以用。

create ttf-arphic-uming-0.1.mo

中文字型很多,這裡採用自由散佈版權的字形。

How to modify existing SLAX module

何處可以找到適用GNU/Linux的字型

基本上這個版只要將字形放到 /etc/fonts/fonts.conf 指定的目錄就可以抓到,firefox 會正常秀出中文網頁,這是第一步。

  1. mount /mnt/hda1
  2. cd /mnt/hda1
  3. wget ttf-arphic-uming_0.1.xxx.tar.gz from http://freedesktop.org/wiki/Software_2fCJKUnifonts
  4. tar zxvf ttf-arphic-uming_0.1.20060903.orig.tar.gz
  5. mv ttf-arphic-uming-0.1.20060903 uming
  6. mkdir -p work/ttf-arphic-uming/usr/share/fonts/zh_TW/TrueType
  7. mv uming work/ttf-arphic-uming/usr/share/fonts/zh_TW/TrueType/
  8. cd /mnt/hda1/work
  9. dir2mo ttf-arphic-uming ttf-arphic-uming-0.1.mo
  10. fc-list
  11. uselivemod ttf-arphic-uming-0.1.mo
  12. fc-list
  13. 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 中,才會一起載入。

  1. cd /mnt/hda1/work
  2. mkdir -p ttf-arphic-uming/etc/fonts
  3. cp /etc/fonts/local.conf ttf-arphic-uming/etc/fonts/
  4. dir2mo ttf-arphic-uming ttf-arphic-uming-0.1.mo
  5. reboot
  6. uselivemod /mnt/hda1/work/ttf-arphic-uming-0.1.mo
  7. startx
  8. firefox www.google.com.tw

change to firefox-1.5.0.6.mo (zh_TW)

Firefox 中文版

如何知道載入的 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 版,是否以後每次改版都要自己來一次 ? 還是另外做一個。

  1. cd /mnt/hda1
  2. wget firefox zh_tw version
  3. tar zxvf firefox-1.5.0.6.tar.gz
  4. mv firefox firefox-1.5.0.6-zh_TW
  5. cd /mnt/hda1/work
  6. mkdir -p firefox/usr/lib/
  7. cd /mnt/hda1
  8. mv firefox-1.5.0.6-zh_TW work/firefox/usr/lib/
  9. cd work/firefox/usr
  10. mkdir bin
  11. cd bin
  12. ln -s ../lib/firefox-1.5.0.6-zh_TW/firefox firefox
  13. cd /mnt/hda1/work
  14. dir2mo firefox firefox-1.5.0.6-zh_TW.mo
  15. uselivemod /mnt/hda1/work/firefox-1.5.0.6-zh_TW.mo
  16. ls -al /usr/bin/firefox
  17. firefox to www.google.com.tw

add flash plugin to firefox mo

沒有含 flash player 需要自己再加上。

  1. reboot first
  2. wget flash player for linux
  3. tar zxvf install_flash_player_7_linux.tar.gz
  4. cd install_flash_player_7_linux
  5. cp libflashplayer.so /mnt/hda1/work/firefox/usr/lib/firefox-1.5.0.6-zh_TW/plugins/
  6. cp flashplayer.xpt /mnt/hda1/work/firefox/usr/lib/firefox-1.5.0.6-zh_TW/components/
  7. cd /mnt/hda1/work
  8. dir2mo firefox firefox-1.5.0.6-zh_TW.mo
  9. uselivemod firefox-1.5.0.6-zh_TW.mo
  10. firefox to about:plugins
  11. firefox to www.google.com.tw

smb 網路芳鄰

如果要直接分享 HOST 的資料可以用網路芳鄰,需要先做一點工作。

Windows XP Host 端

  1. 控制台-使用者-啟用 Guest 帳戶
  2. 建立分享目錄 slax_thing
  3. 加入 guest 分享權限

Slax 端需要裝個 patch 套件才可以用。

  1. wget Samba Popcorn Patch for 5.0.6
  2. uselivemod this mo
  3. smbclient //host/slax_thing -U guest
  4. ls and check and exit
  5. mkdir /mnt/hda1/smb
  6. smbmount //hostname_or_ip/slax_thing /mnt/hda1/smb -o guest

參考 links

Create a language module for SLAX

Create SLAX modules from source code

Remaster SLAX

SLAX 5.1.7b Standard edition 中文化

SLAX Popcorn edition 初步的中文化

SLAX Popcorn Edition v5.0.8

考慮分析 XFCE 4.2.3.2 czech language module 看看要如何改。

modify dsl-n 1.0RC4

0

install fireflysung font

READ FIRST Fontconfig

NOTE: load font first. then load firefox extension.

如果先掛上 firefox 再掛字型,會讓 firefox 不斷開啟,整個速度變很慢。

  1. sudo do
  2. mount /mnt/hda1
  3. cd /mnt/hda1
  4. wget http://cle.linux.org.tw/fonts/FireFly/fireflysung-1.3.0.tar.gz
  5. exit to dsl
  6. cd /home/dsl
  7. mkdir .fonts
  8. cd .fonts
  9. tar -zxvf /mnt/hda1/fireflysung-1.3.0.tar.gz
  10. fc-list | grep Sung
  11. mydsl-load /mnt/hda1/firefox_xxx.uci
  12. browse http://www.google.com.tw will show zh_TW.UTF-8

install flash plugin in firefox

  1. cd /mnt/hda1
  2. wget install_flash_player_7_linux.tar.gz
  3. cd /tmp
  4. tar zxvf /mnt/hda1/install_flash_player_7_linux.tar.gz
  5. cd install_flash_player_7_linux
  6. ./flashplayer-installer
  7. answer /opt/firefox
  8. ls /opt/firefox-plugins/
  9. 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 中文化

  1. cd /mnt/hda1
  2. wget http://ftp.osuosl.org/pub/damnsmall/mydsl/system/dsl-dpkg.dsl
  3. mydsl-load dsl-dpkg.dsl
  4. apt-get install locales

這裡就出問題,看起來有些地方要改。

dsl-n with java extension

0

dsl-n

主要差別是核心 2.6 與 gtk2 內建。

READ FIRST : dsl in vmware player

create vm

  1. wget dsl-n-01RC4.iso
  2. cp dsl.vmx from dsl-3.0.1-vmx
  3. cp qemu-img.500mb
  4. modify dsl.vmx with hda info.
  5. vmplayer dsl.vmx

setup network

  1. make sure vmplayer’s nat network address.
  2. sudo su
  3. netcardconfig
  4. ifconfig
  5. ping gateway

mount vmdk file and upload jre_xxx.bin

  1. sudo su
  2. dmesg | grep hd
  3. fdisk /dev/hda
  4. mke2fs /dev/hda1
  5. mount /dev/hda1 /mnt/hda
  6. passwd
  7. /etc/init.d/ssh start
  8. netstat -at
  9. scp jre_xxx.bin in guest os from host os.

install java to /opt

  1. cd /opt
  2. chmod +x /mnt/hda/jre_xxx.bin
  3. sh /mnt/hda/jre_xxx.bin
  4. /opt/jre_xxx/bin/java -version

mk dsl extension

  1. mkdir -p /mnt/hda/work/opt
  2. cd /mnt/hda/work
  3. cp -Pr /opt/jre_xxx ./opt/
  4. chown -R 0.0 ./opt/
  5. find . > files.txt
  6. vi files.txt with many dd work (. and ./files.txt and some man page)
  7. tar cvf java.tar—no-recursion—numeric-owner -T files.txt
  8. gzip -9 java.tar
  9. ls
  10. shutdown -h now

test load java dsl extension

  1. vmplayer dsl.vmx
  2. click and F2 to setup bios boot order (cdrom first and one time job)
  3. mount /mnt/hda1
  4. su dsl
  5. mydsl-load /mnt/hda1/work/java.tar.gz
  6. /opt/java_xxx/bin/java -version

links

wiki about extension

Creating a Compressed Extension from Source

damn small linux in VMware player

0

更新記錄

  1. 2006-0905 因為 SLAX 採用 tgz 方式非常容易改裝新的軟體,延展性比較大,當然代價就是體積大了一點,不過還不超過 150 M,比起其他 500-600 M 的巨大光碟版 Linux 來說,也比較方便,所以將暫時不再使用 Damn Small Linux。
  2. 如需參考 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: 後來版本可以指定目錄

How do I save my settings?

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

  1. normal dsl boot
  2. mount /dev/hda1 /mnt/hd
  3. mkdir /mnt/hd/master
  4. mkdir /mnt/hd/iso
  5. chmod +x /mnt/hd/jre_xxx.bin
  6. cd /opt
  7. sh /mnt/hd/jre_xxx.bin
  8. click /opt/jre_xxx add2filetool in emelfm on desktop
  9. cat /home/dsl/.filetool.lst
  10. backup hda1 on control panel
  11. mv /mnt/hd/backup.tar.gz /mnt/hd/master
  12. reboot at dsl 2 toram
  13. mount /dev/hda1 /mnt/hd
  14. mkmydsl
  15. answer /mnt/hd/master
  16. answer /mnt/hd/iso
  17. OK
  18. passwd
  19. /etc/init.d/ssh start
  20. scp /mnt/hd/iso/mydsl.iso file
  21. replace dsl-3.0.1.iso by this iso file.
  22. modify dsl.vmx for this new iso file.
  23. boot this vmx by player and test /opt/java_xxx/bin/java -version

這個方式有點取巧,其實還是直接轉成 xxx.dsl 再放到目錄來做比較理想。

(謎之音:取個複雜的巧)

links

Damn Small Linux

DSL 中文化

Virtual Appliances Directory

Browser Appliance

VMware tips

How to create a new virtual machine with VMware Player

Older posts: 1 ... 3 4 5