Hello Two Tigers

0

源起

兩隻老虎跑的快,這次需要兩隻老虎(JRE5)在不同山(OS)上,用之前做過一陣子的 Slax 練習延伸出來,同時改用 SLAX 5.1.8 正式版。

參閱 Native Tomcat in SLAX 或是 SLAX Popcorn in vmplayer

先搬一座山

首先要到網路邊的 SLAX 網站搬來一座山 SLAX Popcorn Edition v 5.1.8, 這裡是下載 slax-popcorn-5.1.8.iso。

http://www.slax.org/download.php

找塊地

再來裝個建一座山的基地,這裡因為在 windows 上跑,就用 VMware Player 來當 基地。

http://www.vmware.com/products/player/

http://www.slax.org/forum/viewtopic.php?t=7338

http://software.newsforge.com/article.pl?sid=06/05/16/1940214

找點土

這座山本身很硬都是石頭,不長東西,於是接下來你還需要一些土(硬碟),讓老虎有地方住。

http://www.easyvmx.com/downloads.shtml

找人整理一下

有了 iso/vmdk 原料,就可以寫個 tiger1.vmx 文字檔來將這些東西黏起來。

guestOS = "linux" 
displayName = "tiger1" 
config.version = "7" 
memsize = "256" 
ide0:0.present = "TRUE" 
ide0:0.fileName = "500MB.vmdk" 
ide1:0.present = "TRUE" 
ide1:0.fileName = "slax-popcorn-5.1.8.iso" 
ide1:0.deviceType = "cdrom-image" 
floppy0.present = "FALSE" 
Ethernet0.present = "TRUE" 
ethernet0.addressType = "generated" 

這些材料放一起(同目錄)後,直接按兩下 vmx 檔,應該就會跑起來。

整土

開始規劃硬碟,並測試,注意 player 認為有硬碟就會從硬碟開,但是系統放在 iso 中, 所以規劃硬碟後第一次啟動要改 biso (F2) 將 CDROM 啟動放前面。

  1. dmesg | grep hda
  2. fdisk /dev/hda
  3. n p 1 enter enter w
  4. mke2fs /dev/hda1
  5. mkdir /mnt/hda1
  6. reboot

山在哪裡 ?

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

放隻老虎

可以下載 slackware 來裝比較快。

http://packages.slackware.it/search.php?v=current&t=1&q=jdk

  1. scp jdk-1_5_0_09-i586-1.tgz to tiger1 /mnt/hda1
  2. cd /mnt/hda1
  3. tgz2mo jdk-1_5_0_09-i586-1.tgz jdk-1509.mo
  4. uselivemo jdk-1509.mo
  5. /usr/lib/java/bin/java -version

其實安裝過程有裝 /etc/profile.d/jdk.sh 不過一開始沒有啟用這個 jdk mo 所以無法幫忙 設定路徑。

調整一下

主要是啟動 sshd 跟使用 jdk。

  1. mc -e /etc/rc.d/rc.local
  2. configsave /mnt/hda1/slaxconf.mo
  3. reboot
uselivemod /mnt/hda1/jdk-1509.mo
chmod +x /etc/rc.d/rc.sshd
/etc/rc.d/rc.sshd start

啟動過程會問要不要用自動找到的 slaxconf.mo,如果沒有按下確認,不會載入這個 slaxconf。

兩隻老虎兩座山

建立 tiger2 目錄,複製 iso/vmdk/tiger1.vmx,改個名字 tiger2.vmx,把 vmx 檔案中 後來 player 加的東西刪掉,按兩下啟動,記得第一次啟動要按 F2 改 bios 啟動順序, 啟動後會問是否要使用 /mnt/hda1/slaxconf.mo ,按 enter 就可以用了。

每次放老虎實在太煩了

先下載這個編輯程式。

http://myslax.bonsonno.org/download.php

再來取出之前作好的 jdk-1509.mo,開啟 myslax creator 放進去,再建立新的 ISO 檔來用。 這次的 ISO 檔不需要靠 /etc/rc.d/rc.local 手動起用 jdk。

接下來可以刪掉 /mnt/hda1/jdk-1509.mo,如果不需要啟動 sshd,可以連 slaxconf.mo 刪掉。

觀察

  1. tiger1 比較費工,接下來要幾台有幾台,裝起來很輕鬆。
  2. 將 jdk mo 寫到 iso 中會比較方便複製。

Home Gateway Asus WL 500gp

6

源起

客廳需要一個小功率的電腦做一些居家環境控制的事,有些條件希望可以滿足。

  1. 不超過五千
  2. 比省電燈泡的 13w 還省
  3. 有很多人使用的經驗
  4. 豐富與即時的更改版韌體可供使用
  5. 支援 USB
  6. 支援網路下載功能

最後買了 Asus WL-500g Premium 小白來用,下面是一些使用紀錄。這台小白機器的外觀與內在都被拍下來,可以參考 這裡 ,看過才知道這類產品美國 FCC 都會有資料上網公開。

第一次測試

一開始總要先插電測看看是否正常,這台機器底部有寫預設 IP 為 192.168.1.1 與密碼防止忘記,一開始的動作就市找台電腦,調到同一個網段 192.168.1.xx 來操作,連上去後先 確認 firmware 與功能正常。

因為這機器是暫時內部用來測試,所以先不管 WLAN 的那個部份。網頁秀出的韌體版本是 1.9.6.7 ,目前 asus 新版本是 1.9.7.0,不過馬上要換成客製版韌體,所以也不用更新。

另外這機器的 MAC 地址後面是 3b:a5,雖然拔掉天線,Thinkpad T41 內建網卡隔個房間可抓到約 30 % 強度,既然暫時不會動 WLAN,也沒有進一步測試。

改韌體 firmware image

要在 Linux 環境上加些應用軟體,需要改用其他韌體來支援,才能提供 telnet/ssh 等擴充功能,當然也可以自己來,只是為了快速使用,直接採用別人測過的韌體比較簡便。

改機韌體有幾個選擇,這裡採用 Olegs 版本,這個版本加了 telnet/ssh/smaba/Qos/ipkg 等強化小白的必備工具,關於這個韌體更多資料可以參考 General information about Olegs Firmware

Olegs 的網頁 ASUS WL-500g/WL-500gx/WL-300g/WL-500b/WL-500bv2/WL-HDD custom firmware page

注意下面有提到的死機問題,到時可能會需要拆開才可以回復原廠設定,請先有準備。

WL-500g Premium Howto Part One

WL500g Premium pre7 firmware

開始換韌體。

  1. 上傳 WL500gp-1.9.2.7-7f-pre7.trx 到小白
  2. 網頁變成英文,可以下 command ,試看看 ifconfig。
  3. telnet 192.168.1.1 看看 OK。
  4. 檢查無線強度,在 status 關掉 wireless 看看。
  5. 重新開機檢視,在 status 關掉是臨時的,可以進 wireless 關掉,以後再開。
  6. LAN IP 為目前使用的內部網段,所以運作模式要改為 access point mode,這樣才方便設定 default gw 到原先的 router。
  7. 改掉預設的密碼

下面可以看出沒有增加記憶體到 32M,只有 16M。

[admin@whitebox /]$ df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/root                 2944      2944         0 100% /
[admin@whitebox /]$ free
              total         used         free       shared      buffers
  Mem:        13932        10560         3372            0         1308
 Swap:            0            0            0
Total:        13932        10560         3372

進一步看看。

[admin@whitebox root]$ dmesg | more
CPU revision is: 00029006
Primary instruction cache 16kb, linesize 16 bytes (2 ways)
Primary data cache 16kb, linesize 16 bytes (2 ways)
Linux version 2.4.20 (root@omnibook) 
(gcc version 3.2.3 with Broadcom modifications) #60 Sun Sep 3 22:38:39 MSD 2006
Setting the PFC value as 0x15
Determined physical RAM map:
 memory: 01000000 @ 00000000 (usable)
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/mtdblock2 noinitrd init=/linuxrc console=ttyS0,115200
CPU: BCM4704 rev 9 at 264 MHz
Calibrating delay loop... 262.96 BogoMIPS
Memory: 13860k/16384k available 
(1776k kernel code, 2524k reserved, 248k data, 72k init, 0k highmem)
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)

雖然有 telnet 預設,sshd 卻不是,需要加些設定。

ssh server

  1. mkdir -p /usr/local/etc/dropbear
  2. dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
  3. dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
  4. mkdir -p /usr/local/sbin/
  5. echo ”#!/bin/sh” >> /usr/local/sbin/post-boot
  6. chmod +x /usr/local/sbin/post-boot
  7. echo “dropbear” >> /usr/local/sbin/post-boot
  8. dropbear and netstat -at
  9. flashfs save && flashfs commit && flashfs enable && reboot

寫入 flash 後,每次開機 dropbear (ssh server) 都會被啟動,至於那隻 post-boot 會被自動叫起,那是這個韌體提供的便利之一。

目前資料開機後都會消失,所以需要藉由 USB 硬碟來提供可存放空間。

接上隨身碟

延續之前的設定,這次要加上可以放東西的空間,這裡是利用一隻舊隨身碟 128M。

ipkg package system Tutorial

  1. fdisk /dev/discs/disc0/disc
  2. d n p 1 enter +96M
  3. n p 2 enter enter t 2 82 w
  4. fdisk -l
  5. mke2fs -j /dev/discs/disc0/part1
  6. mkswap /dev/discs/disc0/part2
  7. mount /dev/discs/disc0/part1 /opt
  8. swapon /dev/discs/disc0/part2
  9. df
  10. free

測試可以後,裝些東西試看看。

  1. mkdir /opt/tmp
  2. mkdir /opt/tmp/ipkg
  3. ipkg.sh update
  4. ipkg.sh install ipkg
  5. /opt/bin/ipkg update
  6. /opt/bin/ipkg install nano
  7. /opt/bin/nano /usr/local/sbin/post-boot
  8. flashfs save && flashfs commit && flashfs enable && reboot

在之前的 dropbear 下面繼續加東西。

#!/bin/sh
dropbear
# wait for /opt to mount
mount /dev/discs/disc0/part1 /opt
i=0
while [ $i -le 30 ]
do
if [ -d /opt/etc ]
then
break
fi
sleep 1
i = `expr $i + 1`
done

# Activate swap
swapon /dev/discs/disc0/part2

開機後檢視一下 df/free 看是否正常,如有問題 dmesg 看一下。

java

java 環境已經有人幫忙做好,只要一點小改。

Unslung/WL500g packages available for Oleg’s firmware

改 /opt/etc/ipkg.conf 設定,讓 ipkg 裝別的地方。

src unslung http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable 
dest root /
  1. nano /opt/etc/ipkg.conf
  2. ipkg update
  3. mkdir -p /opt/usr/lib
  4. ipkg install uclibc
  5. ipkg install sablevm
  6. ipkg install jikes
  7. ipkg install zlib
  8. ipkg install popt
  9. ipkg list_installed

最後安裝結果。

ipkg - 0.99.149-2 -
jikes - 1.22-1 - IBM java compiler
libstdc++ - 0.2.0-4 - =Standard C++ library, wrapped for uClibc++
libtool - 1.5.10-2 - Library tools.
libuclibc++ - 0.2.1-5 - C++ standard library d....
nano - 1.2.5-3 - A pico like editor
ncurses - 5.5-1 - NCurses libraries
popt - 1.7-2 - A C library for parsing command line parameters.
sablevm - 1.13-2 - A robust... JVM.
uclibc - 0.9.28-1 - micro C library for embedded Linux systems
zlib - 1.2.3-1 - zlib is a .....

如果沒裝 popt/zlib 執行的時候會提醒你。

$ sablevm --version
SableVM version 1.13
- compile date and time: 2006-08-12 14:14:23 UTC
- gcc version: 3.4.6
- 'real life brokenness' features enabled
- copying garbage collection
- bidirectional object layout
- direct-threaded interpreter

測一下 HelloWorld。

  1. cd /opt/tmp
  2. nano HelloWorld.java
  3. jikes -classpath /opt/lib/sablevm/lib/libclasspath.jar HelloWorld.java
  4. sablevm HelloWorld

Samba

  1. mkdir /opt/etc/samba
  2. nano /opt/etc/samba/smb.conf
  3. nano /opt/etc/init.d/S97Samba
  4. chmod 755 /opt/etc/init.d/S97Samba

smb.conf

[global]
workgroup = WORKGROUP
guest account = nobody
security = share
browseable = yes
guest ok = yes
guest only = no
log level = 1
max log size = 100
encrypt passwords = no
dns proxy = no

[smbshare]
path=/opt/share
writeable = yes
browseable = yes
force user = admin

S97Samba

#!/bin/sh
/usr/sbin/smbd -D -l /opt/var/log/smbd.log -s /opt/etc/samba/smb.conf
/usr/sbin/nmbd -D -n myasus -o -l /tmp -s /opt/etc/samba/smb.conf 

最後要改起動檔 post-boot 加入一行 /opt/etc/init.d/rc.unslung ,代表啟動 S 開頭的服務。

  1. nano /usr/local/sbin/post-boot
  2. flashfs save && flashfs commit && flashfs enable && reboot
  3. netstat -at

\\192.168.1.1\smbshare 看看。

加大記憶體

預設只有 16MB RAM,但是板子上有 32MB,所以改一下 NVRAM 參數來用到 32MB RAM。 注意這是 gp 做法,其他板子不確定。

  1. nvram set sdram_init=0×0009
  2. nvram set sdram_ncdl=0
  3. nvram commit
  4. reboot
  5. free

一些觀察

  1. 安裝 Oleg 之後,網頁介面 USB Application – FTP Server 雖說 enable,但是檢驗 netstat/ps 看不到,想要 ftp 也是不行,這個設定跟掛載 USB 硬碟有關係,既然是用 post-boot 手動掛上, 如果需要 ftp 也要手動掛上。
  1. dropbear 沒有支援 sftp,只有 scp,要用 winscp 也需要一點會出現錯誤訊息,找到進階 選項的 SCP 部分,將 Lookup user groups 關掉就可以。參考 UseDropBearForRemoteAccess 獲得更多資訊。

links

關於核心效能參數的調整與強化參考 AP 進階改造,下載破表

很多的 Oleg 教學參考 Tutorials – Oleg

編譯官方核心的教學參考 HOW-TO: Compile a firmware for the WL-700g from the GPL 1.0.4.2

差別在 gp 部份,目前新版本為 24-Aug-2006 的 GPL_ToolChain.zip。

http://files.wl500g.info/asus/wl500gp/gpl/ ftp://dlsvr01.asus.com/pub/ASUS/wireless/WL-500gP/GPL_ToolChain.zip

一些 USB轉UART 使用 pl2303 的線應該可用,參考 Use an USB-serial port converter

外接基本 LCD 模組的做法參考 Connecting a LCD to the WL500g

small linux device

0

源起

需要低成本的改裝 linux 裝置,用來當家中的常駐程式。

linux

nslu2-linux

nslu2 上面可以接的東西

Adding Zigbee Radio to a Slug

WhatPeopleAreReallyUsingTheirSlugsFor

Linux on the NSLU2

linkstation and kuro-box

LinkStationWiki

免拆機、不破壞保固之 LinkStation 軟體改機

Matrix Orbital Displays and Linux

Linux LCD display driver

matrixorbital

links

Embedded Java with GCJ

單晶片微電腦

凱思嵌入式系統開發網

TinyOS and Home

0

源起

開發一個客廳應用,需要佈署無線的感測器,與連上 internet 的裝置。

TinyOS

有些硬體會提到內建 tinyos ,TinyOS 本身就是為網路感測器所設計的作業系統。因為這類裝置有耗電低的門檻,運算資源受到限制,卻需要面對網路上密集的同步運作,所以需要特殊的作業系統來滿足。

既然是小型,代表其中的 C 函式庫支援也是小型的,採用 NesC 來編譯。

TinyOS 2.0 Tutorials

開發可以直接在電腦上運行所謂的 offline simulation,非常方便測試整個網路。

目前網上可以看到專案都是學術為主,商業往往資料比較少。

Harvard Network Sensor Testbed

無線感測網路運用於台灣不同林分微氣候觀測

台灣不同林分微氣候觀測WEB即時監測

無線感測器網路 Wireless Sensor Networks

如果需要實體測試,可以找下面連結。

moteiv

xbow.com

識方科技

集研

Why I like slax popcorn

0

源起

用 slax popcorn 有一段時間,將在這裡紀錄一些經驗。

好的一面 pro

  1. 圖形介面中比較小的
  2. 安裝新軟體非常容易
  3. 測試環境乾淨
  4. 可以借用龐大數量的自由軟體,只要該平台的 vm 虛擬軟體可以 boot cdrom 就可以。
  5. 搭 vmdk 做硬碟可以直接拷貝,複製一台機器。

不好的一面 con

  1. 乾淨環境的意思就是重開後一切消失。
  2. uselivemo 是直接蓋過去,不知如何 umount ,需要再找資料。

Older posts: 1 2 3 4