《精通Linux设备驱动程序开发》——1.7 编译内核
本節書摘來自異步社區《精通Linux設備驅動程序開發》一書中的第1章,第1.7節,作者:【印】Sreekrishnan Venkateswaran(斯里克里斯漢 溫卡特斯瓦蘭)著,更多章節內容可以訪問云棲社區“異步社區”公眾號查看
1.7 編譯內核
了解了內核源碼樹布局后,現在我們來對代碼稍做修改,并編譯和運行它。進入位于頂層的init/目錄,對初始化文件main.c做一項小的修改,即在start_kernel()函數的開頭加上一行打印信息,宣布你對北極熊的喜愛:
asmlinkage void __init start_kernel(void) {char *command_line;extern struct kernel_param __start___param[],__stop___param[];+ printk("Penguins are cute, but so are polar bears\n");/* ... */rest_init(); }編譯內核準備工作已經就緒,進入內核源碼樹并運行清除命令:
bash> cd /usr/src/linux-X.Y.Z/ bash> make clean接下來進行內核配置工作。這一步的主要工作是選擇要編譯的組件,你可以指定需要的組件以靜態還是動態鏈接的方式編譯進內核:
bash> make menuconfig
menuconfig是內核配置菜單的文本界面,使用make xconfig可以產生一個圖形界面。所選擇的配置信息被存放在內核源碼樹根目錄的.config文件中。如果不想從頭開始進行配置,可以使用 arch/your-arch/defconfig作為起點或者若你的體系架構支持多個平臺,也可以用)arch/your-arch/ configs/your-machine_defconfig文件作為起點。因此,如果正在為32位x86體系架構編譯內核,運行如下命令:
bash> cp arch/x86/configs/i386_defconfig .config
編譯內核并產生一個壓縮的啟動映像:
bash> cp arch/x86/boot/bzImage /boot/vmlinuz
現在,內核映像將位于arch/x86/boot/bzImage,更新啟動分區:
也許需要根據新的啟動映像更新引導程序。如果正在使用GRUB這個引導程序,它將自動完成配置;如果正在使用LILO,請增加一個標記:
**<pre class="代碼無行號"><code><strong>****bash> /sbin/lilo**</strong> Added linux * </code></pre>最后,重新啟動Linux并啟動到新內核:
bash> reboot
啟動后的第一條信息顯示了你添加的喜愛北極熊的那句話。
總結
以上是生活随笔為你收集整理的《精通Linux设备驱动程序开发》——1.7 编译内核的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 借助 Evolution Linux 的
- 下一篇: 《数据分析变革:大数据时代精准决策之道》