"Love is the death of duty.
If the day should ever come when your lord father was forced to choose
between honor on the one hand and those he loves on the other,
what would he do ?
What is honor compared to a woman's love ?
And what is duty against the feel of a newborn son in your arms ?
Or a brother's smile ?
We're all human.
We all do our duty when there's no cost to it.
Honor comes easy then.
Yet sooner or later in every man's life there comes a day
when it is not easy,a day when he must choose."
--- Aemon Targaryen
A Song of Ice and Fire [冰與火之歌-權力遊戲]
搜尋此網誌
中央氣象局:高雄市今明天氣預報
2012年11月21日 星期三
2012年11月6日 星期二
2012年11月5日 星期一
使用ubuntu 編譯核心 玩system call
System Call
學號:49975025
編譯環境:
VirtualBox 3.2.8 r64453
Ubuntu 10.04
原核心版本:
linux 2.6.32
編譯核心版本:linux 2.6.34.13
編譯步驟:
1.在/linux/arch/x86/kernel/syscall_table_32.S 中加入新的system call 名稱
.long sys_名稱
2.在/linux/arch/x86/include/asm/unistd_32.h中,
定義步驟一的system call與呼叫的編號,並且將syscalls
的總數加一
#define __NR__名稱 338
NR_syscalls
(338 +1) -> 339
3./linux/arch/x86/include/linux/syscall.h中新增system call 函式定義
asmlinkage
int sys_名稱(void);
4.在/linux/kernel/名稱.c 中加入自訂的system call內容
5.在/linux/kernel/Makefile
中加入
名稱.o 到obj-y 下
6.編譯kernel前加入套件 #sudo apt-get install libncurses5-dev
7.重新編譯核心
在/linux下執行指令
#make mrproper (清除核心功能選擇檔)
#make menuconfig (挑選核心功能)
#make bzImage (編譯經壓縮過的核心)
#make modules (編譯模組)
#make modules_install (安裝模組)
#make install (安裝核心)
8.更新多重核心選單(grub)
#sudo gedit /etc/default/grab
#update-initramfs -c -k 核心版本 (建立initrd的image檔)
#updata-grub
9.寫一個C程式呼叫system call
10.編譯並執行程式
#gcc new.c
#./a.out
#dmesg | tail
問題與討論:
起初make menuconfig 過不了,加了套件(apt-get install libncurses5-dev)
後才成功。
編譯核心完成後,碰到沒有辦法切換和新的問題,將/etc/default/grub中的grub時間改長一點,加上updata-grub後解決。
最早用的核心版本與OS是linux 2.6.18 & Ubuntu 11.04 ,但編譯完成後一直無法開機,上網查資料後推測可能是ubuntu版本太新無法相容,之後才改成現在的這個版本。
最後,即使換了版本依然碰到無法開機的問題,加上 指令#update-initramfs -c -k 核心版本 後克服( ubuntu 10 以後的版本不會自動產生該檔案)。
附圖:
Server & Pc 差異
任務特性不同
PC (Desktop/NB) 是給個人用的, 出再多問題, 影響的也只是使用的「一個人」而已;
Server 是給一群人用的, 少則數十人, 多則成千上百, 甚至幾十萬人, 稍有閃失, 影響層面難以估計.
PC 追求個人使用上的聲光效果體驗, 與個性化的自主性
Server 追求高負載的能力和穩定性, 與管理上的便利性
電源供應器
Server 經常都具備 Redundant Power Supply (雙電源)的規格, 這點幾乎沒有一台 PC 可以達到. 理由當然不用多說, 只要回顧上面所提到的任務特性即知.
存活能力
從上面電源供應器的例子, 我們可以了解 Server 必須比 PC 有更高的存活能力, 在某些零件故障時, 還能夠繼續運轉下去. 基於這樣的概念, 於是就發展出許多獨門的存活技術.
整體效能
PC 玩家常以「超頻」來取得更多的 CPU 效能, 但對於講求「穩定」的 Server 來說, 超頻的風險太大, 通常都以 Multi-way CPU 來解決. PC 鮮少有配備兩顆以上的 CPU 插座(Socket), 但是 Server 除了最低階的機型以外, 中階機型至少配備 2~4 個 CPU 插座, 高階機種則有 8 個以上的 CPU 可以使用.
管理能力
談到管理, 這點就是 PC 望塵莫及的地方了. 大部分的 PC 玩家, 如果沒有在企業環境中長期工作過, 不會覺得管理能力有甚麼了不起的地方.
但是企業的環境多變, 很多狀況下, IT 人員可能無法親自前往 Server 放置的地點操作, 近者也許相差幾層樓, 但偏偏你就是分不開身, 無法走過去; 遠則可能在另外一個城市, 或是另外一個國家, 就算你就空可以去, 所花費的時間和旅行成本, 是企業沉重的負擔.
因此第一個管理能力就因此而誕生: 就是能夠遠端管理 Server 的能力.
第二種管理能力, 就是 Server 能夠做自我診斷, 目前也沒有一台 PC 能做到.
維護保固
Server 還有個很重要的附加價值, 就是原廠的維護服務 (雖然還是要用錢買, 但仍很重要...)
不管你自己有多麼厲害, 多麼會修電腦, 在企業營運裡面, 千萬不要把這個責任攬到自己身上, 因為修得好只是剛好, 修不好就都是你的錯. 如果你買了原廠保固維護服務, 只要輕鬆地打一通電話給原廠客服, 剩下的就聽他們指令來動作, 如果需要派工到場維修, 你也可以名正言順的告訴公司其他部門:「我們已經報修了喔, 現在只要等工程師來, 在這之前, 都不關我的事.....」
資料來源:http://tinyurl.com/b23y3k5
[Xampp]mysql 中文編碼 / 顯示中文字
在phpmysqlg上查詢mysql編碼(SQL指令):
show variables like '%character%';
[新增資料庫]
charset 請選擇 UTF-8 Unicode (utf8)
collation 請選擇 utf8_general_ci (ci 代表 case insensitve 大小寫沒差)
[修改資料庫]-SQL語法
alter database myblog
character set utf8;
show variables like '%character%';
[新增資料庫]
charset 請選擇 UTF-8 Unicode (utf8)
collation 請選擇 utf8_general_ci (ci 代表 case insensitve 大小寫沒差)
[修改資料庫]-SQL語法
alter database myblog
character set utf8;
2012年11月4日 星期日
windows 7的睡眠與休眠
文章出自:http://save-coco.blogspot.tw/2009/11/windows-7.html
睡眠(Sleep) 將系統切換到該模式後,然後使計算機進入低功耗狀態,除保留必要電力,如記憶體,電腦其他設備的供電都將中斷,這樣當使用者希望恢復作業的時候,就可以直接恢復到睡眠前狀態。這種模式的恢復速度是最快的,一般五秒之內就可以恢復。
但必須小心的是,如果在睡眠的狀態下供電發生異常(例如停電),那麼下一次就只能重新開機,所以睡眠前未保存的資料都會遺失。
休眠(Hibernate) 將系統切換到該模式後,系統會自動將記憶體中的資料,全部存到硬碟上,然後中斷對所有設備的供電,就如同關機一樣,不會耗用任何電力。當恢復作業的時候, 系統會從硬碟將記憶體的內容直接讀入,並恢復到休眠之前的狀態。這種模式不怕休眠後供電異常,但代價是這種模式的恢復速度較慢,一般大約要1至2分鐘左 右。
交互式睡眠 (又稱混合式睡眠) 「交互式睡眠」主要是針對桌上型電腦所設計的功能 。交互式睡眠是睡眠與休眠的組合,它會將記憶體的內容同時存到硬碟,然後再使電腦進入低電力狀態,這樣就可以快速地繼續工作,同時不用害怕電力發生中斷。 因為如果發生電源中斷,Windows 可以從硬碟還原您的工作。桌上型電腦的交互式睡眠通常預設為開啟。這是因為桌上型電腦,通常沒有像筆記型電腦一樣的電池當備用電力。因此如果意外發生電源 中斷,標準睡眠模式中的桌上型電腦可能會發生資料遺失。
睡眠(Sleep) 將系統切換到該模式後,然後使計算機進入低功耗狀態,除保留必要電力,如記憶體,電腦其他設備的供電都將中斷,這樣當使用者希望恢復作業的時候,就可以直接恢復到睡眠前狀態。這種模式的恢復速度是最快的,一般五秒之內就可以恢復。
但必須小心的是,如果在睡眠的狀態下供電發生異常(例如停電),那麼下一次就只能重新開機,所以睡眠前未保存的資料都會遺失。
休眠(Hibernate) 將系統切換到該模式後,系統會自動將記憶體中的資料,全部存到硬碟上,然後中斷對所有設備的供電,就如同關機一樣,不會耗用任何電力。當恢復作業的時候, 系統會從硬碟將記憶體的內容直接讀入,並恢復到休眠之前的狀態。這種模式不怕休眠後供電異常,但代價是這種模式的恢復速度較慢,一般大約要1至2分鐘左 右。
交互式睡眠 (又稱混合式睡眠) 「交互式睡眠」主要是針對桌上型電腦所設計的功能 。交互式睡眠是睡眠與休眠的組合,它會將記憶體的內容同時存到硬碟,然後再使電腦進入低電力狀態,這樣就可以快速地繼續工作,同時不用害怕電力發生中斷。 因為如果發生電源中斷,Windows 可以從硬碟還原您的工作。桌上型電腦的交互式睡眠通常預設為開啟。這是因為桌上型電腦,通常沒有像筆記型電腦一樣的電池當備用電力。因此如果意外發生電源 中斷,標準睡眠模式中的桌上型電腦可能會發生資料遺失。
訂閱:
文章 (Atom)