Linux kernel 分析之一 核心映象

2021-07-03 22:27:03 字數 676 閱讀 3655

跌跌撞撞的在軟體開發行業這麼久了,各種語言也都見識過了各種平台也都差不多見識了一下,但都了解不夠深入,唯獨對linux核心知之甚少,想想今天開始學習還來得及,所以just do it....

首先,什麼是核心?

目前,只知道編譯核心後,產生乙個叫bzimage的壓縮核心映象。它不同於任何普通的可執行程式。我們甚至不知道它從**開始執行。只知道把它往/boot/下一放,往boot loader的配置檔案(例如grub的menu.lst)中寫上相關資訊,機子就順利啟動了。因此,我對它的生成過程產生了濃厚興趣。於是,我檢視了相關資料,最直接的資料來自於arch/i386/boot/下的makefile。

從makefile中可以知道。bzimage的產生過程是這樣的:

從arch/i386/boot/makefile和arch/i386/boot/compressed/makefile中可以看出(具體過程省略,)

1.先生成vmlinux.這是乙個elf可執行檔案

2.然後objcopy成arch/i386/boot/compressed/vmlinux.bin,去掉了原elf檔案中的一些無用的section等資訊。

3.gzip後壓縮為arch/i386/boot/compressed/vmlinux.bin.gz

4.把壓縮檔案作為資料段鏈結成arch/i386/boot/compressed/piggy.o

Linux kernel的中斷子系統之(一) 綜述

一 前言 乙個合格的linux驅動工程師需要對kernel中的中斷子系統有深刻的理解,只有這樣,在寫具體driver的時候才能 1 正確的使用linux kernel提供的的api,例如最著名的request threaded irq request irq 介面 2 正確使用同步機制保護驅動 中的...

分析函式之一

1.row number 的使用原表資訊 sql break on deptno skip 1 為效果更明顯,把不同部門的資料隔段顯示。sql select deptno,ename,sal 2from emp 3order by deptno,sal desc deptno ename sal 1...

linux kernel 啟動流程簡單分析

ping linux 核心啟動的時候,總是從start kernel 這個函式作為入口。start kernel完成了對各種資源的初始化。隨後,呼叫了rest init 完成對init程序的啟動。我們用gdb跟蹤linux kernel 核心啟動可以看到。1.我們把斷點置於start kernel ...