uclinux啟動過程詳細分析
serial_xx: setup_console @ 115
串口設置值為115200,此為波特率輸出信息。對串口設置的信息做一個打印的動作,在調試時會非常有用。
Calibrating delay loop…… 82.94 BogoMIPS Calibrate:校準, 進入時延校準循環(huán)。檢查CPU的MIPS(每秒百萬條指令),Bogo是Bogus(偽)的意思。這里是對CPU進行一個實時測試,來得到一個大體的MIPS數值。
上面這個輸出,在所有的linux系統(tǒng)啟動中都會打印出來。
進入內存初始化:mem_init(void), [arch/i386/mm/init.c]
Memory: 80MB = 80MB totalMemory: 76592KB available (1724K code, 2565K data, 72K init)
當前內存使用情況,將列出總的內存大小, 及分配給內核的內存大?。喊ùa部分,數據部分,初始化部分,總共剛好4M。請留意此處的內核的內存大小的各個值。
進入虛擬文件系統(tǒng)VFS初始化:vfs_caches_init()
Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 4096 (order: 2, 16384 bytes)
Page-cache hash table entries: 32768 (order: 5, 131072 bytes)
在內存中建立各個緩沖hash表,為kernel對文件系統(tǒng)的訪問做準備。
VFS(virtual filesystem switch)虛擬文件切換目錄樹有用到類似這樣的結構表。
上面的輸出信息,在一般的linux啟動過程中都會看到。
POSIX conformance testing by UNIFIX
conformance:順應, 一致。即POSIX適應性檢測。UNIFIX是一家德國的技術公司,Linux 原本要基于 POSIX.1 的, 但是POSIX 不是免費的, 而且 POSIX.1 證書相當昂貴。 這使得 Linux 基于 POSIX 開發(fā)相當困難。 Unifix公司(Braunschweig, 德國) 開發(fā)了一個獲得了 FIPS 151-2 證書的 Linux 系統(tǒng)。 這種技術用于 Unifix 的發(fā)行版 Unifix Linux 2.0 和 Lasermoon的 Linux-FT。
在2.6的內核中就將上面的這句輸出給拿掉了。
*************************************************************************
第二節(jié):用戶模式( user_mode )開始,start_kernel結束
圖 3:用戶模式初始化
PCI: bus0: Fast back to back transfers disabled
PCI: Configured XX as a PCI slave with 128MB PCI memory
PCI: Each Region size is 16384KB
PCI: Reserved memory from 0x10080000 to 0x15080000 for DMA and mapped to 0x12000000
設備的初始化 init()——》do_basic_init()——》pci_init(),初始化PCI,檢測系統(tǒng)的PCI設備。
Linux NET4.0 for Linux 2.4Based upon Swansea University Computer Society NET3.039
英國威爾士,斯旺西大學的NET3.039, TCP/IP 協(xié)議棧。
此信息,在linux啟動過程中都會出現。
Initializing RT netlink socket
對Socket的初始化, socket_init(),Netlink 一種路由器管理協(xié)議(linux-2.4.22/net/core/Rtnetlink.c,Routing netlink socket interface: protocol independent part。 其中RT是route路由的意思。這句輸出是在create產生rtnetlink的socket套接字時的一個調試輸出。)
此信息,在linux啟動過程中都會出現。
Starting kswapd
啟動交換守護進程kswapd,進程IO操作例程kpiod。
kswapd 可以配合kpiod運行。進程有時候無事可做,當它運行時也不一定需要把其所有的代碼和數據都放在內存中。這就意味著我們可以通過把運行中程序不用的內容切換到交換分區(qū)來更好的是利用內存。大約每隔1秒,kswapd醒來并檢查內存情況。如果在硬盤的東西要讀入內存,或者內存可用空間不足,kpiod就會 被調用來做移入/移出操作。kswapd負責檢查,kpiod負責移動。
Journalled Block Device driver loaded
加載日志塊設備驅動。
日志塊設備是用來對文件系統(tǒng)進行日志記錄的一個塊設備。日志文件系統(tǒng)是在傳統(tǒng)文件系統(tǒng)的基礎上,加入文件系統(tǒng)更改的日志記錄。
它 的設計思想是:跟蹤記錄文件系統(tǒng)的變化,并將變化內容記錄入日志。日志文件系統(tǒng)在磁盤分區(qū)中保存有日志記錄,寫操作首先是對記錄文件進行操作,若整個寫操作由于某種原因(如系統(tǒng)掉電)而中斷,系統(tǒng)重啟時,會根據日志記錄來恢復中斷前的寫操作。在日志文件系統(tǒng)中,所有的文件系統(tǒng)的變化都被記錄到日志,每隔一定時間,文件系統(tǒng)會將更新后的元數據及文件內容寫入磁盤。在對元數據做任何改變以前,文件系統(tǒng)驅動程序會向日志中寫入一個條目,這個條目描述了它將要做些 什么,然后它修改元數據。
devfs: v1.12c (20020818) Richard Gooch ([email protected])devfs: boot_options: 0x1
Devfs模塊的輸出信息。設備文件系統(tǒng)devfs,版本1.12c
pty: 256 Unix98 ptys configured
Pty模塊的輸出信息,與控制臺操作有關的設置。
將通過 devpts 文件系統(tǒng)使用 Unix98 PTYs,(Pseudo-ttys (telnet etc) device是偽ttys設備的縮寫。
① TTY(/dev/tty)是TeleTYpe的一個老縮寫,為用戶輸入提供不同控制臺的設備驅動程序。它的名字來源于實際掛接到UNIX系統(tǒng)的、被稱為電傳打字機(teletype)的終端。在Linux下,這些文件提供對虛擬控制臺的支持,可以通過按到鍵來訪問這些虛擬控制臺。這些虛擬控制臺提供獨立的、同時進行的本地登錄對話過程② ttys(/dev/ttys)是計算機終端的串行接口。/dev/ttyS0對應MS-DOS下的 COM1。
使 用 make dev腳本MAKEDEV來建立pty文件。這樣系統(tǒng)內核就支持Unix98風格的pty了。在進行Telnet登錄時將要用到/dev/pty設備。 pty是偽終端設備,在遠程登錄等需要以終端方式進行連接,但又并非真實終端的應用程序中必須使用這種設備,如telnet或xterm等程序。 Linux 2.2以后增添了UNIX98風格的Pty設備,它使用一個新的文件系統(tǒng)(devpts針對偽終端的文件系統(tǒng))和一個克隆的設備cloning device來實現其功能。
評論