Infinity Blade 英文介面

[客家話, hak-Hant-TW]

自上上擺 Infinity Blade 更新過後,台灣華語的系統環境下打開他就會用當醜 (楷書) 的簡化字顯示,想要變轉去英文可以按仔做 (需要JB)

  1. 用工具 copy /private/var/mobile/Library/Preferences/.GlobalPreferences.plist 到電腦頂上
  2. 這檔案袛肚有一行 <string>zh-Hant</string>,砍掉他 (是講看毋到檔案袛背是亂碼,先用 plutil -convert xml1 .GlobalPreferences.plist  轉過就可以了)
  3. 尋一下 SwordGame.app 是放 iPhone/iPad 袛背的奈片,可以用 find / -type d -name SwordGame.app 尋到
  4. SwordGame.app 同層有一隻 Library 目錄,袛背有 Preferences 目錄,袛背有一隻 symbolic-link 的 .GlobalPreferences.plist 指到第一點講到的檔案,砍掉這隻 symbolic-link
  5. copy 第2點改好的檔案(電腦頂上)到這隻目錄(iPhone/iPad頂上)袛肚
  6. 進入 Game 就變英文介面了。

是講有較簡單、可以不使用 JB 的方法,請同我講,多謝。

Posted in iPod, iPhone, iTunes. Tags: . No Comments »

複製 Time Machine 映像檔

[華語, cmn-Hant-TW]

因為某些原因,要把遠端的 Time Machine 備份映像檔的內容複製到另一個映像檔。原本的映像檔是用這篇提到的方法生出來的,複製的目標則是系統自己產生的映像檔,兩個主要的差別是原來的大小寫沒差,而系統產生的大小寫有別。也因為這樣的差異,不能用系統內建的磁碟工具程式來複製,因為磁碟工具程式對拷時兩邊的大小寫設定要一樣。啊如果是把兩個映像檔分別掛載用 cp 或是 rsync 複製呢?是可以複製啦,但是目標磁碟一下就被灌爆了,因為 Time Machine 裡面有一堆神秘的 hard link,cp 跟 rsync (至少 10.6 內建的不行,不然就是我參數下不對) 都不能正確處理,複製過去後通通被當作不同的檔案,被灌到滿出來也只是剛好。

之前都用 CarbonCopyCloner 在複製硬碟,所以想說這情況 CCC 能不能處理,結果 CCC 完全無視 Time Machine 的備份目錄,所以也是沒辦法。後來試了一下 SuperDuper! 這個備份軟體,整顆複製是沒問題,但這模式會把目標磁碟清掉連大小寫設定都複製來源磁碟,所以要換大小寫的話,就只能掛載後用 Copy different files 的選項來複製,而這個選項是付費版的功能,要用的話也只就能乖乖付錢了,不過他是真的可以正確處理 Time Machine 硬碟,這錢付下去還算是值得。

附帶一提,複製過去的 Time Machine 備份使用上大致上是沒啥問題,也可以進去撈資料,但是一開始有遇到備份到停不了,一直不斷在整理,按取消鍵後又看似有備份成功。查了一下 log 發現跟 fseventsd 有關,而且是備份完之後才跑的所以其實真的是有備份成功,不過也懶得去深究原因了,索性把所有的 .fseventsd (包括根目錄 跟 Time Machine 上的,因為我不知道是哪邊出錯) 通通砍掉,重開機讓系統重新去建立,後來就沒遇到這個問題了。原因還是不明,也不一定是 Time Machine 複製造成的,不過問題解決了就是。

Posted in Mac. Tags: , . No Comments »

zfsv28 dedup

[華語, cmn-Hant-TW]

在六月中左右 FreeBSD 8.2-STABLE 的 zfs 升級到了 v28

這版最主要的特色是 dedup,也就是 block level 的 deduplication,傳說中的 virtual machine disk image 備份救星 (誤)。 因為是 block level,所以檔案位置怎麼放,檔案是不是只修改一點點這些通通不用管了,反正 zfs 覺得這兩個 block 是長得一樣的話,就自動會處理,如果硬碟裡面有一堆彼此間差異不大的大檔案,那效果就會非常好,遠比 lzma 或是 gzip 壓縮更有快感 (事實上 dedup 跟壓縮是可以併存的,歡迎挑戰硬體極限) 。

要開 dedup 很簡單,在有 zfsv28 的系統下 zfs set dedup=on filesystem 指令就可以打開,要注意的是 dedup 是從整個 pool 來看的,同一個 pool 下可以有些 filesystem 有開,有些沒有,算是相當有彈性。dedup 的效果可以簡單的用 zpool list 看出,v28 多了一格 DEDUP,那個的倍率就是 dedup 的效果。

NAME         SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
backup       696G   445G   251G    63%  1.80x  ONLINE  -

在有開 dedup 的地方,每一個 block 的 checksum 會存在一個叫 DDT 的表裡面,根據 dedup FAQ 的講法,一般 record size  128K 的情況下,20TB 的資料會需要 32 GB 的實體記憶體來放 DDT,如果沒那麼大的記譩體那就會吃到硬碟,那就會非常非常慢。折衷方案就是找一顆 SSD 當 L2ARC,DDT 主要是讀取 (因為要比對),SSD 的讀取效能遠比硬碟來得好,這個工作還算扛得起來。

記憶體不足硬上 dedup 會對效能有什麼衝擊呢,簡單的測試

( 2G 記憶體,640G 的硬碟空間,zfs compression = gzip; atime = off)
測試檔案為 boost_1_45_0.tar.bz2 大小約 38MB,解壓縮後約275MB,用 FreeBSD 內建的 tar 來解壓,然後用 rm 刪掉,同樣用系統的 time 來測時間

DEDUP on:
tar 19.063u 6.914s 1:03:02.62  0.6%   88+1735k 0+0io 0pf+0w
rm   0.171u 8.741s 1:12:41.98  0.2%   26+2530k 0+0io 0pf+0w
DEDUP off:
tar 19.372u 6.963s    1:05.41 40.2%   74+1464k 0+0io 0pf+0w
rm   0.029u 3.826s    0:08.04 47.7%   16+1528k 0+0io 0pf+0w

這是最慘烈的情況 (八成是整個DDT都在硬碟上了),DEDUP on 一般情況其實沒那麼慢,大約數十分鐘吧,如果硬碟裡面已經有相同的資料的話那還會再更快些,不過再快也是被 DEDUP off  時的速度慘電就是。從實際應用來看,解壓縮一個數十MB 的檔案要花數十分鐘到一小時,砍掉解壓縮出來的東西還要再花數十分鐘到一個小時是什麼情況? 只能說硬體不夠力的話,還是不要亂開 DEDUP 吧。 (不過一想到 DEDUP 的快感… 再加上 RAM 現在便宜的跟●●一樣,好像升級一下再來開也是不錯的選擇)

Posted in FreeBSD. Tags: , , . 1 Comment »

Zalman ZM-VE200 外接盒

[華語, cmn-Hant-TW]

這是一台某韓國廠商推出的 USB 2.0/e-sata 雙介面外接盒,特別的地方在於用 USB 時可以模擬光碟機直接讀取外接硬碟裡的映像檔。用了一陣子的感想:
  • 有三種模式可以選擇,純硬碟、純光碟、以及二者混合的模式。實際使用上混合模式最方便,一直停在這個模式即可。
  • 側邊開關不好按。
  • 在 BIOS 的開機選單內,硬碟、光碟分別會被顯示為 ZMVE Ext hard Disk 及 ZMVE Virtual CDRom。
  • 模擬光碟機時會自動搜尋第一分割區內 _ISO 目錄下的光碟映像檔,可用側邊開關來選擇讀取的檔案。要注意的是外接硬碟一定要用 MBR 分割,不能用 GPT 分割 (會顯示 1st Partition:EE)。
  • 可以用 Mac OS X 製作 exFAT,但是 _ISO 目錄一定要在 Windows 下建立,用Mac 建的 _ISO 目錄會被無視,原因不明,放檔案的話倒是沒啥問題。
  • Windows 下掛載沒啥問題,但是 Mac 下有些 ISO 檔會不讀不到,原因不明。
  • 放光碟的分割區只支援 NTFS 格式,不過有韌體可以改成支援 FAT32/exFAT,這兩者不能並存,要切換的話只能重刷成另一種韌體。
  • 官方有提供韌體解決CJK 文字顯示問題,沒用到所以沒去測試。
  • 韌體外觀是 .iso 檔,但是其實並非一般的光碟映像檔,把他丟到 _ISO 目錄下選擇讀取後就會自動執行。雖然官網有得下載,但是說明書或是官網上完全沒有教怎麼使用,摸索了一陣子才更新成功。而且要注意的是,如果是在 NTFS 和 FAT 之間切換的話,燒完新韌體後就會讀不到原來的磁區,使用時務必小心確認 (當然這是指模擬光碟的功能,外接盒還是可以讀取)
整體而言用起來感覺是還不錯,不過如果能有這些改進的話會更好:
  • NTFS/exFAT/FAT32 同時支援 (有ZFS更好)
  • 多國語系直接支援
  • GPT 支援
  • 好按一點的按鈕
  • USB 3.0
Posted in Accessories. Tags: . 1 Comment »

製作可開機的第一代 iPod Shuffle

[華語, cmn-Hant-TW]

(官網圖片)

初代 iPod Shuffle 在 2005 年登場時,除了體積小容量大沒螢幕外,還有一個很重要的特色 – USB 接頭 (所有其他的 iPod 都是 30pin 連接線),整隻就像一個稍大的隨身碟。後幾代 iPod Shuffle 的 USB 接頭就被移掉改成用轉接線接電腦,變得更輕更小沒錯,但是也比較不適合直接當隨身碟,要當隨身碟的話還是初代好用。

手上那隻很久沒拿來聽歌 Shuffle,任務就是當救急隨身碟,也算蠻稱職的。後來想說有沒有機會讓他可以 USB 開機,但是又能保留既有的播放功能,包括和 iTunes 同步等等,研究了一下在 FreeBSD Forum 看到了 Making DOS bootable USB hard disks 這篇,照這做確實可以做出 FAT 然後用 DOS 6.22 開機,但是 iTunes 就抓不到了,因為 iTunes 要的是 FAT32,當然我們可以用那篇的做法下參數讓他格式化成 FAT32,不過這樣就變成 DOS 6.22 不能開機,iTunes 抓得到,總之兩個不對盤就是,不過從這幾次格式化再復原的經驗得知,分割區長怎樣並不是太重要,只要有 FAT32  iTunes 就滿足了,而且有備份 iPod_Control 目錄的話,重新分割完後把目錄直接丟回去還會還原到原來的樣子。

DOS 6.22 + FAT 不能動的話,也就只好找別的方案了。後來試了一下 FreeDOS  有成功,不過因為手上的 PC 剛好沒有光碟機,所以是在 Mac 下用 VMWare 把 iPod Shuffle 偽裝成實體磁碟才安裝進去,當然這樣子是沒辦法灌 boot manager 進 Shuffle 的,不過影響不大,FreeDOS 還是可以開機成功,只是說 AUTOEXEC.BAT 裡的磁碟機代號全錯 (通通是 C 因為灌的時候他以為是硬碟,實際上用 USB 開機會是 A),不過這種小問題手動修一修就解決,不會是太大的問題。

接下來的話,來試看看能不能讓他多重開機好了。

 

Plantronics BackBeat 903+

[華語, cmn-Hant-TW]

之前是用 MW600 + 的組合,大致上問題不大,不過還是有些地方有小困擾

  • 線常常會拉到,不過這個是非戰之罪,就算是原廠耳機一樣沒事就會拉一下。
  • MW600 聽歌是沒啥問題,不過接過電話偶爾會錯亂,也就是藍芽配對還在,但是聲音就是傳不到耳機。錯亂之後就得重新配對,以我的使用習慣來講這不是大問題,通勤時間打電話來吵我的不多。強者我同學 Ray 就不一樣了,他的工作會需要一直接打電話,MW600 發生的錯亂就讓他很困擾,因此用一陣子後就決定換回舊的 Sony Ericsson 藍芽耳機。舊耳機功能是陽春了點,但是至少幾乎不會發生錯亂。
  • 接聽跟播放還是會一直按錯,經過半年依然學習無效。主要是因為我把 MW600 夾在衣服上,每次夾的角度都不一樣,因此要先用手指摸一下才能找到接聽鍵,情急之下就會亂按了。同樣的情況也會發生在上一首下一首,反而是本來覺得最麻煩的調音量情況比較好,稍微感受到大小聲的變化就知道要往哪邊滑,手不用移開,也不用在那邊摸來摸去找到正確的按鈕。

所以後來在 MW600 送修的時候,就來順便研究一下有沒有其他適合的方案,結果無意間看到 Costco 的 Plantronics BackBeak 903+ 有特價,雖然說對他疑似內耳式耳機的設計有些疑慮,還是給了他一個機會,想說反正真的完全不行的話也還能退貨……

(官網照片)

試用下來是覺得還可以接受啦,所以也就不會去退貨了。大致上的心得如下:

(隨手寫的想到啥就寫啥,沒特別分類或照順序,反正我又不是拿廠商的東西在寫評析)

  • 耳機的部份是設計成有開口的形式,帶著時還是可以聽得到外界的聲音,最大的疑慮因而解除。畢竟以騎車來講,其他什麼都可以妥協,但是隔音效果太好的耳機絕對是無法接受的。
  • 音質? I don’t care. 這樣的裝置搭配本來就不是買來享受高音質的時候用的。
  • 第一次帶花了很長時間才研究出來要怎麼戴,好幾天之後才能比較熟練地戴好。戴的重點在耳朵要往下壓再套上去,不然套了半天都會滑出來。 雖然說脫戴比較麻煩,但只要戴好就無敵了,從後面繞的線不太會妨害工作,也幾乎不用擔心他會掉下來。戴太久的話是會有點不舒服,不過對我來講運動或是通勤最多就一小時左右,問題不會太大。
  • 藍芽接收能力似乎比 MW600 差,偶爾會斷斷續續的,不過之前 MW600 通常在胸前的位置,距離褲袋內的 iPhone 比較近就是。
  • 麥克風的效果倒是還不錯,而且在按靜音的時候會自動把麥克風的聲音導進耳機,因此不用拔耳機就能聽清楚周遭的聲音,啟動時會有一種怪怪的感覺,怎麼週圍聽的那麼清楚這樣…… 話說這實在是有夠貼心的設計,跟脫戴不易的特色簡直是絕配。
  • 所有的按鍵按下去都有聲音提示,可以很清楚的確認是否有下到指令,其中有幾個動作 (開關、上一首下一首) 是英語的語音,藍芽連線/斷線也會有語音提示,剩餘電量也是用語音表示,開機時按一下開關會告知還有幾個小時可以聽。
  • 接聽和播放分別在兩耳耳機上,不太會搞混,其他按鍵則是集中在左耳(接聽側)孤型處 ,按鍵偏硬,有點難按。
  • 上一首/下一首和音量鍵共用,長按音量鍵就會變成切換上一首下一首,好處是幾乎不會誤觸,壞處這個絕招很難啟動,而且下一首/增大音量 的按鍵旁邊就是電源,按錯顆的話就變成長按電源關機了。
  • 跟 MW600 一樣是用 microusb 充電,既有的充電系統都還是能套用,方便。
  • 和 iPhone 搭的不錯,配對很簡單,實際使用時 iPhone 狀態列跟原廠藍芽耳機一樣會顯示剩餘電量:

Crosshair V Formula 開箱

[客家話, hak-Hant-TW]

純開箱文,正經是開定定,還吂有時間裝起來。 (RAM 是共下買的,就共下翕進去了)

盒仔

蓋仔打開

袛肚仔盒仔

袛背的東西拿出來

Posted in Hardware. Tags: , . No Comments »

加上/移去 zpool cache

[客家話, hak-Hant-TW]

假使你有一隻分割區 da0s1,要加到 volume1 這隻 pool 袛肚,可以按仔下指令:

zpool add volume1 cache da0s1

用 zpool status 可以看有加成功沒,是講要移去:

zpool remove backup-mmt da0s1

指令當簡單。

Posted in FreeBSD. Tags: , . No Comments »

Dovecot LMTP

[華語, cmn-Hant-TW]

花了不少時間測試,終於讓 Dovecot LMTP 能正常運作了。會用 lmtp 的原因是 sieve 會用到,對於 sieve 來講 dovecot 有支援 lda 跟 lmtp 這兩種方式,評估了一下 lmtp 在非 virtual user 的環境比較簡單,所以就採用 lmtp 方案,用到的 ports 主要有:

  • mail/postfix
  • mail/dovecot2
  • mail/dovecot2-pigeonhole

在之前的嘗試中,不斷的遇到像是這樣的錯誤:

auth: passwd(whsyu@pighead.cc): unknown user
550 5.1.1  User doesn't exist: whsyu@pighead.cc (in reply to RCPT TO command))

這篇這篇有提到,問題是因為從 postfix 傳到 dovecot lmtp 的使用者名稱帶 domain,不過系統用的使用者名稱當然是沒有帶,所以要告訴 lmtp 使用者名稱的格式,不過照那兩篇的改法怎麼改都還是會吃到一樣的錯誤,不管是 pam 或是 ldap 認證結果都一樣。不過第二篇有提到 auth_username_format 這個參數,查了一下說明文件後發現 n 會把 domain 去掉,然後 L 會把大寫通通變成小寫,所以其實只要加 %Ln 就不會再吃那個錯誤,而整個設定就會變成這樣: (只列出和 lmtp/sieve 有關的部份)

/usr/local/etc/dovecot/dovecot.conf
auth_username_format = %Ln
protocols = lmtp sieve
service managesieve-login {
}
 
service managesieve {
}
 
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0660
    user = postfix
  }
  client_limit = 1
}
 
protocol lmtp {
  mail_plugins = sieve
}
 
plugin {
   # Used by both the Sieve plugin and the ManageSieve protocol
   sieve = ~/.dovecot.sieve
   sieve_dir = ~/sieve
}

關於 sieve 的部份,其實沒啥好設的,client_limit = 1 則是因為我們的系統還有 mbox (當初會用 dovecot 就是因為要讓 mbox 跟 maildir 和樂相處),而 dovecot 要求在有 mbox 的環境下一定要下這個參數,所以就把他加上去。

/usr/local/etc/postfix/main.cf
mailbox_transport = lmtp:unix:/var/spool/postfix/private/dovecot-lmtp

非 virtual user 的模式要加的是這個,如果是 virtual user 的話要用 virtual_transport,後面的檔案位置要跟 dovecot.conf 裡面的設定一樣才會動,設定完重開 dovecot 跟 postfix 之後應該就 ok 了。

Posted in FreeBSD. Tags: , , , , . No Comments »

AFP Server

[華語, cmn-Hant-TW]

據說 Mac 連 AFP 還是比 SMB 順,所以就想架看看用起來的感覺如何,伺服器是 FreeBSD 8.2,要安裝的 ports 有

  • /usr/ports/net/netatalk
  • /usr/ports/net/avahi (選用)
  • /usr/ports/net/howl (選用)

avahi 跟 howl 挑一個來裝即可。又為了要用 LDAP 做為登入認證,在編 netatalk 時記得要打開 PAM 的選項,這樣在安裝的時候會自動在 /etc/pam.d/ 裡面產生一個叫 netatalk 的檔案,這個檔案的內容預設是引用 /etc/pam.d/system 的設定,以 LDAP 來講,只要之前在 system 檔裡面有設定好 pam_ldap 的話,什麼都不用改就直接可以用了,接著就是要設一堆的設定檔

/etc/rc.conf
netatalk_enable="YES"
afpd_enable="YES"
cnid_metad_enable="YES"
 
# avahi 用這個
avahi_daemon_enable="YES" 
 
# howl 用這個
mdnsresponder_enable="YES"
mdnsresponder_flags="-f /usr/local/etc/mDNSResponder.conf"

個人的習慣是把這些設定值通通丟到 /etc/rc.conf.local 裡就是。

/usr/local/etc/avahi/services/afp.services (avahi)
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
 
<name replace-wildcards="yes">%h</name>
 
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
 
<service>
<type>_device-info._tcp</type><port>0</port>
<txt-record>model=Xserve</txt-record>
</service>
 
</service-group>

afp.services 檔名可以自訂,只要內容長得一樣即可。
其中 %h 是 server name,是顯示在用戶端 Finder 上的機器名稱,然後 model 則是決定顯示的圖形,詳情後述。

/usr/local/etc/mDNSResponder.conf (howl)
"ServerName" _device-info._tcp local. 1 "TXTVersion=1.0" "model=Xserve"
"ServerName" _afpovertcp._tcp  local. 548

這個檔案似乎安裝的時候不會自動產生,要自行建立。其中 ServerName 是用戶端的 Finder 看到的顯示名稱,model 後面的 Xserve 是指定顯示圖形,詳請看下一段。

Model Name

不管是 avahi 或是 howl 都可以丟 device-info,在 Finder 上會根據 device-info 決定顯示的圖形。像是指定成 Macmini 的話就會顯示成 Mac Mini 的樣子,很有趣。在用戶端 (Mac OS X) 上的 /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist 檔案裡可挖出所有可用的值,常見的有:

  • Xserve
  • PowerBook
  • PowerMac
  • Macmini
  • iMac
  • MacBook
  • MacBookPro
  • MacBookAir
  • MacPro
  • AppleTV1,1
  • AirPort
  • iPhone
/usr/local/etc/netatalk.conf
ATALK_MAC_CHARSET='UTF8-MAC'
ATALK_UNIX_CHARSET='UTF8'

把他通通設成 UTF8 比較不會有問題,有需要用別的編碼就自己改即可。

/usr/local/etc/AppleVolumes.default
~
/share             "Share"    allow:whsyu,grass

檔案裡面的說明很詳細,大致上就是 “目錄名 – 顯示名稱 – 選項” 這樣的格式,要分享幾個目錄就寫幾行,以這個例子來看,就是各人的家目錄,以及只分享給 whsyu 跟 grass 的 /share 目錄,在 Finder 上會顯示成 Share 資料夾,要注意的是這邊的 allow 只是給不給看的設定而已,權限還是會跟系統走,如果該使用者在系統上本來就沒有存取該目錄的權限,那就算他看得到那個分享出來的目錄也是沒有用的。

手動執行

/usr/local/etc/rc.d/nettalk start
/usr/local/etc/rc.d/avahi-daemon start (avahi用這個)
/usr/local/etc/rc.d/mdnsresponder start (howl用這個)

通通設定完之後,要直接用的話就手動去打開服務即可,然後就可以去用戶端玩看看了。

特別注意:ZFS 目錄

分享 zfs 的目錄有可能會吃到「無法完成此項操作,因為找不到〇〇〇〇的原項目。」這樣的錯誤訊息,在用戶端的 Console 會看到這樣:

NetworkNode::handleMountCallBack returned 2
NetworkNode::handleMountCallBack returned -50

通常來講,netatalk 會把設定檔裡面權限不足或是名字打錯的目錄過濾掉,並不會分享給用戶端,因此用戶端看得到理論上應該是一定會找得到。那這個錯誤是怎麼產生的呢? zfs 的 volume 用 set mountpoint 直接指定掛載點時,zfs 建立的目錄是只有 root 有存取權限,但是隨後掛載上去的就會蓋掉了原先的權限,於是一般使用者在本機上也就能存取了。netatalk (現在版本 2.1.5) 不知為何會被卡在這邊,不過解決方法也不難,就先暫時改掉 mountpoint,把目錄改成 755 之類的權限後再把 mountpoint 改回去即可。

參考資料

http://linuxnet.ch/groups/linuxnet/wiki/f8a83/FreeBSD_Setup_Netatalk_Server_for_OSX_with_Bonjour.html

http://thomas.pelletier.im/2010/01/time-machine-freebsd-and-afp-are-on-a-little-boat/

Posted in FreeBSD. Tags: , , , , . 2 Comments »