sudo
tar -xvf linux-2.6.35.tar.xz -c /usr/src/
cd /usr/src
第二步:安裝編譯核心時需要的工具(sudo apt install)
sudo
apt-get
install build-essential kernel-package libncurses5-dev
第三步:配置編譯原始碼切換至root使用者 sudo su
make menuconfig
make
size expression for do_hypervisor_callback does not evaluate to a constant
/tmp/ccinj1ii.s: assembler messages:
/tmp/ccinj1ii.s: error: .size expression for do_hypervisor_callback does not evaluate to a constant
make[2]: *** [arch/x86/kernel/entry_64.o] 錯誤 1
make[1]: *** [arch/x86/kernel] 錯誤 2
make: *** [arch/x86] 錯誤 2
解決方式:
vi arch/x86/kernel/entry_64.s
end(do_hypervisor_callback)改為end(xen_do_hypervisor_callback)
修改,在do前面加上xen_(wq儲存退出再make)
cc arch/x86/vdso/vgetcpu.o
cc arch/x86/vdso/vvar.o
vdso arch/x86/vdso/vdso.so.dbg
gcc: 錯誤: elf_x86_64:沒有那個檔案或目錄
make[2]: *** [arch/x86/vdso/vdso.so.dbg] 錯誤 1
make[1]: *** [arch/x86/vdso] 錯誤 2
make: *** [arch/x86] 錯誤 2
解決方式:
vi arch/x86/vdso/makefile
進去:set nu顯示行號 找對應行
1 修改28行,將-m elf_x86_64 修改為-m64;
2 修改72行,將-m elf_i386 修改為-m32
duplicate member 『page』
解決方式
這個錯排完就能正常make了
第四步:執行sudo make modules_install install,這部應該是可以直接編譯和安裝模組,就不需要先make modules(編譯核心)再make modules_install(安裝核心)了。
第五步:執行sudo make install安裝核心;
第六步:配置grub引導。
執行命令sudo gedit /etc/default/grub,配置/etc/default/grub檔案在檔案中新增grub_timeout_style=menu,grub_hidden_timeout=0改為大於0的數即可,執行命令update-grub;執行完這一步基本上就完成了核心的編譯和安裝,重啟ubuntu就行了。
Linux 2 6 驅動模板
obj m vs10xx.o vs10xx objs vs10xx.o kerneldir home kerson linux 2.6.39 pwd shell pwd modules make c kerneldir m pwd modules cp vs10xx.ko armnfs phony ...
Linux2 6程序切換
1.程序切換是指 儲存prev程序的上下文,用next的上下文替代。其中上下文包括 頁全域性目錄 核心態堆疊 硬體上下文。2.80x86為程序切換提供的硬體支援 第一種 通過任務門 第二種 通過jmp和call指令 把硬體上下文存在tss中,執行這條指令時,通過硬體自動切換tss,完成硬體上下文的過...
Linux2 6系統呼叫
一 引入系統呼叫 1.概念 作業系統為在使用者態執行的程序與硬體裝置進行交到提供了一組介面。linux通過向核心發出系統呼叫來實現這些介面 2.作用 對硬體裝置操作的程式設計更容易 提高了系統的安全性 使程式更有可移植性 3.進入系統呼叫的兩種方法 1 int 0x80彙編指令 2 sysenter...