在台灣使用sendmail寄信到外部郵件信箱(如gmail, pchome, hinet...), 大概都會遇到smtp需要認證的問題(SMTP AUTH). 為了解決這個問題, 必需要把sendmail的SMART_HOST, confAUTH及MASQUERADE功能打開.
2010年9月24日
2010年9月22日
2010年9月18日
手動複製ubuntu Linux
複製硬碟由小到大簡單, 由大到小比較難, 我就遇到這種問題.
兩家2G的卡片, 就有不同的大小.
這是第一個CF的大小
Disk /dev/sda: 2079 MB, 2079866880 bytes
這是第二個的
Disk /dev/sdb: 2029 MB, 2029805568 bytes
這是partition的layout
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 3756031 1876992 83 Linux
/dev/sda2 3758078 4061183 151553 5 Extended
/dev/sda5 3758080 4061183 151552 82 Linux swap / Solaris
在較小的CF卡上, 我決定將後面的swap放棄掉. Linux的partition不變.
1. 我先備份bootloader(Grub)
$dd if=/dev/sda of=MBR-backup bs=446 count=1
我不備份到512bytes的原因, 是因為不想備份到partition table.
參考這篇文章: http://embraceubuntu.com/2005/10/20/backing-up-the-mbr/
2. 按照之前sda所得到的partition table, 用fdisk設定到sdb上, 只有swap的partition變小.
並將之格式化.
# mkfs.ext2 /dev/sdb1
swap 因為要設定UUID, 所以待會再做
再把bootloader 還原回去
$ dd if=MBR-backup of=/dev/sdb
3. 將/dev/sdb1 mount 到/mnt上, 用rsync備份根目錄下的資料到/mnt下
# mount /dev/sdb1 /mnt
# cd /
因為mnt, proc, sys的目錄都是虛擬的檔案系統, 所以不用copy
# rsync -a --exclude=mnt --exclude=proc --exclude=sys * /mnt/
# sync
4. 最後, 需要修改硬碟磁區的UUID及udev網卡的rule
因為ubuntu 用UUID來區別partition, 因此需要根據原本的/etc/fstab所記載的UUID來修改.
# tune2fs -U b39b9f26-ebfa-470b-a68a-30dbcc0e7a13 /dev/sdb1
參考網址如下:
http://wiki.linux.org.hk/w/Manage_filesystem_with_UUID
swap的UUID需在mkswap就指定
# mkswap -U 592b51dd-5e1e-440f-9017-f200e7bf078c /dev/sdb5
由於要使用新的CF卡的是另一台相同硬體的電腦, 因此網卡的mac是不同的, 而ubuntu的網卡命名方式又是由mac address來決定
網卡的名稱是由udev的70-persistent-net.rules
修改 /etc/udev/rules.d/70-persistent-net.rules
將mac address改為新硬體網卡的 mac就可以了
註: 我不直接改新CF卡上的/etc/fstab裡的UUID是有原因的; 如果直接將新CF卡裡的/etc/fstab內的根目錄及swap改成新卡上的UUID, 開機時仍會找不到舊的UUID, 我猜想initrd裡是不是也有記錄同樣的fstab. 為了怕麻煩, 直接將新CF卡上的UUID改成跟以前一樣比較快.
兩家2G的卡片, 就有不同的大小.
這是第一個CF的大小
Disk /dev/sda: 2079 MB, 2079866880 bytes
這是第二個的
Disk /dev/sdb: 2029 MB, 2029805568 bytes
這是partition的layout
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 3756031 1876992 83 Linux
/dev/sda2 3758078 4061183 151553 5 Extended
/dev/sda5 3758080 4061183 151552 82 Linux swap / Solaris
在較小的CF卡上, 我決定將後面的swap放棄掉. Linux的partition不變.
1. 我先備份bootloader(Grub)
$dd if=/dev/sda of=MBR-backup bs=446 count=1
我不備份到512bytes的原因, 是因為不想備份到partition table.
參考這篇文章: http://embraceubuntu.com/2005/10/20/backing-up-the-mbr/
2. 按照之前sda所得到的partition table, 用fdisk設定到sdb上, 只有swap的partition變小.
並將之格式化.
# mkfs.ext2 /dev/sdb1
swap 因為要設定UUID, 所以待會再做
再把bootloader 還原回去
$ dd if=MBR-backup of=/dev/sdb
3. 將/dev/sdb1 mount 到/mnt上, 用rsync備份根目錄下的資料到/mnt下
# mount /dev/sdb1 /mnt
# cd /
因為mnt, proc, sys的目錄都是虛擬的檔案系統, 所以不用copy
# rsync -a --exclude=mnt --exclude=proc --exclude=sys * /mnt/
# sync
4. 最後, 需要修改硬碟磁區的UUID及udev網卡的rule
因為ubuntu 用UUID來區別partition, 因此需要根據原本的/etc/fstab所記載的UUID來修改.
# tune2fs -U b39b9f26-ebfa-470b-a68a-30dbcc0e7a13 /dev/sdb1
參考網址如下:
http://wiki.linux.org.hk/w/Manage_filesystem_with_UUID
swap的UUID需在mkswap就指定
# mkswap -U 592b51dd-5e1e-440f-9017-f200e7bf078c /dev/sdb5
由於要使用新的CF卡的是另一台相同硬體的電腦, 因此網卡的mac是不同的, 而ubuntu的網卡命名方式又是由mac address來決定
網卡的名稱是由udev的70-persistent-net.rules
修改 /etc/udev/rules.d/70-persistent-net.rules
將mac address改為新硬體網卡的 mac就可以了
註: 我不直接改新CF卡上的/etc/fstab裡的UUID是有原因的; 如果直接將新CF卡裡的/etc/fstab內的根目錄及swap改成新卡上的UUID, 開機時仍會找不到舊的UUID, 我猜想initrd裡是不是也有記錄同樣的fstab. 為了怕麻煩, 直接將新CF卡上的UUID改成跟以前一樣比較快.
2010年9月6日
YAML
我覺得YAML可以用在比較複雜的設定檔上, 它有提供各種語言的parser, 也比XML來得簡單. Google App engine也用這種語言來做設定檔的語法.
下載網站: http://www.yaml.org/
以下為wikipidia的介紹:
YAML(IPA: /ˈjæməl/,尾音類似camel駱駝)是一個可讀性高, 用來表達資料序列的程式語言。 YAML參考了其他多種語言,包括:XML、C語言、Pytho n、Perl以及電子郵件格式 RFC2822。Clark Evans在2001年在 首次發表了這種語言[1] ,另外Ingy döt Net與Oren Ben-Kiki也是這語言的共同設計者。 目前已經有數種程式語言或腳本語言支援(或著說解析)這種語言。
YAML是"YAML Ain't a Markup Language"(YAML不是一種置標語言)的遞歸縮寫。 在開發的這種語言時,YAML 的意思其實是:"Yet Another Markup Language"(仍是一種置標語言), 但為了強調這種語言以數據做為中心,而不是以置標語言為重點,而用返璞詞重新命名。
http://zh.wikipedia.org/zh-tw/ YAML
下載網站: http://www.yaml.org/
以下為wikipidia的介紹:
YAML(IPA: /ˈjæməl/,尾音類似camel駱駝)是一個可讀性高,
YAML是"YAML Ain't a Markup Language"(YAML不是一種置標語言)的遞歸縮寫。
http://zh.wikipedia.org/zh-tw/
CVS指令找改過的檔案
CVS版本管理系統雖然古老但是還是很多人在用, 至少我之前的公司就是
cvs status雖然可以找到變更的檔案有時卻又太多
這兩個指令可以找到有變更的檔名, 出處我已經忘了.
# Show new files in current project
"cvs status | grep ?"
# Show status of all *not* Up-to-date files
"cvs status | grep Status | grep -v Up"
cvs status雖然可以找到變更的檔案有時卻又太多
這兩個指令可以找到有變更的檔名, 出處我已經忘了.
# Show new files in current project
"cvs status | grep ?"
# Show status of all *not* Up-to-date files
"cvs status | grep Status | grep -v Up"
2010年9月3日
你的Editor用什麼字型呢??
我開始用Bitstream Vera Sans Mono 是因為我發現Gnome的字型很好看,
後來研究後發現這種字型很像Linux上用的 ...
看了下面這篇文章後發現原來大家的感覺差不多 ...
另外一個字型Consolas 是Vista才有的(但可以下載), 看起來也很不錯喔 ...
唯一缺點是從MS下載回來的安裝程式, 會檢查你有沒有安裝 Visual Stdio
http://www.sitepoint.com/blogs/2009/05/01/top-10-programming-fonts/
後來研究後發現這種字型很像Linux上用的 ...
看了下面這篇文章後發現原來大家的感覺差不多 ...
另外一個字型Consolas 是Vista才有的(但可以下載), 看起來也很不錯喔 ...
唯一缺點是從MS下載回來的安裝程式, 會檢查你有沒有安裝 Visual Stdio
http://www.sitepoint.com/blogs/2009/05/01/top-10-programming-fonts/
訂閱:
文章 (Atom)
coap-client 4.3.0 Windows build
coap-client is a wget -like tool to generate simple requests for retrieval and modification of resources on a remote server. Got the sour...
-
寫bash script時候, 用grep或awk取出來的值, 裡面還包含了一些non-printable的字; 作字串比對時, 就會一直出錯. 這時可以用 tr 這個指令移除看不到的字(如換行符號): # echo $VAR_WITH_NON_PRINT | tr -d ...
-
為了要測試重開機幾次會失敗, 寫了一個script來記算. 因為busybox的shell只提供了有限的功能, 不能像bash一樣宣告整數變數, 所以count的處理算比較麻煩. #!/bin/sh FILE = /etc/count timeout = 2 if ...
-
我的Android手機上一直出現此訊息: 很抱歉,處理程序com.google.process.gapps已停止訊息 找了一些解法, 包含 1. 在應用程式管理員->重設應用程式喜好 2. 清除google 相關應用程式裡的快取 不過都失敗了 最...