damn small linux in VMware player
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 再放到目錄來做比較理想。
(謎之音:取個複雜的巧)