========================================================================================================================================= DHCP 1、DHCP 动态主机设置协议(Dynamic Host Configuration Protocol,DHCP),是一个局域网协议,基于 UDP 协议工作。DHCP 于1993年成为标准 协议,其前身是 bootp 协议(Bootstrap Protocol),bootp 协议设置之初是用来给无盘主机透过网络开机的协议。DHCP 协议最大的特点 是能够自动给网络中的主机分配网络参数,使得管理员能够集中管理主机。DHCP 采用 C/S 结构,服务器端进程使用 67/UDP 端口和客户 端进程使用 68/UDP 端口进行通信。 此外,能够提供和 DHCP 同样功能的程序包有 dnsmasq,Dnsmasq是一个开源的轻量级DNS转发和DHCP、TFTP服务器,使用C语言编写。Dnsmasq 针对家庭局域网等小型局域网设计,资源占用低,易于配置。 2、DHCP运行过程 DHCP 的运行过程分为四个过程:请求IP租约、提供IP租约、选择IP租约、确认IP租约 1、DHCP发现(Discover) 在 DHCP 未给客户端提供 IP 之前,客户端没有 IP 地址,所以客户端以广播的形式在局域网内寻找 DHCP 服务器, 网内的任意 DHCP 服务器都可以接收到来自客户端的请求。 2、DHCP提供(Offer) 当 DHCP 服务器端接收到客户端的请求后,(这个过程中,DHCP 会从自己的地址池中挑选一个未被使用的地址给客户端) 服务器端通过网络单播的形式给客户端提供网络参数,包括客户端的 MAC 地址,DHCP 提供的IP地址、子网掩码、租期、 DHCP服务器IP、广播地址、DNS服务器IP等信息。这个过程传递的网络参数还未确认,通常客户端会接收最先响应它的 DHCP 服务器。 3、DHCP请求(Request) 当客户端接收到来自 DHCP 的网络参数后,客户端会发送一个消息,请求并告知 DHCP 服务器自己要使用 IP 地址,、 同时告知其他 DHCP 服务器自己已经接收到网络参数,包括提供网络参数的服务器IP地址。其他 DHCP 服务器将 IP 租约撤销。 4、DHCP确认(Acknowledge[ACK]) 当 DHCP 接收到客户端发送的 Request 消息后,DHCP 服务器发送一个确认消息给客户,这个确认包包含最后确认的网 络参数以及客户端可能请求的其他所有配置信息。 客户在获得了一个IP地址以后,会可以发送一个ARP请求来避免由于DHCP服务器地址池重叠而引发的IP冲突。 3、租约 在 DHCP 中采用的租约的概念,即每个地址使用都有固定使用期限,当主机关机不再使用 IP 地址时,IP 地址释放。 在客户端使用的IP地址租赁时间达到 50% 时来开始续租,向 DHCP 服务器发向新的 DHCPREQUEST 请求。如果 DHCP 服务没有 拒绝的理由,则回应 DHCPACK 信息,续租成功。当 DHCP 客户端收到该应答信息后,就重新开始新的租用周期。当租赁时间达 到 87.5%,且如果之前 DHCP Server 没有回应,则等到租约期的 87.5% 时,主机会再发送一次广播请求。 特殊情况下,DHCP 服务器的地址池发生改变后,当客户端发出续租请求后,因为请求续租的地址不在当前 DHCP 服务器的地址 池内,所以会被 DHCP 服务器拒绝。此时 DHCP 服务器响应客户端 DHCPNACK 报文,指客户端发出的请求是错误的。 DHCPDecline 客户端到服务器,指示地址已被使用 DHCPRelease 客户端到服务器,放弃网络地址和取消剩余的租约时间 DHCPInform 客户端到服务器,只要求本地配置参数,客户端已经具有外部配置的网络地址 5、DHCP Relay(DHCP 中继) DHCP 中继代理程序可以让没有 DHCP 服务器的子网中的主机向其他子网中的 DHCP 服务器发出 DHCP 请求。DHCP 代理程序能 够代为客户端向另一个子网中的 DHCP 服务器发送 DHCP 请求。 6、DHCP 服务程序安装 1、安装 yum install dhcp 2、软件包列表(部分) /etc/dhcp/dhcpd.conf # dhcpd配置文件 /etc/dhcp/dhcpd6.conf # dhcpd6配置文件(IPv6) /etc/openldap/schema/dhcp.schema /etc/sysconfig/dhcpd # 环境配置文件 /usr/bin/omshell /usr/lib/systemd/system/dhcpd.service # dhcpd启动服务脚本 /usr/lib/systemd/system/dhcrelay.service # dhcp中继代理服务脚本 /usr/sbin/dhcpd # dhcpd 程序 (dhcpd和dpcrelay进程只能同时启动一个) /usr/sbin/dhcrelay # dhcp中继代理程序 /var/lib/dhcpd/dhcpd.leases # 存放dhcp服务器分配过的地址的租约信息 7、DHCP 服务配置文件 默认安装的 DPCP 服务配置文件为空,但程序包提供了配置文件示例文件,可以将示例配置文件复制为 /etc/dhcp/dhcpd.conf, 然后进行配置。同时可以查看 dhcp.conf 的帮助文件 man 5 dhcpd.conf。 配置组成段 1、全局配置:全局生效的配置 2、subnet:定义地址池 3、host:针对某个主机的专用配置 4、shared-network:超级作用域,把多个地址网段在同一个网络中分配 配置项 option domain-name "xuejiwnei.com"; # DNS的搜索域 option domain-name-servers DNS_IP1,DNS_IP; # DNS服务器IP default-lease-time 600; # 默认租约期限,单位为秒 max-lease-time 7200; # 最大租约期限,单位为秒 log-facility local7; # dhcp服务器产生日志,默认在/var/log/boot.log文件中 option subnet-mask X.X.X.X; # 设定客户端子网掩码 local-port port_num; # 定义DHCP监听的端口 local-address address; # 监听的IP地址 地址池配置 subnet 10.5.5.0 netmask 255.255.255.224 { # 定义地址池 range 10.5.5.26 10.5.5.30; # 定义地址范围 option domain-name-servers DNS_IP; option domain-name "xuejiwnei.com"; option routers 10.5.5.1; # 定义网关地址 option broadcast-address 10.5.5.31; # 广播地址 default-lease-time 600; max-lease-time 7200; filename "Xncd19c"; # filename语句可用于指定由客户端加载的初始[引导文件]的名称。无论文 件传输协议是什么,客户端都可以使用它来加载文件 next-server ncd-booter; # next-server语句用于指定要从中启动初始引导文件(在filename语句中指定) 的主机地址。服务器名称应为数字IP地址或域名,这个主机通常是一个tftp服务器 } 为某特性MAC地址固定的分配一个地址 hsot 'host id' { hardware ethernet 08:00:07:26:c0:a5; # 被设定主机及的MAC地址 fixed-address IP; # 分配的IP地址,此处分配的地址不能是地址池内的地址 } option选项 用来分配除网络参数之外的其他选项,option既可以定义在全局配置段,也可以定义在地址池配置段中。作用范围越小的 定义优先生效。 8、dhclient dhcp 客户端工具,可用来获取地址,释放地址。 格式: dhclient IF_NAME 选项: -d # 前台运行的方式 -r # 释放IP地址 -s server-addr # 指定DHXP服务器IP地址 ========================================================================================================================================= tftp-server 文件服务器:tftp(Trivial FTP),简单文件传输协议,高效传输小文件,(监听在69号端口),基于 UDP 协议进程数据传输。 服务器端:tftp-server 客户端:tftp 文件列表 /etc/xinetd.d/tftp # 超级守护进程配置文件,在 Systemd 管理的 Linux 不是必须 超级守护进程管理瞬时进程 /usr/lib/systemd/system/tftp.service # 服务启动脚本,使用这个脚本启动,tftp将会成为守护进程一直在后台运行 /usr/lib/systemd/system/tftp.socket # socket 激活方式启动,有 systemd 进程管理按需启动 /usr/sbin/in.tftpd # tftp 程序 /var/lib/tftpboot # 文件映射的根目录 ========================================================================================================================================= PXE 1、PXE:预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境提供了一种使用网络接口(NetworkInterface)启动计算机 的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。PXE 是C/S的结构,客户端在网卡的 ROM中,计算机启动后,BIOS 加电自检,之后把 PXE 程序加载到内存执行。 通常很多公司为了节省成本,计算机不带光驱等设备,因而无法通过本地设备进行安装系统,此外,如果需要安装的操作系统过多时,手动 安装的效率很低,所以可以利用 PXE 自动进行批量安装。 2、实现 PXE 自动化安装所需条件 DHCP # 给网卡提供 IP 地址,并指明引导文件的位置 TFTP # 提供引导文件 HTTP(文件服务器) # 提供系统安装源 3、引导文件 引导文件由 syslinux 程序包提供。syslinux 是一个启动加载器(boot loader)的集合,可以从硬盘、光盘、或者 PXE 的网络引导启动系统。 PXELINUX 通常使用在与预引导运行环境兼容只读内存的网卡上。预引导运行环境使用 DHCP 或 BOOTP 来使用基本的 TCP/IP 网络,并通过TFTP下载 引导程序。该引导程序根据从 TFTP 服务器下载的指令加载并设置核心。通常来说,PXELINUX 用于从中央服务器引导 Linux,或是引导无盘系统。 syslinux 项目中包含了许多启动加载器,例如在 MBR 引导过程中,/usr/lib/syslinux/bios/mbr.bin 或 /usr/lib/syslinux/bios/gptmbr.bin 即是 BIOS 最先会加载的440字节程序。对于网络引导而言 pxelinux.0 最先被加载,当他加载完毕之后会读取配置文件 syslinux.cfg ,如果 配置文件无法加载,则会显示 boot: 提示符。 syslinux 程序包中提供的启动加载器由 BIOS 指引启动,启动之后启动加载器引导加载内核和initrd文件。 项目地址:http://www.syslinux.org/wiki/index.php?title=The_Syslinux_Project 4、PXE 引导启动自动化安装操作系统过程 说明:PXE Client 客户端既作为 DHCP 服务的客户端,又作为 TFTP 服务的客户端。 1、计算机启动,BIOS 程序将集成在网卡设备 ROM 中的 PXE Client 程序加载到内存并执行,PXE Client 程序利用广播的形式寻找可以给PXE CLient 提供 IP 地址的 DHCP 服务器,从而获得 IP 地址。在 DHCP 返回 IP 信息的同时,DHCP 服务器返回在(filename "Xncd19c";next-server ncd-booter;) 配置段特定指明了的启动加载程序的位置,即 PXE Client 客户端取哪里请求传输启动加载程序。 2、PXE Client 使用 tftp 协议从 tftp 服务器上请求下载加载程序 pxelinux.0 ,同时请求传送 pxelinux.0 的配置文件 default{由于syslinux 程序包中的所有启动加载器使用的配置文件相同,所以可以复制使用光盘引导加载器 isolinux.bin 的配置文件 isolinux.cfg作为模板进行配置}, default 配置文件定义了在开机启动时默认加载的内核和者由用户自由选择的菜单项以及启动加载内核时要传递给内核的参数。 3、选定要启动的内核后,PXE Client 发出请求传输内核和 ramdisk 文件的的信息,TFTP 服务器将内核和 ramdisk 发送给PXE Client。 4、加载内核到并将 default 中指定的内核参数传递给内核,此后控制权由内核接管。 5、内核启动 anaconda 安装管理程序,并从传递给内核的参数中读取 kickstart 文件,按照 kickstart 文件中的事先配置,开始自动安装操作系统。 5、相关文件 pxelinux.0 # 可执行引导程序,提供简单的选择菜单 pxelinux.cfg/default # 引导程序的配置文件 menu.c32 # 文本菜单。menu.c32是Syslinux的一个comboot模块,用于在屏幕上呈现菜单 menu.c32 位于引导介质的位置 pxelinux.0 相同的目录 vesamenu.32 # 图形菜单 splash.png # vesamenu.32的背景图片 reboot.c32 # 重启模块 poweroff.com # 关闭电源选项 vmlinuz # 启动内核 initrd.img # 启动 ramdisk 文件 {chain.c32,mboot.c32,menu.c32,memdisk} # CentOS7 {boot.cfg,vesamenu.c32,splash.png} # CentOS6 LABEL reboot MENU LABEL Reboot COM32 reboot.c32 LABEL poweroff MENU LABEL Power Off COMBOOT 6、实验过程记录 (172.18.26.3[HTTP服务] 172.18.26.4[TFTP|DHCP服务]) 1、HTTP 配置 使用 HTTP 提供安装目录树即 anaconda 读取的 kickstart 文件 1、yum install httpd 2、挂载光盘并绑定到 httpd 的映射目录下 mkdir /var/www/html/CentOS7 mount -t iso9660 /dev/sr0 /media/ -o loop,ro mount --bind /media/ /var/www/html/CentOS7 注:为了检验 httpd 是否能提供服务,修改 /etc/httpd/conf.d/welcome.conf 文件中 -Indexes 为 Indexes,用浏览器查看 2、DHCP 配置 DHCP给PXE Client提供IP地址,并指明启动引导程序下载的位置 option domain-name "xuejinwei.com"; option domain-name-servers 172.18.0.1; default-lease-time 7200; max-lease-time 7200; log-facility local7; subnet 172.18.0.0 netmask 255.255.0.0 { range 172.18.26.1 172.18.26.100; next-server 172.18.26.4; filename "pxelinux.0"; } 3、tftp 配置 tftp服务器给 PXE Client 提供启动引导加载器下载及内核和ramdisk 1、启动 systemctl start tftp.scoket 2、复制测试文件到 /var/lib/tftpboot/ cp /tmp/test /var/lib/tftp/boot/ 3、使用客户端测试tftp服务是否正常提供服务 tftp 172.18.26.4 > get test 4、提供启动加载文件及内核、ramdisk 文件 1、提取pxelinux.0启动加载器文件 # 挂载光盘提取文件 mount -t iso9660 /dev/sr0 /media -o loop,ro cp /media/Packages/syslinux-4.05-13.el7.x86_64.rpm /mnt/ umount /media # 提取 pxelinux.0 文件 rpm2cpio syslinux-version-architecture.rpm | cpio -dimv # 复制 pxelinux.0 文件 cp /mnt/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 创建 pxelinux 配置文件目录 mkdir /var/lib/tftpboot/pxelinux.cfg 2、为pxelinux.0启动加载器提供配置文件 vim /var/lib/tftpboot/pxelinux.cfg/default 3、复制其他相关文件 . ├── initrd.img # ramdisk文件 ├── pxelinux.0 # 引导加载器 ├── pxelinux.cfg │   └── default # 引导加载器的配置文件 ├── splash.png ├── vesamenu.c32 └── vmlinuz 5、HTTP安装目录树 . ├── CentOS6 │   ├── CentOS_BuildTag │   ├── EFI │   ├── EULA │   ├── GPL │   ├── images │   ├── isolinux │   ├── Packages │   ├── RELEASE-NOTES-en-US.html │   ├── repodata │   ├── RPM-GPG-KEY-CentOS-6 │   ├── RPM-GPG-KEY-CentOS-Debug-6 │   ├── RPM-GPG-KEY-CentOS-Security-6 │   ├── RPM-GPG-KEY-CentOS-Testing-6 │   └── TRANS.TBL ├── CentOS7 │   ├── CentOS_BuildTag │   ├── EFI │   ├── EULA │   ├── GPL │   ├── images │   ├── isolinux │   ├── LiveOS │   ├── Packages │   ├── repodata │   ├── RPM-GPG-KEY-CentOS-7 │   ├── RPM-GPG-KEY-CentOS-Testing-7 │   └── TRANS.TBL └── ks ├── ks-6.cfg └── ks-7.cfg 6、TFTP启动文件 . ├── CentOS6 │   ├── initrd.img │   └── vmlinuz ├── CentOS7 │   ├── initrd.img │   └── vmlinuz ├── memdisk ├── menu.c32 ├── poweroff.com ├── pxelinux.0 ├── pxelinux.cfg │   └── default ├── reboot.c32 ├── splash.png └── vesamenu.c32 7、CentOS6 kickstart 文件 lang en_US keyboard us timezone Asia/Shanghai --isUtc rootpw $1$LzpcvXkW$VPvLs2Dm/lK8ja010k/FD. --iscrypted #platform x86, AMD64, or Intel EM64T reboot url --url=http://http://172.18.26.4/CentOS6/CentOS6 bootloader --location=mbr --append="rhgb quiet crashkernel=auto" zerombr clearpart --all --initlabel autopart auth --passalgo=sha512 --useshadow selinux --disabled firewall --disabled firstboot --disable %packages @base %end 8、CentOS7 kickstart 文件 #version=DEVEL # Use CDROM installation media install url --url="http://172.18.26.4/CentOS7" # System authorization information auth --enableshadow --passalgo=sha512 selinux --disabled # Use graphical install graphical # Run the Setup Agent on first boot firstboot --enable ignoredisk --only-use=sda # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=dhcp --device=ens33 --ipv6=auto --activate network --hostname=localhost.localdomain # Root password rootpw --iscrypted $6$JkrkbR/WNDOybqtm$ALO.Ca9NOnRw6uHVKkRtEeQzz7Q1uIzvTYZGpVnmOCT8EUgRHuyBD3VRhOl/ykWG3whTSZ0QIkfMjsi.SUHIL1 # System services services --enabled="chronyd" # System timezone timezone Asia/Shanghai # System bootloader configuration bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda part /boot --fstype=ext4 --size=500 part swap --size=2048 part / --fstype=ext4 --grow --size=17931 # Partition clearing information clearpart --none --initlabel reboot %packages @^minimal @core chrony kexec-tools %end %addon com_redhat_kdump --enable --reserve-mb='auto' %end %anaconda pwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notempty pwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty %end 9、pxelinux.0的配置文件default default menu.c32 # 默认加载的菜单模块 timeout 300 # 超时时长 menu title Install centOS6 or CentOS7 (xuekaixin) # 顶部显示信息 label linux # label关键字后面跟标签信息,不区分大小写 menu label ^Install Mini-CentOS Linux 7 # 显示的菜单项 menu default kernel CentOS7/vmlinuz append initrd=CentOS7/initrd.img ks=http://172.18.26.4/ks/ks-7.cfg quit label linux menu label ^Install Mini-CentOS Linux 6 kernel CentOS6/vmlinuz append initrd=CentOS6/initrd.img ks=http://172.18.26.4/ks/ks-6.cfg quit label local menu label Boot from ^local drive localboot 0xffff LABEL reboot MENU LABEL Reboot COM32 reboot.c32 #####################################示例配置########################################### default menu.c32 timeout 300 menu title Install centOS6 or CentOS7 (xuekaixin) label linux menu label ^Install Mini-CentOS Linux 7 menu default kernel CentOS7/vmlinuz append initrd=CentOS7/initrd.img ks=http://172.18.26.4/ks/ks-7.cfg quit label linux menu label ^Install Mini-CentOS Linux 6 kernel CentOS6/vmlinuz append initrd=CentOS6/initrd.img ks=http://172.18.26.4/ks/ks-6.cfg quit label local menu label Boot from ^local drive localboot 0xffff LABEL reboot MENU LABEL Reboot COM32 reboot.c32 ######################################################################################## #####################################示例配置########################################### default vesamenu.c32 timeout 300 display boot.msg menu clear menu background splash.png menu title PXE Install centOS6 or CentOS7 (xuekaixin) # menu title CentOS Linux 7 menu vshift 8 menu rows 18 menu margin 8 #menu hidden menu helpmsgrow 15 menu tabmsgrow 13 # Border Area menu color border * #00000000 #00000000 none # Selected item menu color sel 0 #ffffffff #00000000 none # Title bar menu color title 0 #ff7ba3d0 #00000000 none # Press [Tab] message menu color tabmsg 0 #ff3a6496 #00000000 none # Unselected menu item menu color unsel 0 #84b8ffff #00000000 none # Selected hotkey menu color hotsel 0 #84b8ffff #00000000 none # Unselected hotkey menu color hotkey 0 #ffffffff #00000000 none # Help text menu color help 0 #ffffffff #00000000 none # A scrollbar of some type? Not sure. menu color scrollbar 0 #ffffffff #ff355594 none # Timeout msg menu color timeout 0 #ffffffff #00000000 none menu color timeout_msg 0 #ffffffff #00000000 none # Command prompt text menu color cmdmark 0 #84b8ffff #00000000 none menu color cmdline 0 #ffffffff #00000000 none # Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message. menu tabmsg Press Tab for full configuration options on menu items. menu separator # insert an empty line menu separator # insert an empty line label linux menu label ^Install Mini-CentOS Linux 7 menu default kernel CentOS7/vmlinuz append initrd=CentOS7/initrd.img ks=http://172.18.26.4/ks/ks-7.cfg quit label linux menu label ^Install Mini-CentOS Linux 6 kernel CentOS6/vmlinuz append initrd=CentOS6/initrd.img ks=http://172.18.26.4/ks/ks-6.cfg quit label local menu label Boot from ^local drive localboot 0xffff LABEL reboot MENU LABEL Reboot COM32 reboot.c32 ######################################################################################## ========================================================================================================================================= 四、anaconda 1、介绍 Anaconda是Red Hat Enterprise Linux、CentOS、Fedora等操作系统的安装管理程序。它以Python及C语言写成,以图形的PyGTK和文字 的python-newt接口写成。它可以用来自动安装配置,使用户能够以最小的监督运行。anaconda 是一个应用程序。 因为 anaconda 也是一个程序,所以也需要一个内核去运行它,事实上在 ISO 镜像上确实有一个 Linux 内核,当开始启动机器准备安装时, ISO 镜像中的内核加载运行起来,anaconda 也随之在内核上运行,进行下一步的安装引导。可以理解为光盘上有一个具备运行程序的 Linux 系统。 挂载光盘启动后,光盘中的 MBR 引导第二阶段 isolinux.bin,显示菜单信息,随后加载内核和 initrd 文件,并将 initrd 文件挂载,之后启动 anaconda 程序,进入安装界面。 在使用关盘引导启动过程中,光盘中的 isolinux.bin 引导程序也提供了一个类似于 grub 的字符命令提示符界面 1、进入安装界面 键入 Esc 键 出现 boot> 提示符 2、tab 键可以补全 键入 isolinux.cfg 中的 label 信息可以进入不同的选择 2、anaconda两种安装界面 1、基于 CURSES 的文本窗口:(向内核传递参数 text) 1、进入字符安装界面 ---> Tab 键 ,键入 text 2、按 ESC 键,键入 linux text 2、图形窗口(默认启动) 3、ISO镜像中isolinux目录 vmlinuz # 内核 initrd.img # ramdisk文件 boot.cat # 引导程序。可以理解为启动引导时的第一阶段,负责加载第二个阶段的引导文件 。此文件存放于光盘的 MBR 中 grub.conf # boot.cat 配置文件 boot.msg # boot.cat 提示信息 isolinux.bin # 引导程序,第二阶段 isolinux.cfg # isolinux.bin的配置文件,菜单信息。光盘启动后即运行isolinux.bin,会自动去找isolinux.cfg vesamenu.c32 # 图形菜单。menu.c32是纯文本的菜单 splash.png # 引导界面的背景图片 memtest # 内存检测,是一个独立的程序 TRANS.TBL 4、anaconda 工作过程(3阶段) 安装前配置阶段 安装过程语言配置 时区配置 键盘映射配置 安装源配置 ---> ftp | http | nfs | 本地磁盘 安装目标磁盘分区配置 ---> 硬盘分区 | MBR 安装位置 安装软件包配置 网络配置 管理员密码配置 安装阶段 目标磁盘创建分区并格式化 选定程序包安装位置 安装bootloafer 首次启动配置阶段 iptables SElinux core dump 5、anaconda配置方式 1、交互式界面配置 2、通过读取事先定义好的配置文件自动配置安装 ---> kickstart 文件 6、安装引导 boot 提示符选项 text # 进入文本字符界面安装 method # 指定使用安装方法 askmethod # 指定安装源 与网络相关: ip= netmask= geteway= dns= ifname=NAME:MAC_ADDR ks= # 指明kickstart文件位置 DND # ks=cdrom:/path/to/ksfilename 硬盘 # ks=hd:/path/to/ksfilename HTTP # ks=http://path/to/ksfilename FTP # ks=ftp://path/to/ksfilename HTTPS # ks=https://path/to/ksfilename 启动救援模式: rescue 注:boot提示符下可以引用isolinux.cfg中的标签 7、kickstart文件(参考文档:https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide) 1、kickstart文件格式 # ersion=DEVEL install # 表示默认的安装方式 cdrom # 安装源为本地光盘 url # 指明网络安装源 --url="http://192.168.1.150/CentOS-7" 或者 ftp://:@/ lang en_US.UTF-8 # 安装界面语言 keyboard us # 键盘映射 network --onboot no|yes --device eth0 --bootproto dhcp --noipv6 # 网络配置 # root用户密码 rootpw --iscrypted $6$uyt9GH.Z7/aHLuDw$tFViwCde6rUYMLUibnyMVZqEjZd.p1siqAYCLPXthN.7O8xvrt1BRLOSel1sy.p.z/oCNVfL6WKD/yMGZBoqp0 firewall --service=ssh # 防火墙设置 authconfig --enableshadow --passalgo=sha512 # 认证方式及密码加密格式 selinux --enforcing # SElinux是否启动 timezone Asia/Shanghai # 时区配置 bootloader --location=mbr --driveorder=sda --append="nomodeset crashkernel=auto rhgb quiet" # bootloader安装位置等信息 # --append= 传递内核参数 # --driveorder= - 指定在 BIOS 引导顺序中的首选驱动器 zerombr # 清空MBR clearpart --none --initlabel # 开始安装前清除磁盘所有内容 all 表示清空所有磁盘分区 # 分区信息 autopart # 自动分区 part /boot --fstype=ext4 --size=500 part swap --size=2048 part / --fstype=ext4 --grow --size=200 repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100 # 额外的安装源 halt | pweroff | reboot # 安装完之后的操作 text # 文本安装界面 # 安装完成后创建的用户 user --name=USERNAME --password=*** --groups= --homedir= --shell= uid= # 安装的软件包 %packages @core # 包组 @server-policy @workstation-policy packages_name # 单个程序包 -packages_name # 不安装包组总的某个程序包 %end # 安装前脚本 %pre ...... %end # 安装后执行的脚本 %post ............... ............... %end 2、验证 kickstart 文件的语法格式 yum install pykickstart pykickstart /path/to/file.ks ksvalidator 3、生成 kickstart 文件的方式 1、手动编辑生成 2、使用Kickstart Configurator工具生成(此工具不在提供更新) 包:system-config-kickstart 注:CentOS7上此工具要将yum base源名称修改为 [development],packages selection才会出现选择提示 8、创建引导光盘 1、cp /media/isolinux/* /tmp/testiso/isolinux/ 2、创建光盘 mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 7 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /path/to/file --boot-info-table -V "CentOS 7 x86_64 boot" # 引导提示信息 -b isolinux/isolinux.bin # 指明引导文件 -c isolinux/boot.cat # 指明引导文件 -o /root/boot.iso # 输出到那个目录 /path/to/file # 对那个路径下的文件创建光盘 -o # 指定映像文件的名称 -b # 指定在制作可开机光盘时所需的开机映像文件 -c # 制作可开机光盘时,会将开机映像文件中的 no-eltoritocatalog全部内容作成一个文件  -no-emul-boot # 非模拟模式启动。  -boot-load-size 4 # 设置载入部分的数量  -boot-info-table # 在启动的图像中现实信息  -R 或 -rock # 使用 Rock RidgeExtensions  -J 或 -joliet # 使用 Joliet 格式的目录与文件名称  -v 或 -verbose # 执行时显示详细的信息  -T 或 -translation-table # 建立文件名的转换表,适用于不支持 Rock Ridge Extensions 的系统上 注: 1.制作光盘前,要先删除原先镜像目录下的所有 TRANS.TBL 文件,在制作光盘时,会自动生成此文件 2.备份 /repodata/888888888888888888888888880-comps.xml 文件 3.制作 yum 源的源数据,crteaterepo -g /repodata/888888888888888888888888880-comps.xml ./ 9、使用 kickstart 文件 1、手动指定 kickstart 文件位置 在安装引导界面 boot 提示符后指定 inst.ks= 引导选项和 Kickstart 文件的位置 2、自动启动 kickstart 文件 10、创建自动安装的镜像 1、将 kickstart 文件复制到iso镜像中,然后新建一个 label 给内核传递参数读取 kickstart 文件。 ============================================================================================================================================== default vesamenu.c32 # 图形菜单 timeout 600 # 超时时长 display boot.msg # Clear the screen when exiting the menu, instead of leaving the menu displayed. # For vesamenu, this means the graphical background is still displayed without # the menu itself for as long as the screen remains in graphics mode. menu clear menu background splash.png # 背景图片 menu title CentOS Linux 7 # 顶部菜单提示信息 menu vshift 8 menu rows 18 menu margin 8 #menu hidden menu helpmsgrow 15 menu tabmsgrow 13 # Border Area menu color border * #00000000 #00000000 none # Selected item menu color sel 0 #ffffffff #00000000 none # Title bar menu color title 0 #ff7ba3d0 #00000000 none # Press [Tab] message menu color tabmsg 0 #ff3a6496 #00000000 none # Unselected menu item menu color unsel 0 #84b8ffff #00000000 none # Selected hotkey menu color hotsel 0 #84b8ffff #00000000 none # Unselected hotkey menu color hotkey 0 #ffffffff #00000000 none # Help text menu color help 0 #ffffffff #00000000 none # A scrollbar of some type? Not sure. menu color scrollbar 0 #ffffffff #ff355594 none # Timeout msg menu color timeout 0 #ffffffff #00000000 none menu color timeout_msg 0 #ffffffff #00000000 none # Command prompt text menu color cmdmark 0 #84b8ffff #00000000 none menu color cmdline 0 #ffffffff #00000000 none # Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message. menu tabmsg Press Tab for full configuration options on menu items. menu separator # insert an empty line menu separator # insert an empty line label linux menu label ^Install CentOS Linux 7 kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet label check menu label Test this ^media & install CentOS Linux 7 menu default # 默认选择菜单 kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet menu separator # insert an empty line # utilities submenu menu begin ^Troubleshooting menu title Troubleshooting label vesa menu indent count 5 menu label Install CentOS Linux 7 in ^basic graphics mode # 使用基本图形显卡加载 text help Try this option out if you're having trouble installing CentOS Linux 7. endtext kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 xdriver=vesa nomodeset quiet # nomodeset 表示使用基本图形界面加载 text 表示字符界面安装 label rescue # 菜单的标签,光盘界面Esc键进入 boot 界面可以直接使用标签进行菜单选择 menu indent count 5 menu label ^Rescue a CentOS Linux system text help If the system will not boot, this lets you access files and edit config files to try to get it booting again. endtext kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rescue quiet # 救援模式 append initrd=initrd.img inst.repo= rescue quiet # 指定yum源位置 label memtest # 菜单的标签 menu label Run a ^memory test text help If your system is having issues, a problem with your system's memory may be the cause. Use this utility to see if the memory is working correctly. endtext kernel memtest menu separator # insert an empty line label local menu label Boot from ^local drive localboot 0xffff menu separator # insert an empty line menu separator # insert an empty line label returntomain menu label Return to ^main menu menu exit menu end =========================================================================================================================================