以下讲的是内核基础、内核管理、安装编译内核、安装程序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,如需转载请自行联系原作者