Linux

A collection of 15 posts

Linux

You Window Manager #3

在 X window 下要有半透明視窗效果,會需要至少 XComposite extension XDamange extension XFixes extension 用這些 extension 做半透明視窗功能的程式,就叫 Composite Manager (也是 X window client)。在如 metacity, mutter, compiz, kwin 中都有實現。 上面的 extension 中,一定要有 XComposite。它可以告訴 X window server 說:嘿,請把這個 window 的內容給我。那 X window

Linux

You Window Manager #2

在 Xlib 中,看 document 都會跟你說這個 function 有錯誤發生時候丟出如 BadAlloc 這樣的 error。但看 function prototype 又不一定有直接的 return value(因為動作的發生是 async 的,所以在 function return 時 error 可能還未發生),那,到底 error 是怎麼去接的?不接又會如何? 原來,在 Xlib 中提供了 XSetErrorHandler() function 可供設定 error callback。如果沒有設定這個 error callback,那

Linux

sudo: must be setuid root

為了跟桌面系統環境切割乾淨, 開發環境以 chroot 進入. 進入後, 會為使用者自動建立 account, 這樣在開發時大部份時間以 non-privilege user 進行, 必要時以 sudo 執行特定命令以減少問題的發生. 先前發生了一個問題困擾了我很多天. 在公司可以用的 chroot 環境 (放在一顆獨立的 SATA HDD 中), 拿到家中使用居然就不能執行 sudo 了, 怎麼回事? 網上看了不少文章, 都是讓人確認 /bin/usr/sudo 的 owner 以及 group 都是 root (root:root) /bin/usr/sudo 的 owner

Linux

PHY

上週為客戶新買的板子 - 裝 Gentoo Linux,搞網路的部份時發現了好玩的東西。 以前機器上的 NIF (Network Interface) 通常都是一塊完整的網卡,也就是至少有自己的 MAC address,可能會有自已的 BIOS 及提供網路開機功能。但這塊主機版上的 chip set - Intel P965 整合了 Marvell 的網路 PHY。 為啥會知道這個什麼 PHY 勒,主要是因為在 build kernel 時,要確認加進網卡的 driver,所以會先用 lspci 看看有什麼週邊 plug 在 PCI bus 上,

Linux

RAID 建立記錄

前一陣子在搞我家的 server。因為更早之前硬體出了問題,就停了很久的機… 在回復的過程中,不小心把上面的 software RAID 搞壞了,唉~資料只好重新收集了。 以下為 RAID 建立的過程。 切割 HD 一共有三顆 HD,各為 160GB,分割如下 Disk Drive: /dev/hda Size: 160039272960 bytes, 160.0 GB Heads: 255 Sectors per Track: 63 Cylinders: 19457 Name Flags Part Type FS

Linux

Linux 的 initrd

以前我一直搞不懂 initrd 是做啥用的,呵!最近搞 windows CE BSP 再看了下面兩篇文章,就清楚很多了,想搞 linux 的人可以好好看看,不管是程式開發或是系統管理,瞭解一下原理都會有很大的幫助。 先簡單的說明一下 initrd 的功用: x86 Linux 在開機時,分成幾個階段。當 BIOS POST(Power On Self Test) 後會載入指定開機裝置上的 bootloader,這塊區域的大小只有 512 bytes,所以沒法放入很複雜的程式,因此這段碼主要是用來載入 bootloader 的 second stage。Second stage 的 code

Linux

Hardware::Hot swap SATA HD supported in windows XP

之前架的 server, 是以哥哥換下來的電腦加上新買的 3 顆 SATA HD 再以 Linux Software RAID & LVM2 組在一塊的(boot 是 RAID 0,root 10,data & var 放在加了 LVM 的 RAID 5 上),很不錯用。 跑了一陣子發現,雖然是 software RAID,但是 linux kernel 的 interrupt handle latency tune 得很好,在高流量時整個系統的反應還是非常的快速。

Linux

Hardware::IDE DMA timeout

前幾天開始玩 XEN + Gentoo linux,想試試這個 Machine Monitor 的能耐如何。裝完以後重開,發現在驅動 IDE 時會有 DMA timeout 的情況發生。於是,重開回 windows 再用 VMware boot 進去,是 OK 的…好吧,檢查了 kernel configuration,有一個 DMA 相關的設定,也許會有影響,就將它關了再重開機,還是 timeout,shoot。 再試一次,開機時增加 kernel parameter 如下 ide=nodma

Linux

Linux::UML

Kernel level 的東西不好搞的原因是一旦 kernel 掛了,整個系統也會跟著死掉。有時候想試寫個 moduel insert 進 kernel 跑跑看,或是想打個看似很不錯用的 patch,但又怕把現有的系統搞到連機都開不了。這時候可以試試 UML(User Mode Linux),它提供一個完整的 linux 執行環境但又只跑在 user mode 中,就算這個亂搞的 kernel 當了也不需要重新開機(因為執行於 user mode,對 kernel 來說只不過是當掉了一個 application 罷了)。 不過,很可惜的,跟其他 linux 上好玩的玩具一樣,UML 也不是那麼好裝的。

Linux

Linux::Initrd

以前玩 Linux 的時候一直不清楚啥米是 initrd,直到搞了 base porting 之後,接觸了 bootloader、bootstrap 才瞭解原來 OS 在啟動前都需要做些什麼事。也才知道為什麼明明有些 file system driver 沒有 build in 到 kernel 裡,確能被 load 進 kenrel 並提供 file system service。你也不是很清楚嗎?呵,下面這兩篇文章可以解你的惑,以後就不用把所有的 driver 都 build 進 kernel 囉! Linux2.6