虚拟机内核编译
⑴ 虚拟机上编译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”是否已在内核中:
编写测试程序,调用新添加的系统调用:
测试成功,说明系统调用添加成功,进而说明内核编译成功!
以上的办法你可以试一下,希望对你有所帮助。