原创 Linux網絡收包流程

關於linux網絡包的收發流程,網上隨便一搜都可以搜一桶,但自己不動手永遠都搞不原理。最近在家比較閒,對網絡這一塊也不太瞭解,老婆在看《三生三世枕上書》,我只能看下代碼打發下時間。     小編習慣熟悉內核子系統原理從低版本內核開始.  

原创 qemu聯網解決方案

在host端: 建立 bridge tap 設備 bridge和tap設備在linux中都屬於網絡虛擬設備,因爲數據包經過網絡協議棧通過物理網卡發送和接收同樣也能也能從軟件層面上代替物理網卡,經過網絡協議棧進行發送和接收。 bridge

原创 Linux內核入門回答

最近經常有人問我怎樣學習linux內核? 要回答這個問題,我非常同意郭健(郭大俠)的觀點,有一次他在一次linux深圳聚會上分享了他的觀點:     我自己學習linux內核看源代碼也是從linux0.12版本開始,源代碼量不多,但是基

原创 一步步利用Linux kernel漏洞(1-4)

  聲明: 我nice值至少爲0,利用Linux kernel 漏洞不是爲了做壞事,在這裏分享如何利用Linux kernel漏洞,在整個利用過程中掌握linux kernel的運行機制和原理 本篇爲本系列文章第一篇之背景介紹。   一共

原创 手把手教在Linux內核中埋炸彈獲取root權限

首先申明,我是一個好人,nice值至少爲0.本文章的目的是提醒程序員在編程中注意,以免讓nice值很低的人爲所欲爲。 本系列文章分爲兩篇,第一篇說明基本原理,第二篇是重頭戲。   怎樣在linux內核中任意踐踏內存內容: 在內核驅動中經常

原创 一個小實驗看清Linux內核調度機制

  0號進程(idle進程)完成一系列初始化之後,就進入一個while循環 While(1) { …. static void do_idle(void) { ….      schedule

原创 Linux內核機制第二集(字符設備)

掌握字符設備的實現要領,寫個簡單的字符設備也會風生水起。 <demo_chr_dev.c> #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h

原创 Linux內核機制第一集

想對Linux內核機制史無前例的清楚,最主要的就是落到實處,這也是我高中語文老師每天掛在嘴邊的話。 我們打算每星期討論一章的內容,可快可慢。 現在新建一個git倉庫,每個人把自己對上一回說的那本書中的每一章筆記都push上去,這樣除了對自

原创 Linux內核機制死磕探索

有沒有覺得自己對linux的認識,本以爲已經知道了大海的廣闊,其實自己還在海邊撿石子。   我用了1.4秒的時間想到能否利用衆人的力量去儘量弄懂Linux內核中的每一個細節。   發現一本2011年出版的書《深入Linux設備驅動內核機制

原创 第一個Linux內核patch

第一個Linux內核patch被收錄進Linus的代碼主線Linux5.2中。 https://github.com/torvalds/linux.git commit 38bb0baea310fc4b5897ec47b1546bc989

原创 ELF動態鏈接強操作

/* * hello.c  */ #include <stdio.h> int main(void) {         puts("Hello,world\n");         return 0; } gcc -c hello.c 

原创 qemu使用9pfs共享主機目錄

      對於經常使用qemu的人,經常要在guest中訪問host中的內容,或者要把一些日誌信息保存在host中,等等。雖然可以通過掛載虛擬磁盤,虛擬sd卡等方式共享文件,但不是很方便。  這個時候9pfs文件系統來了,可以用來共享h

原创 關於內核軟中斷的細節

問題:內核裏面的軟中斷能被中斷打斷,軟中斷被打斷之後,如果有在相同cpu上產生同樣的軟 中斷怎麼辦,會丟掉嗎?還是會怎麼處理? 參照Linux5.0的代碼:   #define in_interrupt()        (irq_co

原创 ELF簡單說

一.ELF的頭: ELF 的頭可以通過readelf -h  /bin/false獲得: program header:(程序執行的時候使用) section:(編譯鏈接的時候使用) section header table:(用來索引

原创 DeadLine調度器,以及文章後面的重要小話

1.實時調度策略:     比NORMAL和 FIFO/RR的優先級更高 2.實現的目的:     對於NORMAL和FIFO/RR的調度,他們的權重、優先級一山更比一山高,不能保證進程在規定的期限內調度,DeadLine就不一樣,在規定