一文学会如何下载编译Linux Kernel

作者: 秃头哥编程 | 来源:发表于2019-10-01 16:53 被阅读0次

    一、下载安装Linux Kernel源码

    进入https://www.kernel.org/,选择需要的版本进行下载。可以通过http或者git下载,也可以下载压缩包通过ftp上传到linux进行解压。

    2.PNG

    这里选择http的方式下载(wget一直time out。。。选择手动下载上传吧)

    wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.4.49.tar.gz
    

    在/usr/src下面新建文件夹kernel,把下载好的压缩包上传到该文件夹下,进行解压

    tar -xf linux-4.9.179.tar.gz
    

    查看源码目录


    3.PNG
    • arch:与硬件平台有关的项目,大部分指的是CPU的类别,例如x86,x86_64,Xen虚拟支持等。
    • block:与成组设备较相关的设定数据,区块数据通常指的是大量存储媒体,还包括类似ext3等文件系统的支持是否允许等。
    • crypto:核心所支持的加密的技术,例如md5或者是des等等。
    • Documentation:与核心有关的一堆说明文件。
    • drivers:一些硬件的驱动程序,例如显示适配器、网络卡、PCI相关硬件等。
    • firmware:一些旧式硬件的微脚本(韧体)数据。
    • fs:核心所支持的filesystems,例如vfat,reiserfs,nfs等。
    • include:一些可让其他进程调用的标头(header)定义数据。
    • init:一些核心初始化的功能,包括挂载与init程序的呼叫等。
    • ipc:定义Linux操作系统内各程序的沟通。
    • kernel:定义核心的程序、核心状态、线程、程序的排程(schedule)、程序的讯号(signle)等。
    • lib:一些函式库。
    • mm:与内存单元有关的各项数据,包括swap与虚拟内存等。
    • net:与网络有关的各项协议数据,还有防火墙模块(net/ipv4/netfilter/*)等。
    • security:包括selinux等在内的安全性设定。
    • sound:与音效有关的各项模块。
    • virt:与虚拟化机器有关的信息,目前核心支持的是KVM(Kernel base Virtual Machine)。

    二、编译前的准备工作

    可以执行make help命令查看make的所有编译参数。
    1、make mrproper: 清除源码中残留的【编译过程的目标文件和配置文件】。这个动作会将以前进行过的核心功能选择文件删除,所以第一次执行核心编译前才进行这个动作。其余时刻,要删除前一次编译过程的残留数据,只需下达make clean

    2、make XXconfig:/boot/底下有一个名为config-xxx的文件,是核心功能列表文件(我们自己机器上的核心功能选择文件)。编译动作就是通过该文件处理,核心功能的挑选,最后会在/usr/src/kernel/{uname -r}/底下产生一个名为.config文件(我们下载的源码的核心功能选择文件),这个文件就是/boot/config-xxx文件。该文件有如下建立方法
    (1)make menuconfig:最常使用的,是文本模式底下可以显示类似图形接口的方式,不需要启动X Window就能够挑选核心功能选项。
    (2)make oldconfig:通过使用已存在的./.config文件内容,使用该文件内的设定值为默认值,只将新版核心内的新功能选项列出让用户选择。可以简化核心功能的挑选过程,对于作为升级源码后的功能挑选来说,是非常好用的。
    (3) make xconfig:通过以qt为图形接口基础功能的图形化接口显示,需要具有X window的支持,例如KDE就是通过qt来设计的X window,因此你如果在KDE画面中,可以使用此命令。
    (4) make gconfig:通过以Gtk为图形接口基础功能的图形化接口显示,需要具有X window的支持。例如GNOME就是通过Gtk来设计的X window,因此如果你在GNOME画面中,可以使用此命令。
    (5) make config:最旧式的功能挑选方法,每个项目都一条一条的列出让你选择,如果设定错误只能再次选择,很不人性化。
    (6)如果你想要使用本机已经有的核心设定值,只需要修改一些小细节,那么可以cp本机的config文件到我们下载的源码里 cp/boot/config-xxx /usr/src/kernel/linux-4.9.179/

    3、开始核心功能选择 使用make menuconfig,出现下面的界面

    4.PNG
    (1)【左右选择键】:可以移动最底下的<Select>,<Exit>,<Help>项目。
    (2)【上下箭头键】:可以移动上面大框框部分的反白光柱,若改行有箭头(--->)则表示改行内部还有其他细项需要来设定的意思。
    (3)选定项目:【上下键】选择好想要设定的项目后,【左右键】选择<Select>后,按下【Enter】就可以进入该项目选择子项目。
    (4)可选的功能:前面有[]或<>符号时,表示该项目可选。使用空格键选定项目。
    (5)若为[]、<>表示编译进核心,若为<M>则表示编译成模块。
    (6)关于核心功能的选择,可以参考下面的规则
    • 【肯定】核心一定要的功能,直接编译进核心内。
    • 【可能在未来会用到】的功能,尽量编译成模块。
    • 【不知道那个东西干嘛的,看help也看不懂】的话,就保留默认值,或编译成模块。
    • 总之,尽量保持核心小而美,剩下的功能就编译成为模块,尤其是【需要考虑到未来的扩充性】。

    4、核心功能选择(不清楚的可以按<Help>进行查阅)

    三、编译与安装

    1、编译核心与核心模块

    • make vmlinux:未经压缩的核心
    • make modules:仅核心模块
    • make bzImage:经压缩过的核心(预设)
    • make all:进行上述三个动作
    • 上述比较常用的是modules和bzImage,bzImage可以制作出压缩过的核心。

    2、开始编译

    • make -j 4 clean 先清除暂存档
    • make -j 4 bzImage 先编译核心
    • make -j 4 modules 再编译模块
    • make -j 4 clean bzImage modules 连续动作,把上面两个动作一起执行
    • 最后被制作的数据存放在/usr/src/kernel/linux-4.9.179/arch/x86/boot/bzImage,这就是核心文件。

    执行make -j 4 bzImage 命令后,如果顺利,应该出现下面的界面


    6.PNG

    3、开始安装核心

    编译完成后,就可以进行安装,可以同时保留旧版的核心,增加我们自己编译的核心在主机上面。做成多重引导系统。但新的核心并不一定完全适用我们的系统,所以可以备份旧核心,如果新核心测试不通过,就用旧核心启动。

    相关文章

      网友评论

        本文标题:一文学会如何下载编译Linux Kernel

        本文链接:https://www.haomeiwen.com/subject/onqtyctx.html