博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编译安装内核
阅读量:5949 次
发布时间:2019-06-19

本文共 4164 字,大约阅读时间需要 13 分钟。

编译安装内核

升级内核到 linux-4.20.3.tar.xz

查看当前内核版本:[root@centos7 data]#uname -r3.10.0-862.el7.x86_64获取内核源代码包:www.kernel.orglinux-4.20.3.tar.xz

==实施步骤

1. 安装编译所需的工具 gcc ncurses-devel make(开发工具)2. 下载内核源码a. www.kernel.org(最新)b. ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server    ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6Server3. 解压linux-4.20.3.tar.xz4. 配置内核编译的参数make menuconfig5. 开始编译make                                      //等价于这两个命令make bzImage  make modules6. 安装模块make modules_install                      //安装到了 /lib/modules/$(uname -r)7. 安装内核make install                              //安装到了 /boot8. 检查 ls /boot, /boot/grub/grub.conf, /lib/modules

==具体实施

1、安装工具:

[root@centos7 data]#yum -y install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof
tcpdump wget ntpdate net-tools iotop bc zip unzip

[root@centos7 data]#yum -y install ncurses-devel

[root@centos7 linux-4.20.3]#yum -y install elfutils-libelf-devel //第一次编译时报错,未安装此包。

  1. 上传安装包,解压

    [root@centos7 data]#tar xvf linux-4.20.3.tar.xz //解压
    [root@centos7 data]#cd linux-4.20.3/
    [root@centos7 linux-4.20.3]#cp /boot/config-3.10.0-862.el7.x86_64 .config //准备文本配置文件

  2. 配置内核选项

    [root@centos7 linux-4.20.3]#make menuconfig
    [root@centos7 linux-4.20.3]#less .config |grep NTFS
    CONFIG_NTFS_FS=m

    CONFIG_NTFS_DEBUG is not set

    CONFIG_NTFS_RW=y

    可选操作:定制kernel版本名

    [root@centos7 linux-4.20.3]#head Makefile

    SPDX-License-Identifier: GPL-2.0

    VERSION = 4

    PATCHLEVEL = 20
    SUBLEVEL = 3
    EXTRAVERSION =
    NAME = Li xinzhou

  3. 开始编译make

    [root@centos7 linux-4.20.3]#make -j 8 && echo -e '\a'

  4. 安装模块

    [root@centos7 linux-4.20.3]#make modules_install

    第一次遇到下面的错误:

    ln: target ‘Linux/source’ is not a directory
    make: *** [modinst] Error 1

    原因:     内核配置项General setup——》Local version - append to kernel release,所填内容有空格。

    解决办法:

    删除空格,然后make modules, 再安装模块。由于版本信息改变,需要重新编译安装内核。

  5. 安装内核相关文件

    [root@centos7 linux-4.20.3]#make install
    sh ./arch/x86/boot/install.sh 4.20.3-1.0-xinzhoulinux arch/x86/boot/bzImage \
    System.map "/boot"

    安装bzImage为/boot/vmlinuz-VERSION-RELEASE生成initramfs文件编辑grub的配置文件
  6. 检查 ls /boot, /boot/grub2/grub.cfg, /lib/modules

    [root@centos7 linux-4.20.3]#ls /boot/ //查看是否有新kernel
    config-3.10.0-862.el7.x86_64 symvers-3.10.0-862.el7.x86_64.gz
    efi System.map
    extlinux System.map-3.10.0-862.el7.x86_64
    grub System.map-4.20.3-1.0-xinzhoulinux
    grub2 vmlinuz
    initramfs-0-rescue-18ed42c1c89e4d28870e69320e88d637.img vmlinuz-0-rescue-18ed42c1c89e4d28870e69320e88d637
    initramfs-3.10.0-862.el7.x86_64.img vmlinuz-3.10.0-862.el7.x86_64
    initramfs-4.20.3-1.0-xinzhoulinux.img vmlinuz-4.20.3-1.0-xinzhoulinux

    [root@centos7 linux-4.20.3]#vim /boot/grub2/grub.cfg

    menuentry 'CentOS Linux (4.20.3-1.0-xinzhoulinux) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $m
    enuentry_id_option 'gnulinux-3.10.0-862.el7.x86_64-advanced-576ed6fe-d3e8-403d-832f-2dc117ba8d2f' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod xfs
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='
    hd0,msdos1' 6e6694fc-5a2f-47a1-b96b-509621e5fc1e
    else
    search --no-floppy --fs-uuid --set=root 6e6694fc-5a2f-47a1-b96b-509621e5fc1e
    fi
    linux16 /vmlinuz-4.20.3-1.0-xinzhoulinux root=UUID=576ed6fe-d3e8-403d-832f-2dc117ba8d2f ro crashkernel=auto rhgb quiet LANG=e
    n_US.UTF-8
    initrd16 /initramfs-4.20.3-1.0-xinzhoulinux.img
    }

    [root@centos7 linux-4.20.3]#ls /lib/modules/4.20.3-1.0-xinzhoulinux/kernel/fs/ntfs/ //检查模块是否存在

    ntfs.ko

    [root@centos7 ~]#du -sh /data/linux-4.20.3 //编译后的文件大小11G

    11G /data/linux-4.20.3

    [root@centos7 ~]#uname -r //reboot, 查看到新的内核

    4.20.3-1.0-xinzhoulinux

    [root@centos7 data]#locate ntfs.ko

    [root@centos7 data]#updatedb // updatedb - update a database for mlocate
    [root@centos7 data]#locate ntfs.ko //已经支持新的ntfs模块
    /data/linux-4.20.3/fs/ntfs/.ntfs.ko.cmd
    /data/linux-4.20.3/fs/ntfs/ntfs.ko
    /usr/lib/modules/4.20.3-1.0-xinzhoulinux/kernel/fs/ntfs/ntfs.ko

  7. 卸载内核
    删除/lib/modules/目录下不需要的内核库文件
    删除/usr/src/linux/目录下不需要的内核源码
    删除/boot目录下启动的内核和内核映像文件
    更改grub的配置文件,删除不需要的内核启动列表

转载于:https://blog.51cto.com/8845692/2345381

你可能感兴趣的文章
前端知识复习一(css)
查看>>
从输入网址到显示网页的全过程分析
查看>>
spark集群启动步骤及web ui查看
查看>>
Maven学习笔记二:常用命令
查看>>
利用WCF改进文件流传输的三种方式
查看>>
程序员的素养
查看>>
Spring学习总结(2)——Spring的常用注解
查看>>
关于IT行业人员吃的都是青春饭?[透彻讲解]
查看>>
钱到用时方恨少(随记)
查看>>
mybatis主键返回的实现
查看>>
org.openqa.selenium.StaleElementReferenceException
查看>>
Android Intent传递对象为什么要序列化?
查看>>
数论之 莫比乌斯函数
查看>>
linux下查找某个文件位置的方法
查看>>
python之MySQL学习——数据操作
查看>>
懒加载——实现原理
查看>>
Harmonic Number (II)
查看>>
长连接、短连接、长轮询和WebSocket
查看>>
day30 模拟ssh远程执行命令
查看>>
做错的题目——给Array附加属性
查看>>