linux內核編譯重新編譯
因為一般電腦安裝的系統都是Windows,而整個編譯過程都需要在Linux環境下實現,所以最好是在虛擬機里安裝Linux系統來完成這一過程。我使用的虛擬機是VMware-workstation-full-v7.1.4。
然後,我們需要下載一個較高版本的Linux系統的鏡像文件,安裝在虛擬機上,作為編譯環境。我使用的是ubuntu-11.04-desktop-i386。之所以選擇較高版本,是因為它的界面比較方便用戶操作。
然後下載一個Linux內核源代碼文件,將它保存到虛擬機上新安裝的系統中去。並解壓到/usr/src目錄。我使用的是linux-2.6.36,下載低版本的原因是,小巧輕便,易於編譯。
解壓命令如下:
bzip2 -d linux-2.6.36.tar.bz2
tar -xvf linux-2.6.36.ta
修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一個系統調用函數。自行編寫一個簡單的程序即可,只為測試用。
修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,為新添加的程序配置系統調用號。
在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系統調用表。
下面就是最重要的內核編譯與安裝:
首先配置編譯信息,使其生成適合當前機器的Makefile,輸入make oldconf ig。
接著還要輸入make menuconfig,在字元界面下進行必要的細微的修改。
然後要經過四步編譯過程(直接輸入命令即可):
(1)make bzImage
將內核編譯為壓縮映像,存儲在源碼根目錄下的「System.map」文件中。
(2)make moles
編譯各個模塊。
(3)sudo make moles_install
安裝模塊
(4)sudo make install
安裝內核
第(2)(3)步等待時間較長,可能需要數個小時,請耐心等待。
無報錯的話重啟進入GRUB界面,就可以看到新編譯的內核了。
按回車鍵進入我們編譯的目標內核中,用關鍵詞搜索查看新增加的系統調用「my call」是否已在內核中:
編寫測試程序,調用新添加的系統調用:
測試成功,說明系統調用添加成功,進而說明內核編譯成功!
以上的辦法你可以試一下,希望對你有所幫助。
『貳』 Linux內核重新編譯安裝後,分區會不會改變
不會, 內核跟系統是2個概念, 編譯安裝內核不是重裝系統 所以不會對分區造成任何影響
內核編譯好只是一個內核文件和相應的內核驅動, 內核文件放在 /boot下面用以啟動系統, 內核驅動一般放在 /lib/kernel 下面
『叄』 如何重新編譯修改後的Linux內核源代碼
Perl code?
make menuconfig
make all
make install
make moles_install
make firmware_install
『肆』 重新編譯Linux內核
不放以前的系統里放什麼地方?另一台計算機里?之後你這個機器啟動時自己跑到那台計算機上要數據啟動完後,在自己跑回來?
initrd 是內核啟動的一個虛擬的磁碟。作用是在 Linux 內核啟動時,不直接進入硬碟上的 root 分區,而是進入內存裡面的虛擬的 root 分區。
這個用意是當內核不能直接讀取硬碟時(比如用了內核沒有自帶的驅動的硬碟、分區。或者 root 分區在網路上)。那麼就可以用 initrd 裡面的驅動來過渡進入正確的 root ,或者乾脆就停在 initrd 模擬的內存檔裡面。
PS:我編譯內核都是 make xconfig ; make ; make moles_install ; make install
前3個不解釋,最好一個其實就是吧編譯好的內核復制到 /boot 裡面。並且根據這個目錄裡面的某些特點。進行一些操作。
『伍』 關於重新編譯Linux內核的問題
問題1,下載最新內核只需要有網路,能上網就行。你在哪個系統下載都可以。但是編譯需要在Linux裡面編譯,這樣方便。
問題2,編譯的過程很簡單,配置,然後就是make,再然後就是安裝。
但是,我想說的是,計算機的各種外網設備的驅動也是需要配置安裝的。更換內核後所有其他的東西都需要相應的更新。工程量浩大。
『陸』 linux 重新編譯kernel後不能正常啟動
從提示信息看,你的Linux系統使用LVM(邏輯卷管理),所以你編譯內核應該將lvm編譯進去,否則就找不到文件系統了。
『柒』 什麼情況下Linux內核不重新編譯
只要你代碼或配置有改動,都要重新編譯的,只是如果代碼寫成塊模式的,不用整個代碼都重新編譯,
編譯器
會自動編譯改動了的代碼。
『捌』 怎麼重新編譯linux伺服器內核
make
config首先配置內核,生成內核配置文件,如果是伺服器上的,建議使用編輯好的內核配置文件,自己在伺服器上配置比較麻煩;
make再根據生成的配置文件進行編譯;
找到新的內核就可以使用
『玖』 linux為什麼要重新編譯內核
.config 是配置編譯內核的最初步驟,你要編譯驅動程序,就必須要了解這個,多上網查下資料 然後重新編譯 Linux作為一個自由軟體,在廣大愛好者的支持下,內核版本不斷更新。 新的內核修訂了舊內核的bug,並增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的系統度身定製一個更高效,更穩定的內核,就需要重新編譯Linux內核。 通常,更新的內核會支持更多的硬體,具備更好的進程管理能力,運行速度更快、 更穩定,並且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統內核是Linux使用者的必要操作內容。 為了正確的合理地設置內核編譯配置選項,從而只編譯系統需要的功能的代碼,一般主要有下面四個考慮: (1)自己定製編譯的內核運行更快(具有更少的代碼) (2)系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中) (3)不需要的功能編譯進入內核可能會增加被系統攻擊者利用的漏洞 (4) 將某種功能編譯為模塊方式會比編譯到內核內的方式速度要慢一些 編譯內核時三個重要文件
『拾』 linux只想部分修改內核應該怎麼辦,是不是要重新編譯
如果只是修改內核的模塊內容,則可以不需要重新編譯,因為即使重新編譯非模塊部分還是原來的一樣。只需要改完後make moles 在make moles_install。這個過程中make moles會重新編譯內核的模塊,install則會把模塊放到/lib/moles/內核名 的文件夾里去,並且接下來運行depmod,重新生蟲*.dep文件,系統靠這個文件載入模塊。如果修改的是非模塊部分的話,那麼就一定要重新編譯了。