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