發表文章

目前顯示的是有「Kernel」標籤的文章

Ubuntu 升級 2.6.33 Kernel 筆記

網路高手整理的作法: How To Compile A Kernel - The Ubuntu Wa y 不過照步驟做時,發現一個問題,錯誤的訊息如下: echo "The UTS Release version in include/linux/version.h"; echo " \"\" "; echo "does not match current version:"; echo " \"2.6.33-rc1-amd64\" "; echo "Please correct this."; exit 2 The UTS Release version in include/linux/version.h "" does not match current version: "2.6.33-rc1-amd64" 原因是UTS_RELEASE在2.6.32之後被換地方放了,修正方法如下: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=561569 修改debian/ruleset/misc/version_vaer.mk檔案, 把 echo include/linux/version.h; 換成 echo include/generated/utsrelease.h; 即可 編譯完成之後就可以直接用dpkg安裝,重新開機就OKAY了

Virtualbox 3 vs CentOS 5 High CPU Loading bugfix

在Virtualbox 3 中(Windows Host)安裝CentOS 5後發現一個問題 就算CentOS持續保持IDLE,但是Windows端的Cpu loading依舊很高 T2400 2GHz dual-core的CPU可以吃到百分之五十 痛苦的爬文測試過程跳過 .... 發現這篇文章: 50-100% Cpu time with centos guest 原來是CentOS預設的HZ常數高達1000,對於系統造成很大的負擔 解法很簡單,只要加入"divider=10"到 kernel boot command line就好 改過之後,Loading剩下十分之ㄧ,反應就正常多了. 給大家參考

Linux 開機時期保留記憶體實做

在LDD一書中提過要獲取大量連續記憶體有幾種方法 1) 設定cmdline parameter mem=XXM 2) 在開機時候保留記憶體 之前適用第一種方法,但是要boot loader配合 這次實驗第二種方法,於是開始HACK KERNEL 函示原型跟標頭檔如下: #include linux/bootmem.h void *alloc_bootmem(unsigned long size); void *alloc_bootmem_low(unsigned long size); void *alloc_bootmem_pages(unsigned long size); void *alloc_bootmem_low_pages(unsigned long size); 實做步驟: 1) 修改init/main.c,找到start_kernel函示 2) 在setup_arch(..)之後,加入alloc_bootmem_XX的程式碼 3) 把得到的指標export出來,大功告成

Linux USB mass storage porting guide

今天接收到一個任務,是在ARM的版子上加入USB SD讀卡機的功能, 本想說是個簡單任務,只要把以下幾項加入就OKAY了 #USB support CONFIG_USB=y #platform specific CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y #IXP host driver CONFIG_USB_EHCI_HCD=y CONFIG_IXP4XX_USB_EHCI_HCD=y #USB storage CONFIG_USB_STORAGE=y #SCSI support CONFIG_SCSI=y #SCSI storage device CONFIG_BLK_DEV_SD=y CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y 可是卻得到以下的錯誤: usb 2-1: USB disconnect, address 2 usb 1-1: new high speed USB device using ixp4xx-ehci and address 2 usb 1-1: configuration #1 chosen from 1 choice scsi1 : SCSI emulation for USB Mass Storage devices Vendor: Generic Model: USB SD Reader Rev: 1.00 Type: Direct-Access ANSI SCSI revision: 00 SCSI device sda: 497664 512-byte hdwr sectors (255 MB) sda: Write Protect is off sda: assuming drive cache: write through SCSI device sda: 497664 512-byte hdwr sectors (255 MB) sda: Write Protect is off sda: assuming drive cache: write through sda: unknown partition table 找了一下,在Par...

Linux NFS root FS note

文件:(kernel)/Documentation/nfsroot.txt 中文網站: http://my.opera.com/checko/blog/show.dml/96759 Kernel Options: File systems -> Network File System: NFS file system support [*] Root file system on NFS

Linux Kernel 的 Notify Chain 與應用

在很久很久以前有個遠的要命王國..... (下略...) 扯遠了,現在不是在演史瑞克... 早在Linux Kernel version 1.2.X時代(資料來源:LXR), 就有Notify Chain的設計了。 Notify Chain 就是核心裡面的Callback Function List 跟一般的Callback Function不同處就在於它是個LIST(廢話) 所以可以註冊一個以上的Callback。 對應的LIST處理函示有: notifier_chain_register notifier_chain_unregister notifier_call_chain 前面兩個是登錄跟註銷,最後是啟動整串Callback 典型的應用就是reset跟panic的處理, 可以加一大串對應的處理函示,相當方便。 另外如果核心程式有連動的需求,也可以自己創一個: static struct notifier_block *your_notifier_list;

Proc FS 實戰筆記

PROC是Linux檔案目錄化管理的一個實現,跟Dev FS一樣, 可以把系統狀態/控制整合成檔案的讀跟寫。 加上本來的PIPE跟強大的Shell Utils,不用Compiler就可以寫出強大的程序了。 不過這一切的基礎,就是要在Kerenl層跟Driver實做相關介面出來。 這次就是要分享實做過程。 PROC的原理很簡單,正如剛剛所述,是模擬成檔案系統的實做, 所以其實設定部分,只要指定檔案對應的讀、寫函示,還有對應的權限等就OKAY了。 過程跟程式碼就不貼了,附上網址給大家看,講的很詳細喔! PDF版: http://buffer.antifork.org/linux/procfs-guide.pdf HTML版: http://www.aoc.nrao.edu/~tjuerges/ALMA/Kernel/procfs-guide/index.html

Linux Serial Driver 系統架構

http://www.linux.it/~rubini/docs/serial/serial.html TTY在UNIX like 系統由來已久,所以架構發展也日趨複雜, 最近有用到這方面的資訊,就把這篇有用的文章放上來, 希望對於系統內部運作有更進一步的瞭解。