ks 安装操作系统_linux系统pxe安装系统ks文件在哪 - CSDN
  • 1、Environment  CentOS7 Server Version CentOS7 node7, IP Address 192.168.121.17 ...(1)安装需要的软件包 [root@node7 ~]# yum -y install tftp-server httpd dhcp syslinux (2)配置DHCP: [root@node7 ~]#

    1、Environment 

    CentOS7 Server Version

    CentOS7 node7, IP Address 192.168.121.17


    2、步骤如下:

    (1)安装需要的软件包

    [root@node7 ~]# yum -y install tftp-server httpd dhcp syslinux

    (2)配置DHCP:

    [root@node7 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
    [root@node7 ~]# cat /etc/dhcp/dhcpd.conf 
    # dhcpd.conf
    #
    # Sample configuration file for ISC dhcpd
    #
    
    # option definitions common to all supported networks...
    option domain-name "galaxy.com";
    option domain-name-servers 114.114.114.114;
    
    default-lease-time 600;
    max-lease-time 7200;
    
    # Use this to enble / disable dynamic dns updates globally.
    #ddns-update-style none;
    
    # If this DHCP server is the official DHCP server for the local
    # network, the authoritative directive should be uncommented.
    #authoritative;
    
    # Use this to send dhcp log messages to a different log file (you also
    # have to hack syslog.conf to complete the redirection).
    log-facility local7;
    
    # No service will be given on this subnet, but declaring it helps the 
    # DHCP server to understand the network topology.
    
    
    #192.168.121.17是node7的IP地址,range表示的地址池
    subnet 192.168.121.0 netmask 255.255.255.0 {
        range 192.168.121.20 192.168.121.200;
        option routers 192.168.121.17;
        filename "pxelinux.0";
        next-server 192.168.121.17;
    }
    
    # This is a very basic subnet declaration.
    
    #subnet 10.254.239.0 netmask 255.255.255.224 {
    #  range 10.254.239.10 10.254.239.20;
    #  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
    #}
    
    # This declaration allows BOOTP clients to get dynamic addresses,
    # which we don't really recommend.
    
    #subnet 10.254.239.32 netmask 255.255.255.224 {
    #  range dynamic-bootp 10.254.239.40 10.254.239.60;
    #  option broadcast-address 10.254.239.31;
    #  option routers rtr-239-32-1.example.org;
    #}
    
    # A slightly different configuration for an internal subnet.
    #subnet 10.5.5.0 netmask 255.255.255.224 {
    #  range 10.5.5.26 10.5.5.30;
    #  option domain-name-servers ns1.internal.example.org;
    #  option domain-name "internal.example.org";
    #  option routers 10.5.5.1;
    #  option broadcast-address 10.5.5.31;
    #  default-lease-time 600;
    #  max-lease-time 7200;
    #}
    
    # Hosts which require special configuration options can be listed in
    # host statements.   If no address is specified, the address will be
    # allocated dynamically (if possible), but the host-specific information
    # will still come from the host declaration.
    
    #host passacaglia {
    #  hardware ethernet 0:0:c0:5d:bd:95;
    #  filename "vmunix.passacaglia";
    #  server-name "toccata.fugue.com";
    #}
    
    # Fixed IP addresses can also be specified for hosts.   These addresses
    # should not also be listed as being available for dynamic assignment.
    # Hosts for which fixed IP addresses have been specified can boot using
    # BOOTP or DHCP.   Hosts for which no fixed address is specified can only
    # be booted with DHCP, unless there is an address range on the subnet
    # to which a BOOTP client is connected which has the dynamic-bootp flag
    # set.
    #host fantasia {
    #  hardware ethernet 08:00:07:26:c0:a5;
    #  fixed-address fantasia.fugue.com;
    #}
    
    # You can declare a class of clients and then do address allocation
    # based on that.   The example below shows a case where all clients
    # in a certain class get addresses on the 10.17.224/24 subnet, and all
    # other clients get addresses on the 10.0.29/24 subnet.
    
    #class "foo" {
    #  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
    #}
    
    #shared-network 224-29 {
    #  subnet 10.17.224.0 netmask 255.255.255.0 {
    #    option routers rtr-224.example.org;
    #  }
    #  subnet 10.0.29.0 netmask 255.255.255.0 {
    #    option routers rtr-29.example.org;
    #  }
    #  pool {
    #    allow members of "foo";
    #    range 10.17.224.10 10.17.224.250;
    #  }
    #  pool {
    #    deny members of "foo";
    #    range 10.0.29.10 10.0.29.230;
    #  }
    #}
    [root@node7 ~]# systemctl start dhcpd.service


    (3)配置tftp-server服务
    [root@node7 ~]# cat /etc/xinetd.d/tftp #基本不用修改配置文件
    # default: off
    # description: The tftp server serves files using the trivial file transfer \
    #	protocol.  The tftp protocol is often used to boot diskless \
    #	workstations, download configuration files to network-aware printers, \
    #	and to start the installation process for some operating systems.
    service tftp
    {
    	socket_type		= dgram
    	protocol		= udp
    	wait			= yes
    	user			= root
    	server			= /usr/sbin/in.tftpd
    	server_args		= -s /var/lib/tftpboot
    	disable			= yes
    	per_source		= 11
    	cps			= 100 2
    	flags			= IPv4
    }
    [root@node7 ~]# cat /usr/lib/systemd/system/tftp.service 
    [Unit]
    Description=Tftp Server
    Requires=tftp.socketDocumentation=man:in.tftpd[Service]ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpbootStandardInput=socket[Install]Also=tftp.socket
    
    启动tftp-server服务:
    [root@node7 ~]# systemctl start tftp.socket
    如果UDP的69号端口启动,说明已经启动了tftp服务
    
    设定PXE相关的文件:
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/
    cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/	#基于pxe安装使用的光盘上的文件(自己本地挂载光盘即可)或者是yum仓库里
    mkdir /var/lib/tftpboot/pxelinux.cfg/
    vim default  #default的文件内容如下
    default menu.c32		#加载时显示的默认菜单控制的程序
      prompt 5			#显示提示符时间
      timeout 30			#超时时长
      MENU TITLE CentOS 7 PXE Menu			#标题为CentOS7 PXE Menu
    
      LABEL linux			#指明下面菜单项的label
      MENU LABEL Install CentOS 7 x86_64		#菜单的label
      KERNEL vmlinuz		#指明kernel文件
      APPEND initrd=initrd.img inst.repo=http://192.168.121.17/centos7 ks=http://192.168.121.17/centos7.cfg		#附加给kernel的参数,inst.repo可以是教室的ftp服务器,或者把光盘当做yum仓库,把它作为一个网站的访问就可以了


    
    (4)接下来在Vmware 下面挂载光盘

    mkdir -pv /media/cdrom
    mount -r /dev/cdrom /media/cdrom
    mkdir -pv /var/www/html/centos7/
    mount --bind /media/cdrom /var/www/html/centos7

    配置kickstart文件:该kickstart文件是CentOS7 最小化安装的一部分+system-config-kickstart 命令创建的kickstart文件(强烈建议在desktop centos7 上面操作system-config-kickstart命令)的合集

    [root@node7 html]# pwd
    /var/www/html
    [root@node7 html]# ls
    centos7  centos7.cfg
    [root@node7 html]# cat centos7.cfg 
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Install OS instead of upgrade
    install
    # Keyboard layouts
    keyboard 'us'
    # Root password
    rootpw --iscrypted $1$1Yz7yBap$ULm/SsQw.7sOa73ZgXgOH1    #密码是123456,只不过此处是加密的文件
    # System timezone
    timezone Asia/Shanghai
    # Use network installation
    url --url="http://192.168.121.17/centos7"    #根据自己的环境进行设定
    # System language
    lang en_US
    # Firewall configuration
    firewall --disabled
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use graphical install
    graphical
    firstboot --disable
    # SELinux configuration
    selinux --disabled
    
    # Network information
    network  --bootproto=dhcp --device=eno16777736
    # Halt after installation
    halt
    # System bootloader configuration
    bootloader --location=none
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all --initlabel
    # Disk partitioning information    #分区设定
    part /boot --fstype="ext4" --size=500
    part / --fstype="ext4" --size=102400
    
    
    %packages    #最小化安装
    @^minimal
    @core
    kexec-tools
    
    %end
    
    %addon com_redhat_kdump --enable --reserve-mb='auto'
    
    %end

    最后创建一个新的虚拟机,然后设定VMware 的网卡,设定为192.168.121.17为同一个网络段,可以设定为同一个交换机段即可:


    最后的效果如下:


    不过到此时 可能是VMware的问题,始终界面打开是黑屏不知道为何,在BIOS设定中也没有找到相关的VT选项,物理机应该是没有问题的。

    
    
    展开全文
  • 这里我们介绍一种能够实现自动化安装操作系统的方式。    我们搭建Cobbler的实验环境是基于CentOS 7.3 -1611 的基础的。    同时这个实验可以帮助你一步步的完成所有的操作,不过,如果你想自定义安装的内容...

    个人博客地址:http://www.pojun.tech/ 欢迎访问

    前言

       在实际生产中,我们常常会遇到这样一种情况,就是我们需要同时安装几十甚至上百台服务器,如果我们使用U盘或者光盘的方式的话,或许老板直接就将我们辞退了。这里我们介绍一种能够实现自动化安装操作系统的方式。
       我们搭建Cobbler的实验环境是基于CentOS 7.3 -1611 的基础的。
       同时这个实验可以帮助你一步步的完成所有的操作,不过,如果你想自定义安装的内容的话,建议你先看本文 自定义kickstart文件 部分,以便有所印象。

    Cobbler 简介

       Cobbler项目是在2008年由RedHat发布的网络安装服务器套件。是一种快速网络安装linux操作系统的服务,支持众多的Linux发行版:Red Hat、Fedora、CentOS、Debian、Ubuntu和SuSE,也可以支持网络安装windows。

       PXE 是由Intel开发的技术,基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。也可以实现通过网络批量的安装操作系统。

       Cobbler 正是基于PXE的二次封装,将多种安装参数封装到一个菜单当中。Cobbller提供了CLI和WEB两种安装方式,使用起来更加的友好。

    Cobbler 工作流程

    关于Cobbler的工作流程,可以用下面的图进行概括。

    Cobbler的工作原理

    实验环境准备

       因为我们正在搭建的是网络服务,所以需要有至少两台主机,其中一台主机承担服务器的角色。我在在这个实验中,使用的CentOS 7 搭建的网络服务,承担Server角色。

    关闭防火墙和SELinux

    防火墙和SELinux 在实验过程中有可能会导致意想不到的问题,所以我们这里将其关闭,实际生产中,请根据自己的实际情况进行调整。至于关闭防火墙和SELinux就不列出了,这很简单。

    安装Cobbler

    Cobbler 默认不在附带在光盘中,所以要通过EPEL源进行下载安装。
    配置好epel源以后,执行yum install cobbler 就可以安装Cobbler了。
    在安装好Cobbler之后,我们就会发现,Cobbler还附带安装了很多其他的服务,如下图所示 。这也就是解释了在Cobbler的工作流程中为什么能够用到那么多服务,从图中可以看出,还缺少DHCP服务,所以接下里我们也要安装一下。其中,syslinux 就是安装的就是PXE服务。

    Cobbler附带的服务

    设置常用服务

    将Cobbler服务设为开机启动

    systemctl enable  cobblerd
    systemctl start  cobblerd

    将tftp 设为开机启动

    systemctl enable  tftp
    systemctl start  tftp
    

    将http 设为开机启动

    systemctl enable  httpd
    systemctl start  httpd
    

    安装DHCP服务 为稍后使用Cobbler来管理DHCP做准备

    在稍后,我们会利用Cobbler来自动管理DHCP。

    yum install  dhcp
    

    运行Cobbler Check 进行环境检查

       Cobbler Check 命令能够非常迅速的帮助我们找到目前环境中还缺少的配置,然后我们根据这里的提示进行相应的配置调整。 这里出现了很多的问题,看到之后不要惊慌,根据提示一点一点去处理就好了。另外,因为实际生产环境中,所有的主机都会有所不同,所以这里的提示信息应该也会有所不同,我们这里只是根据实验环境进行解决,其余的问题,可以留言一起讨论。

    # 执行Cobbler check 检查目前环境还缺少哪些东西
    [root@localhost ~]#cobbler check
    The following are potential configuration items that you may want to fix:
    
    1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work.  This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
    2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
    3 : change 'disable' to 'no' in /etc/xinetd.d/tftp
    4 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
    5 : enable and start rsyncd.service with systemctl
    6 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    7 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    
    Restart cobblerd and then run 'cobbler sync' to apply changes.
    
    

       首先我们来看第一个问题。信息提示,在/etc/cobbler/settings 这个配置文件中的server 字段一定要有一个其他主机能够访问到的主机名或者IP地址,否则KickStart的一些特性将无法使用。其实也很好理解,我们目前的主机是用来提供网络服务的。其他主机通过访问我们的Cobbler服务,进行下载安装操作系统,如果我们的Server字段别人不能访问,那怎么可以呢!
       所以打开该配置文件,修改server字段为本机的IP地址。

    修改Server文件

       修改完成之后,我们注意到,之前的提示信息末尾有一段提示信息 Restart cobblerd and then run 'cobbler sync' to apply changes. ,所以我们运行一下这两个命令。

    #重启服务
    [root@localhost ~]#systemctl restart cobblerd
    #同步信息
    [root@localhost ~]#cobbler sync
    ...........  # 中间省略输出信息  
    
    
    # 重新检查一遍,看看还缺少哪些东西。
    [root@localhost ~]#cobbler check
    The following are potential configuration items that you may want to fix:
    
    1 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
    2 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
    3 : enable and start rsyncd.service with systemctl
    4 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    5 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    6 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    
    Restart cobblerd and then run 'cobbler sync' to apply changes.
    
    

       重新检查之后,我们发现解决了2个问题。然后我们接着来看第一个问题。这个问题是说,next_server 字段也应该是一个具体的地址,而不应该是127.0.0.1.其实这个问题和上面我们修改过的问题是一样的。所以我们重新将next_server的地址修改为我们本机的地址。

    next_server

    修改之后,重新启动服务,并进行同步。

    #重启服务
    [root@localhost ~]#systemctl restart cobblerd
    #同步信息
    [root@localhost ~]#cobbler sync
    ...........  # 中间省略输出信息  
    
    
    # 重新检查一遍,看看还缺少哪些东西。
    [root@localhost ~]#cobbler check
    The following are potential configuration items that you may want to fix:
    
    1 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
    2 : enable and start rsyncd.service with systemctl
    3 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    4 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    5 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    
    Restart cobblerd and then run 'cobbler sync' to apply changes.
    
    
    

       出现的问题继续减少了。我们接着来看第一个信息。这个信息是说,在/var/lib/cobbler/loaders 路径下,少了一些必须的文件,可以使用 cobbler get-loaders 命令从网络中下载相关的文件。所以,接下来我们运行一下 cobbler get-loaders

    
    # 可以看到 /var/lib/cobbler/loaders 目录下没有任何内容
    [root@localhost ~]#ls /var/lib/cobbler/loaders
    [root@localhost ~]#cobbler get-loaders
    task started: 2017-09-20_084605_get_loaders
    task started (id=Download Bootloader Content, time=Wed Sep 20 08:46:05 2017)
    downloading https://cobbler.github.io/loaders/README to /var/lib/cobbler/loaders/README
    downloading https://cobbler.github.io/loaders/COPYING.elilo to /var/lib/cobbler/loaders/COPYING.elilo
    downloading https://cobbler.github.io/loaders/COPYING.yaboot to /var/lib/cobbler/loaders/COPYING.yaboot
    downloading https://cobbler.github.io/loaders/COPYING.syslinux to /var/lib/cobbler/loaders/COPYING.syslinux
    downloading https://cobbler.github.io/loaders/elilo-3.8-ia64.efi to /var/lib/cobbler/loaders/elilo-ia64.efi
    downloading https://cobbler.github.io/loaders/yaboot-1.3.17 to /var/lib/cobbler/loaders/yaboot
    downloading https://cobbler.github.io/loaders/pxelinux.0-3.86 to /var/lib/cobbler/loaders/pxelinux.0
    downloading https://cobbler.github.io/loaders/menu.c32-3.86 to /var/lib/cobbler/loaders/menu.c32
    downloading https://cobbler.github.io/loaders/grub-0.97-x86.efi to /var/lib/cobbler/loaders/grub-x86.efi
    downloading https://cobbler.github.io/loaders/grub-0.97-x86_64.efi to /var/lib/cobbler/loaders/grub-x86_64.efi
    *** TASK COMPLETE ***
    
    

       此时查看 /var/lib/cobbler/loaders 目录下,会发现,已经下载了很多的内容。然后重启和同步服务,并运行 cobbler check 查看还剩下一些什么问题,我们接着一个个去解决。

    #这个目录下最关键的文件就是  menu.c32   pxelinux.0 
    [root@localhost ~]#ls /var/lib/cobbler/loaders
    COPYING.elilo     COPYING.yaboot  grub-x86_64.efi  menu.c32    README
    COPYING.syslinux  elilo-ia64.efi  grub-x86.efi     pxelinux.0  yaboot
    [root@localhost ~]#cobbler check
    The following are potential configuration items that you may want to fix:
    
    1 : enable and start rsyncd.service with systemctl
    2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    3 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    4 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    
    Restart cobblerd and then run 'cobbler sync' to apply changes.
    

       接下来,我来看剩下的问题。前两个问题不是很重要,我们先忽略过去。来看第三个问题,这个问题是说,应该为每一个新安装的主机设置一个默认的用户口令。并且信息中提示了使用openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'命令来生成加密的用户口令。 如果不设置,默认的用户口令就是cobbler

    #生成密码是123456 的用户口令
    [root@localhost ~] openssl passwd -1  123456
    $1$wuX5VyFf$a0Y/HdzHRCbVWhSFnbV8n/

    然后将生成的口令替换到/etc/cobbler/settingsdefault_password_crypted字段中。

    修改Cobbler 默认口令

    重新启用并同步服务,然后看看还有什么问题。

    [root@localhost ~]#cobbler check
    The following are potential configuration items that you may want to fix:
    
    1 : enable and start rsyncd.service with systemctl
    2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    3 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    
    Restart cobblerd and then run 'cobbler sync' to apply changes.
    

       fencing tools 是在集群环境中才会使用到的工具,我们暂且先不用管。这样一来,关于Cobbler的check 工作我们就完成了。

    通过Cobbler 管理DHCP

       我们利用DHCP的cobbler 功能来自动管理DHCP,修改 /etc/cobbler/settings 配置文件中的manage_dhcp字段。 设置为1,则由Cobbler 来管理DHCP

    Cobbler dhcp

    修改Cobbler下 /etc/cobbler/dhcp.template 模板文件

       /etc/cobbler/dhcp.template 这个文件是配置DHCP的内容的。但是这个文件是Cobbler来提供的。也就是说,配置好了这个文件,重新启动Cobbler 服务,Cobbler就会自动地替我们管理DHCP。

    # 在/etc/cobbler/dhcp.template 找到下面地这段内容进行修改整理。 
    # 按照自己地要求进行DHCP地配置。
    
    subnet 172.18.2.0 netmask 255.255.255.0 {
         option subnet-mask         255.255.255.0;
         range dynamic-bootp        172.18.2.100 172.18.2.254;
         default-lease-time         21600;
         max-lease-time             43200;
         next-server                $next_server;
         class "pxeclients" {
              match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
              if option pxe-system-type = 00:02 {
                      filename "ia64/elilo.efi";
              } else if option pxe-system-type = 00:06 {
                      filename "grub/grub-x86.efi";
              } else if option pxe-system-type = 00:07 {
                      filename "grub/grub-x86_64.efi";
              } else {
                      filename "pxelinux.0";
              }
         }
    
    }
    
    

    重新启动和同步Cobbler 服务。

    # 重新启动服务
    [root@localhost ~]#systemctl restart cobblerd
    [root@localhost ~]#cobbler sync
    ........#中间省略很多输出
    
    #查看DHCP的配置文件
    [root@localhost ~]#cat /etc/dhcp/dhcpd.conf 
    # ******************************************************************
    # Cobbler managed dhcpd.conf file
    # generated from cobbler dhcp.conf template (Wed Sep 20 01:36:15 2017)
    # Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
    # in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
    # overwritten.
    # ******************************************************************
    
    ddns-update-style interim;
    
    allow booting;
    allow bootp;
    
    ignore client-updates;
    set vendorclass = option vendor-class-identifier;
    
    option pxe-system-type code 93 = unsigned integer 16;
    
    subnet 172.18.2.0 netmask 255.255.255.0 {
         option subnet-mask         255.255.255.0;
         range dynamic-bootp        172.18.2.100 172.18.2.254;
         default-lease-time         21600;
         max-lease-time             43200;
         next-server                172.18.2.77;
         class "pxeclients" {
              match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
              if option pxe-system-type = 00:02 {
                      filename "ia64/elilo.efi";
              } else if option pxe-system-type = 00:06 {
                      filename "grub/grub-x86.efi";
              } else if option pxe-system-type = 00:07 {
                      filename "grub/grub-x86_64.efi";
              } else {
                      filename "pxelinux.0";
              }
         }
    
    }
    
    # group for Cobbler DHCP tag: default
    group {
    }
    
    

    制作 yum 源

       与PXE不同,Cobbler可以自动帮助我们生成系统安装的yum 源,而不需要我们自己去制作,我们只要指定光盘路径就好了

    # 执行下面的命令制作 CentOS 7.3 的启动光盘
    [root@localhost ~]#cobbler import --path=/misc/cd --name=centos7.3
    
    
    # 然后更换ISO镜像,制作6.9的光盘内容
    [root@localhost ~]#cobbler import --path=/misc/cd --name=centos6.9
    

    Cobbler 制作的光盘yum源到底放在了什么地方呢??

    #进入到下面的这个路径下,可以看到这里生成了两个源,其实也就是将光盘里的内容复制过来了而已。
    [root@localhost ~]#cd /var/www/cobbler/ks_mirror/
    [root@localhost ks_mirror]#ls
    centos6.9  centos7.3  config
    
    
    # 执行下面的命令可以看到,这里已经成功的制作了两个系统yum源。
    [root@localhost ks_mirror]#cobbler distro list
       centos6.9-x86_64
       centos7.3-x86_64
    

    修改启动菜单

    yum 源文件创建成功之后,可以进行自定义的配置修改。

    # 查看生成的启动菜单文件
    [root@localhost tftpboot]#cat /var/lib/tftpboot/pxelinux.cfg/default 
    DEFAULT menu
    PROMPT 0
    MENU TITLE Cobbler | http://cobbler.github.io/   #可以修改为自己的标签。
    TIMEOUT 200
    TOTALTIMEOUT 6000
    ONTIMEOUT local
    
    LABEL local
            MENU LABEL (local)
            MENU DEFAULT
            LOCALBOOT -1
    
    LABEL centos6.9-x86_64
            kernel /images/centos6.9-x86_64/vmlinuz
            MENU LABEL centos6.9-x86_64
            append initrd=/images/centos6.9-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://172.18.2.77/cblr/svc/op/ks/profile/centos6.9-x86_64
            ipappend 2
    
    LABEL centos7.3-x86_64
            kernel /images/centos7.3-x86_64/vmlinuz
            MENU LABEL centos7.3-x86_64
            append initrd=/images/centos7.3-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://172.18.2.77/cblr/svc/op/ks/profile/centos7.3-x86_64
            ipappend 2
    
    
    
    MENU end

    启动网络安装

    重新新建一个虚拟机,作为客户端,然后启动网络安装,就可以看到我们刚刚制作的界面了。

    Cobbler 启动界面

    自定义KickStart文件

    首先准备KickStart文件

       在上面的实验中,我们没有进行任何的安装配置,全部都是Cobbler帮助我们完成的。可是在实际生产中,我们对每台主机的硬盘分区,安装的软件都有相应的要求,所以我们需要自己来定制KickStart文件,这样我们就能够定制地批量安装操作系统了。
       我们就利用实验环境(CentOS 7.3)中的KickStart文件来定制我们自己的KickStart文件。

    # 首先进入到Cobbler 的KickStart 目录下
    [root@localhost] cd /var/lib/cobbler/kickstarts/
    
    # 将根目录下的ks 文件复制到当前目录下
    [root@localhost kickstarts]cp /root/anaconda-ks.cfg  centos7.cfg
    
    
    [root@localhost kickstarts]#cat centos7.cfg 
    #version=DEVEL
    # System authorization information
    auth --enableshadow --passalgo=sha512
    # Use CDROM installation media
    url --url=$tree	# url可以指定详细路径也可以使用$tree变量来进行替代
    # Use graphical install
    reboot  #安装成功之后可以重启
    text    #采用字符界面进行安装
    # 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 --onboot=yes --ipv6=auto --activate
    network  --hostname=localhost.localdomain
    
    
    selinux --disabled #禁用SElinux 也可以禁用防火墙
    
    # Root password #设置root用户的初始密码
    rootpw --iscrypted $6$BlwRFg7fgO1i8eQa$F9yjtePt1aOnsIwmNO7mexdnBOsJTVSSyTnwp2hS2lSY87thmNylXw43.Ycj6lfY1wk2NmoQjO/WzEEGBUlZt.
    # System services
    services --disabled="chronyd"
    # System timezone
    timezone Asia/Shanghai --isUtc --nontp
    # X Window System configuration information
    xconfig  --startxonboot
    # System bootloader configuration
    bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
    # Partition clearing information
    zerombr #清楚MBR分区
    clearpart --all #清楚系统中原有分区
    # Disk partitioning information
    part / --fstype="xfs" --ondisk=sda --size=56320
    part swap --fstype="swap" --ondisk=sda --size=2000
    part /app --fstype="xfs" --ondisk=sda --size=51200
    part /boot --fstype="xfs" --ondisk=sda --size=1024
    
    %packages
    @^graphical-server-environment
    @base
    @core
    @desktop-debugging
    @dial-up
    @fonts
    @gnome-desktop
    @guest-agents
    @guest-desktop-agents
    @hardware-monitoring
    @input-methods
    @internet-browser
    @multimedia
    @print-client
    @x11
    kexec-tools
    
    %end
    
    
    %post
    #删除旧的yum仓库
    #可根据实际情况稍作调整。
    rm -rf /etc/yum.repos.d/*
    cat > /etc/yum.repos.d/base.repo <<EOF
    [base]
    name=base
    baseurl=file:///misc/cd
    gpgcheck=0
    EOF
    %end
    
    

    将KickStart文件和yum源做关联

    在Cobbler 自动创建了yum源之后,会自动有一个ks文件与该源相对应。现在我们需要将自己制作的KS文件与原有的yum源进行关联。

    # --name 我们需要添加的启动菜单的名字
    # --distro  我们自定制的ks文件关联的yum库
    # --kickstart 我们自定制的ks文件的路径
    [root@localhost kickstarts]#cobbler profile add --name=centos7.3-x86_64-desktop --distro=centos7.3-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.cfg
    
    # 查看Cobbler中现在还有多少个启动项
    [root@localhost kickstarts]#cobbler profile list
       centos6.9-x86_64
       centos7.3-x86_64
       centos7.3-x86_64-desktop
    
    

    重新修改 /var/lib/tftpboot/pxelinux.cfg/default 文件

    在执行Cobbler sync 同步操作之后,Cobbler会自动的将/var/lib/tftpboot/pxelinux.cfg/default文件重新生成,所以,最好重新按照自己的需求修改一下这个文件。然后就可以开始进行网络安装操作系统了。

    Cobbler启动界面2

    从图中可以清楚地看到我们新增地一个启动选项。至此,我们搭建Cobbler 的环境就成功了。

    注意事项

    • 在实际生产中,一般是局域网环境,所以在配置DHCP服务的时候,要注意局域网的工作环境。
    • Cobbler实际上就是对PXE的封装,它帮助我们实现了很多的内容,免去了我们很多的手动配置,但是这样的话,我们也不能清楚的了解底层的运行机制,出了问题,不便于处理,所以最好还是尝试手动配置一下PXE来搭建网络操作系统安装环境,以便了解的更详细一下其中的运行机制。
    • 最好手动配置ks文件,这样能够最大限度上定制自己的集群操作系统。

    结语

    Cobbler 其实还支持基于Web的管理方式。在配置好Cobbler 服务环境之后,安装一个cobbler-web 的软件包,然后就可以进行相应的配置管理了,这里我们不做详细介绍,感兴趣的朋友可以去查阅一下资料。
    Cobbler_web 的图形管理界面如下图所示,从图中我们能够看到我们自己指定的菜单和系统yum源。

    Cobbler-web管理

    通过上面的操作,我们已经能够完全搭建一个基于Cobbler的网络服务,用来给生产环境中批量的安装操作系统了。

    展开全文
  • 前边写了一篇使用 PXE 的方式批量安装操作系统,不是任何时候任何地方都有环境来通过 PXE 方式来进行安装。如果此时需要通过光盘安装,默认的情况下是通过交互式方式进行安装,其实也可以通过 kickstart 的方式来...

    前边写了一篇使用 PXE 的方式批量安装操作系统,不是任何时候任何地方都有环境来通过 PXE 方式来进行安装。如果此时需要通过光盘安装,默认的情况下是通过交互式方式进行安装,其实也可以通过 kickstart 的方式来实现自动化安装部署。光盘通过 ks.cfg 进行安装的实现方式比较简单,下边简单的进行总结。

    一、实现原理

    光盘通过读取 ks.cfg 文件来实现安装操作系统,ks.cfg 配置文件放在光盘的根目录即可,然后修改 isolinux/isolinux.cfg 文件,设置内核参数,指定 ks.cfg 文件的位置即可。由于原始 iso 镜像文件是只读的,不能直接在 iso 光盘目录文件内进行修改,需要拷贝到一个临时目录,修改完后在封装为 iso 镜像文件。

    二、拷贝镜像临时目录

    mkdir /mnt/cdrom
    mount -o loop CentOS-6.8-x86_64-minimal.iso /mnt/cdrom
    cp -ar /mnt/cdrom/ /root/iso    # 原来root下没有iso目录,拷贝过来重命名为iso

    三、生成 ks.cfg 文件

    生成 ks.cfg 文件的方式大概有2种,一是可以通过图形工具 system-config-kickstart 来定制生成指定的 ks.cfg 文件,二是对于熟悉 kickstart 语法的可以直接编写 ks.cfg 配置文件。本次实验用的 ks.cfg 配置比较简单,是通过工具生成的,下边给出本次的 ks.cfg 文件。

    复制代码
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Firewall configuration
    firewall --disabled
    # Install OS instead of upgrade
    install
    # Use CDROM installation media
    cdrom
    # Root password
    rootpw --iscrypted $1$p6oEoqGo$UDHZdzw56Rl6Rt5oi1A0Q1
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use graphical install
    graphical
    # System keyboard
    keyboard us
    # System language
    lang en_US
    # SELinux configuration
    selinux --disabled
    # Do not configure the X Window System
    skipx
    # Installation logging level
    logging --level=info
    # Reboot after installation
    #reboot
    # System timezone
    timezone --isUtc Asia/Shanghai
    # Network information
    network  --bootproto=dhcp --device=eth0 --onboot=on
    # System bootloader configuration
    bootloader --location=mbr
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all --initlabel 
    # Disk partitioning information
    part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200
    part swap --asprimary --fstype="swap" --ondisk=sda --size=4096
    part / --asprimary --fstype="ext4" --grow --ondisk=sda --size=1
    复制代码

    拷贝到光盘镜像根目录:

    /bin/cp ks.cfg /root/iso/

    四、修改启动项菜单内核参数

    修改菜单项配置文件 isolinux/isolinux.cfg:

    default vesamenu.c32
    #prompt 1
    timeout 1    # 超时自动选择菜单时间设置,设置为1时,即一闪而过,设置3秒为好。

    修改内核参数,指定 ks.cfg 位置:

    label linux
      menu label ^Install CentOS 6.8 x64 System.    # 自定义了菜单
      menu default
      kernel vmlinuz
      append initrd=initrd.img ks=cdrom:/ks.cfg     # 添加了ks文件的位置:光盘的根目录

    五、封装iso镜像文件

    cd /root/iso/    # 进入镜像制作目录

    如果没有 mkisofs 命令,执行安装:

    yum install mkisofs -y

    执行封装镜像的命令:

    mkisofs -o /root/CentOS6.8_x64.iso \
        -V centos6 -b isolinux/isolinux.bin \
        -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 \
        -boot-info-table -R -J -T -v .

    校验并写入 md5 值(可选):

    implantisomd5 /root/CentOS6.8_x64.iso

    通过光盘实现自动化安装已经完成制作,接下来测试可以通过虚拟机,导入 iso 镜像来做测试。

    转载至http://www.cnblogs.com/liwei0526vip/p/6416225.html


    展开全文
  • 操作系统部署 光盘启动菜单文件: /isolinux/isolinux.cfg 菜单的区别即参数不同 指定内核参数方法 在启动菜单界面,选中一项安装方法,按tab键,在后面增加 ks=… 在启动菜单界面,任意选中一项安装方法,按ESC键:...

    操作系统部署

    光盘启动菜单文件: /isolinux/isolinux.cfg
    菜单的区别即参数不同
    指定内核参数方法
    在启动菜单界面,选中一项安装方法,按tab键,在后面增加 ks=…
    在启动菜单界面,任意选中一项安装方法,按ESC键:boot: linux ks=…

    常见参数:
    rescue:进入救援模式
    linux: 安装
    ks=: 指定自动化安装应答文件路径,ks=http://192.168.8.8/ksdir/ks8.cfg

    实现操作系统自动安装(通过光盘)

    1, 生成应答文件
       可以通过图形界面工具system-config-kickstart ,centos8不在支持
       安装操作系统后,会在root下生成一个文件anaconda-ks.cfg,即应答文件
    
    2,http服务器配置
      添加centos7安装光盘
      yum install httpd -y   
      systemctl enable --now httpd
      systemctl disable --now firewalld
      mkdir /var/www/html/{ksdir,centos7}
      rsync 10.0.0.134:/root/anaconda-ks.cfg /var/www/html/ksdir/centos7.cfg
      mount /dev/sr1  /var/www/html/centos7
    检测是否能通过浏览器访问服务器共享文件夹  
     
    3, 自动安装
     进入光盘启动,按esc键
    boot: linux ks=http://10.0.0.138/ksdir/centos7
    

    ks应答文件格式

    格式:
    
    install                   
    keyboard 'us'                           键盘类型
    rootpw --plaintext ssy192011            root密码
    lang en_US                              语言
    auth --useshadow --passalgo=sha512      密码加密算法
    text                                    文本安装界面
    selinux --disabled                      selinux禁用
    firewall --disabled                     防火墙禁用
    network --bootproto=dhcp --device=eth0  网络 
    reboot                                  安装后重启
    timezone Asia/Shanghai                  时区
    url --url="http://10.0.0.138/centos7"   指定安装源
    bootloader --append="net.ifnames=0" --location=mbr 内核参数
    clearpart --all                         清除所有分区
    part / --fstype="xfs" --size=100000     分区
    part /boot --fstype="xfs" --size=2048
    part swap  --fstype="swap" --size=3000
    part /data  --fstype="xfs"  --size=50000
    
    %post 安装后脚本
    %end
    %packages 安装的工具包
    %end
    
    展开全文
  • 什么是PXE PXE中文叫“预启动执行环境”。计算机在启动时需要加载操作系统,而加载的方式常见有:光驱启动(CDROM)、硬盘启动、网络启动。... 为什么通过PXE来安装操作系统 小弟单位虽然不...
  • 因此,光靠传统的一台台安装,很费时费力,数量不多的情况,还是比较好应付,如果一次是几十、几百台,就比较麻烦了,因此,实际生产环境中都用采用批量无人值守的安装方式来安装操作系统,所以今天来详细介绍下,...
  • 一、准备工作 1.添加一个网卡 2 .给这个新网卡配置IP 192.168.100.85/24 3. 修改新网卡的网络连接方式为vmnet3 [root@localhost ~]# mount /dev/cdrom /mnt/ ...[root@localhost ~]# service iptables stop ...
  • pxe批量安装操作系统

    2019-03-31 23:08:12
    pxe:preboot execute environment,intel公司开发的批量安装操作系统工具。 pxe需要dhcp服务器来获取ip信息,并告知客户端tftp地址加载filename文件(内核,BootLoader等)。另外还需要一台ftp或者http服务器提供...
  • > kickstart是一种无人值守安装操作系统的方式,他的工作原理就是在安装的过程中记录人工干预填写的各种参数,并会生成一个ks.cfg的文件,如果在自动化安装的过程中出现需要填选参数的情况,安装程序就会去找ks.cfg...
  • 操作系统 自动安装

    2018-07-08 00:28:14
    作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。常规的办法有什么? 光盘安装系统===&gt;一个服务器DVD内置光驱百千...
  • 一、系统的安装原理: Linux 系统安装过程: ... 其实,安装操作系统就是把编译好的二进制格式的操作系统导入到目标磁盘中,就要访问硬件。这就涉及到安装程序anaconda能不能驱动目标磁盘。如果,不...
  • 自动化安装操作系统

    2019-07-16 13:03:05
    一、PXE安装 1.安装相关包 yum install dhcp tftp-server httpd syslinux -y 2.准备yum安装源 [root@CentOS7 ~]lsblk [root@CentOS7 ~]#echo '- - -' > /sys/class/scsi_host/host0/scan [root@CentOS7 ...
  • 预启动执行环境)是由Intel 公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE 技术),主要用于在无人机值守安装系统中引导客户端主机安装Linux 操作系统。Kicks
  • pxe 预启动安装环境 是由inter公司开发的 可以让计算机通过网络来启动操作系统(支持pxe技术)为了启动引导系统 从而启动整个操作系统,主要用于无人值守安装过程中引导客户机安装操作系统,为了启动引导..
  •  Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。  Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler...
  • 挂载指定源 步骤演示如下: 1.挂载源程序 mount /iso/rhel-server-7.2-x86_64-dvd.iso /var/www/html/rhel7.2 2.进行指定源程序 如下  vim /etc/yum.repod/rhel7.2.repo  [随意]  name=随意 ...
  • 1.什么是自动安装脚本? 自动安装脚本就是在一个脚本当中写入服务器安装系统的一些数据...自动安装脚本:让系统安装的过程中也变为自动 自动安装一切,不需要手动操作软件 3.实验环境 前提条件:在一台有 ...
  •  PXE(preboot execute environment,预启动执行环境)是由intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端...
  • 什么是linuxLinux(/ˈlɪnəks/ LIN-əks)是一种自由和开放源代码的类UNIX操作系统。定义Linux的组件是Linux内核,该操作系统内核由林纳斯·托瓦兹在1991年10月5日首次发布。严格来讲,术语Linux只表示操作系统...
  • CentOS7-43-9.linux主机安装带图形的界面,安装运行 system-config-kickstart 将yum仓库改 base 改为 development,应答文件 /root/ks.cfg,将 /root/ks.cfg 拷贝到 Centos7-43-7.linux网站的根目录下 应答文件 ks....
1 2 3 4 5 ... 20
收藏数 18,499
精华内容 7,399
关键字:

ks 安装操作系统