本網路資料依著作權法規定享有著作權,使用者除符合合理使用之情形外, 未經著作財產權人同意,請勿為其他之利用。 例如將網路資料重製後予以散佈或將網路資料改寫另為創作。
Linux 文章 網路文章 中國LINUX論壇 返回首頁





2008/12/18 感謝各位網友的支持,由於個人的因素,有關 Linux Kernel V2.4的研究要暫停。


Q&A
Q1: 我對 Linux kernel 有興趣,想請問這方面有什麼比較好的入門書或是資料可以看的嗎?
A1:比較好的入門書?ㄡ沒有看到比較好的入門書籍,我的學習方法為:
(一)學習如何安裝與使用 Linux 系統。
(二)練習如何編譯 Linux Kernel 程式碼。
(三)先看 Linux Kernel 中文版 ,學習 Linux Kernel 基本概念,看完會有似懂非懂的感覺。
(四)決定研讀 Linux Kernel 版本。
(五)直接看程式,但非常辛苦,有時一天看不到一行,常常需要在網路上找資料,最好有同伴一起,可以相互切磋,勉勵。
(六)過幾個月後,再重新看一遍,你會有新的領悟或了解。以作者本身為例,相隔一年後,再次重頭看起,以前不太了解
的部份,幾乎完全了解,才會有新版內容的誕生。


Q2:在 arch/i386/kernel/head.S中,quad是什麼資料型態?
A2:quad實際是 quad word,為 gas的保留字,大小為8Bytes,主要用於描述表的設置,如 GDT描述表。
留言版

面對將近100 MB的原始碼,想要入門是非常困難地。網路上有人利用Linux開 機過程秀在螢幕上的訊息(可利用dmesg指令察看一下Linux啟動時打出的訊息) 得知Linux開機時,程式被執行的順序如下: (1)linux/arch/i386/boot/bootsect.S (2)linux/arch/i386/boot/setup.S (3)linux/arch/i386/boot/compressed/head.S、misc.c (4)linux/arch/i386/kernel/head.S (5)linux/init/main.c (6)其它程式將系統運作起來。 Linux Kernel V2.4.8 入門就只針對上述提到的四個程式(第一到第四項),逐一做說明,詳情如下:
檔案由 Word直接轉為 HTML格式,作者沒有修改,會造成畫面有些雜亂。 95年10月13日重新看程式,對錯誤或部份內容做修改,內容更加完整與詳細,敬請期待新版內容。 改版建議、文章內容有錯誤或文句不通暢等問題,歡迎 E-mail留言通知站長。 網路上有讀者說到『文章刊載速度太慢』,那是因為文章已投稿至雜誌社,所以無法同步或早點刊出。
雜誌名稱 期 數內 容
電子情報307
94年2月

Linux Kernel入門              Linux Kernel 入門(一)bootsect.S

95/10/16 修改 bootsect.S程式第113行說明。

新版內容(95/10/22): Linux Kernel入門              第一章 bootsect.S

電子情報309
94年4月

Linux Kernel 入門(二)setup.S

95/10/15 將第225行錯誤說明(如下)移除。
225: movb (497), %bl #get setup sect from bootsect,bl=497
#boot sector=512-15=497 Byte指去除bootsect.S程式中第399~406行變數部份#

95/10/18將第221~240行錯誤說明(如下)移除。
#第221~240行:將LILO載入的四個磁區(512*4=2048,參考233行)由絕對位址
 0x90200搬移至0x10000。#

新版內容(95/10/23): 第二章 setup.S

電子情報311
94年6月
Linux Kernel 入門(三)head.S、misc.c

新版內容(95/10/23): 第三章 i386/boot/compressed/head.S、misc.c

電子情報312
94年7月
Linux Kernel 入門(四)head.S

95/10/24 文章部份內容有錯誤,先暫時停止瀏覽,造成不便,請多包涵。

新版內容(95/10/25): 第四章 arch/i386/kernel/head.S

電腦名詞翻譯變更:
Page Directory:頁目錄 改為『分頁目錄』。
Page Table :頁表 改為『分頁表』。
Page : 增加『分頁』。

電子情報326
95年9月

再談 Linux Kernel(一)main.c

對呼叫的函數做簡略說明,讓讀者了解整個流程,有可能隨著作者對函數的了解有所改變。
電子情報329
95年12月

再談 Linux Kernel(二)setup_arch函數


錯誤更正:
(1)第782~787行:原文為『如果是MCA則SYS_DESC_TABLE.length為1』
改為『如果SYS_DESC_TABLE.length不為0』。
(2)刪除第791~793行『值為0』的說明。
(3)刪除第553~600行『由於某些E820圖會有重覆的e820entry結構 ...』的說明。
電子情報331
96年02月

再談 Linux Kernel(三)paging_init函數

電子情報333
96年04月

再談 Linux Kernel(四)setup_arch函數

電子情報334
96年05月
再談 Linux Kernel(五)parse_options、trap_init函數
電子情報336
96年07月
再談 Linux Kernel(六) init_IRQ函數
電子情報336
96年09月
再談 Linux Kernel(七) sched_init()函數




網路文章      返回首頁
倘若您認為「本網站」內容或圖像侵害他人之著作權, 請通知站長, 站長看過 E-MAIL後會立即移除。
網站或網頁名稱內容簡介
Linux內核配置系統淺析 (大陸網站) 對 Linux Makefile 做介紹。
Memory Management in Linux 針對 Linux Kernel 有關記憶體部份,從頭開始做程式碼解說。
Linux運行時內核分析 Linux運行時內核分析第三、四版(PDF檔)。
Linux啟動過程 以 Redhat 6.0 為平台,述說 Linux V2.2與 V2.4 啟動過程。
IA-32 IntelR Architecture Software Developer's Manual Volume 3: System Programming Guide 簡體字版 翻譯完成第1、2、3、4、5、7、11、12章,需花點時間找尋。
TLB的基本概念 (大陸網站) TLB的基本概念介紹。
TLB內部組成及相關概念 (大陸網站) TLB內部組成及相關概念。
Linux對I/O端口資源的管理 對 /usr/src/linux/kernel/Resource.c 介紹。
Spinlock 簡介 對 spinlock 做介紹。
PORTS Common I/O Port Addresses 電腦常用 I/O Port Addresses 介紹。
Linux IP Networking(失鏈中) 介紹 Linux IP Networking For 2.2.14 版。
8253 Timer Chip 介紹 8253 晶片。
高級文件系統實踐者指南 各種常見的文件系統介紹(文章內容共13篇)。
AT&T 組合語言 AT&T 組合語法、GCC Inline ASM 做介紹。




倘若您認為「本網站」內容或圖像侵害他人之著作權, 請通知站長, 站長看過 E-MAIL後會立即移除。
在 中國LINUX論壇(大陸網站) 看到的討論

Linux內核技術精華區

重讀2.4(有許多程式解說文章)

Linux Kernel FAQ

Makefile 解讀

Linux Makefile 分析

解讀 vmlinux.lds.S 文件

Skbuff結構介紹(網路協議使用的緩衝區,PDF檔)

SK_BUFF圖形化簡介 (簡體版)

IPtables內核框架和應用層iptables命令圖形化概要分析 (將四個附加檔解壓縮)

JFF2文件系統分析(見附加檔案)    第二篇(見附加檔案)

Yaffs文件系統分析(見附加檔案)

位元操作的內核源碼剖析---分成上中下三篇(Linux Kernel 2.6.14)

Linux內核的中斷機制分析

Linux內核的 Softirq 機制

軟體中斷(一)、(二)

解讀 Softirq

軟體中斷 Softirq

中斷向量,IRQ,外部設備的關係分析

Linux內核的時間中斷機制

Unreliable Guide to Locking 中譯本

分析內核檢測CPU時鐘頻率的過程

Linux Kernel V2.6 信號燈(semaphore)源碼分析(參考附加檔案)

分析 calibrate_delay 過程

把linux kernel 2.4 上的driver 移植到 2.6 kernel 注意事項



Q001: Linux/arch/i386/boot/setup.S 中有關 SAFE_RESET_DISK_CONTROLLER 的問題?

Q002: __alloc_bootmem_core有關 preferred 的問題?

Q003: __alloc_bootmem_core有關 align <= PAGE_SIZE才能做合併的問題?

Q004: __alloc_bootmem_core有關 offset 問題?

Q005: HIGHMEM Completed Understanding 說明

Q006: Linux記憶體空間的布局(pagetable_init說明)

Q007: 當前 Linux Kernel FAQ 整理階段性 2002/07/08 成果

Q008: flush_tlb_xxx()

Q009: __setup函數、checksetup函數

Q010: asmlinkage 什麼意思?

Q011: trap_init函數。

Q012: lcall7

Q013:current 說明 第一篇第二篇第三篇Linux 2.6

Q014: #与##的意思

Q015: Port 0x80的功能

Q016: Port 0x61的功能

Q017: mb()的功能

Q018: softirq_pending說明

Q019: ENTRY巨集

Q020: test_wp_bit、do_test_wp_bit函數解說
返回首頁