Linux_19 内核启动流程详解、centos安装、内核编译
Linux内核启动流程详解
CentOS系统启动流程:
Linux 系统的组成部分:内核+根文件系统
内核:进程管理、内存管理、网络协议栈、文件系统、驱动程序、安全功能
IPC:Inter Process Communication
消息队列、semerphor、shm
socket
运行中系统环境可分为两层:内核空间、用户空间
用户空间:应用程序(进程或线程)
内核空间:内核代码(系统调用)
内核设计流派:
单内核设计:把所有功能集成于同一个程序;
Linux
微内核设计:每种功能使用一个单独的子系统实现;
Windows,Solaris
Linux内核特点:
支持模块化:.ko(kernel object)
支持模块运行时动态装载或卸载;
组成部分:
核心文件:/boot/vmlinuz-VERSION-release
ramdisk:
CentOS 5:/boot/initrd-VERSION-release.img
CentOS6.7:/boot/initramfs-VERSION-release.img
模块文件:/lib/modules/VERSION-release
CentOS 系统的启动流程:
POST:加电自检;
ROM:CMOS
BIOS:Basic Input and Output System
ROM+RAM
Boot Sequence:
按次序查找各引导设备,第一个由引导程序的设备即为本次启动要用到的设备;
bootloader:引导加载器,程序;
Windows:ntloader
Linux:
LILO:Linux Loader
GRUB:Grand Uniform Bootloader
GRUB0.x:Brub Legacy
GRUB1.x:Grub2
功能:提供一个菜单,允许用户选择要启动的系统或不同的内核版本;把用户选定的内核装载到RAM中,解压、展开,而后把系统控制权移交给内核;
MBR:Master Boot Record
512Bytes:
446Bytes:bootloader
64Bytes:fat
2Bytes:55AA
GRUB:
bootloader:1st stage
Partition:filesystem driver,1.5 stage
Partition:/boot/grub,2nd stage
注意:UEFI,GPT
Kernel:
自身初始化:
探测可识别到的所有硬件设备;
加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)
以只读方式挂载根文件系统;
运行用户空间的第一个应用程序:/sbin/init
init程序的类型:
CentOS 5-:SysV init
配置文件:/etc/inittab
CentOS 6:Upstart
配置文件:/etc/inittab
/etc/init/*.conf
CentOS 7:Systemd
配置文件:/usr/lib/systemd/system,/etc/systemd/system/
ramdisk:
Linux内核的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问;
ramdisk-->ramfs
CentOS 5:initrd
工具程序:mkinitrd
CentOS 6,7: initramfs
工具程序:dracut,mkinitrd
系统初始化流程(内核级别):POST-->BootSequence(BIOS)-->Bootloaser(MBR)-->Kernel(ramdisk)-->rootfs(readonly)-->/sbin/init()
/sbin/init:
CentOS 5:SysV init
运行级别:为了系统的运行或维护等目的而设定的机制;
0-6:7各级别:
0:关机,shutdown
1:单用户模式(single user),root用户,无须认证;维护模式;
2:多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式;
3:多用户模式(multi user),完全功能模式;文本界面;
4.预留级别:目前无特别使用的目的,但习惯以同3级别功能使用;
5.多用户模式(multi user),完成功能模式,图形界面;
6.重启,reboot # 关机和重启 如下图
默认级别:3,5
级别切换:init#
级别查看:
who -r
runlevel
配置文件:/etc/inittab
每行定义一种action以及与之对应的process
id:runlevels:action:process
id:一个任务的标识符;
runlevels:在哪些级别启动此任务:#,###,也可以为空,表示所有级别;
action:在什么条件下启动此任务;
process:任务;
action:
wait:等待切换至此任务所在的级别时执行一次;
respawn:一旦此任务终止,就自动重新启动之;
initdefault:设定默认运行级别;此时,process省略;
sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;
例如:
id:3:initdefault
sl::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
………………………………
l6:6:wait:/etc/rc.d/rc 6
意味着去启动或关闭/etc/rc.d/rc3.d/目录下的服务脚本所控制服务;
K*:要停止的服务;K##*,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的;
S*:要启动的服务;S##*,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动;
rc脚本:接收一个运行级别数字为参数:
脚本框架:
for srv in /etc/rc.d/rc#.d/K*;do
$srv stop
done
for srv in /etc/rc.d/rc#.d/S*;do
$srv start
done
/etc/init.d/*(/etc/rc.d/init.d/*)脚本执行方式:
# /etc/init.d/SRV_SCRIPT {start|stop|restart|status}
#service SRV_SCRIPT {start|stop|restart|status}
chkconfig命令:管控/etc/init.d/每个服务脚本在各级别下的启动或关闭状态;
查看:chkcofnig --list [name]
添加:chkconfig --add name
能被添加的服务的脚本定义格式之一:
#!/bin/bash
#
# chkconfig: LLL NN NN
# description:
删除:chkconfig --del name
修改指定的链接类型:
chkconfig [--level LEVELS ] name <on|off|reset>
--level LEVELS:指定要控制的级别;默认为2345;
注意:正常级别下,最后启动的一个服务S99lcoal没有链接至/etc/init.d下的某脚本,而是链接至了/etc/rc.d/rc.local(/etc/rc.local)脚本;因此,不便或不需写为服务脚本呢的程序期望能开机自动运行时,直接放置于此脚本文件中即可。
tty1:2345:respawn:/usr/sbin/mingetty tty1
…… ……
tty6:2345:respawn:/usr/sbin/mingetty tty6
(1) mingetty会调用login程序;
(2) 打开虚拟终端的程序除了mingetty之外,还有诸如getty等;
系统初始化脚本:/etc/rc.d/rc.sysinit
(1) 设置主机名;
(2) 设置欢迎信息;
(3) 激活udev和selinux
(4) 挂载/etc/fstab文件中定义的所有文件系统;
(5) 检测根文件系统,并以读写方式重新挂载根文件系统;
(6) 设置系统时钟;
(7) 根据/etc/sysctl.conf文件来设置内核参数;
(8) 激活lvm及软raid设备;
(9) 激活swap设备;
(10) 加载额外设备的驱动程序;
(11) 清理操作;
系统启动流程结束。。。。。
以下是用户空间的启动流程:/sbin/init(/etc/inittab)
设置默认运行级别-->运行系统初始化脚本,完成系统初始化-->关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务-->设置登录终端[-->启动图形终端]
CentOS6:
init程序:upstart,但依然为/sbin/init,其配置文件:
/etc/init/*.conf,/etc/inittab(仅用于定义默认运行级别)
注意:*.conf为upstart风格的配置文件;
rcS.conf
rc.conf
start-ttys.conf
CentOS 7:
init程序:systemd,配置文件:/usr/lib/systemd/system/*,/etc/systemd/system/*
完全兼容SysV脚本机制;因此,service命令依然可用;不过,建议使用systemctl 命令来控制服务;
# systemctl {start|stop|status|restart} name[.service]
CenOS 6 启动流程:
POST --> Boot Sequence(BIOS) --> Boot loader (MBR) --> Kernel(ramdisk) --> rootfs -->switchroot --> /sbin/init/ --> (/etc/inittab,/etc/init/*.conf) --> 设定默认运行级别 --> 系统初始化脚本 --> 关闭或启动对应级别下的服务 --> 启动终端
GRUB(Boot Loader):
grub:Grand Unified Bootloader
grub 0.x:grub legacy
grub 1.x:grub2
grub legacy:
stage1:mbr
stage1_5:mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
stage2:磁盘分区(/boot/grub)
配置文件:/boot/grub/grub.conf<-- /etc/grub.conf
stage2及内核等通常放置于一个基本磁盘分区:
功用:
(1)提供菜单那,并提供交互式接口
e:编辑模式,用于编辑菜单;
c:命令模式,交互式接口;
(2)加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
(3)为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证
grub的命令接口:
help:获取帮助列表
help KEYWORD:详细帮助信息
find (hd#,#)/PATH/TO/SOMEFILE;
root (hd#,#)
kernel /PATH/TO/KERNEL_FILE:设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数;
例如:init=/path/to/init,selinux=0
initrd /PATH/TO/INITRAMFS_FILE:设定为选定的内核提供额外文件的ramdisk;
boot:引导启动选定的内核;
手动在grub命令行接口启动系统:
grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
配置文件:/boot/grub/grub.conf
配置项:
default=#:设定默认启动菜单项;落单想(title)编号从0开始;
timeout=0;指定菜单项等待选项选择的时长;
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
hiddenmenu:隐藏菜单;
password [--md5] STRING:菜单编辑认证;
title TITLE:定义菜单项“标题”,可出现多次,用于引导不同的内核和操作系统。
root (hd#,#):grub查找stage2及kernel文件所在设备分区:为grub的“根”;
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核
initrd /PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件;
password [--md5] STRING:启动选定的内核或操作系统时进行认证;
grub-md5-crypt命令:可以生成密文串,替换内核启动时查找的引导菜单文件grub.conf中定义的密码(如果启动内核时有需要安全认证,可以在grub.conf定义启动认证密码)
如果grub的配置文件丢失,启动时不会显示菜单,只会显示一个grub命令行提示符给我们,所以grub依赖配置文件显示菜单,并决定接下来如何操作。可以在grub命令行手动输入root kernel initrd boot 启动,启动完之后再手动编辑grub.conf配置文件就可以了。
如果是grub中的文件损坏,比如;不小心使用dd命令覆盖了MBR,此时bootloader坏掉了,位于此硬盘上的操作系统都将无法引导。此时需要修复bootloader;可以进入救援模式或者把硬盘拆下来,放到其他主机上,使用grub命令重新安装grub并对grub进行修复
进入单用户模式:
(1)编辑grub菜单(选定要编辑的title,而后使用e命令);
(2)在选定的kernel后附加1,s,S或single都可以;
(3)在kernel所在行,键入"b"命令;
安装grub:centos6:grub-install centos7:grub2-install
(1)grub-install
grub-install --root-directory=ROOT /dev/DISK
(2) grub
grub> root(hd#,#)
grub> setup (hd#)
1.添加一块新的硬盘
2.分区
fdisk /dev/sdc
partition1:100M # /boot
partition2:2G
partition3:2G # /-->/mnt/sysroot
cat /proc/partitions
partx -a /dev/sdc
mke2fs -t ext4 /dev/sdc3 # 挂载为ext1-4类型的文件系统都可以
mkswap /dev/sdc2
3.挂载分区:
mkdir /mnt/boot /mnt/sysroot
mount /dev/sdc1 /mnt/boot
mount /dev/sdc3 /mnt/sysroot
4. cp grub必要的文件:
mkdir /mnt/grub2
mkdir bin dev etc home lib lib64 proc sbin sys tmp usr var
cp -a /boot/grub /mnt/
cp /boot/grub2/grub.cfg /mnt/boot/grub2
cp /boot/initramfs-3.10.0-1160.21.1.el7.x86_64.img /mnt/boot/initramfs.img
cp /boot/vmlinuz-3.10.0-1160.21.1.el7.x86_64 /mnt/boot/vmlinuz
5. cp bash二进制文件及其依赖的动态库
ldd /bin/bash
cp /bin/bash /mnt/sysroot/bin
cp /lib64/libtinfo.so.5 /mnt/sysroot/lib64/
cp /lib64/libdl.so.2 /mnt/sysroot/lib64/
cp /lib64/libc.so.6 /mnt/sysroot/lib64/
cp /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64/
6.切换根
chroot /mnt/sysroot
进入到我们制作的根
CentOS7 grub安装及损坏修复:https://blog.csdn.net/weixin_36383252/article/details/117014905
CentOS启动流程:POST-->Bootloader(BIOS,MBR)-->Kernel(initrd)-->rootfs-->switch_root-->/sbin/init
root (hd0,0)
kernel
initrd
ldd命令:
- print shared library dependencies
ldd [OPTION]... FILE...
内核设计体系,单内核、微内核
Linux:单内核设计,但充分借鉴了微内核体系的设计的优点;为内核引入了模块化机制;
内核的组成部分:
kernel:内核核心,一般为bzimage,通常位于/boot目录,名称为vmlinuz-VERSION-release;
kernel object:内核对象,即内核模块,一般放置于/lib/modules/VERSION-release/
内核模块与内核核心版本一定要严格匹配;
[ ]:N
[M]:Module
[*]:Y,编译进内核核心
内核:动态装载和卸载;
ramdisk:辅助性文件,并非必须,这取决于内核是否能直接驱动rootfs所在的设备;
目标设备驱动,例如SCSI设备的驱动;
逻辑设备驱动,例如LVM设备的驱动;
文件系统:例如xfs文件系统;
ramdisk:是一个简装版的根文件系统;
内核信息获取:
uname 命令:
- print system information
格式:uname [OPTION] ...
-r:内核的release(发行)号
-n:主机名
模块信息获取:
lsmod命令:
- Show the status of modules in the Linux Kernel
显示的内核来自于/proc/modules
modporbe命令:
- Add and remove modules from the Linux Kernel
格式:modprobe [-r] module_name
模块的动态装载:modprobe modprobe_name
动态卸载:modprobe -r module_name
depmod 命令:
- Generate modules.dep and map files.
内核模块依赖关系文件的生成工具;
模块的装载和卸载的另一组命令:
insmod命令:
insmod [filename] [module options...]
filename:模块文件的文件路径;
rmmod命令:
rmmod [module_name] [module_name]
depmod
ramdisk文件的管理:
(1) mkinitrd命令 centos5,6,7皆可用
为当前使用中的内核重新制作ramdisk文件:
# mkinitrd [OPTION...] [<initrd-image>] <kernel-version>
--with=<module>:除了默认的模块之外需要装载至initramfs中的模块;
--preload=<module>:initramfs所提供的模块需要预先装载的模块;
示例:~]# mkinitrd /boot/initramfs-$(uname-r).img $(uname -r)
(2) dracut命令 centos6+
-low-level tool for generating an initramfs image
# gracut [OPTION...] [<image> [<kernel version>]]
示例:~] # dracut /boot/initramfs-$(uname -r).img $(uname -r)
内核信息输出的伪文件系统:不能使用vim命令编辑修改,需要使用sysctl和echo覆盖重定向
/proc:内核状态和统计信息的输出接口;同时,还提供一个配置接口,/proc/sys;
参数:
只读:信息输出;例如/proc/#/*
可写:可接受用户指定一个“新值”来实现对内核某功能或特性的配置;/proc/sys
/proc/sys:
net/ipv4/ip_forward相当于 net.ipv4.ip_forward
(1)sysctl命令
专用于查看或设定/proc/sys目录下参数的值;
sysctl [options] [variable[=value]]
查看:
# sysctl -a 查看所有的内核参数
# sysctl variable # 查看某一个内核参数
sysctl net.ipv4.ip_forward
修改其值:
# sysctl -w variable=value
sysctl -w kernel.hostname=www.chaozhang.com
(2) 文件系统命令(cat,echo)
查看:
# cat /proc/sys/PATH/TO/SOME_KERNEL_FILE
设定:
# echo "VALUE" > /proc/sys/PATH/TO/SOME_KERNEL_FILE
注意:上述两种方式的设定仅当运行内核有效;如果想长期有效,可以修改配置文件:
(3)配置文件:/etc/sysctl.conf,/etc/sysctl.d/*.conf
立即生效的方式:sysctl -p [/PATH/TO/CONFIG_FILE]
内核参数:
net.ipv4.ip_forward:核心转发;
vm.drop_caches:
kernel.hostname:主机名
net.ipv4.icmp_echo_ignore_all:忽略所有的ping操作;
/sys:
sysfs:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的可设置参数,即可定制硬件设备的工作特性;
udev:通过读取/sys目录下的硬件设备信息按需为各硬件设备创建设备文件;udev是用户空间程序;专用工具;devadmin,hotplug;
udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d/目录下,以及/usr/lib/udev/rules.d/目录下;
编译内核
程序包的编译安装:
./configure:检查编译环境的依赖关系,并设定编译参数
make:执行真正编译过程,它不是一个编译工具,是一个构建工具,它会调用各所需的编译工具,执行编译操作。
make install:把编译好的各文件(程序)包括:二进制程序,库文件,帮助文档以及配置文件复制到对应的目录下,这个目录时我们在编译时指定的路径。
开源:
源代码 --> 可执行格式
发行版:以“通用”的目标;
前提:
(1)准备好开发环境
(2)获取目标主机上硬件设备的相关信息;
(3)获取到目标主机胸痛功能的相关信息,例如要启用的文件系统;
(4)获取内核源代码包:www.kernel.org
准备开发环境:
CentOS6.7:
包组:
Debelopment Tools
Server Platform Development
CentOS 7:
包组:
Debelopment Tools
Server Platform Development
依赖包:ncurses-devel
获取目标主机上硬件设备的相关信息:
CPU:
1.cat /proc/cpuinfo
2.lscpu
3.x86info -a # yum install -y x86info
PCI设备:
lspci
-v
-vv
lsblk
了解全部硬件设备信息:
hal-device # centos 6有此命令,centos7没了 yum install -y hal
内核编译过程:
步骤:
1. tar xf linux-3.10.67.tar.xz -C /usr/src # 内核代码可以在www.kernel.org下载
2.cd /usr/src
3. ln -sv linux-3.10.67 linux
4. cd linux
5. make menuconfig # 进入图形界面,配置内核选项。 需要依赖4.9以上版本的gcc(c语言编译器)
6. make [-j #] # 编译内核,-j可以根据自己电脑CPU的核心数启动其2倍数量的线程同时编译
7. make modules_install # 安装内核模块
8. make install # 安装内核
重启系统,选择使用新内核
screen 命令:
打开screen:~]# screen
拆除screen:Ctrl+a,松开按 d
列出screen: screen -ls
连接至screen: screen -r SCREEN_ID
是关闭screen:exit
(1)配置内核选项
支持“更新”模式进行配置:在已有的.config文件的基础之上进行“修改”配置;
(a)make config:基于命令行以遍历的方式去配置内核中可配置的每个选项;
(b)make menuconfig:基于cureses的文本配置窗口;
(c)make gconfig:基于GTK开发环境的窗口界面;包组“桌面平台开发”;
(d) make xconfig:基于QT开发环境的窗口界面;
支持“全新配置”模式进行配置:
(a)make defconfig:基于内核为目标平台提供的“默认”配置为模板进行配置;
(b)make allnoconfig: 所有选项均为“no”;
(2) 编译
(a)多线程编译:make [-j #]
(b)编译内核中的一部分代码:
(i)只编译某子目录中的相关代码:
# cd /usr/src/linux
# make path/to/dir
比如:
cd /usr/src/linux
make drivers/net/wireless/
(ii) 只编译一个特定的模块
# cd /usr/src/linux
# make path/to/dir/file.ko
(c) 如何交叉编译:
目标平台与当前编译操作所在的平台不同
# make ARCH=arch_name
要获取特定目标平台的使用帮助
# make ARCH=arch_name help
(3) 如何在执行过编译操作的内核源码树上做重新编译:
事先清理操作:
# make clean:清理编译生成的绝大多数文件,但会保留config,及编译外部模块所需要的文件;
# make mrproper:清理编译生成的所有文件,包括配置生成的config文件及某些备份文件;
# make disclean:相当于mrproper,额外清理各种patches以及编辑器备份文件;
CentOS系统安装
安装程序:
anaconda
bootloader-->kernel(rootfs)-->anaconda
anaconda:
tul:基于cureses的文本配置窗口
gul:图形界面
CentOS的安装过程启动流程:
MBR:boot.cat
Stage2:isolinux/isolinux.bin
配置文件:isolinux/vmlinuz
每个对应的菜单选项:
加载内核:isolinux/vmlinuz
向内核传递参数:append initrd=initrd.img
装载根文件系统,并启动anaconda
默认界面时图形界面:512MB+内存空间;
若需要显式指定启动TUI接口:向启动内核传递一个参数"text"即可;
ESC,
boot:linux text
注意:上述内容一般位于引导设别,例如可通过光盘、U盘或网络等;后续的anacona及其安装用到程序包等可以来自于程序包仓库,此仓库的位置可以为:
本地光盘
本地硬盘
ftp server
http server
nfs server
如果想手动指定安装仓库:
ESC
boot:linux method # 提醒用户选择安装方法
anaconda的工作过程:
安装前配置阶段
安装过程使用的语言
键盘类型
安装目标存储设备
Basic Storage:本地磁盘
Special Storage:本地磁盘
设定主机名
配置网络接口
时区
管理员密码
设定分区方式及MBR的安装位置;
创建一个普通用户;
选定要安装的程序包;
安装阶段
在目标磁盘创建分区并执行格式化;
将选定的程序包安装至目标位置;
安装bootloader;
首次启动
iptables
selinux
core dump # 核心转储,当内核在某一时刻崩溃时,能够将内存中的数据创建一个映像文件保存在磁盘上。内存小于2G做不了。
anaconda的配置方式:
(1)交互式配置方式;
(2)支持通过读取配置文件中事先定义好的配置项自动完成配置;遵循特定的语法格式,此文件即为kickstart文件;
安装引导选项:
boot:
text:文本安装方式
method:手动指定使用的安装方法
与网络相关的引导选项:
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
远程访问功能相关的引导选项:
vnc
vncpassword='PASSWORD'
启动紧急救援模式:
rescue
装载额外驱动:
dd
www.redhat.com/docs,《Installation guide》
ks:指明kickstart文件的位置;
ks=
DVD drive:ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard Drive:ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
FTP Server:ks=ftp://HOST:[PORT]/PATH/TO/KICKSTART_FILE
HTTPS_Server:ks=https://HOST[:PORT]/PATH/TO/KICKSTART_FILE
kickstart文件的格式:
命令段:
指定各种安装前配置选项,如键盘类型等;
程序包段:
指明要安装程序包,以及包组,也包括不安装的程序包;
%packages
@group_name
package
-package
%end
脚本段:
%pre:安装前脚本
运行环境:运行安装介质上的卫星Linux系统环境;
%post:安装后脚本:
运行环境:安装完成的系统;
命令段中的必备命令:
auth:认证方式配置
auth --enableshadow --passalgo=sha512
bootloader:定义bootloader的安装位置及相关配置
bootloader --append=" crashkernel=auto rhgb quiet" --location=mbr --boot-drive=sda
keyboard:设置键盘类型
keyboard us
lang:语言类型
lang zh_CN.UFT-8
part:分区布局;
part /boot --fstype=ext4 --size=500
part pv.008002 --size=500
rootpw:管理员密码
rootpw --iscrypted XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
timezone:时区
timezone Asia/Shanghai
补充:分区相关的其他指令
clearpart:清除分区
clearpart --none --drivers=sda:清空磁盘分区;
volgroup:创建卷组
volgroup:myvg --pesize=4096 pv.008002
logvol:创建逻辑卷
logvol /home --fstype=ext4 --name=lv_home --vgname-mtvg --size=5120
生成加密密码的方式:
openssl passwd -1 -salt `openssl rand -hex 4`
可选命令:
install OR upgrade:安装或升级
text:安装界面类型,text为tul,默认为GUI。
network:配置网络接口
network --onboot yes --device eth0 --bootproto dhcp --noipv6
firewall:防火墙
firewall --disabled
selinux:SELinux
selinux --disabled
halt、poweroff或reboot:安装完成之后的行为;
repo:指明安装时使用的repository;
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
url:指明安装时使用的repository,但为url格式;
url --url=http://192.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/
系统安装完成之后禁用防火墙:
centos6:
# service iptables stop
# chkconfig iptables off
centos7:
# systemctl stop firewalld.service
# systemctl disable firewalld.service
系统安装完成后禁用SElinux:
编辑/etc/sysconfig/selinux或/etc/selinux/config文件,修改SELINUX参数的值为下面其中之一:
permissive
disabled
立即生效:
# getenforce
# setenforce 0
定制kickstart文件:
# yum install system-config-kickstart
# system-config-kickstart
检查语法错误:
# ksvalidator
创建光盘镜像:
mkisofs -R -j -T -v --no-emul-boot --boot-into-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/
按ESC ,进入命令行,和上图一样的: