Proper Treatment 正當作法/ blog/ tags/ 部落格

這是單中杰中文(普通話)部落格。文章都有彙整

免窗升級想板基本輸入輸出系統法門

為了讓我的 ThinkPad 風扇安靜一點,最近想要把它的 BIOS 升級到最新的版本。因為我的電腦上沒有裝 Windows,只有裝 Linux,所以除非麻煩地重灌 Windows,否則不能使用 IBM 或聯想發佈的 Windows 版 BIOS 升級程式。

以往在 ThinkPad X20 系列的年代,IBM 除了 Windows 版的升級程式以外,還會發佈一張軟碟開機片。也就是我可以下載一個 1.44MB 的檔案,寫到一張軟碟上用來開機。這張軟碟的內容其實是 IBM 用 DOS 拼湊而成的,開機以後 AUTOEXEC.BAT 會自動執行升級程式。就算沒有 ThinkPad 擴充的軟碟機,或手邊沒有空著不用的軟碟(我最近一次看到軟碟好像是馬蓋先的「醜小鴨」那集吧),也可以用 SYSLINUXMEMDISK,直接從下載檔案裡的虛擬軟碟開機。例如我用 GRUB,在 /boot/grub/menu.lst 裡加上一段

title  MEMDISK
kernel (hd0,5)/lib/syslinux/memdisk
initrd (hd0,7)/ccshan/tmp/floppy.img

即可用 /usr/lib/syslinux/memdisk/home/ccshan/tmp/floppy.img 裡的虛擬軟碟開機,因為 (hd0,5) 是我的 /usr 分割區,而 (hd0,7) 是我的 /home 分割區。就算既不用 GRUB 也不用 Linux,也可以用 PXELINUX 從網路上別台電腦上的虛擬軟碟開機進行升級。

現在時代不同了,ThinkPad X60 系列的 BIOS 已經大得軟碟裝不下了,於是 IBM 發佈的開機片不再是軟碟而是光碟。我沒有光碟機,也不想重灌 Windows,所以希望從虛擬光碟開機進行升級,但是事情沒那麼簡單,因為 MEMDISK 只會模擬磁碟,不會模擬光碟。這是因為從光碟開機的過程比從磁碟複雜,要遵從 El Torito 標準進行。IBM 的這張光碟開機片,除了把新的 BIOS 及其更新程式放在一般的 ISO 9660 檔案系統以外,另含一張虛擬的軟碟開機片。當一位有錢擴充 ThinkPad 的用戶,用燒好的實體光碟開機時,ThinkPad 會從實體光碟上載入虛擬軟碟,執行虛擬軟碟上的 DOS。這份 DOS 的 CONFIG.SYS 與 AUTOEXEC.BAT 得先載入實體光碟機的驅動程式,才能讀到前述的 ISO 9660 檔案系統,以執行實體光碟上的 BIOS 更新程式。

我徹夜試驗,發現可以用實體硬碟代替實體光碟,成功升級了我的 BIOS。基本的想法是,在一個實體硬碟的新分割區裡,結合軟碟上的 DOS 開機程式以及光碟上的 BIOS 升級程式。詳情如下。

首先得在實體硬碟裡造一個分割區,如下例 /dev/sda2。這個分割區不用很大,比 IBM 發佈的光碟檔稍大一點就夠了(約 5MB),不過必須位於實體硬碟的前 1024 個磁柱以內(這是 DOS 的限制,迫使我用 gparted 把原本在硬碟最前面的分割區稍微縮小了一點,幸好那只是我的 /usr/local 分割區而已,不很麻煩),而且必須是初選而非邏輯分割區(迫使我用 sfdisk -d 把一個不常用的初選分割區備份然後暫時刪除,升級完再用 sfdisk -uS -N-O… 小心放回分割表內)。

在分割表裡,這個分割區的型別應設為 6 號(也就是 FAT16 的意思),並且可開機旗標應設為真,因為我們就是要用它開機。但是要把它作成 DOS 的開機分割區,除了新造檔案系統

$ sudo mkdosfs /dev/sda2

以外,還需一番移花接木。我從 IBM 下載的光碟檔名為 7buj25uc.iso,其中內含的虛擬軟碟開機片是從位元組位址 0xA800 (= 43008) 開始的 1.44M (= 1474560) 個位元組。為了方便,我把這部份資料擷取成為另一個檔案 7buj25uc.img

$ dd if=7buj25uc.iso of=7buj25uc.img skip=43008 count=1474560 bs=1

這兩個數字是我邊用 tweak 查看光碟檔、邊參考 El Torito 標準文件找到的。我早知道的話,也可以用 Joachim Selke 寫好的程式直接擷取。

要能從 /dev/sda2 這個分割區開機,必須把 7buj25uc.img 這張軟碟的內容複製進去,但是有兩點需要注意的地方。第一,不只要複製檔案,還要複製檔案系統最開頭的開機磁區,但是不能蓋掉裡面所謂的 BIOS 參數區塊,因為那裡存有分割區大小等資訊。第二,根目錄裡表列的第一個檔案必須是 IBMBIO.COM,第二個必須是 IBMDOS.COM,不然開機磁區裡的程式會找不到。

開機磁區是檔案系統開頭的 512 個位元組,其中 BIOS 參數區塊佔用的是位址 3 到 62 之間的 59 個位元組,所以我把區塊前的 3 個位元組與區塊後的 450 個位元組分別從軟碟複製到分割區裡。

$ sudo dd bs=1 count=3 if=7buj25uc.img of=/dev/sda2
$ sudo dd bs=1 seek=62 skip=62 count=450 if=7buj25uc.img of=/dev/sda2

然後我把軟碟裡的所有檔案都複製到分割區裡,但是先複製 IBMBIO.COMIBMDOS.COM。(以下指令假設已存兩個空目錄 /mnt/pool 以及 /mnt/loop。)

$ sudo mount -t msdos /dev/sda2 /mnt/pool
$ sudo mount -t msdos -o loop 7buj25uc.img /mnt/loop
$ sudo cp /mnt/loop/ibmbio.com /mnt/pool
$ sudo cp /mnt/loop/ibmdos.com /mnt/pool
$ sudo cp -u /mnt/loop/* /mnt/pool
$ sudo umount /mnt/loop

此時查看 /mnt/pool/config.sys/mnt/pool/autoexec.bat 可以了解,這張虛擬開機片在掛上光碟以後會執行光碟上的另一個 COMMAND.COM。所以我在把光碟內容複製到分割區裡的同時,乾脆用光碟上的 COMMAND.COM 取代軟碟上 DOS 的 COMMAND.COM

$ sudo mount -o loop 7buj25uc.iso /mnt/loop
$ sudo cp -i /mnt/loop/* /mnt/pool
cp: overwrite `/mnt/pool/COMMAND.COM'? y
$ sudo umount /mnt/loop

最後,我用文字編輯器修改 /mnt/pool/config.sys,把其中的 A: 統統換成 C:(因為要從硬碟而非軟碟開機),並且拿掉呼叫 COMMAND.COM 那一行後面給的參數。

$ vi /mnt/pool/config.sys
$ sudo umount /mnt/pool

大功告成。重新開機以後,請 GRUB 啟動這個新的分割區

root (hd0,1)
makeactive
chainloader +1

即可進入 IBM 的 BIOS 更新程式。

美國二卡 金綠雙輝 Two American membership cards

美國航空頒發的金卡、以及美國政府頒發的綠卡,張張都攸關大家在美國的生活。它們就如同深藏不露的礦泉水,讓不肖之徒伺機正中我們飛安的要害,又如同免費提供的行李牌,幫地勤人員千里尋回我們失散的骨肉。在這鳳凰花開、四面驪歌的時節,您是否也在金綠之間猶豫不決呢?與其腳踏兩條船,不如把雞蛋集中以便管理。為方便您睿智的抉擇,記者謹將兩卡的十二優劣點整理如下。

The gold card issued by American Airlines and the green card issued by the American government are each an integral part of our American lives. They are as powerful as the hidden water bottles that strip us of flight safety; they are as handy as the free luggage tags that unite us with abducted children. In this season of blooming Delonix regia and booming Auld Lang Syne, are you also hesitating to choose between gold and green? Decide wisely which basket to put your eggs in, with the help of this 12-point summary of the two cards’ pros and cons.

美國航空金卡
American Airlines gold card
美國政府綠卡
American government green card
其實是塑膠的
Actually plastic
其實是白色的
Actually white
使用 Helvetica 字體印製,中性無襯線
Typeset using Helvetica, a neutral sans-serif typeface
gld-card-crop.jpg
使用 Arial 字體印製,仿製沒水準
Typeset using Arial, a cheap knock-off typeface
i-551-back-edit.png
附送精美彩色印刷《新會員指南》一本,十二頁無索引
Comes with a guide for new members printed in 12 pages of fine color but without index
Gold Member Guide.jpg
附送精美彩色印刷《新移民指南》一本,一百頁附索引
Comes with a guide for new immigrants printed in 100 pages of fine color and with index
M-618.jpg
有搭機、住宿、購物等多種參加方式
Qualify in a variety of ways: flights, accommodations, shopping, etc.
有就業、依親、投資等多種參加方式
Qualify in a variety of ways: employment, family, investment, etc.
接受會員挑戰,三個月衝刺後拿到身份
Get it in 3 months when you enter a Membership Challenge
要求補送證據,三個月期限後失去身份
Lose it in 3 months when you receive a Request for Evidence
快速通過出境安全檢查
Avoid long security lines at departure
080526 2008 p154-crop.jpg
快速通過入境邊防檢查
Avoid long immigration lines at arrival
36172.jpg
選位、客服優先
Priority for seats and customer service
謀職、徵兵優先
Priority for jobs and military service
每飛行萬哩,可在網上免費獲取升級證
Earn complimentary upgrades online every 10,000 miles
每居留兩年,可在網上付費申請回美證
Apply for reentry permits online every 2 years
旅館、租車公司等合作夥伴提供優待
Special offers on hotels and cars from partner companies
國家、過境機場等合作夥伴提供優待
Special offers on transit and visas from partner countries
票選傑出空服人員
Vote for great flight attendants
Gold Member Guide-vote.jpg
票選傑出校務委員
Vote for great school board members
M-618-vote.jpg
一年換一張新卡
Renew every year
十年換一張新卡
Renew every decade
在貴賓室裡靜待登機
Lounge while waiting for your flight
在移民監裡靜待入籍
Lounge while waiting for your naturalization
Takahashi method for Beamer の高橋メソッド:高橋流簡報法

Surprisingly, I couldn’t find support on the Web for the Takahashi method of slide presentations in the Beamer class. So, I wrote it. This LaTeX package provides a single command \takahashi, documented at the beginning of the file. Some usage examples appear at the end of the file.

Update: To demonstrate, this source file produces this PDF output. For further testing, that source file produces that PDF output.

網上竟然找不到用 Beamer 格式製作高橋流簡報的方法,所以我就自己寫了。本 LaTeX 套件只提供一個命令 \takahashi。用法請見檔頭;用例請見檔尾。

追加:為示範起見,這個原始檔造成這樣的 PDF 輸出。更進一步測試,那個原始檔造成那樣的 PDF 輸出

The the

To search for duplicate words in a manuscript (such as “the the”) in Vim, look for this pattern.

\m\c\<\\\@<!\([a-z]\%(['a-z]\+[a-z]\)\?\)\_W\+\\\@<!\1\>

用 Vim 搜尋上列樣式,可以抓到文稿裡諸如 “the the” 一類的重複詞。

Chinese as She is Spoke 乩童壓獎
一排幸運籤餅上面錯誤的中文教學

下回你要是像我一樣,炎夏在中國餐館聽到老外祝人「Happy 聖誕節」,你就知道是怎麼回事了。

So that you know what’s going on the next time you hear a gaijin wish someone “Happy Sheng-dan-jie” in a Chinese restaurant in midsummer.

Long live Big-5 五大碼萬歲

receipt.png

Last message repeated 3 times 一一一

In the space of a single month died the directors Edward Yang, Ingmar Bergman, and Michelangelo Antonioni.

一個月的時間,死了三位導演:楊德昌、Ingmar Bergman、Michelangelo Antonioni。

Yang Yang at the final scene of Yi Yi

I take comfort in Yang Yang’s speech at the end of Yi Yi:

我以電影「一一」最後洋洋說的話為安慰:

婆婆,對不起,不是我不喜歡跟你講話,只是我覺得,我能跟你講的你一定老早就知道了,不然你就不會每次都叫我聽話。就像他們都說你走了,你也沒有告訴我,你去了哪裡。所以,我覺得,那一定是我們都知道的地方。

婆婆,我不知道的事情太多了。所以,你知道我以後想做什麼嗎?我要去告訴別人他們不知道的事情,給別人看他們看不到的東西。我想,這樣一定天天都很好玩。說不定,有一天我會發現你到底去了哪裡。到時候,我可不可以跟大家講,叫大家一起過來看您呢?

婆婆,我好想你。尤其是我看到那個還沒有名字的小表弟,就會想起你常跟我說,你老了。我很想跟他說,我覺得,我也老了。

Grandma, I’m sorry. I do like to talk to you, but you must be way ahead of all I have to say, or you wouldn’t always tell me to heed. Like, they all say you left, but you never told me where to, so I guess it must be a place we all know.

Grandma, there is so much I don’t know, so guess what I want to do when I grow up. I want to tell people things they don’t know, show people things they can’t see. That must be fun every day. One day I might find out where you went. When I do, may I tell people to come with and visit you?

Grandma, I miss you so much. Especially when I see my unnamed cousin, I remember how you often say to me that you’re old. I want to say to him too, I feel I’m old too.

紐約華僑熱烈慶祝香港回歸祖國十週年
三張演講人興奮不已手舞足蹈的照片

「香港回歸祖國,是對大家最有利的一件事。因為,這樣,如果香港發展得好,那麼大陸也好,如果大陸發展得好,那麼香港也好!你們說是不是?」在法拉盛購物中心喝完珍珠咖啡、吃不下紅油炒手的我,突然聽到台上輪到的演講人這樣說。「香港、澳門都已經回歸了,台灣還會遠嗎?」我心裡想到邏輯上一個相對稱的說法,只有笑出來卻沒有吐出來,可見剛才在南北和沒有吃得太飽。「這樣我們就對中國的發展,做出了應盡的貢獻。」

嫌您的美國簽證太貴嗎?

李登輝康乃爾的美簽,一年一百五十萬美元

美國華盛頓郵報現正以「K街公民」(Citizen K Street) 為題在網上連載專文,報導 Gerald Cassidy 等人在華府如何開創以「專款撥用」(earmarked appropriations) 為主力的新遊說事業 (lobbying business),賺了大錢。從幫學府設立研究中心、果汁公司進駐校園、冷戰過後續造核子潛水艇,到幫李登輝辦美國簽證,三十多年以來國會預算的機制已然改觀。如今政治影響力就像報稅一樣,都是有錢就買得到的服務。

每個兒童一臺筆記本電腦 徵人

「每個兒童一臺筆記本電腦」計畫 (OLPC) 正在找人擔任:

  • Director of Peripherals 週邊設備主導
  • Laptop Architect 筆記本電腦建築師
  • Gen-1 Product Manager 第一代產品管理

三個職位都位於 OLPC 的波士頓總部,需說英語,具中文、台灣、中國、廣達經驗者佳。請大家自薦或幫忙找人。

多謝!

(我只是在那裡認識人,幫忙徵才而已。)