1. 程式人生 > >Linux核心啟動函式start_kernel的簡單分析

Linux核心啟動函式start_kernel的簡單分析

歐長坤
原創作品轉載請註明出處
《Linux核心分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000
這學期學校恰好有作業系統的課程,上個學習就開始尋思研究研究Linux核心程式碼,恰好MOOC有這個課程,遂選了此課。

一、準備工作

廢話不多說,命令一行行敲下去,搭建好環境。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 cd~/Work/  wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.xz  xz -d linux-3.18.6.tar.xz  tar-xvf linux-3.18.6.tar  cdlinux-3.18.6  makei386_defconfig  make   cd~/Work/  mkdirrootfs  git clone  https://github.com/mengning/menu.git# 話說這裡為什麼用MenuOS 我個人覺得老師一來是節約編譯時間 二來也可以做做廣告
cdmenu sudoapt-get installlibc6:i386 lib32stdc++6 # 這兩行安裝非常有必要 sudoapt-get installlib32readline-gplv2-dev # 在64bit的Ubuntu環境下不能編譯這個MenuOS的roofs 需要這些包來支援 即使用了-m32 gcc-o init linktable.c menu.c test.c -m32 -static -lpthread  cd../rootfs cp../menu/init./  find

相關推薦

Linux核心啟動函式start_kernel簡單分析

歐長坤 原創作品轉載請註明出處 《Linux核心分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000 這學期學校恰好有作業系統的課程,上個學習就開始尋思研究研究Linux核心程式碼,恰好MOOC有這個

Linux核心啟動第二階段之setup_arch函式分析

轉自:http://blog.chinaunix.net/uid-20672257-id-2383451.html 執行setup_arch()函式 回到start_kernel當中,569行,呼叫setup_arch函式,傳給他的引數是

分析Linux核心啟動過程:從start_kernel到init

cd ~/LinuxKernel/ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.xz xz -d linux-3.18.6.tar.xz tar -xvf l

Linux核心啟動過程分析(十)-----RTC驅動分析

參考https://blog.csdn.net/xuao20060793/article/details/46433263這篇博文 RTC驅動分析: Class.c (drivers\rtc):subsys_initcall(rtc_init); static int __init

Linux核心啟動流程分析(一)

1. 依據arch/arm/kernel/vmlinux.lds 生成linux核心原始碼根目錄下的vmlinux,這個vmlinux屬於未壓縮,帶除錯資訊、符號表的最初的核心,大小約23MB;  命令:arm-linux-gnu-ld -o vmlinux -T a

Linux 核心啟動資訊的列印 --- dev_driver_string函式/dev_name函式

核心啟動時,常會打印出一些資訊:開頭是 "驅動模組的名字: + 具體的資訊"如:在執行的linux系統裝置上,插入滑鼠,就會打印出滑鼠的相關資訊;[ 402.134068] input: USB Optical Mouse as /devices/soc0/soc/2100

學習筆記 --- LINUX核心啟動第二階段分析(不考慮自解壓過程)

上篇文章中分析了Linux核心從head.s啟動: .section ".text.head", "ax" ENTRY(stext) setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 @ ensure svc mode

Linux核心啟動過程分析

    1、Linux核心啟動協議     閱讀文件\linux-2.6.35\Documentation\x86\boot.txt     傳統支援Image和zImage核心的啟動裝載記憶體佈局(2.4以前的核心裝載就是這樣的佈局):     |            

linux核心啟動2_setup_arch函式

執行setup_arch()函式 回到start_kernel當中,569行,呼叫setup_arch函式,傳給他的引數是那個未被初始化的內部變數command_line。這個setup_arch()函式是start_kernel階段最重要的一個函式,每個體系

利用GDB跟蹤分析linux核心啟動

1. 實驗準備 1. 下載程式碼3.18.6到linux環境下面中, cd ~/LinuxKernel/ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.xz

如何調整Linux核心啟動中的驅動初始化順序-驅動載入優先順序

轉載自:http://zhidao.baidu.com/link?url=adCsiTiI7i3QVYrTx19jkt_FvBV2VlQ4NV18pEu6Kdi4Yhv0ryauD3LHj1pxGE-YP8M_PxZnHNy-hVKBvzJOkPfqehZmR9CQm5GZ5XZDx-O Lin

linux 核心 - ioctl 函式詳解

1. 概念 ioctl 是裝置驅動程式中裝置控制介面函式,一個字元裝置驅動通常會實現裝置開啟、關閉、讀、寫等功能,在一些需要細分的情境下,如果需要擴充套件新的功能,通常以增設 ioctl() 命令的方式實現。 在檔案 I/O 中,ioctl 扮演著重要角色,本文將以驅動開發為側重

EasyDarwin流媒體伺服器啟動函式StartServer程式碼分析

在前面部落格中分析EasyDarwin字典類QTSS_Dictionary時瞭解到相關QTSS_DictionaryMap,QTSSAttrInfoDict等屬性內容,其初始化分配記憶體是在伺服器啟動的時候。 正好回過來分析伺服器的初始化啟動函式QTSS_ServerSta

linux核心啟動中的初始化

                轉自 http://blog.csdn.net/mayaoyao11/article/details/6636977 【問題】 此處我要實現的是將晶片的ID用於網絡卡MAC地址,網絡卡驅動是enc28j60_init。 但是,讀取晶片ID的函式,在as352x_afe

基於Linux核心的UDP協議原始碼分析

  當一個數據包(package)經過IP層的處理之後,最終呼叫ip_local_deliever()函式,這個函式會根據這個資料包(packet)的傳輸層頭兒確定其採用的傳輸協議,如果是UDP協議,將會呼叫udp_rcv()函式。至此,進入傳輸層的範圍。 UDP協議棧的報頭定義如下:

omapl138移植uboot系列之修改移植TI官方移植的Linux核心(啟動核心第二篇)

修改Linux核心原始碼     實際上,剛剛我們已經成功的啟動了TI移植過的Linux核心,但是從串列埠控制檯的現象來看,“Starting Kernel”之後什麼資訊都沒有輸出,這就需要我們在TI移植過的核心原始碼之上進行相應修改,以適合我們的639A板卡。

Linux核心 指標函式函式指標

       首先,要區分函式指標和指標函式。函式指標和指標函式從語文的角度看,應該算是一個偏正短語,函式指標說明是一個指標,而指標函式說明是一個函式;其是什麼樣的指標、什麼樣的函式,我們先暫且不論。明確函式指標是指標,指標函式是函式,這才是最重要的。下面在來看這是一個什

Android 8.0 系統啟動流程之Linux核心啟動--kernel_init程序(三)

    在上一篇文章中詳細的分析了kthreadd程序的啟動,init程序也是有idle程序去觸發啟動的,init程序分為前後兩部分,前一部分是在核心啟動的,主要是完成建立和核心初始化工作,內容都是跟Linux核心相關的;後一部分是在使用者空間啟動的,主要完成A

linux 核心啟動錯誤和selinux引數 Kernel panic -not syncing:Attempted to kill init

今天在裝某個軟體的時候,修改了selinux引數。修改selinux 的某個引數值為Disable。導致 linux系統不能啟動。出現如下錯誤 Kernel panic -not syncing:Attempted to kill init! 後經過向群友請教和

協議棧之一:《linux核心網路棧原始碼情景分析》.(曹桂平)

在工作中或多或少需要和協議棧打交道,因為公司的策略,公司自有的協議棧基本都是基於開源協議棧的理解重寫的協議棧,在可維護性和效能方面均比開源軟體強勢很多,可惜在公司時更多是呼叫API,並未從頭到尾研究過一個完整的協議棧。從事網路工作沒有研究過完整的協議棧,不得不說是個嚴重的缺