PXE+Kickstart+DHCP+TFTP实现无人值守安装操作系统

Linux安装大致可以分为2个阶段

  • 第一阶段:anaconda;
  • 第二阶段:安装阶段系统会按照anaconda阶段设定的参数自动安装。

anaconda阶段是Linux的预安装环境,提供linux安装选项的一个接口,可以将它比作是window中的PE环境。

anaconda有两种模式:

  • 交互式:和普通安装一样,按照提示选择选项一步步的安装;
  • 非交互式:通过读取kickstart文件(ks.cfg)的配置,进行自动安装。

PXE + Kickstart

使用PXE + KickStart可以通过非交互模式完成无人值守安装操作系统。

PXE+Kickstart 无人值守安装操作系统完整过程如下:

PXE的工作流程及配置文件

在使用ks.cfg之前,需要先通过PXE引导启动环境。

PXE Client从DHCP服务器获取到PXE Server的位置后,会到PXE Server上按照“MAC->具体IP->IP的C段(前24位)->IP的B段(前16位)->IP的A段(前8位)->default”的顺序匹配PXE配置文件,然后再从PXE配置文件中获取vmlinuz、initrd.img、ks.cfg、系统镜像等文件所在的服务器和位置信息。

PXE的工作流程:

在操作系统安装镜像的isolinux目录下,都包含了一个isolinux.cfg文件,可以在该文件的基础上进行修改,并生产PXE配置文件,用来引导该操作系统的安装。

PXE配置文件示例如下:

# 默认启动的是 'label linux' 中标记的内核
default linux
 
# 显示 'boot: ' 提示符。
# 为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。
prompt 1
 
# 在用户输入之前的超时时间,单位为 1/10 秒。
timeout 600
 
# 显示某个文件的内容,注意文件的路径。默认是在 /tftpboot 目录下。
# 也可以指定位类似 'install/rhel4.4-inst/boot.msg' 这样的,路径+文件名。
display boot.msg
 
# 按下 'F1' 这样的键后显示的文件。注意路径。默认是 /tftpboot。
# 注:syslinux 官方网站上说目前只能使用 F1-F10。 
F1 install/rhel4.4-inst/boot.msg
F2 install/rhel4.4-inst/options.msg
#...
F10 install/rhel4.4-inst/snake.msg
 
# 'label' 指定你在 'boot:' 提示符下输入的关键字。
# kernel 参数指定要启动的内核。同样要注意路径,默认是 /tftpboot 目录。
# append 指定追加给内核的参数,能够在 gurb 里使用的追加给内核的参数,在这里也都可以使用。
label linux
  kernel install/rhel4.4-inst/vmlinuz
  append initrd=install/rhel4.4-inst/initrd.img ramdisk_size=8192
 
label text
  kernel vmlinuz
  append initrd=install/rhel4.4-inst/initrd.img text ramdisk_size=8192
label expert
  kernel vmlinuz
  append expert initrd=install/rhel4.4-inst/initrd.img ramdisk_size=8192
 
# 使用 kickstart 安装。
# 可以在 ks 参数后直接指定 kickstart 文件的位置。
label ks basic
  kernel install/rhel4.4-inst/vmlinuz
  append ks=ftp://192.168.10.251/install/rhel4.4_basic.cfg initrd=install/rhel4.4-inst/initrd.img ramdisk_size=8192
 
label lowres
  kernel vmlinuz
  append initrd=install/rhel4.4-inst/initrd.img lowres ramdisk_size=8192
label local
  localboot 1
label memtest86
  kernel memtest
  append -

安装linux过程中,获取ks.cfg文件的方式有多种,如直接在cdrom中获取,常见的形式还有http,ftp,nfs等方式
格式有三种:
1.cdrom和硬盘
ks=cdrom:/dir/ks.cfg(硬盘的话把cdrom换成hd即可,下面的类似)

2.http和ftp
ks=http://domain.com/dir/ks.cfg

3.NFS
ks=nfs:domain.com:/dir/ks.cfg

三种格式主要区分在于后面的斜杠,这里要注意区分

Kickstart的配置文件

ks.cfg文件组成大致分为3段:
1.命令段:
键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项

2.软件包段:
%packages
@groupname:指定安装的包组
package_name:指定安装的包
-package_name:指定不安装的包

在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。

3.脚本段(可选):
%pre:预安装脚本(由于只依赖于启动镜像,支持的命令很少)
%post:后安装脚本(基本支持所有命令)

具体的ks.cfg文件配置,可以在已经安装好的linux的root目录下找到anaconda_ks.cfg,这个ks文件是在安装linux后,根据用户的安装选项自动生成的。
如果不想手工以文本方式配置ks.cfg,也可以在linux系统中使用system-config-kickstart来生成ks.cfg文件,或者再安装x-window来使用图形化工具制作ks.cfg文件。

ks.cfg样例(系统是CentOS-6.2-i386-minimal,所以配置样例比较精简):

# Kickstart file automatically generated by anaconda. 
 
#version=DEVEL 
 
install  #表示是安装,而不是升级 
 
text #文本方式安装 
 
cdrom #安装方式,如果是网络安装的话可以写成 url ––url ftp://192.168.1.254/dir 或者 nfs --server=192.168.0.241 --dir=/centosinstall 
 
key –skip #这是另外添加的,如果是redhat的系统,会要求输入key,这里配置为跳过,如果不配置安装时会停在那里要求用户输入key 
 
lang en_US.UTF-8  #语言 
 
keyboard us #键盘样式 
 
network --onboot no --device eth0 --noipv4 --noipv6 #网络配置 配置具体参数样例:network –onboot yes --bootproto=static --ip=192.168.1.1 --netmask=255.255.255.0 其他网关,DNS等格式和ifcfg-ethx的方式一样 
 
rootpw  --iscrypted $6$PEJ49S7OkrNra3UM #管理员密码,是加密过的 要是使用不加密的方式则这样写:rootpw 123456 
firewall --service=ssh #开启防火墙,并打开ssh端口 
 
authconfig --enableshadow --passalgo=sha512 #用户认证和密码加密方式 
 
selinux --enforcing #强制打开selinux 
 
timezone --utc Etc/GMT+8 #时区设置 
 
zerombr yes #清空磁盘的mbr 
 
bootloader --location=mbr --driveorder=sda #引导程序相关参数 
 
# The following is the partition information you requested 
# Note that any partitions you deleted are not expressed 
# here so unless you clear all partitions first, this is 
# not guaranteed to work 
 
clearpart –all –initlabel #初始化磁盘 
 
part / --fstype=ext4 --size=18000 #开始分区 
part swap --grow --size=1024 
repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100 
 
reboot #重启机器
 
 
%packages --nobase #安装的软件包,这里由于安装的是最小mini版,所以只安装了核心软件包组 
@core 
  
 
%post #后安装脚本(这是另外添加的) 
id lustlost &>; /dev/null || useradd lustlost #检查是否有lustlost用户,如果没有则添加 
echo 123456 | passwd –stdin lustlost #配置密码 
 
cat >> /etc/yum.repos.d/base.repo << eof 
[base] 
name=baseserver 
baseurl=http://192.168.1.254/yum 
gpgcheck=0 
enable=1 
eof                                 #这里在安装系统成功后执行脚本自动配置一个yum源,其他脚本可以按照需要定义 
 
%end 

参考资料:

http://www.linuxidc.com/Linux/2014-06/103633p2.htm

http://www.syslinux.org/wiki/index.php/PXELINUX

http://www.syslinux.org/wiki/index.php/SYSLINUX

http://www.07net01.com/linux/linuxanzhuangxiangjie_peizhiks_cfgshixianzidonganzhuangguocheng_5112_1340790041.html

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7-Beta/html/Installation_Guide/sect-kickstart-examples.html#sect-kickstart-partitioning-example

http://blog.csdn.net/taiyang1987912/article/details/42176709

PXE+Kickstart+DHCP+TFTP实现无人值守安装操作系统的更多相关文章

  1. PXE+DHCP+TFTP+Cobbler 无人值守安装centos 7

    Cobbler(补鞋匠)是通过将DHCP.TFTP.DNS.HTTP等服务进行集成,创建一个中央管理节点,其可以实现的功能有配置服务,创建存储库,解压缩操作系统媒介,代理或集成一个配置管理系统,控制电 ...

  2. centos 6.x下pxe+tftp+http+kickstart无人值守安装操作系统

    1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过 ...

  3. [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  4. CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  5. RHEL7下PXE+NFS+Kickstart无人值守安装操作系统

    RHEL7下PXE+NFS+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] name= ...

  6. RHEL7下PXE+Apache+Kickstart无人值守安装操作系统

    RHEL7下PXE+Apache+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] na ...

  7. CentOS 6.6下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  8. 【转载】CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    [转载]CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转自:CentOS 6.4下PXE+Kickstart无人值守安装操作系统 - David_Tang - 博客园 http ...

  9. Centos下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

随机推荐

  1. C语言学习 第十一次作业总结

    作业总结 两次的作业,都是和指针有关.从第一次的作业开始,我就多次让同学们思考这个问题:为什么要用指针,为什么在函数的形参中要使用指针.如果能够想明白这2个问题,那么同学们应该会指针的了解就差不多足够 ...

  2. 【WPF】WPF 布局

    1.window 类继承自 ContentControl 所以内部只能有一个元素2.遵循原则:            不应显示的设置元素(控件)尺寸,可以通过设置最大最小尺寸来限制大小         ...

  3. Dao跨事务调用实现转账功能

    1.首先在数据库当中创建数据库,并且创建它的 实现类 package com.beiwo.epet.entity; public class Account { private int id; pri ...

  4. RecycleView 实现多布局

    最近的一个新需求,简单描述下吧: 需求: 目标样式如图所示,我们需要根据需求动态添加网关和设备. 目标有了下面就是怎么实现了.首先我们选用的是RecycleView 那么主要目标就成了 在recycl ...

  5. jquery基本操作笔记

    来源于:http://www.cnblogs.com/webcome/p/5484005.html jq和js 可以共存,不能混用: 1 2 3 4 5 6 $('.box').css('backgr ...

  6. asp.net mvc 权限过滤和单点登录(禁止重复登录)

    1.权限控制使用controller和 action来实现,权限方式有很多种,最近开发项目使用控制控制器方式实现代码如下 /// <summary> /// 用户权限控制 /// < ...

  7. 【BZOJ-2119】股市的预测 后缀数组

    2119: 股市的预测 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 334  Solved: 154[Submit][Status][Discuss ...

  8. 分享一些平时测试用的sql payloads

    1:BOOL SQLINJECTION \'"%df'%df" and 1=1 and 1=2' and '1'='1' and '1'='2" and "1& ...

  9. eclipse报错“Undefined variable from import: ...”解决方案

    环境 eclipse + pydev2.8.2 + python 3.5.1/python 2.7.11 + wxpython3.0 出现原因:原先默认解释器设置为python2,重装了pydev之后 ...

  10. 利用django创建一个投票网站(一)

    这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...