码迷,mamicode.com
首页 > 其他好文 > 详细

内核编译安装

时间:2017-09-12 23:08:36      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:内核管理   内核基础   安装   

以下讲的是内核基础、内核管理、安装编译内核、安装程序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临时不限用户行为


内核编译安装

标签:内核管理   内核基础   安装   

原文地址:http://12496428.blog.51cto.com/12486428/1964640

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!