虛擬機內核編譯
⑴ 虛擬機上編譯linux內核,重啟後,不能正常進入系統,顯示出現這樣的問題:
希望你用的boot loader舊的菜單項還在,這樣的話你可以選那條boot起來然後重新編譯;
你的問題感覺上file system沒有編譯進內核,所以沒有辦法mount分區;
或者你的boot loader的菜單項沒配置好;
⑵ Linux內核源碼如何編譯Ubuntu源代碼在哪裡呢
編譯linux內核步驟:
1、安裝內核
如果內核已經安裝(/usr/src/目錄有linux子目錄),跳過。如果沒有安裝,在光碟機中放入linux安裝光碟,找到kernel-source-2.xx.xx.rpm文件(xx代表數字,表示內核的版本號),比如RedHat linux的RPMS目錄是/RedHat/RPMS/目錄,然後使用命令rpm -ivh kernel-source-2.xx.xx.rpm安裝內核。如果沒有安裝盤,可以去各linux廠家站點或者www.kernel.org下載。
2、清除從前編譯內核時殘留的.o 文件和不必要的關聯
cd /usr/src/linux
make mrproper
3、配置內核,修改相關參數,請參考其他資料
在圖形界面下,make xconfig;字元界面下,make menuconfig。在內核配置菜單中正確設置個內核選項,保存退出
4、正確設置關聯文件
make dep
5、編譯內核
對於大內核(比如需要SCSI支持),make bzImage
對於小內核,make zImage
6、編譯模塊
make moles
7、安裝模塊
make moles_install
8、使用新內核
把/usr/src/linux/arch/i386/boot/目錄內新生成的內核文件bzImage/zImage拷貝到/boot目錄,然後修改/etc/lilo.conf文件,加一個啟動選項,使用新內核bzImage/zImage啟動。格式如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux-new ### 告訴lilo預設使用新內核啟動linux ###
append="mem=256M"
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda5
image=/boot/bzImage(zImage)
label=linux-new
read-only
root=/dev/hda5
保留舊有的啟動選項可以保證新內核不能引導的情況,還可以進入linux進行其他操作。保存退出後,不要忘記了最重要的一步,運行/sbin/lilo,使修改生效。
9、重新生成ram磁碟
如果您的系統中的/etc/lilo.conf沒有使用了ram磁碟選項initrd,略過。如果您的系統中的/etc/lilo.conf使用了ram磁碟選項initrd,使用mkinitrd initrd-內核版本號,內核版本號命令重新生成ram磁碟文件,例如我的Redhat 6.2:
mkinitrd initrd-2.2.14-5.0 2.2.14-5.0
之後把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:
initrd=/boot/initrd-2.2.14-5.0
ram磁碟能使系統性能盡可能的優化,具體參考/usr/src/linux/Documents/initrd.txt文件
10、重新啟動,OK!
⑶ Ubuntu虛擬機里怎麼編譯內核
方法/步驟
」Ctrl+Alt+T」進入終端,使用命令 sudo passwd root 啟動root賬號,重啟,使用 su 命令獲得root許可權;
安裝編譯內核所需軟體包
# apt-get update
# apt-get install build-essential kernel-package libncurses5-dev fakeroot 選擇Y
下載3.19.3源碼包並解壓
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.19.3.tar.xz
# tar -Jxvf linux-3.19.3.tar.xz
配置內核
# cd linux-3.19.3 (cd命令進入源碼目錄)
# make mrproper (得到源代碼後,將其凈化)
# make menuconfig (對內核選項進行配置,不需要配置,直接enter)
# cp /boot/config-'uname -r'-generic ./.config ('uname -r'-generic指現版本內核)
# make clean (刪除配置時留下的一些不用的文件)
編譯內核(需要很長時間,我用了有兩小時,請耐心等待)
# make bzImage
# make moles (編譯模塊)
安裝新內核
# make moles_install (安裝模塊)
# make install
製作啟動盤
# sudo mkinitramfs 3.19.3 -o /boot/initrd.img-3.19.3
更新grub2
# sudo update-grub2
重啟,使用新內核(不是注銷哦,是重啟)
使用命令# uname -r 查看內核版本
⑷ Ubuntu虛擬機里怎麼編譯內核
方法/步驟
」Ctrl+Alt+T」進入終端,使用命令 sudo passwd root 啟動root賬號,重啟,使用 su 命令獲得root許可權;
安裝編譯內核所需軟體包
# apt-get update
# apt-get install build-essential kernel-package libncurses5-dev fakeroot 選擇Y
下載3.19.3源碼包並解壓
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.19.3.tar.xz
# tar -Jxvf linux-3.19.3.tar.xz
配置內核
# cd linux-3.19.3 (cd命令進入源碼目錄)
# make mrproper (得到源代碼後,將其凈化)
# make menuconfig (對內核選項進行配置,不需要配置,直接enter)
# cp /boot/config-'uname -r'-generic ./.config ('uname -r'-generic指現版本內核)
# make clean (刪除配置時留下的一些不用的文件)
編譯內核(需要很長時間,我用了有兩小時,請耐心等待)
# make bzImage
# make moles (編譯模塊)
安裝新內核
# make moles_install (安裝模塊)
# make install
製作啟動盤
# sudo mkinitramfs 3.19.3 -o /boot/initrd.img-3.19.3
更新grub2
# sudo update-grub2
重啟,使用新內核(不是注銷哦,是重啟)
使用命令# uname -r 查看內核版本
⑸ 用的是虛擬機,redhat9 linux內核是2.4.20,我編譯的也是/usr/src/linux-2.4.20-8的內核就是想看看怎麼編譯
生成鏡像出錯,建議換種方法重新編譯,編譯的時候原來的內核不要刪除,萬一不成功的話可以用先前的內核
⑹ linux 在虛擬機中編譯完內核後無法啟動了怎麼辦~~~
不想修改grub的話可以先光碟啟動,然後把光碟中/boot裡面的內核文件和/lib/moles/**下的文件拷入硬碟對應的文件夾,替換你自己編譯的內核~
⑺ 新手box虛擬機如何編譯vboxdrv內核
先啟動開發機。然後啟動目標機,開機時按Esc建選擇有kgdb的內核啟動,等待一下後啟動過程會暫停並提示等待遠程gdb調試,這時切換到開發機並進入到源碼目錄下,運行
gdb ./vmlinux
gdb啟動後,使用以下命令設置波特率和調試終端:
(gdb)set remotebaud 115200
(gdb)target remote /dev/ttyS0
⑻ Ubuntu虛擬機里怎麼編譯內核
Ubuntu虛擬機里怎麼編譯內核?Ubuntu編譯內核的教程網上有很多,但大多是雙系統或者單獨的Linux系統,虛擬機環境中的Ubuntu編譯內核方法還是有些不同,下面我們一起來看看虛擬機Ubuntu系統內核編譯的教程
http://www.jb51.net/os/Ubuntu/307573.html
⑼ 請問大神們Ubuntu虛擬機自己編譯Linux3.12.5內核後,配置從剛編譯的內核啟動是出現這問題。什麼情況
初始化進程執行失敗,計算機執行時,首先加電檢查硬體,其實執行grub,為系統載入做准備,而後運行init進程,從上面可以看到「Failed to execute /init"說明初始化失敗,你編譯內核是存在問題的
⑽ 如何重新編譯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」是否已在內核中:
編寫測試程序,調用新添加的系統調用:
測試成功,說明系統調用添加成功,進而說明內核編譯成功!
以上的辦法你可以試一下,希望對你有所幫助。