星球

RSS | RDF | ATOM

ThinkPad T410 on Debian squeeze

2011/2/18 6:49:00 | 凍仁的 Ubuntu 筆記
近來因為工作上的關係凍仁敗了人生中的第一台 ThinkPad - T410 (詳情請看此),也因工作得跑 Windows 的關係多花了 NT$ 2,000  買 Windows7 的 license,不過好在有 Ultrabay 系統可以把光碟機換成硬碟槽,這樣在工作之於玩 Linux 也不會影響到上班的環境。

下表為凍仁家小黑的作業系統配置,值得一提的是 sda 用的磁碟分割表(Partition Table) 為 GPT,sdb 則為 MBR為了向下相容 WindowsXP 總得用些舊規

devOperating System
sda1 Windows Seven 64bit
sdb1 Windows XP 32bit
sdb3 Debian squeeze 64bit
 sdb6 Ubuntu 64bit (未裝)


Graphics

Type: nVIDIA NVS 3100m
# 檢查核心版本。
jonny@squeeze:~$ uname -r

# 搜尋 NVIDIA 相關套件。
jonny@squeeze:~$ sudo aptitude search nvidia-kernel

# 安裝對應的 NVIDIA 版本以及相關套件 (紅字部份會因人而異)。
jonny@squeeze:~$ sudo aptitude install nvidia-kernel-2.6.32-5-amd64 nvidia-glx nvidia-settings nvidia-xconfig

# 手動掛載 NVIDIA 模組,最後都得重開,手不手動似乎都無所謂
# jonny@squeeze:~$ sudo modprobe nvidia


# 建立 NVIDIA 專屬的 xorg.conf。
jonny@squeeze:~$ sudo nvidia-xconfig

# 重新開機 (須 Kernel 支援故得重新開機跟換 Kernel)。
jonny@squeeze:~$ sudo shutdown -r now

Wireless LAN

Type: Intel® WiFi Link 1000
# 加入 non-free 套件來源參數。
¡jonny@squeeze:~$ sudo vi /etc/apt/sources.list
......
deb ftp://opensource.nchc.org.tw/debian/ squeeze main non-free contrib
deb http://security.debian.org/ squeeze/updates main non-free contrib

# 安裝非自由的 firmware。
jonny@squeeze:~$ sudo aptitude update; sudo aptitude install firmware-iwlwifi wireless-tools

# 手動掛載 iwlagn 模組,依無線網卡型號而定 (詳情請看)。
jonny@squeeze:~$ sudo modprobe iwlagn

Battery

# 安裝 Sysfs 虛擬檔案系統
jonny@squeeze:~$ sudo aptitude install sysfsutils

# 設定電池充電的零界點。
jonny@squeeze:~$ sudo vi /etc/sysfs.conf
...
# 低於 50% 才充電。
devices/platform/smapi/BAT0/start_charge_thresh = 50
# 充到 100% 時停止充電。
devices/platform/smapi/BAT0/stop_charge_thresh = 100

HDAPS

# 安裝硬碟監控程式。
jonny@squeeze:~$ sudo aptitude install hdaps

# 手動掛載新模組。
jonny@squeeze:~$ sudo modprobe thinkpad-ec hdaps

# 啟動服務。
jonny@squeeze:~$ sudo /etc/init.d/hdapsd start

相關連結:
ThinkPad Ultrabay slim SATA 第二顆硬碟轉接盒 / USB 轉接盒 - 桌機與筆記型電腦 - PALMisLIFE 掌上生活討論區

資料來源:
鳥哥的 Linux 私房菜-新手討論區 • 檢視主題 - 請問 nvidia driver on debian testing版本~請教.thanks!
Intel Wireless WiFi Link 4965, 5100, 5300, 5350, 5150, 1000, 6000, 6250 devices (iwlagn) - Debian Wiki
HDAPS for Debian 5.0 (Lenny) on IBM R52

___

讓《返校》恐怖度升級的方法

2017/1/21 0:30:00 | 魔法設計的藝術
其實這個標題有一點聳動....其實應該算是在內顯、舊筆電上也可以玩的方法,你也可以理解成....「拿2010年以後的內顯筆電玩起來會更恐怖喔」。




 (是不是很像鬼火?)

我的筆電是2010年的Thinkpad x201,i5 cpu+ intel HD Graphics,作業系統是Ubuntu Linux 14.04,遠低於《返校》的最低配備。

不過我偏不信邪,因為類似返校畫面水準的其他外國遊戲,都只要Opengl2.0+shader3.0,是可以在我這台機器上玩的,Linux steam平台有一個特性,就是通常可以比其他平台更低的硬體要求就可以玩遊戲了,所以....

返校我試玩版的時候就已經用手工編輯設定檔的方式調降解析度來玩,不過正式版一裝好,正式版、試玩版都變成一開始主角睡覺起來,要走出教室門時,就會當機@@

首先我發現原來Ubuntu14.04LTS可以用最新

【Themes】AwOken - Awesome Token icon

2010/12/30 1:43:00 | 凍仁的 Ubuntu 筆記
凍仁已經忘記是從什麼時候開始喜歡用黑黑的佈景主題,是因為紅配黑?還是白色太刺眼?不過這樣一來就得花更多的時間尋找合適的 Gtk, Icons themes,懷念以前 gdm 很好改的時代
這個 awoken-icon-themes 原先是給支援 PPA 的 Ubuntu 不過凍仁已經成功在 Debian squeeze sid 跑起來了。

Installation

於 Ubuntu 下安裝
jonny@maverick:~$ sudo add-apt-repository ppa:alecive/antigone && sudo apt-get update

jonny@maverick:~$ sudo apt-get install awoken-icon-theme

於 Debian 下安裝
jonny@squeeze:~$ sudo vi /etc/apt/sources.list
....
deb http://ppa.launchpad.net/alecive/antigone/ubuntu maverick main
deb-src http://ppa.launchpad.net/alecive/antigone/ubuntu maverick main
至 System → Preferences → Appearance → Theme → Customize → Icons 視窗選取 AwOken。

Take a look at the readme pdf

[!IFRAME FILTERED!]

Configure the set

於 terminal 底下出輸入
jonny@debian-base:~$ bash ~/.icons/AwOken/awoken-icon-theme-customization

***********************************

Customization script for AwOken icon set. Current Release: 1.5

Please consider a small donation (1$ goes a long way) via PayPal to 'alecive87@gmail.com'

***********************************

Installation directory: /usr/share/icons/AwOken -> installation type: PPA. Good choice.

***********************************

Select an option from below, typing the number of your choice:
1) Something went wrong? Choose this option!
2) TAKE A LOOK AT THE README PDF
3) Configure the set
4) Recover configuration options from previous installations
5) Quit this script
Wich option do you prefer? 3
You choose: Configure the set
Now I'll run configuration script

***********************************

CONFIGURATION SCRIPT
This part is still under testing, so it's more than welcome any detection of any bug you'd find.
My mail is 'alecive87@gmail.com'

***********************************

I'm using this path for iconset in configuration process: /usr/share/icons/AwOken

***********************************

Now I'll start the configuration process. If there is a file called /home/jonny/.AwOkenrc, I'll use it to configure the set in the way you want. If not, I'll ask you some simple questions to create one.
Configuration file already exists.
Now I'll modify the configuration file located in /home/jonny/.AwOkenrc.

***********************************

What kind of folder type do you prefer? (Type the number of your choice)
1) dark 4) tlagdark 7) violet 10) s11-original
2) gray 5) tlaglight 8) white 11) classy
3) metal 6) token 9) s11 12) sonetto
folder_type? 5 # 可參考下方 PDF 的資料夾圖示。

Your choice was: tlaglight

***********************************

What kind of start here icon do you prefer? I'll not show all 61 options, but if you want I'll open a nautilus window to see them. Do you want this (y/[n])?
y
Now type the name of the icon of choice.
WARNING: type only the last part of the icon before file extension!! For example, type 'gaia2' or 'centos' or 'arch4'
start_here? debian
# 請參考 /usr/share/icons/AwOken/clear/128x128/start-here 內的主選單圖示。
Your choice was debian

***********************************

What kind of trash icon do you prefer? (Type the number of your choice)
1) trash1 4) trash4
2) trash2 5) See icons before choosing them
3) trash3
trash_type? 2 # 選 5 可先看圖示種類
Your choice was: trash2

***********************************

Do you want colored applications or greyish apps? (Type the number of your choice)
1) color
2) no-color
color_type? 1
Your choice was: color

***********************************

Last three questions (I incorporate them in one question): change gedit icon, home icon and computer icon.
For each option, type the number of your choice, as above. Name that ends with 1 is the colored version, name that ends with 2 is the grayish version.
1) gedit1 3) See icons before choosing them
2) gedit2
gedit_type? 2
Your choice was: gedit2

1) computer1 4) computer4
2) computer2 5) computer5
3) computer3 6) See icons before choosing them
computer_type? 1
Your choice was: computer1

1) home1 4) home4
2) home2 5) home5
3) home3 6) See icons before choosing them
home_type? 1
Your choice was: home1

***********************************

Configuration process is finished. Notice that until now script has changed only main options. Do you want to run other options of the customize.sh file? (y/[n]) n

***********************************

Now I'll start the recovery script. Type any key to continue. <Enter>
......
Reading user config....
Changing option in the configuration file...
DONE
Fresh_install option is set to no. So I'll stop here the recovery process. If you want that other options run, just answer properly in the configuration step. But it's at your own risk! :S

AwOken 是凍仁目前除了 Macbuntu 以外最具客製化的 Icon themes,種類很多種,有空再慢慢玩了。

資料來源:
AwOken - Awesome Token icon set GNOME-Look.org
antigone by alecive on Ubuntu PPA

ubuntu 11.04開機出現「解開鑰匙圈」

2011/6/10 22:02:37 | 老森常譚

  雖然是寫11.04,不過印象中幾年前好像也遇過一次,開機時會跳出一個視窗,要你輸入密碼解鎖,看起來好像沒什麼,但每次開機都出現,就很煩人了,且就算選了登入時自動解鎖也沒用。





上網找了一下,兩道指令刪掉keyring即可解決:




killall -9 gnome-keyring-daemon

rm -fr ~/.gnome2/keyrings


 


【相關連結】


BFS+BFQ+config_hz=10000+PAE

2011/1/17 5:35:00 | Lawliet's blog
Photobucket

很多人都想在自己的linux上編譯高效能的核心
但如果只是下載源碼並重新編,那提升的效果是有限的
我修改了AUR上kernel26-ckconfig文件
將其改為config_hz為10000,I/O調度管理器為BFQ(CFQ可選)
經過高度優化的linux核心,我可以在多線make的壓力下
輕鬆的使用我的電腦做其它工作,不會像以前一樣
因為CPU被資源被強佔,造成其餘工作所分配到的資源不足
對流暢性有所影響!



首先必須先下載幾個檔案
linux kernel 2.6.37

BFS Patch:
for 2.6.37

BFQ Patch
for 2.6.37-001
for 2.6.37-002
for 2.6.37-003

config file:
config for 32bit
config for 64bit



依序將patch打上:
patch -Np1 patch-2.6.37-ck1
patch -Np1 0001-bfq_iosched-block-prepare_IO_context_code-v1-2.6.37.patch
patch -Np1 0002-bfq_iosched-block-add-cgroups-kconfig-and-build-bits-for-BFQ-v1-2.6.37.patch
patch -Np1 0003-bfq_iosched-block-introduce_BFQ-v1-2.6.37.patch



如果你使用Debian係的Linux發行版
可以用kernel-package幫助編譯及打包

sudo make-kpkg clean
sudo make mrproper
cp /boot/config-`uname -r` ./.config #如果需要本身的config的話
CONCURRENCY_LEVEL=4 fakeroot make-kpkg --initrd --append-to-version=-bfq kernel_image kernel_headers
sudo dpkg -i linux-image-2.6.3*.deb ; sudo dpkg -i linux-headers-2.6.3*.deb
sudo dpkg -i linux-image-2.6.3*.deb ; sudo dpkg -i linux-headers-2.6.3*.deb



如果不想用我改的config你也可以用自己的config
並在其內中加入以下兩段

#IO Schedulers
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_CFQ_GROUP_IOSCHED=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_BFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PADATA=y


#Config_HZ
CONFIG_HZ_10000=y
CONFIG_HZ=1500

到這裡,基本上你已經打造了一個高性能低延遲耐壓的linux核心

ubuntu 10.04 更改預設輸入法

2010/7/25 17:06:27 | 老森常譚

  一直以來都習慣用gcin作為預設的輸入法工具,先前在安裝完畢後,還要透過im-switch指令來做切換,新版10.04用滑鼠點一點即可。



  透過套件管理程式安裝好gcin後,點選「管理」 – 「語言支援」,在"語言"標籤下方有個"鍵盤輸入法系統"的下拉式選單,選擇「gcin」及完成預設輸入法的設定。



 




【相關連結】


在Arch以及ubuntu上使用TMPFS(kernel level ramdisk)

2008/10/14 22:52:00 | Lawliet's blog
現在的DDR2 RAM實在是太便宜了,加快了人們擁抱64bit系統的時間
但我們一般操作上很多時候其實都是爽度的問題,而不是真正的需求問題
所以很多人,例如Windows系統的使用者都會嘗試一些
例如SuperCache或是RAMDisk之類的加速軟體

但是在Linux Desktop上呢,同樣也有類似的加速軟體
而且是核心直接支援,不需要掛第三方應用軟體
而且使用上的彈性比起Windows的更為的強大!

這邊要介紹的就是如何加速Linux速度
首先先確認你的物理記憶體大小至少在2G以上!
然後根據自身需求決定是否取消SWAP!
取消SWAP後,所有的應用程式都將運行於物理記憶體中!
接下來就是TMPFS的運用了!

這裡我們先找出你希望掛載TMPFS的資料夾或分區
例如我建立一個資料夾,用它來裝Firefox的Web Cache
那我就建立一個專屬的Cache目錄
sudo mkdir /home/lawliet/wb_cache



然後把TMPFS加入到啟動引導項目內
這邊我們要編輯fstab
sudo kwriter /etc/fstab



加入TMPFS
none /home/lawliet/wb_cache tmpfs defaults 0 0



nono為掛載區域名稱,defaults為預設
預設為使用物理記憶體一半的大小做RAMDisk
如果你希望自訂RAMDisk空間容量的大小
那可以照這個例子作修改來符合你的需求
none /home/lawliet/wb_cache tmpfs defaults,size=64M 0 0



除了以上的例子外我們也可以把/tmp也加入RAMDisk
如此的設置可以減少I/O的需求,提升一些讀寫上的速度

TMPFS比起Windows上的RAMDisk軟體最大的優點就是TMPFS
具有彈性的空間管理!如果應用程式需要,TMPFS會自動釋出未使用的空間
例如我2G的空間分了1G給TMPFS,如果我的RAMDisk空間少於1G
那當我的程式使用了超過1G的記憶體時,TMPFS就會把沒有用的到挪給應用程式使用
這個優點大大增加了使用上的彈性,用戶可以無後顧之憂的大量使用RAMDisk
不必擔心會影響其餘應用程式的需求!

MySQL 語法匯整

2012/12/4 0:51:00 | 凍仁的 Ubuntu 筆記
接觸 MySQL 多年的凍仁一直以來都沒有好好的指令記完,一般都會使用 phpMyAdmin 這類的 GUI 來操作 MySQL,所以把常用的 select, insert, update, drop 背熟就偷笑了!可只有這些對凍仁而言是不夠的,當 GUI 失靈時還是得依賴指令來完成任務,再還未背熟之前就讓凍仁在自家基地放本小抄囉。

1. 基礎語法

操作功能 SQL 語法
說明
建立資料庫 create database 資料庫名稱;
列出所有資料庫 show databases;
刪除資料庫 drop database 資料庫名稱;
使用資料庫 use 資料庫名稱;
建立資料表 create table 資料表名稱(
sn integer auto_increment primary key,
name char(20),
mail char(50),
home char(50),
messages char(50)
);
常用資料庫資料型態
1. INT (整數)
2. CHAR (1~255字元字串)
3. VARCHAR (不超過255字元不定長度字串)
4. TEXT (不定長度字串最多65535字元)

列出資料表欄位資訊 describe 資料表名稱;
修改資料表欄位 alter table 資料表名稱
charange column 原來欄位名稱
新欄位名稱資料型態;
新增資料表欄位 alter table 資料表名稱 add column 欄位名稱 資料型態;
刪除資料表欄位 alter table 資料表名稱 drop column 欄位名稱;
刪除資料表 drop 資料表名稱;
插入欄位資料 insert into 資料表名稱(欄位1,欄位2,欄位3,欄位4, ...... 欄位N)
values('值1','值2','值3','值4', ...... '值N');
更新修改欄位資料 update 資料表名稱 set 欄位1='值1',欄位2='值2',欄位3='值3',... 欄位N='值N'
where 條件式 (例如 sn='5' 或 name='塔司尼' );
查詢單一欄位資料 select 欄位名 from 資料表名稱;
查詢多個欄位資料 select 欄位名, 欄位名, 欄位名 from 資料表名稱;
查詢欄位資料的唯一值 select distinct 欄位名 from 資料表名稱; 重複值只列一次
查詢所有欄位資料 select * from 資料表名稱;
條件式查詢 select * from 資料表名稱 where 條件式 (例如 sn='5'); (=, <, >, !=)
條件式查詢 and select * from 資料表名稱 where 條件式1 and 條件式2;
條件式查詢 or select * from 資料表名稱 where 條件式1 or 條件式2;
查詢某一範圍 between select * from 資料表名稱 where 欄位名 between 值1 and 值2 值為數字
查詢空值欄位的資料 select * from 資料表名稱 where 欄位名 is null not null
查詢特定筆數資料 select * from 資料表名稱 limit 8, 10; 第9筆開始選取10筆
查詢結果遞增排序 select * from 資料表名稱 order by 欄位名;
查詢結果遞減排序 select * from 資料表名稱 order by 欄位名 desc ;
查詢比對字串列出單一欄位 select 欄位名 from 資料表名稱 where 欄位名 like '%字串%';
查詢比對字串列出所有欄位 select * from 資料表名稱 where 欄位名 like '%字串%';
刪除條件值資料 delete from 資料表名稱 where 條件式 (例如 sn='5' 或 id='91001' );
刪除條件值資料 delete from 資料表名稱 where 條件式1
and
條件式2;
刪除條件值資料 delete from 資料表名稱 where 條件式1 or 條件式2;
比對刪除條件值資料 delete from 資料表名稱 where 欄位名 like '%字串%';

2. 進階語法

操作功能 SQL 語法
說明
列出正在執行的行程。 show processlist;

站內連結:
MySQL 大學筆記 on Windows XP

資料來源:
MySQL 基礎語法手冊 | InspireGate 派克空間

十本 Linux 核心開發書籍介紹

2011/3/17 0:00:48 | Rex's blah blah blah

「利益揭露: 本文英文書籍連接使用 href="http://en.wikipedia.org/wiki/Amazon_Affiliates#Third-party_sellers">Amazon Associates Program.」

我相信絕大部分 Linux 開發者都會告訴你,Driver 的開發比 Linux Application 容易許多,即便寫驅動程式聽起來莫名偉大,其實也不過是一段 C/assembly 的組合程式碼。有別於桌面應用程式,Linux kernel API 較少因爲不同的新軟硬體規格,而進行大幅度 API 更動 (參數的簡化倒是十分常見),且由傑出的軟體開發者撰寫的核心架構,穩定性已經十分可靠。

相較與 userland 高度複雜的設定機制,Linux Kernel 暴露的界面十分簡單,style="text-decoration: underline;">在硬體穩定的前提之下,你也難得碰到 API 反應與預期不符合的處境。一般開發者對於核心驅動程式上手的時間,應該不會比開發桌面軟體來的更久。花費時間較多應該是研讀硬體手冊,以及不嚴謹的開發習慣造成臭蟲而所需的除錯時間。

對於深具經驗的開發者,在學習開發 Linux kernel driver 時,最快的方法莫過於直接解開 Kernel tarbar, 切進欲開發的 subsystem 目錄,拿出 href="http://www.gnu.org/software/global/">global, href="http://www.vim.org/">vim, href="http://lxr.linux.no/">LXR 直接把現成程式碼當作範例學習,很快就可以理解程式結構。不過,偶爾還是需要參考書來驗證對於架構得理解是否正確,另外接觸新的 subsystem 時先閱讀入門文章也可以減少無謂的撞牆期。

所幸,幾位 Linux kernel hacker 也是傑出的文件作者。在 Linux kernel sourc tree 中已有一些各子系統的架構、操作參考文件,涵蓋了基本的 coding style、設計哲學等。另外,像是 href="http://blog.rlove.org/">Robert Love, href="http://www.kroah.com/linux/">Greg Kroah-Hartman (PCI, USB maintainer) 等開發者也出版了完整的書籍,很值得參考。

不過市面上針對 Linux kernel 開發的書籍也不少,那一本是適合你的呢?這類的技術書籍,通常設定不同的讀者羣來設定內容,有的偏重知識,有的偏重操作實務。且出版版次也會影響所介紹的 API 差異,造成無法編譯其範例,但並非舊書,所談之理論就不正確。

以下分享不才對於市面上 2005 年之後出版的href="http://www.anobii.com/chihchun/books/?filterType=3&filterValue=7&tagPage=1&doScroll=true">核心開發書籍的評論,希望對於想擴充團隊圖書館的朋友提供些參考。

href="http://www.amazon.com/gp/product/0596100795?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596100795">class="size-full wp-image-2387" title="9780596100797" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/9780596100797-.jpeg" alt="" width="107" height="160" />

href="http://www.amazon.com/gp/product/0596100795?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596100795">Linux Kernel in a Nutshell 是 2006 年年底發行,作者是 GregKH,使用核心為 2.6.18,部分操作方式或指令已經略有更改。GregKH 基於讓更多新手參與開發行列,針對的讀者是從未編譯過 Linux kernel,想瞭解下載、設定、編譯需求等等細節,適合剛從其他平臺進入 Linux 核心開發的朋友,可以較快熟悉核心編譯的操作程序。書內主要介紹通用性知識,因此未提各 distro 間安裝 kernel 的細節 (如 initrd 建制方式)。

title="Linux kernel in a Nutshell">LKN 已採 href="http://creativecommons.org/licenses/by-sa/2.5/">CC BY-SA 2.5 授權。電子書可於 GregKH 的href="http://www.kroah.com/lkn/">網頁下載。

href="http://www.amazon.com/gp/product/0596005652?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596005652">class="alignnone size-full wp-image-2390" title="0596005652" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/0596005652.jpg" alt="" width="122" height="160" />

href="http://www.amazon.com/gp/product/0596005652?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596005652">Understanding the Linux Kernel, Third Editionsrc="http://www.assoc-amazon.com/e/ir?t=rexsblahblahb-20&l=as2&o=1&a=0596005652" border="0" alt="" width="1" height="1" /> 這本由兩位博士 Daniel P. Bovet 與 href="http://www.sprg.uniroma2.it/home/cesati/">Marco Cesati 所撰寫,從 2000 年底出版之後,到 2005 已經是第三版,介紹的核心是 2.6.24。有href="http://www.anobii.com/books/LINUX%E6%A0%B8%E5%BF%83%E8%A9%B3%E8%A7%A3%EF%BC%88%E4%B8%89%E7%89%88%EF%BC%89/9789867794833/01a1519d5282b63a4a/">中譯版。

此書結構以流水帳方式帶過各個子系統,但稍嫌膚淺的僅僅介紹表面的細節,未能給予概觀性的理論說明,也未能直指程式核心。篇幅常用於註記資料結構或函式用途,適合想尋著麵包屑理解 Linux kernel 運作的探險家使用。

href="http://www.amazon.com/gp/product/0470343435?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0470343435">title="0470343435" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/0470343435.jpg" alt="" width="128" height="160" />

href="http://www.amazon.com/gp/product/0470343435?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0470343435">Professional Linux Kernel Architecture 在2008 年出版,作者是 Wolfgang Mauerer,作者的背景是量子物理學家。在沒有社群內知名開發者的背書與協助下,他完成了一本巨大的書籍,篇幅高達 1368 頁。

有別於 title="Understanding the Linux Kernel">UTLK,也許是為了非科班出生的讀者,作者試著詳盡的敘述作業系統的基本概念,另外一方面也以程式碼告訴讀者 Linux 的運作模式。

如果你讀不下純粹理論導向的作業系統教科書,而想透過 Linux理解一個作業系統的設計原理,這是適合你的書。本書基於 Linux kernel 2.6.24.

href="http://www.amazon.com/gp/product/0672329468?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0672329468">class="alignnone size-full wp-image-2409" title="0672329468" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/0672329468.jpg" alt="" width="124" height="160" />

身為知名的 kernal hacker, href="http://rlove.org/">Robert Love 在 href="http://www.amazon.com/gp/product/0672329468?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0672329468">Linux Kernel Development (3rd Edition) 一書中為讀者拆解 Linux kernel source tree, 直接從設計理念切入,酌以程式碼輔助,讀者需要有作業系統理論素養以及 Linux 開發經驗,才能消化理解筆者的解剖。最新第三版發表於 2010 年初版,更新到 2.6.34.

簡體中譯版 href="http://www.books.com.tw/exep/prod/china/chinafile.php?item=CN10623111">Linux 内核设计与实现 翻譯自 Linux Kernel Development 第二版。正體中文版有維科圖書有限公司出版沈中庸, 沈彥男翻譯的 href="http://www.anobii.com/books/Linux_%E6%A0%B8%E5%BF%83%E9%96%8B%E7%99%BC%E6%8C%87%E5%8D%97,_2e/9789867503084/01f52037ae93f55382/">Linux 核心開發指南, 2/e。

href="http://www.amazon.com/gp/product/0596002556?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596002556">class="alignnone size-full wp-image-2413" title="0596002556" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/0596002556.jpg" alt="" width="122" height="160" />

href="http://www.amazon.com/gp/product/0596002556?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596002556">Linux Network Internals 的作者是 href="http://benve.info/">Christian Benvenuti,發表於 2005 年。少數專談 Linux Network stacks 的書籍,作者循序的從設定工具、核心啟動開始,逐一介紹 封包傳送接受、Bridging、IPv4、Neighboring Subsystem 與 Routing。

書中涵蓋了 Layer 2, Layer 3 等協定, 可惜遺漏了 IPv6, title="Internet Group Management Protocol">IGMP, title="Protocol Independent Multicast">PIM, Traffic Control, href="http://www.netfilter.org">Netfilter, Virtual devices (802.1Q, bonding, IPIP, GRE) 等等重要原件。讀者需要基本開發能力與網路協定常識。此書有href="http://www.oreilly.com.tw/product2_linux.php?id=a204">中譯版。

href="http://www.amazon.com/gp/product/1584504811?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1584504811">class="alignnone size-full wp-image-2426" title="1584504811" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/1584504811.jpg" alt="" width="127" height="160" />

href="http://www.amazon.com/gp/product/1584504811?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1584504811">The Linux TCP/IP Stack: Networking for Embedded Systems href="http://www.amazon.com/gp/product/1584502843?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1584502843">第一版發表與 2004 年,最新href="http://www.amazon.com/gp/product/1584504811?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1584504811">第二版 2006 年,針對的版本是 2.6.16,作者是 Thomas F. Herbert。此書對於讀者的定位不明。雖然意圖以一個章節討論嵌入式系統中的 TCP/IP Stack,但除了說明一般嵌入式系統需求外,缺乏實際有用資訊。

書籍想涵蓋各種 TCP/IP Stack 所涵蓋的項目,但章節設計雜亂,從基本的 Network Stack 開始介紹,對於 API 部分又缺乏系統性描述。既無法瞭解網路協定,或撰寫網路程式或作業系統核心架構。

書中時常夾雜敘述與程式碼,令讀者難以連貫消化,讀者需要開啟原始程式碼才能領會作者的。這是一本關於網路協定的原始碼註記,適合已具核心開發經驗的開發者參考使用,考量其版本日期,書籍的功能可能比自行追蹤程式碼的效用還差。另外,若你想瞭解嵌入式系統,這也不是你該買的書。

href="http://www.amazon.com/gp/product/0596005903?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596005903">title="0596005903" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/0596005903.jpg" alt="" width="122" height="160" />

href="http://www.amazon.com/gp/product/0596005903?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596005903">Linux Device Drivers, 3rd Editionsrc="http://www.assoc-amazon.com/e/ir?t=rexsblahblahb-20&l=as2&o=1&a=0596005903" border="0" alt="" width="1" height="1" /> 的作者是 href="http://www.oreillynet.com/pub/au/592">Jonathan Corbet (href="http://lwn.net/">LWN 的href="http://en.wikipedia.org/wiki/LWN.net">創辦人)、href="http://www.linux.it/~rubini/">Alessandro Rubini、href="http://www.kroah.com/linux/">Greg Kroah-Hartman。即便 LDD3 已經出版許久,還是所有想寫 Linux kernel driver 的第一優先入門參考書阿。此書有href="http://www.oreilly.com.tw/product_linux.php?id=a184_toc">中譯版。

LDD3 務實的從實做範例開始,帶領讀者理解各種 subsystem,含括了入門操作與基本觀念,對於初次開發 title="linux kernel module">lkm 的開發者提供了燈塔般的指引。

LDD3 授權採 href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA 2.0,線上版可於此下載 href="http://lwn.net/Kernel/LDD3/" target="new_win">http://lwn.net/Kernel/LDD3/。但由於書籍年代較久,針對的核心版本為 2.6.10,書中範例需要一點調整才能正常運作。已有同好改了幾份擺在  github (href="https://github.com/jesstess/ldd3-examples/">jesstess, href="https://github.com/martinezjavier/ldd3">martinezjavier).

href="http://www.amazon.com/gp/product/0132396556?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0132396556">class="alignnone size-full wp-image-2414" title="0132396556" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/0132396556.jpg" alt="" width="115" height="160" />

href="http://www.amazon.com/gp/product/0132396556?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0132396556">Essential Linux Device Drivers 的作者是長期在 IBM 工作的 href="http://elinuxdd.com/~elinuxdd/elinuxdd.docs/aboutme.html">Sreekrishnan Venkateswaran,參與 href="http://www.research.ibm.com/WearableComputing/linuxwatch/linuxwatch.html">Linux Watch, href="http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Device-Profile-CDL-Paron-secure-PDA/">PDA, href="http://www.hill-rom.com/usa/NaviCare_NurseCall.htm">Nurse Call Systems, href="http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Device-Profile-Merlin-Patient-Care-System/">Merlin Patient Care System 等等開發專案。有正體中譯版 href="http://www.anobii.com/books/Linux%E9%A9%85%E5%8B%95%E7%A8%8B%E5%BC%8F%E9%96%8B%E7%99%BC%E5%AF%A6%E6%88%B0/9789866348174/017600ce73d44ab65e/">Linux驅動程式開發實戰 以及簡體中譯版 href="http://www.anobii.com/books/Essential_Linux_device_drivers/9787115206473/019c9e0bf8b5932e5f/">精通Linux驅動程序開發。

這本書是作者的實務工程筆記,出版於 2008 年,針對核心為 2.6.23/2.6.24,透過此書新手可以從中漫遊一個深具經驗的開發者,如何從原始碼迷霧之中理解 Linux device  driver,老手或可從雜亂的描述中再次驗證自己的理解。

雖然篇幅高達 744 頁,卻被引用程式碼佔了許多頁面。這本書不足以提供開發者撰寫驅動程式的基本觀念,也無法協助理解作業系統概觀。

作者另有一小冊 href="http://www.anobii.com/books/Debugging_Linux_Systems/9780136123545/01c4d74310f48c2430/">Debugging Linux Systems 電子書短短九十頁,帶過幾個常見的核心除錯工具與技巧,很有實務參考價值。

href="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/0131181637.jpg" rel="lightbox[2380]">class="alignnone size-full wp-image-2479" title="0131181637" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/0131181637.jpg" alt="" width="82" height="110" />

id="static_txt_preview" href="http://www.amazon.com/gp/product/0131181637/ref=as_li_ss_tl?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0131181637">《The Linux(R) Kernel Primer: A Top-Down Approach for x86 and PowerPC Architectures》 出版於 2005 年,作者是 Claudia Salzberg Rodriguez, Gordon Fischer, Steven Smolski。有href="http://www.anobii.com/books/The_Linux_Kernel_Primer_%E4%B8%AD%E6%96%87%E7%89%88/9789867199614/013342e1203c95f23a/">中文版,但href="http://joyueng.twbbs.org/2006/12/31/the-linux-kernel-primer-chinese-edition/">評價頗差。

書名讓人非常期待總算有一本核心介紹書籍 x86 外的硬體平臺,畢竟 href="http://en.wikipedia.org/wiki/Reduced_instruction_set_computing">RISC vs href="http://en.wikipedia.org/wiki/Complex_instruction_set_computing">CISC 架構的不同, href="http://en.wikipedia.org/wiki/Endianness">endianness, href="http://en.wikipedia.org/wiki/Data_structure_alignment">alignment, href="http://en.wikipedia.org/wiki/Calling_convention">calling convention 等,應當有許多寫核心驅動程式應該注意得事項。但是整本書只在 2.2 節稍微說一下寫 Assembly 時,PowerPC, x86 的指令差異,剩下的細節根本沒提!

整本書還是著重在一般核心的結構介紹。

而書中除了少量的插圖之外,根本沒有沒有多少邏輯上的說明跟描述。通篇拆解程式碼,對資料結構作註解。這些資訊任何有點基礎的工程師都可自行閱讀程式碼及程式碼註解。新入門工程師還可能因爲書中解釋而疑惑。

除非你想寫沒有價值的書評,否則不建議購買。

href="http://www.amazon.com/gp/product/0131492470/ref=as_li_ss_tl?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0131492470">class="alignnone size-full wp-image-2480" title="0131492470" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2011/03/0131492470.jpg" alt="" width="83" height="110" />

id="static_txt_preview" href="http://www.amazon.com/gp/product/0131492470/ref=as_li_ss_tl?ie=UTF8&tag=rexsblahblahb-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0131492470">Linux(R) Debugging and Performance Tuning: Tips and Techniques 出版於 2005, 作者是 Steve Best。此書少見的從除了應用程式之外,還從核心切入的除錯、效能測試書籍,因爲這方面的技術資訊總是一下就超過保鮮期。

作者試著含括基本的 Profiling 實務開始,介紹 gdb, 應用程式記憶體管理,再講核心的各種資訊界面。很可惜,以一本專講除錯與效能測試的書來說,範例與介紹過於粗淺,以第十二章 Dynamic Probes 為例,其介紹深度可能還比不上 href="http://www.kernel.org/doc/Documentation/kprobes.txt">Documents/kprobes.txt 中的概念介紹與 IBM developerWorks 的href="http://www.ibm.com/developerworks/library/l-kprobes.html">範例介紹。

適合剛切換到 Linux 的開發者,可概略學得各種基本開發工具者的入門資訊。

2011-03-17 18:00 更新/>

增列相關中譯版本連接,感謝 href="http://blog.ansoncat.com/">ansoncat 告知資訊。

src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=2380&type=feed" alt="" />

虛擬硬碟對拷以及重建 UUID - VirtualBox 篇

2011/6/15 0:11:00 | 凍仁的 Ubuntu 筆記
凍仁近幾個月都用 Debian (Host) + Windows XP (Guest) 上班比較多,當中也會遇到得雙開 XP 的情形發生。

要怎麼建置第二個 XP 呢?曾試過 Clonezilla 的備份還原方案,除了會失敗以外這還是個笨方法!好在虛擬機器們都有提供虛擬硬碟(*.vdi)對拷的解決方案(Solutions)。

使用 VM 工具複製 vdi 並重新產生 UUID


jonny@host-linux:~$ VBoxManage clonevdi guest-xp.vdi guest-xp2.vdi Enter
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 973184af-47fd-47f3-97ed-d4ded73724d1

手動複製 vdi 後使用 VM 工具重新產生 UUID

只有手動複製 vdi 是無法在 VirtoalBox 裡正常使用的。
jonny@host-linux:~$ cp guest-xp guest-xp2

搭配 VirtualBox 管理工具修改 UUID。
# VirutalBox 4.0 以上請使用以下指令
jonny@host-linux:~$ VBoxManage internalcommands sethduuid guest-xp2.vdi Enter
UUID changed to: 646660cb-2681-4702-bed8-30a40cf48ef0

# VirutalBox 3.2 以下請改用以下指令。
jonny@host-linux:~$ VBoxManage internalcommands setvdiuuid guest-xp2.vdi Enter

資料來源:
VirtualBox 兩三事: 複製vdi 及 修改 uuid « Ant's ATField