#编译内核
1.下载源码2.6的最新版本,这样能减少补丁错误。https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/
2. 将新下载的内核解压到/usr/src 目录下,
tar -xvf linux-2.6.xxx
3.安装相关依赖
sudo apt-get install build-essential kernel-package libncurses5-dev
在安装时可能会出现如下错误
可以通过如下方法解决
sudo apt-get install aptitude
sudo aptitude install build-essential #第一次选n,第二次y,这样就好了
4.将原系统内核的配置文件拷贝到新内核目录下,原内核可以通过uname -a
查看
sudo cp /usr/src/linux-headers-xx-gen /usr/src/xxx
5. sudo make x86_64defconfig
6. sudo make menuconfig
这里可能如果开了tmux由于屏幕的原因呢就会弹出一个屏幕小的警告信息,需要全屏显示就能执行了。
然后再菜单中往下拉到 有个load config 选择默认 再 save config 再选择确认后退出
7. sudo make
这里可能会报错,一般错误在网上都能找到解决方法
‘arch/x86/vdso/vdso.so.dbg’: No such file或者是提示gcc: error :elf_x86_64: 没有那个文件或目录,这个可能的原因是高版本的ubuntu跟低版本的内核不兼容。解决的办法是在arch/x86/vdso/Makefile中做一些修改:VDSO_LDFLAGS_vdso.lds 开头所在行的 “-m elf_x86_64” 替换为 “-m64”。将以 VDSO_LDFLAGS_vdso32.lds 开头所在行的
“-m elf_386” 替换为 “-m32”。 这么修改之后就没问题了
8. sudo make bzImage
8. sudo make modules
对加载的的模块进行编译
这里可能会弹出一个需要安装 一个modules-init-tools 的工具,按照要求装就ok
9. sudo make modules_install
安装内核模块
10.sudo make install
安装内核 这一步会将由make bzImage产生的System.map, vmlinux,config,initrd.img文件拷贝到用于存放系统启动影像的目录/boot/下,当然这些文件会根据你的内核源码的版本生成不同的文件名
11.如果系统是通过grub 进行引导启动的,那么就对grub启动进行配置,在目录/boot/grub/grub.cfg。其实运行完make install后会自动修改grub.cfg文件,更改grub文件只需要更改/etc/default/grub 然后sudo update-grub,而不要直接修改/boot/grub/grub.cfg
sudo gedit /etc/default/grub
这里就是GRUB_TIMEOUT_STYLE=menu,GRUB_HIDDEN_TIMEOUT=0改为大于0的数即可,执行命令update-grub;执行完这一步基本上就完成了内核的编译和安装,重启ubuntu应该就行了
sudo update-grub
12.reboot 后出现这个报错
CONFIG_DEVTMPFS这个是2.6.34才加入的配置项,对于以前的版本是没有的。
而较新版本的udev需要这个东西才能挂载/dev,一个可能的解决方法是修改/etc/mtab,
修改udev /dev devtmpfs rw,mode=0755 0 0
为udev /dev tmpfs rw,mode=0755 0 0
出现上面这个的原因是修改系统文件时,不能使用sudo ,要用内置的系统管理员权限,gksudo
但是修改完之后,重新启动后又恢复原样?
这里了如果用gksudo vi 进行编辑 进入后直接就是编辑界面。我的是2.6.39因此还是没有成功。