内核编译流程和自动化安装

内核编译

        在特定的情况我们机器上面有些硬件特性需要利用起来,但是我们现成的这个内核没有开启这个功能,那就需要重新编译,把这个功能模块加进来,或者打到vmlinux中的核心文件里面。比如ntfs功能,默认系统没有启用此功能,但是系统是带这个功能的,编译的时候时候可以打开该功能,有些功能打开了,但是用不上,我们也可以在编译的时候关闭,实现完全定制的内核功能。

        针对硬件驱动的配置有模板,由于驱动数目太多(wc -l /boot/config*****,查看有4000+),且有些功能我们不了解,因此我们可以通过配置模板文件来对模块进行修改。

模板文件:/boot/config-2.6.32-642.el6.x86_64   通过该文件我们可以看到哪些功能模块打开,哪些没打开

                        # CONFIG_CRC32_SELFTEST is not set    表示没开启此模块功能       

                           CONFIG_LIBCRC32C=m  表示打到/lib/modules里面

                           CONFIG_ZLIB_INFLATE=y   表示打到核心里面

    内核编译:

            (1) 配置内核选项
                 支持“更新”模式进行配置: make help
                            (a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项
                            (b) make menuconfig:基于curses的文本窗口界面
                            (c) make gconfig:基于GTK (GNOME)环境窗口界面
                            (d) make xconfig:基于QT(KDE)环境的窗口界面

                支持“全新配置”模式进行配置
                            (a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置
                            (b) make allyesconfig: 所有选项均回答为“yes“
                            (c) make allnoconfig: 所有选项均回答为"no 
            (2) 编译
                    全编译:make [-j #]
                    编译内核的一部分功能:
                            (a) 只编译某子目录中的相关代码:
                                        # cd /usr/src/linux
                                        # make dir/
                            (b) 只编译一个特定的模块:
                                        # cd /usr/src/linux
                                        # make dir/file.ko
                        例如:只为e1000编译驱动:
                                #make drivers/net/ethernet/intel/e1000/e1000.ko (.ko文件目录中不存在需要自己写),编译完后将文件拷贝到对应的目录

            需要事先清理操作:
                        # make clean:清理大多数编译生成的文件,但会保留config文件等
                        # make mrproper: 清理所有编译生成的文件、 config及某些备份文件
                        # make distclean: mrproper、 patches以及编辑器备份文件

    编译应用举例:

            1、下载内核文件、准备模板,安装“开发工具“包组

            2、tar xvf liux-3.18.tar.xz -C /usr/src

             ln -s linux-3.18.41/ linux

            3、cp /boot/config-2.6.32-642.el6.x86_64 /usr/src/linux/.config

                            注意模板必须命名为“.config”,因为编译的是要读该文件,否则无法识别。

            4、cd /usr/src/linux  

                 make menuconfig 通过图形界面配置驱动模块(该命令依赖ncures包,首次执行需要yum安装 )            

                            [*]表示打到vmlinux的核心文件里面去了

                            [M]表示打到的/lib/modules中的.ko文件(驱动模块)

                            []表示不启用该功能

            5、全编译make -j #(cpu的数量,lscpu可以查看)

            6、cd linux 

                         make modules_install 安装模块,将模块拷贝到/lib/modules

            7、make install 生成核心文件vmlinuz initramfs 及grub.conf

            8、reboot

系统自动化安装

同时部署多台linux机器,需要依赖自动化安装
        MBR: /光盘/isolinux/boot.cat  二进制文件
        stage2: isolinux/isolinux.bin
                    配置文件: isolinux/isolinux.cfg

            label linux           ### 此处如果加rescue 就变成了 rescue模式
              menu label ^Install or upgrade an existing system
              menu default
              kernel vmlinuz   ### 加载内核
              append initrd=initrd.img  ###向内核传递参数         
            label vesa
              menu label Install system with ^basic video driver
              kernel vmlinuz
              append initrd=initrd.img nomodeset        ###nomodeset 内核参数
            label rescue
              menu label ^Rescue installed system
              kernel vmlinuz
              append initrd=initrd.img rescue        ###rescue 内核参数
            label local
              menu label Boot from ^local drive
              localboot 0xffff
            label memtest86
              menu label ^Memory test
              kernel memtest
              append -

                    每个对应的菜单选项:
                                加载内核: isolinuz/vmlinuz
                                向内核传递参数: append initrd=initrd.img …
        装载根文件系统,并启动anaconda
                    默认启动GUI接口
                    若是显式指定使用TUI接口: 向内核传递text参数即可
                    (1)按tab键,在后面增加text,启用字符界面安装
                    (2)按ESC键: boot: linux text  启动字符界面安装
                                          boot:linux   等同于 选择  Install or upgrade an existing system
                                          boot:rescue    等同于选择    Rescue installed system

1.png

        Anaconda安装系统分成三个阶段:
                安装前配置阶段
                            安装过程使用的语言
                            键盘类型
                            安装目标存储设备
                                        Basic Storage:本地磁盘
                                        特殊设备: iSCSI
                            设定主机名
                            配置网络接口
                            时区
                            管理员密码
                            设定分区方式及MBR的安装位置
                            创建一个普通用户
                            选定要安装的程序包
                 安装阶段
                            在目标磁盘创建分区,执行格式化操作等
                            将选定的程序包安装至目标位置
                            安装bootloader和initramfs
                 首次启动
                            iptables
                            selinux
                            core dump

         指明kickstart文件的位置: ks=
                DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
                Hard drive: ks=hd:device:/directory/KICKSTART_FILE
                HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
                FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
                HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
                NFS server:ks=nfs:host:/path/to/KICKSTART_FILE

        kickstart文件的格式:
                命令段:指明各种安装前配置,如键盘类型等;
                程序包段:指明要安装的程序包组或程序包,不安装的程序包等;
                        %packages
                        @group_name
                        package        ###指明要包组中要安装的包
                        -package        ###指明包组中不安装的包

                        %end

        脚本段:
                    %pre: 安装前脚本
                                运行环境:运行于安装介质上的微型Linux环境
                    %post: 安装后脚本
                                运行环境:安装完成的系统

       创建建kickstart文件的方式:
                (1) 直接手动编辑;
                            依据某模板修改
                (2) 可使用创建工具: system-config-kickstart
                            依据某模板修改并生成新配置;
        检查ks文件的语法错误: ksvalidator
                    # ksvalidator /PATH/TO/KICKSTART_FILE

手动指定安装源的安装方法:

                1、进入光盘启动界面,按ESC 进入"boot"界面输入:linux methmod,进入手动引导安装界面 ,选择安装方法。

1.png

                2、选择动态获取IP还是静态配置IP

2.png

                3、选择URL的安装路径

4.png

                4、进入交互式安装

5.png

            注意:也可以采取在boot命令行处输入多个选项:boot:linux askmethod ip=1.1.1.1 vnc vnc passwd="passwd"  ks=hd:sda:/root/ks.cfg

自动化安装方法:

                1、cp -r /光盘/isolinux/  /testdir/myks/  将光盘中的isolinux目录拷贝到myks目录下

                2、编辑vim /testdir/isolinux/isolinux.cfg 配置光盘启动的界面的选项,并指明ks模板文件的路径ks=ftp://192.168.1.103/pub/ks.cfg

abel kickstart
  menu label ^kickstart Install a system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=   ###指明ks路径 
label linux
  menu label ^Install or upgrade an existing system
  kernel vmlinuz
  append initrd=initrd.img 
label vesa
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

         3、 cd /testdir

                mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS 6.8panlinux" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myks/

                创建光盘引导文件,保存到/root/boot.iso,注意该操作必须在myks的父目录下面进行。

         4、生成模板:system-config-kickstart ,并保存到/var/ftp/pub/目录下,注意如果模板在生成后如发现有需要变更的,直接更改生成的文件即可,不用重新用命令生成模板文件。

                      1474030568878553.png1474030627188981.png

1474032125853700.png                      1474032162445028.png

1474032196558951.png                      1474070183974227.png

1474070221380517.png                      1474070243500848.png

1474070274304094.png                      1474070294963505.png

         5、光盘启动即可

    

原创文章,作者:Naruto,如若转载,请注明出处:http://www.178linux.com/46227

(0)
NarutoNaruto
上一篇 2016-09-18
下一篇 2016-09-18

相关推荐

  • 实现CA和证书申请,

    接下来讲的是在centos7.3和centos6.8中实现CA和证书申请,centos7.3作为主机,centos6.8作为客户端 首先你授权客户端CA证书,必须本身主机也具有CA,自己证明自己,先CA自签证书,然后在7.3创建私钥 为了方便以后的操作CD进入 cd /etc/pki/CA   生成自签名证书 -new:  生成…

    2017-04-11
  • 误删除libc.so.6时,该怎么恢复

           一周一周光阴似流水,转瞬即逝,又到了该说点什么的时候了。这周老师给我们出了一道实验题,内容是当你不小心误删除了libc.so.6这个库文件时,怎么恢复。意不意外?惊不惊喜?那下面就来简单说说(呃……为什么不是详细说说呢,因为这个这个水平有限,也只能是理解多少,给…

    2017-08-11
  • 函数式编程

    当我们说起函数式编程来说,我们会看到如下函数式编程的长相: 函数式编程的三大特性: immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时候更不好维护。(你可以试想一下如果你的程序有个复杂的状态,当以后别…

    Linux干货 2016-08-15
  • LNMP安装过程中出现的问题及解决方法

    一、背景介绍    操作系统版本:centos6.8    nginx版本:nginx-1.10.2            mysql版本:mysql5.7.16    php版本:php5.6.28   由于mysql和php的…

    Linux干货 2016-11-23
  • RAID学习总结

    RAID(Redundant Array of Independent Disks): 定义:独立硬盘冗余阵列,旧称廉价磁盘冗余阵列(Redundant Array of Independent Disks),简称磁盘阵列。 原理:把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使其性能达到甚至超过价格昂贵,容量巨大的硬盘。 优势: RAID在容量和管理上…

    Linux干货 2016-08-22
  • 马哥教育网络班22期+第11周课程练习

    week11 1、详细描述一次加密通讯的过程,结合图示最佳。 2、描述创建私有CA的过程,以及为客户端发来的证书请求进行颁发证书。 3、描述DNS查询过程以及DNS服务器类别。 4、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP)   (1)、能够对一些主机名进行正向解析和逆向解析;   …

    Linux干货 2016-11-07

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-23 11:11

    总结的很详细,也很实用,如果能有一个完整的示例来展示会更有说服力哦。