内核编译安装

简介:

以下讲的是内核基础、内核管理、安装编译内核、安装程序anaconda、kickstart。

1、内核基础

 对于内核,现在有单内核和微内核设计,现在的内核多采用单内核和高度模块化设计,对于模块化设计,可以进行动态装卸载。

 内核一般由三部分组成:内核核心文件、内核对象、ramdisk。内核核心文件,一般为bzImage,经过压缩处理的镜像文件,通常内核核心文件保存在/boot目录下,名称为vmlinuz-VERSION-release。内核对象,即内核额外的功能模块,该类文件放置于/lib/modules/VERSION-release。

 ramdisk取决于内核能否直接驱动rootfs所在的存储设备,一般来讲,kernel的核心文件和ramdisk文件必须具有相同的版本号。ramdisk文件是在操作系统安装完成之后执行的,由特定的应用程序组成。

 ramdisk文件的制作工具有mkinitrd、dracut两种,具体解释如下:

    CentOS 5:mkinitrd initrd-KERNEL-VERSION.img kernel-version

    CentOS 6/7:dracut initramfs-KERNEL-VERSION.img kernel-version


2、内核管理

(1)、uname命令 -----------显示内核信息

  常用选项:

  -n:显示节点名称

  -r:显示版本号

  -a:显示所有信息

  # uname -n 

    little

  # uname -r

    2.6.32-573.el6.x86_64

  # uname -a

    Linux little 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

(2)、lsmod命令 --------显示已经装载的内核模块

  对于已经装载模块,所显示的内容包括三部分,即模块名称、模块大小、被引用次数及被谁所引用。

(3)、modinfo命令 ---------------显示具体内核信息

  常用选项:

  -F field:显示指定字段的信息

  -a:显示模块作者

  -n:显示模块的绝对路径

  -d:显示模块的描述信息

  -l:显示许可证信息

  -p:显示模块的参数信息

(4)、modprobe命令 ------------装卸载模块

  modprobe的默认的配置文件 [-C config-file]为:/etc/modprobe.conf,/etc/modprobe.d/*

  # modprobe module_name ---------装载模块,可自动识别和解决依赖关系

  # modprobe -r module_name ---------卸载模块


3、伪文件系统

 与内核信息相关的伪文件系统主要有两个,即/proc、/sys两类。

(1)、/proc

 /proc:为内核状态、统计信息的输出接口。对于/proc的内容,可以使用echo进行重定向覆盖输出,进行设置和修改内核的功能和特性,如:echo "VALUE" > /proc/sys/PATH/TO/PARAMETER。

 对于/proc/sys进行查看和配置可用sysctl命令,sysctl命令的具体用法如下:

 sysctl命令 -----------查看和配置内核参数

  查看内核参数:

    sysctl -a:查看所有可以被修改的内核参数

    sysctl variable:查看指定内核参数的设定值

  配置某个内核参数的值:

    sysctl -w variable=value 

    sysctl -p --------重载

(2)、/sys

 sysfs:输出内核识别出来的各硬件设备的相关属性信息。

 udev:读取/sys目录下的硬件设备信息,按需创建设备文件,运行于用户空间,内核通过内置的devtmpfs为每个内核所要使用的设备创建设备文件;


4、安装编译内核

(1)、安装编译的条件:

  安装开发环境、获取目标主机各硬件信息、获取目标主机功能选项信息。开发环境的开发工具有 gcc、make、automake、qt、GTK、ncurses等。安装编译之前需安装程序包组"Development Tools"和"Server Platform Development",即开发工具,和服务器平台开发。

  获取目标主机上各硬件设备的相关信息,有以下命令:lscpu、lspci、lsusb、lsblk、hal-device 。

(2)、编译安装应用程序的三个步骤:

  第一步:# ./.configure ARG1 [ARG2...]

  .configure文件记录了内核的编译细节,# make menuconfig|xconfig|gconfig|config

  第二步:# make

  对于编译,可进行多线程编译,# make [-j #]

  第三步:# make modules_install

          # make install

  在进行安装之前,要先安装相应的模块,然后再安装内核核心文件,生成grub启动菜单。

(3)、配置内核的7种方式:

   1)、# make config:单行命令行遍历内核所有功能,交互式配置

   2)、# make menuconfig:基于 curses 的文本模式配置窗口;

   3)、# make gconfig:基于 GTK 开发环境的窗口配置界面

   4)、# make xconfig:基于 QT 开发环境的窗口配置界面

   5)、# make defconfig:基于内核

   6)、# make allnoconfig:全部不编译,模版

   7)、# make allyesconfig:所有功能全部编译进核心

(4)、三种内核编译方式:全编译、部分编译、交叉编译

(5)、linux系统安装的注意事项

  CentOS操作系统绝对不能分区的目录有:bin, sbin, lib, lib64;建议单独分区的目录有:boot, home, var, usr等。


5、安装程序anaconda

 对于系统安装,在具体的进行安装之前,需运行一个安装程序,即安装程序anaconda。anaconda给我们提供了两种操作界面,即TUI文件配置窗口、GUI图形界面/CLI命令行界面。

 装载rootfs,然后启动anaconda,如果内存不够512M,则anaconda是以文本界面启动的,如果内存大于512M,anaconda默认以图形界面启动。对于stage2阶段的配置文件:/isolinux/isolinux.cfg,其中有向内核传递的附加参数,其中最重要的是ks,即kickstart启动无人值守安装,ks指定了kickstart配置文件的位置,可以本机也可以远程,注意是绝对路径。

 anaconda在安装前具有一个准备配置阶段,进行各种基础配置。对于安装阶段,主要有6个步骤,如下:

 anaconda安装:

  1)、运行某些预安装脚本,完成初始化

  2)、创建分区,执行格式化安装文件系统,挂载

  3)、将选定的程序包或程序包组安装至目标位置

  4)、安装bootloader至MBR及boot分区中

  5)、制作ramdisk文件

  6)、运行安装后脚本

 对于 kickstart文件,具体具有三部分,即命令段、脚本段、程序包/程序包组段。

 【命令段】指明各种安装前的配置,分为必备命令和可选命令两类。9个必备命令为:authconfig、bootloader、keyboard、lang、part、clearpart、volgroup、logvol、rootpw、timezone。可选命令为:install、upgrade、text、network、firewall、selinux、repo、reboot、halt/poweroff、url、firstboot。

 【脚本段】有安装前执行的脚本和安装后执行的脚本两部分,%pre --- %end:为安装前脚本,运行环境是运行于安装介质上的微型Linux系统环境。%post ----- %end:为安装后脚本,运行环境是安装以后的操作系统。

 【程序包段】指明要安装的程序包或程序包组以及不安装程序包,%packages ----- %end。


 创建kickstart文件的两种方法,全新创建或用ks模板进行改写,具体如下:

  1)、直接以anaconda-ks.cfg为模版,复制之后修改即可。

  2)、使用工具来创建:# system-config-kickstart &

    如果命令不存在,则yum install system-config-kickstart安装。

  3)、检测ks文件的语法是否存在错误:

    # ksvalidator

    如果该命令不存在,安装pykickstart-1.74.20-1.el6.noarch。


关闭防火墙:

  CentOS 6:# service iptables stop

            # chkconfig iptables off

  CentOS 7:# systemctl stop firewalld.service

            # systemctl disable firewalld.service


临时清理防火墙规则,并将selinux设置为permissive模式:  

  # iptables -F ---------防火墙临时不生效

  # setenforce 0 ----------SELinux临时不限用户行为



     本文转自little_ding 51CTO博客,原文链接:http://blog.51cto.com/12496428/1964640,如需转载请自行联系原作者






相关文章
|
7月前
|
算法 数据可视化 Linux
Linux内核编译:深入理解`make menuconfig`命令
Linux内核编译:深入理解`make menuconfig`命令
466 0
|
4月前
|
Ubuntu 安全 Linux
在Linux中,编译内核的意义与步骤?
在Linux中,编译内核的意义与步骤?
|
7月前
|
Ubuntu Linux 虚拟化
Linux编译内核
Linux编译内核
66 0
|
Linux 编译器 C语言
Linux内核编译和LLVM的信息
Linux内核编译和LLVM的信息
158 1
|
Shell Linux 开发者
Linux内核编译与安装
Linux内核编译与安装 Linux内核介绍 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统。内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制。
1260 0
|
存储 网络协议 Unix
Linux内核配置文档!!!(make menuconfig)
一、引言: 本文档的内容大部份内容都是从网上收集而来,然后配合一些新的截图(内核版本:V2.4.19)。在每一配置项后会有一个选择指南的部份,用来指导大家怎么样根据自己的情况来做相应的选择;还有在每一个大项和文档的最后会有一个经验谈,它是一些高手们在应对问题和处理特有硬件时的一些经验(这个还得靠各位)。文档最后会发到网上,到时会根据网友们的回复随时进行更新。 我们的目的是让我们有一个全面的、简单明了内核编译帮手。 [注:] 请大家能够发表自己的经验和想法,使本文能够不断充实!但是最好不要发一些从网cp过来的没有经过自己实践的文章! 1.Code maturity
804 0