星期六, 10月 13, 2007

安裝並使用 Ubuntu 7.10

最後修改:2007/12/31

把我的 NB Asus A3V 原本的 D:\ 碟的資料並到 C:\ 碟,改安裝 Ubuntu 7.10,開始安裝日期為 2007/09/21,此時 Ubuntu 7.10 已到了最後一個 alpha 測試版,即將釋出 beta 測試版。目前已釋出 RC,預計10/18 正式釋出(GutsyReleaseSchedule)。
  1. 透過 Windows 的網路安裝,免光碟:D。
    • 參考論壇文章,但下載網路安裝用映像檔時所用的 Ubuntu 檔案庫換成是7.10 (gutsy)的。
    • 在選擇 Ubuntu 軟體多了許多選項,如 OpenSSH Server、Print Server、Samba File Server 等以後可能會用到,但我還是只先安裝 Ubuntu desktop。
    • UNetbootin 免用CD安裝各種Linux套件,下次可以改用這個。
  2. Firefox 瀏覽器及附加元件
    • swiftfox:在 /etc/apt/sources.list 新增
      deb http://getswiftfox.com/builds/debian unstable non-free
    • Flash Player:需要時會讓你選擇安裝 Adobe Flash Player 或 Gnash Flash Player
  3. 由於版權、專利等限制,許多優異的 free 或 non-free 的軟體,沒放進 Ubuntu。參考 HK Debian's wiki,新增 Medibuntu 套件庫,安裝下列軟體:
    1. Skype:發現耳機沒聲音,只好先直接用喇吧。(另外也可以依照這裡 所述直接從 skype 檔案庫安裝 .deb)
    2. Acrobat Reader:由於預設的 evince 會有中文破字問題。除了安裝 Acrobat Reader 外,需另外安裝 language pack到目錄 /usr/lib。
  4. 無線網路平常沒在用,關掉較環保,但研究不出如何把它關掉,先直接從 BIOS 把無線網路關閉。
  5. 效能調校
    • 關閉 IPv6:
  6. 為了瀏覽只能用 IE 的網站,安裝 IE4Linux:IE4Linux 其實是從 Microsoft 網佔下載 IE 並安裝到 WINE 下的命令檔。安裝說明請見這裡。 (2007/10/16)
  7. 檔案備份:安裝 sbackup (2007/10/30, 參考:
    Backup and Restore Your Ubuntu System using Sbackup(英))
  8. 透過 Lazybuntu 安裝 swiftfox、gcin 等一些哩哩扣扣,上面有些步驟可以一起完成。 (2007/10/30)
  9. [教學]將 ubuntu 7.10 Gutsy 的桌面資料夾等中文路徑改成英文路徑方法 (2007/10/31)
    • 除了桌面外,其它是 Nautilus (檔案瀏覽器) 的書籤,可在 Nautilus 視窗的『書籤』 -> 『修改書籤』修改路徑及名稱。(2007/11/27)
  10. 使用 vi 文字編輯器
    1. 更改預設的編輯器
      sudo update-alternatives --config editor
      或設環境變數 (例如加在 ~/.bashrc)
      export EDITOR="vi"
    2. gvim:安裝 vim-full 並修正亂碼問題,可搭配 firefox plugin It's All Text! 作網頁文字區編輯。
  11. 開發平台
    1. minicom:執行 `minicom -s` 作設定並儲存,一般 serial port 為 /dev/ttyS0,可用 `dmesg | grep tty` 尋找。
    2. 架設 tftp server:安裝 tftpd,mkdir /srv/tftp
    3. 架設nfs server (2007/11/1)
    4. 安裝 sshfs 來 mount 其他機器的目錄,機器包含開發中的 target。(2007/11/12)
      • 可將自己加入 fuse 群組(需重新 login 才會生效) 就可以不用 root 權限,指令改為
        sshfs remoteuser@remote:/remotedir /mnt/remotedir -o sshfs_sync -o default_permissions,kernel_cache,hard_remove
      • sshfs 在 Embedded Linux 開發的應用
  12. 有點潔癖(有嗎!?),移除一些沒用的
    • palm:gnome-pilot, gnome-pilot-conduits (會連帶移除 ubuntu-desktop)
    • bluetooth:bluez-gnome, bluez-cups, bluez-utils, libpisync0, libpisock9, libbluetooth2
    • 已 有 gcin 了,所以移除 scim、libscim8c2a,連帶移除 language-support-zh、scim-chewing、scim-gtk2-immodule、scim-modules-socket、 scim-modules-table、scim-pinyin、scim-tables-additional、scim-tables-zh、 thunderbird-locale-zh-cn、thunderbird-locale-zh-tw。(2007/11/13)
    • 移除 evolution, evolution-exchange, evolution-plugins (2007/11/16) openoffice.org-evolution (2007/12/06)
    • 改用功能較多的 vim,移除 vim-tiny,為維持相依性移除 ubuntu-minimal (2007/11/27)
    • 移除 tracker, libdeskbar-tracker, tracker-search-tool, libtracker-gtk0, deskbar-applet (2007/12/04)
    • 移除 fast-user-switch-applet (2007/12/04)
  13. 待解決
    1. 耳機沒聲音的問題,以下可能是解法,但我試不出來:
      1. [SOLVED] Realtek released High Definition Audio Drivers for No Sound problem
      2. [分享]Realtek ALC268 声卡 alsa 问题, 解决方案!!
  14. 其它待辦
    1. 第九章 多媒體影音欣賞
    2. GNetDict 網路辭典:討論串
    3. GPicView by PCMan
      1. http://www.gnomefiles.org/app.php/GPicView
      2. http://lxde.sf.net/gpicview/
    4. 10分鐘讓你在Ubuntu桌面下執行所有Windows程式

延伸閱讀

  1. Ubuntu 7.10 ( Gutsy Gibbon )的功能改進(Ubuntu的桌面應用世界)
  2. A3V
    • 控制無線 LED:echo 1 > /proc/acpi/asus/wled
    • 控制信件 LED:echo 1 > /proc/acpi/asus/mled

星期六, 9月 29, 2007

Clonezilla Live 備份

Clonezilla Live 是再生龍單機版,將 Clonezilla 和 GNU/Linux Live CD 結合,放在 USB 隨身碟或光碟等開機媒體,免安裝就能備份還原單台電腦。印象檔可存在開機媒體或被備份的電腦連接的網路磁碟機,如 sshfs 或 Samba (網路芳鄰)。

註:Clonezilla 使用需要搭配一台 DRBL 伺服器,且要被備份的電腦要能網路開機,是適合來大量部署作業系統的時候使用。

星期三, 8月 29, 2007

透視 Bit Torrent

BitTorrent,簡稱 BT

閱讀

心得

檔案提供者 (種子) 將檔案分成許多小段給不同的下載者,下載者提供一些上載頻寬分享他已有的小段,讓下載者可以「互通有無」。如此一來,一方面減輕了種子上載頻寬的壅塞,另一方面延長了檔案在網路上的壽命。

指定 eth0, eth1, ...

在某些情況下, 開機後網卡的名稱對應會改變, 如增減網卡等。似乎有幾種方式可以把它固定下來:
  1. 在 /etc/network/interfaces 中依 Ethernet MAC address 來 mapping 成不同名稱 (參考1)
  2. 新增或修改 /etc/udev/rules.d/*.rules
  3. 改 /etc/iftab, 其實這個也是間接透過 udev
  4. 用 bootparam
  5. 其他如 modprobe.conf, hwconfig, ifcfg-ethx
我的環境是 Ubuntu 7.04, 原本外加的網卡會把 on-board 網卡擠到 eth1, 嘗試方式 2 及 3 結果不行, 但最後我把 /etc/iftab 中不知怎麼來的 eth0 設定 mark 掉, on-board 網卡突然就變成 eth0。on-board 網卡每次開機 MAC address 都會不同, 而外加的網卡 udev rule 或 iftab 似乎都無法比對出來。

延伸閱讀

  1. http://lists.debian.org/debian-user/2006/01/msg00075.html

星期二, 7月 10, 2007

Windows 下遠端 Console 的 UTF-8 中文亂碼

Linux 的編碼預設是 UTF-8,而 Windows 下是 Big5。當你 ssh/telnet 至 Linux box 時,中文字會顯示成亂碼。

免費軟體 PuTTY 內建的內碼轉換可以解決此問題:
Window -> Translation -> Received data assume to be in which character set => 改為 UTF-8

我用的 Linux 是 Ubuntu 7.04,只需上述設定,在 screen 下使用也正常。其它 Windows 下的 console 程式似乎都沒有支援內碼轉換功能。

星期五, 6月 15, 2007

coLinux 簡介

在 Windows 2000/XP 下執行 Linux Kernel。

coLinux 包含了三大部分:
  1. Windows 的 daemon 及 kernel driver (colinux-daemon.exe 及 linux.sys): colinux-daemon.exe 執行時,會解析給定的 coLinux 設定檔,裝載 linux.sys,預留給定的記憶體大小,然後在上面裝載並執行 Linux Kernel。
  2. Linux Kernel: 經過 patched 的 x86 Kernel,將直接存取硬體的部份改用 Windows kernel API 或其他應用程式 (如:網路) 取代。
  3. 原始 Linux 下的應用程式 (user space programs) -- 跟在 Linux 系統下執行一樣。

效能

比一般的 PC 虛擬化軟體有較佳的效能。

風險

跟 Windows kernel 同時在 hardware abstraction layer 下執行,沒有記憶體保護。Linux 方面的問題可能導致 Windows kernel 當掉,另外也有 security 問題。

安裝

bfin-colinux 是個不錯的開始。

星期四, 6月 07, 2007

虛擬機器 Virtual Machine

虛擬機器可能是指

  • 虛擬電腦:虛擬出多台電腦,好像有多台真的電腦。多台電腦也就需要有各自的作業系統。
  • 虛擬作業系統環境:作業系統是虛擬的 (實際上只有一個),讓應用程式以為是在獨立的環境執行。
  • 虛擬應用程式執行環境
  • 集合多台電腦當成一台用。
Hardware Virtual Machine (虛擬電腦) – 一台電腦 (host) 下虛擬出來的電腦 (guest),虛擬的電腦就像一台真的電腦一樣,可安裝獨立的作業系統,這樣在一台電腦就可以同時跑多個作業系統。可分成 Full virtualization 及 Paravirtualization:
  • Full virtualization (全虛擬化) 或 Emulation:完全模擬一台電腦的環境,安裝在 guest 的 OS 不用修改或安裝特殊的驅動程式。
    • KVM -- Kernel-based Virtual Machine,Linux kernel 的一部份,需要有 virtualization (Intel VT or AMD-V) 擴充的 x86 機器,可跑多個 Linux、Wins 等。
    • VMware
    • QEMU
    • BOCHS
  • Paravirtualization (半虛擬化):為減輕虛擬化的負擔,在 guest OS 安裝驅動程式來優化虛擬界面的效能。
    • Xen
    • User Mode Linux
    • coLinux -- 在 Wins 下同時跑 Linux。
  • Native Virtualization – 只限虛擬同一種處理器架構,可以直接安裝另一個作業系統

全虛擬化半虛擬化
VirtualBoxvv

Virtual Environment、Virtual Private Server、OS Virtualization – 虛擬作業系統,讓應用程式 (user space programs) 以為是在獨立的環境執行
  • Linux 下虛擬 Linux:共用 Linux Kernel,幾乎不會消耗額外的運算能力
  • WINE -- 在 x86 Linux 下模擬 Windows 環境,執行 Windows 程式。
  • FreeBSD jails
  • Solaris Zones
  • OpenVZ
Application Virtual Machine – 要讓應用程式跟電腦平台無關,不同電腦平台有不同版本的虛擬機器軟體,而應用程式都一樣。
Cluster、Machine Aggregation – 讓一群電腦使用起來像一台電腦

 加速 VM 技巧

  • Fixed-sized Disks
  • Guest Addition
  • VM 目錄不執行防毒
  • 啟用 Intel VT-x 或 AMD-V
  • 記憶體
  • more CPU
  • 2D 加速有利影片播放
  • 3D 加速有利 3D 應用
  • 放在 SSD

星期三, 5月 30, 2007

Subversion Properties

Subversion Property (屬性)

英文線上書 繁體中文

  • 屬性包含一個可讀的名稱 (property_name,包括中文嗎?) 對應到一個任意內容的值 (property_value)。
  • 已納入版本控制的檔案或目錄可以新增、修改、或移除屬性。每個檔案或目錄可以有任意數目的屬性;每個屬性可以好幾個檔案或目錄共用。
  • 屬性是有版本控制的。
  • 相關但不太一樣的 revision properties -- 針對每個 revision 可以有任意數目的 properties ,但沒有版本控制
    • svn:log -- revision log
  • 屬性相關指令
    • svn propset
    • svn propedit
    • svn proplist
    • svn propdel
  • svn: 開頭的特殊屬性
    • svn:executable
    • svn:mime-type
    • svn:ignore -- 濾除某些未納入版本控制的目錄與檔案,在 svn status 時不會出現。
    • svn:keywords -- 取代檔案裡面的$Date$, $Revision$, $Author$ $HeadURL$, $Id$。
    • svn:eol-style -- 決定行結束字元。
    • svn:externals -- 使用外部檔案或目錄。
    • svn:special -- 目前只用在symbodic link。
    • svn:needs-lock -- lock之後才能修改。
新增屬性到檔案或目錄
svn propset property_name property_value
$ svn propset copyright '(c) 2006 Red-Bean Software' calc/button.c
property 'copyright' set on 'calc/button.c'
$

星期二, 3月 06, 2007

sshfs

sshfs 是透過 SSH File Transfer Protocol (sftp) 協定,以 ssh 加密的方式來掛載其他機器的特定目錄。
  • 安裝 sshfs 請見這裡
  • 可將自己加入 fuse 群組(需重新 login 才會生效,可用 `groups`指令檢視是否已加入 fuse 群組) 就可以不用 root 權限,指令為
    sshfs [remoteuser@]remote:[remotedir] /local/mount/point
    其中 remoteuser 及 remotedir 是可以省略的部份
  • 卸載用 `fusermount -u /local/mount/point`
  • svn checkout 無法在 sshfs 目錄使用,會有錯誤訊息『svn: 無法搬移 'xxx/.svn/tmp/entries' 至 'xxx/.svn/entries': 此項操作並不被允許』。(會不會是 default_permission 的關係???)
  • svk checkout 可以。
  • 將 CP950 (或 big5) 編碼轉換成 UTF-8
    sshfs remoteuser@remote:remotedir /local/mount/point -omodules=iconv,from_code=CP950
  • 其它 sshfs 及 fuse 選項如 sshfs_sync、default_permission、kernel_cache、hard_remove 等等請 man sshfs
    • sshfs remoteuser@remote:/remotedir /mnt/remotedir -o sshfs_sync -o default_permissions,kernel_cache,hard_remove

延伸閱讀

  1. sshfs 在 Embedded Linux 開發的應用 [Jserv's blog]
  2. sshfs for windows: http://dokan-dev.net/en/download/

星期四, 3月 01, 2007

coLinux -- 加大 root filesystem image

參考 coLinux 的 wiki ,但我的 coLinux 不知為何只能到 /dev/cobd4,只好改用在前面給 cdrom 用的 cobd 。

coLinux -- MAC address 與 DHCP client

coLinux 虛擬的網路介面需要 MAC address,在coLinux v0.6.2 的 release note 提到
* If the MAC address is unspecified, a random MAC is choosed
using the familiar TAP prefix (00:FF:XX:XX:XX:XX).
如 果沒指定 MAC address,每次開機的 MAC address 都會不同,DHCP 取到的 IP 也就不同,要 ssh 還要每次到coLinux console 去看 IP 是多少,有些不方便。只要在 coLinux 設定檔指定同一個 LAN 不重複的 unicast MAC address 便可。
<network index="0" type="bridged" name="LAN" mac="02:FF:01:02:03:04" />

eth0=pcap-bridge,"LAN",02:FF:01:02:03:04

星期二, 2月 27, 2007

coLinux 下使用獨立的 /home image

目的

  • root filesystem 不夠用
  • 方便備份
  • 共用多個 root filesystem

步驟

  1. 在 windows 下製造一個所需大小的空檔案。例如: 2GB=2*1024*1024*1024Byte
    fsutil file createnew home.2Gb 2147483648
  2. 在 coLinux 設定檔新增 home.2Gb 為新的block device 並重啟到 coLinux
  3. 格式化
    mkfs.ext3 /dev/cobd3
  4. mount 看看
    mount /dev/cobd3 /mnt
  5. 移動 /home 到新partition
    mv /home/* /mnt/
  6. 寫到 /etc/fstab
    /dev/cobd1 /home ext3 defaults 0 1
  7. 啟用
    umount /mnt
    mount /home

星期一, 2月 26, 2007

在 coLinux 下使用光碟機

v1.0
在coLinux設定檔新增
<block_device index="2" path="\Device\Cdrom0" enabled="true"/>

重起 coLinux,使用 mount 指令作測試 (注意:在Windows下不能使用光碟機且需有光碟片,否則無法mount):
mount -t iso9660 /dev/cobd2 /cdrom

在 /etc/fstab 新增一行
/dev/cobd2 /cdrom iso9660 defaults,noauto,user

以後便可以用簡單的指令使用光碟機
mount /cdrom
umount /cdrom

參考

http://colinux.wikia.com/wiki/CdDvdAccess

星期五, 2月 16, 2007

ssh server

安全設定

在 /etc/ssh/sshd_config,修改下面設定後/etc/init.d/ssh restart:

  • PermitRootlogin no # root 不能登入
  • ChallengeResponseAuthentication no # 不使用帳號密碼登入
設定說明可 man sshd_config。另外,Tetralet使用 RSA 來登入 SSH!是不錯的參考。

Windows 11 啟用 OpenSSH 伺服器

  • 安裝:[開始]→[設定]→[應用程式]→[選用功能]→[新增選用功能]→勾選[OpenSSH 伺服器]→[下一步]→[安裝]
  • 啟動:[服務]→[OpenSSH SSH Server]→右鍵[啟動] (右鍵選[內容]→[啟動類型]可選[自動])
  • 遠端登入後執行 powershell,[System.IO.Ports.SerialPort]::getportnames() 列出所有 COM port

Windows XP:http://sshwindows.sourceforge.net/

Windows XP:Cygwin SSH Server

延伸閱讀

  1. PuTTY - SSH 連線應用備忘
  2. What’s your favorite ssh connection
  3. 遠端桌面連線軟體 VNC 也可以當成電子白板或廣播教學軟體來用 (ssh 跟 vnc)
  4. 4 Ways to Speed Up SSH Connections in Linux:強迫使用 IPv4、關閉 DNS lookup、Reuse SSH connection、指定認證方式

星期四, 2月 15, 2007

coLinux 建議的網路環境

coLinux 的網路介面一定是虛擬的,為了效能考量可以額外設一個TAP介面專門跟Hosting OS連接用 (例如X11通訊)。外部網路可用Slirp (easy, slower, less problematic with wireless cards) 或 WinPcap (more configuration required, faster, more problematic with wireless cards)。

星期三, 2月 07, 2007

網頁編碼

要讓一個網頁同時有不同語系的文字,需要使用 unicode,以下參考 http://www.pczone.com.tw/vbb3/archive/t-122399.html 的討論串

編碼
  • ANSI (就是 BIG5,GBXXXX 那些):檔案較小,但不支援多語系。
  • UTF-16:2 bytes,優點是有高效能 (xp 記事本存檔後,儲存編碼那邊的 unicode 指的就是 utf-16)
  • UTF-8:是可變動位元組 1 byte ~ 4 bytes。漢字很多都是落在 3 bytes

結論:
如果你要寫的是網頁,最好採用 UTF-8 編碼,除非你不想要多語系的優點
如果你寫的是應用程式,最好採用 UTF-16 編碼,除非你希望其他語系的作業系統,打開會亂碼,跟不想要多語系

轉碼可以使用筆記本

Unicode 的編碼是固定的,但在實際傳輸過程中,因效率等考量,對 Unicode 編碼的實作方式有所不同,稱為 Unicode 轉換格式 (Unicode Transformation Format, UTF),常見的有 UTF-8、UTF-16。
UTF-8 特性 (參考 非常經典的 UTF-8…)
  • 相容 ASCII 0~127 (control: 0~31, 127,printable: 32~126)
  • 常用字用較少的位元組
  • self-synchronizing
  • 相容 C 的 strcpy(), strcmp()
  • 容易區別出來,避開 utf-16 的 BOM
  • 沒有 byte 順序 (endian) 問題
ASCII 定義 8-bit 字元中的前 128 字元,ITU 採用為 T.50 (International Alphabet No. 5, IA5),後稱 International Reference Alphabet (IRA)。
延伸閱讀:

HTML Colors

HTML 顏色

顏色是以紅、綠、與藍 (RGB) 三種光組合而成。每種光由分成256等級,值越大光越強,可以十六進制或十進制表示。

W3C 定義了 16 種標準的顏色名子:
aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow.

參考: http://www.w3schools.com/html/html_colors.asp

星期五, 1月 12, 2007

Subversion -- Keyword Substitution

關鍵字是放在檔案內容裡面,描述一些檔案更動時的訊息 (如:最後更新時的日期)。每次檔案更動後送交,這些訊息會跟著自動更新,不需要人工維護。

目前可用的關鍵字名稱有:
  • DateLastChangedDate:最後更新時的日期。
  • RevisionLastChangedRevisionRev:最後更新時的修訂版號。
  • AuthorLastChangedBy最後更新時的作者。
  • HeadURLURL:檔案在檔案庫的位置。
  • Id:包含檔名與最後更新時的修訂版號、日期、及作者。

步驟

  1. 編輯檔案,在內容適當處放關鍵字定位錨 (keyword anchor),也就是用兩個錢字號 ($) 將關鍵字前後包起來,如:$Id$。
  2. 設定檔案 Subversion 屬性 (property) svn:keywords 的內容為所有需要取代的關鍵字 (有多個關鍵字時以空隔隔開)。
    svn propset svn:keywords Id the_file
  3. 最後送交就可以了。
    svn commit
    此時去看檔案裡剛剛放的關鍵字就會發現有所改變,以後只要此檔案有新的送交,關鍵字部份就會自動更新。

註解

  1. 關鍵字名稱會辨別大小寫
  2. 固定長度的關鍵字區域 -- 定位錨裡的關鍵字名稱後面加兩個冒號及所容許的文字空間 (如:$Date:: $)