什么是PXE?

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。

PXE的工作过程:

1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;

2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;

3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;

4. PXE Client 取得pxelinux.0 文件后之执行该文件;

5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;

6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

详细工作流程,请参考下面这幅图:

PXEPre-boot eXcution Environment

  • 预启动执行环境,在操作系统之前运行
  • 可用于远程安装,构建无盘工作站
  • 规模化:同时装配多台服务器
  • 自动化:安装系统,配置各种服务
  • 远程实现:不需要光盘,U盘等安装介质

服务端

  • DHCP----------------用来分配IP地址,定位引导程序
  • TFTP-----------------提供引导程序下载
  • NFS------------------网络中文件共享

客户端

  • 网卡支持PXE协议
  • 主板支持网络启动

---------------------------------------------------我是分割线--------------------------------------------------------

实验环境:

服务器:笔记本系统Ubuntu14.04          ----------------DHCP--TFTP--NFS--------IP地址:192.168.1.20

交换机:小型TPlink交换机                     ------------------       采用两条直通线,连接服务器和客户端

客户机:旧服务器一台作为测试机              ------------------      进入BIOS,设置网络引导启动

---------------------------------------------------我是分割线--------------------------------------------------------

前提需要配置PXE服务器的网络:{如果Ubuntu中未安装VIM 编辑器,则使用nano进行编辑}

  1. nano /etc/network/interfaces
  2.  
  3. auto lo
    iface lo inet loopback
  4. auto eth0
  5. iface eth0 inet none
  6. address 192.168.1.20
  7. netmask 255.255.255.0
  8. gateway 192.168.1.1
  9. dns-nameserver 114.114.114.114

这将把你的主机的IP设置成为192.168.1.20,保存文件后退出,重启网络。

  1. service networking restart
  2. ifdown eth0
  3. ifup eth0

在此处需要注意的是,Ubuntu系统中两套管理网络连接的方案,network-manager可能会影响DHCP的连接,如果影响,关闭即可:后文中将会详细讲述network-manager。

  1. service network-manager stop

第一步:DHCP

1.更新源以便获得最新的软件包,安装软件:isc-dhcp-Server

  1. sudo apt-get install isc-dhcp-Server

2.编辑 “/etc/default/dhcp3-server” 文件

  1. sudo nano /etc/default/dhcp3-server

  作如下修改:

  INTERFACES="eth0"    (注:你刚才配置的静态IP的那个网卡)

3.编辑 “/etc/dhcp3/dhcpd.conf” 文件

  1. sudo nano /etc/dhcp/dhcpd.conf
  2.  作如下修改:
  3.  
  4.   default-lease-time ;
  5.  
  6.   max-lease-time ;
  7.  
  8.   subnet 192.168.1.0 netmask 255.255.255.0 {
  9.  
  10.   range 192.168.1.100 192.168.1.200;
  11.  
  12.   option subnet-mask 255.255.255.0;
  13.  
  14.   option routers 192.168.1.20;
  15.  
  16.   option broadcast-address 192.168.1.255;
  17.  
  18.   filename "pxelinux.0";
  19.  
  20.   next-Server 192.168.1.20;
  21.  
  22.   }

4.启动 DHCP 服务

  1. sudo /etc/init.d/isc-dhcp-server start

---------------------------------------------------我是分割线--------------------------------------------------------

第二步:TFTP

1.安装软件:tftpd-hpa , tftp-hpa , inetutils-inetd(分别为服务端+客户端+进程管理)

  1. apt-get install tftpd-hpa tftp-hpa inetutils-inetd

2.编辑 “/etc/inetd.conf” 文件

  1. 在最后一行添加:
  2.   tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

3.编辑 “/etc/default/tftpd-hpa” 文件

  1. sudo nano /etc/default/tftpd-hpa
  2.  
  3.   作如下修改:
  4.  
  5.   TFTP_USERNAME="tftp"
  6.  
  7.   TFTP_DIRECTORY="/var/lib/tftpboot"
  8.  
  9.   TFTP_ADDRESS="[:0.0.0.0:]:69"
  10.  
  11.   TFTP_OPTIONS="--secure"
  12.  
  13.   RUN_DAEMON="yes"
  14.  
  15.   OPTIONS="-l -s /var/lib/tftpboot"

4.使用 xinetd 让 boot 服务在每次系统开机时自动启动,并启动tftpd服务

  1. sudo update-inetd --enable BOOT
  2.    sudo service tftpd-hpa start

5.检查状态。

  1. sudonetstat -lu

它将如下所示:

ProtoRecv-Q Send-Q LocalAddressForeignAddressState

udp 00*:tftp *:*

---------------------------------------------------我是分割线--------------------------------------------------------

在这里备注一下xinetd服务 (可忽略)

  1. service tftp
    {
            socket_type             = dgram
            protocol                = udp
            wait                    = yes
            user                    = root
            server                  = /usr/sbin/in.tftpd
            server_args             = -s /var/lib/tftpboot TFTP根目录】
            disable = no
            per_source              = 11
            flags                   = IPv4
  2. }

---------------------------------------------------我是分割线--------------------------------------------------------

第三步:配置 PXE 启动文件

现在,你需要将 PXE 引导文件 “pxelinux.0” 放在 TFTP 根目录下。为 TFTP 创建目录结构,并从 “/usr/lib/syslinux/” 复制 syslinux 提供的所有引导程序文件到 “/var/lib/tftpboot/” 下,操作如下:

  1. sudo mkdir /var/lib/tftpboot
  2. sudo mkdir /var/lib/tftpboot/pxelinux.cfg
  3. sudo mkdir -p /var/lib/tftpboot/Centos
  4. sudo cp /usr/lib/syslinux/vesamenu.c32 /var/lib/tftpboot/
  5. sudo cp /usr/lib/syslinux/pxelinux. /var/lib/tftpboot/

设置 PXELINUX 配置文件

PXE 配置文件定义了 PXE 客户端启动时显示的菜单,它能引导并与 TFTP 服务器关联。默认情况下,当一个 PXE 客户端启动时,它会使用自己的 MAC 地址指定要读取的配置文件,所以我们需要创建一个包含可引导内核列表的默认文件。

编辑 PXE 服务器配置文件,使用有效的安装选项。

编辑 “/var/lib/tftpboot/pxelinux.cfg/default”

  1. sudo nano /var/lib/tftpboot/pxelinux.cfg/default
  2.  
  3. default ks  #默认启动的是 'label ks' 中标记的启动内核
  4. prompt 1   #显示 'boot: ' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。
  5. timeout 6  #在用户输入之前的超时时间,单位为 1/10 秒
  6. display boot.msg #显示某个文件的内容,注意文件的路径。默认是在/var/lib/tftpboot/ 目录下。也可以指定位类似 '/install/boot.msg'这样的,路径+文件名。
  7.  
  8. lable Linux #'label' 指定你在 'boot:' 提示符下输入的关键字,比如boot: linux[ENTER],这个会启动'label linux' 下标记的kernel 和initrd.img 文件。
  9. kernel vmlinuz #kernel 参数指定要启动的内核
  10. append initrd=initrd.img #append 指定追加给内核的参数,能够在grub 里使用的追加给内核的参数,在这里也都可以使用。
  11.  
  12. lable text
  13. kernel vmlinuz
  14. append initrd=initrd.img text
  15.  
  16. lable ks
  17. kernel vmlinuz
  18. append initrd=initrd.img ks=nfs://192.168.1.20/var/lib/tftpboot/Centos/ks.cfg ksdevice=eth0 #告诉系统,从哪里获取ks.cfg文件
  19. lable local
  20. localboot
  21. lable memtest86
  22. kernel memtest
  23. append
  24.  
  25. # ksdevice=eth0代表当客户端有多块网卡的时候,要实现自动化需要设置从eth0安装,不指定的话,安装的时候系统会让你选择,那就不叫全自动化了。
第二次搭建PXE安装Fusionstack1.8系统Default配置文件(可忽略这一步
  1. default vesamenu.c32
  2. timeout
  3. display boot.msg
  4. prompt
  5.  
  6. label Fusionstack1.
  7. menu label ^Install Fusionstack 1.8
  8. menu default
  9. kernel vmlinuz
  10. append initrd=initrd.img ks=nfs://192.168.1.20/var/lib/tftpboot/ks.cfg

编辑 “/var/lib/tftpboot/pxelinux.cfg/pxe.conf” 文件

  1. sudonano/var/lib/tftpboot/pxelinux.cfg/pxe.conf
  2.  
  3. 作如下修改:
  4. MENU TITLE PXE Server
  5. NOESCAPE
  6. ALLOWOPTIONS
  7. PROMPT
  8. MENU WIDTH
  9. MENU ROWS
  10. MENU TABMSGROW
  11. MENU MARGIN
  12. MENU COLOR border ;#ffffffff # std

为 PXE 服务器添加 Centos7 启动镜像,这里我使用的是Centos7光盘,进行挂载使用,也可以到官网进行下载。

  1. mount /dev/cdrom /mnt
  2. cp -r /mnt/* /var/lib/tftpboot/Centos
  3. cp /mnt/casper/initrd.lz /var/lib/tftpboot/Centos
  4. cp /mnt/casper/vmlinuz /var/lib/tftpboot/Centos

---------------------------------------------------我是分割线--------------------------------------------------------

第四步:将导出的 ISO 目录配置到 NFS 服务器上

现在,你需要通过 NFS 协议来设置“安装源镜像( Installation Source Mirrors)”。你还可以使用 HTTP 和 FTP 来安装源镜像。在这里,我已经使用 NFS 输出 ISO 内容。

  1. 这里采用NFS来做文件共享:apt-get install nfs-kernel-Server

要配置 NFS 服务器,你需要编辑 “/etc/exports” 文件。

  1. sudo nano /etc/exports
  2.  
  3. 添加:
  4. /var/lib/tftpboot/Centos *(ro,async,no_root_squash,no_subtree_check)
  5.  
  6. 保存文件并退出。为使更改生效,输出并启动 NFS 服务。
  7. sudo exportfs -a
  8. sudo /etc/init.d/nfs-kernel-server start

无人值守ks.cfg文件:(文件放在/var/lib/tftpboot/Centos目录下)

  1. #version=DEVEL
  2. # System authorization information
  3. auth --enableshadow --passalgo=sha512
  4. #Network information
  5. network --bootproto=dhcp --device=enp4s0f1 --onboot=yes --ipv6=auto
  6. # Install OS instead of upgrade
  7. install
  8. nfs --server=192.168.1.20 --dir=/var/lib/tftpboot/Centos
  9. # Use graphical install
  10. graphical
  11. # Run the Setup Agent on first boot
  12. firstboot --enable
  13. # Keyboard layouts
  14. keyboard --vckeymap=us --xlayouts='us'
  15. # System language
  16. lang en_US.UTF- --addsupport=zh_CN.UTF-
  17.  
  18. # Root password
  19. # root密码是: rootroot
  20. rootpw --iscrypted $$7gdZF8XhDef10LyT$2uRiP4qFYaBBTgpggKU/BXKgMDJLWN/BriXXgBwyzkjaz9G9YP/xD08I1OJfgBcPMoURsE5inVIoX.J6aERmR0
  21. # System services
  22. services --disabled="chronyd"
  23. # System timezone
  24. timezone Asia/Shanghai --isUtc --nontp
  25. # System bootloader configuration
  26. bootloader --location=mbr --boot-drive=sda
  27. autopart --type=lvm
  28. # Partition clearing information
  29. clearpart --all --initlabel --drives=sdb
  30.  
  31. %packages
  32. @^minimal
  33. @core
  34.  
  35. %end

至此,PXE服务器已经准备好了。

第二次搭建PXE安装Fusionstack1.8系统ks.cfg配置文件(可忽略这一步)

  1. #version=DEVEL
  2.  
  3. # System authorization information
  4.  
  5. auth --enableshadow --passalgo=sha512
  6.  
  7. install
  8. text
  9. nfs --server=192.168.1.20 --dir=/var/lib/tftpboot/Fusionstack1.
  10.  
  11. # Use graphical install
  12.  
  13. graphical
  14.  
  15. firstboot --disable
  16.  
  17. ignoredisk --only-use=sda
  18.  
  19. # Keyboard layouts
  20.  
  21. keyboard --vckeymap=us --xlayouts='us'
  22.  
  23. # System language
  24.  
  25. lang en_US.UTF-
  26.  
  27. # Network information
  28.  
  29. network --bootproto=dhcp --device=enp4s0f0 --ipv6=auto
  30.  
  31. network --bootproto=dhcp --device=enp4s0f1 --onboot=off --ipv6=auto
  32.  
  33. network --bootproto=dhcp --device=ens11f0 --onboot=off --ipv6=auto
  34.  
  35. network --bootproto=dhcp --device=ens11f1 --onboot=off --ipv6=auto
  36.  
  37. network --hostname=localhost.localdomain
  38.  
  39. # Root password
  40.  
  41. rootpw --iscrypted $$P2gG5V06$s2.JLSWy/eSeKW12PPLa2fDN.QkkyOaXuaNwH3PDOwqDB0HqPsdReGjGbt7D5bjI2v8QR2hmj6SGXwiwebPrO/
  42.  
  43. # SELinux configuration
  44.  
  45. selinux --enforcing
  46.  
  47. # System services
  48.  
  49. services --disabled="chronyd"
  50.  
  51. # System timezone
  52.  
  53. timezone Asia/Shanghai --isUtc --nontp
  54.  
  55. # System bootloader configuration
  56.  
  57. bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
  58.  
  59. autopart --type=lvm
  60.  
  61. # Partition clearing information
  62.  
  63. clearpart --all --initlabel --drives=sda
  64.  
  65. %post --nochroot
  66.  
  67. #!/bin/bash
  68.  
  69. set -x -v
  70.  
  71. exec >/mnt/sysimage/root/kickstart-stage1.log >&
  72.  
  73. mkdir -p /mnt/sysimage/opt/zstack-dvd/
  74.  
  75. echo "==> copying files from media to install drive..."
  76.  
  77. cp -r /run/install/repo/* /mnt/sysimage/opt/zstack-dvd/
  78.  
  79. %end
  80.  
  81. %post
  82.  
  83. #!/bin/sh
  84.  
  85. set -x -v
  86.  
  87. exec 1>/root/kickstart-stage2.log 2>&1
  88.  
  89. ls -l /opt/zstack-dvd/
  90.  
  91. %end
  92.  
  93. %post
  94.  
  95. #!/bin/sh
  96.  
  97. set -x -v
  98.  
  99. exec 1>/root/kickstart-stage3.log 2>&1
  100.  
  101. #mkdir -p /root/centos-repo
  102.  
  103. #mv /etc/yum.repos.d/CentOS*.repo /root/centos-repo/
  104.  
  105. cp /opt/zstack-dvd/repo/* /etc/yum.repos.d/
  106.  
  107. cp /opt/zstack-dvd/scripts/* /usr/local/bin/
  108.  
  109. ls -l /etc/yum.repos.d/
  110.  
  111. sed -i "s/SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config
  112.  
  113. sed -i "s/#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config
  114.  
  115. echo virtual-host > /etc/tuned/active_profile
  116.  
  117. chkconfig NetworkManager off
  118.  
  119. chkconfig firewalld off
  120.  
  121. chkconfig iptables on
  122.  
  123. %end
  124.  
  125. %packages
  126.  
  127. @^minimal
  128.  
  129. @core
  130.  
  131. bash-completion
  132.  
  133. bridge-utils
  134.  
  135. gcc
  136.  
  137. iptables
  138.  
  139. iptables-services
  140.  
  141. kexec-tools
  142.  
  143. kexec-tools
  144.  
  145. net-tools
  146.  
  147. pciutils
  148.  
  149. python-devel
  150.  
  151. sysstat
  152.  
  153. vim
  154.  
  155. wget
  156.  
  157. %end
  158.  
  159. %addon com_redhat_kdump --enable --reserve-mb='auto'
  160.  
  161. %end

---------------------------------------------------我是分割线--------------------------------------------------------

在做测试的时候,排错思路:tail -f /var/log/syslog 应该随时查看系统日志进行纠错

DHCP连接时报文:

  1. Sep :: zhang-ThinkPad-Edge-E431 dhcpd: DHCPDISCOVER from :e6:ba:1f:c5:ef via eth0
  2. Sep :: zhang-ThinkPad-Edge-E431 dhcpd: DHCPOFFER on 192.168.1.102 to :e6:ba:1f:c5:ef via eth0
  3. Sep :: zhang-ThinkPad-Edge-E431 dhcpd: Wrote leases to leases file.
  4. Sep :: zhang-ThinkPad-Edge-E431 dhcpd: DHCPREQUEST for 192.168.1.102 (192.168.1.20) from :e6:ba:1f:c5:ef via eth0
  5. Sep :: zhang-ThinkPad-Edge-E431 dhcpd: DHCPACK on 192.168.1.102 to :e6:ba:1f:c5:ef via eth0

TFTP连接时报文:

  1. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.
  2. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  3. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/8c6b4dc2-837a-da11-b45d-b37d29a9f83d
  4. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  5. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/--e6-ba-1f-c5-ef
  6. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  7. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A80166
  8. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  9. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A8016
  10. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  11. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A801
  12. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  13. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A80
  14. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  15. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A8
  16. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  17. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A
  18. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  19. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0
  20. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  21. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C
  22. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
  23. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/default
  24. Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot

---------------------------------------------------我是分割线--------------------------------------------------------

kickstart文件详解:

在此可以参考官方文档:CentOS6 : https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html

  1. ks.cfg文件组成大致分为3
  2.  
  3. •命令段
  4. 键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项
  5.  
  6. •软件包段
  7.  
  8. 1.%packages
  9. 2.@groupname:指定安装的包组
  10. 3.package_name:指定安装的包
  11. 4.-package_name:指定不安装的包
  12.  
  13. 在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。
  14. •脚本段(可选)
  15. 1.%pre:安装系统前执行的命令或脚本(由于只依赖于启动镜像,支持的命令很少)
  16. 2.%post:安装系统后执行的命令或脚本(基本支持所有命令)

---------------------------------------------------我是分割线--------------------------------------------------------

auth 或 authconfig(必要) 設定系統的身份認證選項,預設啟用 shadow 密碼。
--useshadow 或 --enableshadow — 使用 shadow 密碼。預設上會啟用此選項。
--passalgo= — 選擇 sha256 以設定 SHA-256 雜湊演算法則,或選擇 sha512 來設定 SHA-512 雜湊演算法則。

autopart (選用)  自動建立分割區 — root(/)分割區(1 GB 以上)、swap 分割區、以及適用於該架構所需大小的 boot 分割區
請注意,autopart 選項不能在同樣的 kickstart 檔案中,與 part/partition、raid、logvol、或 volgroup 選項同時使用。

bootloader(必要)指定開機載入程式的安裝方式。安裝與升級時,都需要這選項。
--append= — 指定核心參數。如要指定多個核心參數,請以空白字元來將它們隔開。

clearpart(選用性)在建立新分割區之前,從系統移除分割區。預設上,不會移除任何分割區。
--none(預設值)— 不移除任何分割區。 --linux — 清除所有 Linux 分割區。--initlabel 選項已經淘汰。

firstboot(選用性) 決定第一次系統啟動時,是否要執行 firstboot。如果啟用此功能,就必須安裝 firstboot 套件。如果沒有指定的話,預設上此選項是停用的。
--enable 或 --enabled — 設定代理程式 在系統第一次開機時啟用。
--disable 或 --disabled — 設定代理程式 在系統第一次開機時不啟用。
--reconfig — 在重新配置模式下使 設定代理程式 在開機時啟用。除了預設的選項之外,此模式還可啟用語言、滑鼠、鍵盤、root 密碼、安全層級、以及時區配置選項。

graphical(選用性)以圖形介面進行 Kickstart 安裝。這是預設值。

install(選用性) 命令系統重新安裝,而非從既有的系統升級。這是預設模式。若要安裝,您必須從 cdrom、harddrive、nfs 或 url(FTP、HTTP 或 HTTPS 安裝)指定安裝類型。install 指令必須位於和安裝方式指令不同的一行上。
nfs — 從指定的 NFS 伺服器安裝。
  --server= 安裝來源的伺服器(主機名稱或 IP 位址)。
  --dir= 包含安裝樹 variant 目錄的目錄。
  --opts= 使用於掛載 NFS export 的掛載選項。(選用)

keyboard(必要)為系統設置預設鍵盤類型。

lang(必要)設定在安裝過程與安裝後系統的預設語言。

network(選用)為目標網路配置網路資訊,並啟動安裝程式環境中的網路裝置。
bootproto 選項的預設值為 dhcp。bootp 和 dhcp 視為同等。
--hostname= — 要安裝的系統之主機名稱。

part 或 partition(安裝時的必要選項;升級時會予以忽略)

rootpw(必須)將系統的 root 密碼設置為 <password> 引數。

timezone(必要)將系統的時區設為 <timezone>,所有時區列在 /usr/share/zoneinfo 目錄中

network(選用)為目標網路配置網路資訊,並啟動安裝程式環境中的網路裝置。如果安裝過程中需要存取網路,第一組 network 指令所指定的裝置會自動啟動,例如透過網路或 VNC 安裝。從 RHEL 6.1 開始,您也可以透過 --activate 選項,指定要在安裝程式環境中啟動的裝置。
--activate — 在安裝環境中啟用此裝置。

可使用下列五種方法之一來指定裝置:

## 介面卡的裝置名稱,例如 eth0
## 介面卡的 MAC 位址,例如 00:12:34:56:78:9a
## 關鍵字 link,它可指定連結為 up 狀態的第一個介面卡
## bootif 關鍵字,它使用了 pxelinux 設置於 BOOTIF 變數中的 MAC 位址。請在您的 pxelinux.cfg 檔案中設置 IPAPPEND 2,以使 pxelinux 設置 BOOTIF 變數。
## ibft 關鍵字,它使用了由 iBFT 所指定的介面卡的 MAC 位址

---------------------------------------------------我是分割线--------------------------------------------------------

 Inetd进程详解

Inetd 也叫作超级服务器,见识一些网络请求的守护进程,根据网络请求来调用相应的服务进程来处理连接请求。

Inetd.conf则是inetd的配置文件

inetd.conf文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。

TFTP是由xinetd管理的服务,所以TFTP的配置文件是/etc/xinetd.d/tftp

/etc/inetd.conf文本文件中各行的含义如下:
1.服务名称(service_name):这个服务名称必须在/etc/services中定义。
2.套接字类型(socket_type):套接字是流套接字还是倾听套接字类型。
3.使用的协议类型(protocol):即TCP协议或者UDP协议。有的服务可能同时支持两种协议。
4.等待状态(wait_flag):如果指定为nowait,超级服务器将允许指定的服务并发,它将在本次服务未完成时,启动下一次服务。否则,该项服务将不能并发执行,一次只能服务于一个用户进程,下一个用户进程只能等到本次服务结束后才能得到服务。
5.用户名(login_name):服务器将以该用户名对应的权限运行进程。由于inetd是具有超级权限的进程,而有些服务可能是某个用户自己编写的,不应当或没有必要以超级用户的权限运行。inetd将根据这个记录在exec加载子进程时修改进程的运行权限。
6.服务器的可执行文件的位置(server_program):inetd使用这个项目定位服务器程序的位置(使用绝对路径名)。
7.程序的参数(server_program_arguments):inetd将在exec函数中使用这行参数。

---------------------------------------------------我是分割线--------------------------------------------------------

Network-Manager详解:

我的Ubuntu网络图标现在显示成“无线网络”图标,不是“两个电脑”。而且在“编辑连接”的“有线”那栏里只有几个虚拟机的网卡配置,没有eth0。用ifconfig能够显示出eth0,机器也能正常上网。

Linux 里面有两套管理网络连接的方案:/etc/network/interfaces(/etc/init.d/networking)和Network- Manager。
两套方案是冲突的,不能同时共存。
第一套方案适用于没有X的环境,如:服务器或者那些完全不需要改动连接的场合。
第二套方案使用于有桌面的环境,特别是笔记本,搬来搬去,网络连接情况随时会变的。

他们两个为了避免冲突,又能共享配置,就有了下面的解决方案:
当Network-Manager发现
/etc/network/interfaces被改动的时候,则关闭自己(显示为未托管),除非managed设置成真。
当 managed设置成真时,/etc/network/interfaces则不生效。

因此,编辑/etc/NetworkManager/nm-system-settings.conf文件:
vi /etc/NetworkManager/nm-system-settings.conf
找到如下行:
managed=false
并修改为:
managed=true
重启后就会正确显示“两个电脑”的网络图标,并且能够正常显示“连接信息”了。

---------------------------------------------------我是分割线--------------------------------------------------------

DHCP原理详解:

典型的DHCP过程是这样的:
1:客户机向服务器发送DHCP_DISCOVER报文,申请IP。
2:服务器向客户机返会DHCP_OFFER报文,指定一个将要分配的IP。
3:客户机向服务器发送DHCP_REQUEST报文,请求这个IP。
4:服务器PING几次(一般是3次)这个IP,如果没得到响应的话,就说明这个IP现在空闲,可以分配给客户机,所以向客户机发送DHCP_ACK报文,确认可以分配。如果得到相应,则发送DHCP_NAK报文,拒绝分配。
5:如果客户端收到DHCP_ACK,责发送一次免费ARP,判断这个IP是否已经被用。没有被用的话则绑定这个服务器分配来的IP,否则向服务器发送DHCP_DECLINE报文,拒绝这次分配。并重新执行第一步。
如果收到的是DHCP_NAK,则直接重新执行第一步。

---------------------------------------------------END--------------------------------------------------------

Ubuntu14.04-PXE装机笔记的更多相关文章

  1. Ubuntu14.04安装Torch7笔记

    Ubuntu14.04安装Torch7笔记 利用快捷键Ctrl+Alt+T打开Ubuntu终端 第一步: 获取安装LuauJIT(C语言编写的Lua的解释器)和Torch所必需的依赖包. 代码如下: ...

  2. 在Ubuntu14.04安装torch7笔记

    http://www.linuxdiyf.com/linux/18979.html 附编译例子: https://github.com/vic-w/torch-practice

  3. 基于Ubuntu14.04系统的nvidia tesla K40驱动和cuda 7.5安装笔记

    基于Ubuntu14.04系统的nvidia tesla K40驱动和cuda 7.5安装笔记 飞翔的蜘蛛人 注1:本人新手,文章中不准确的地方,欢迎批评指正 注2:知识储备应达到Linux入门级水平 ...

  4. docker在ubuntu14.04下的安装笔记

    本文主要是参考官网教程进行ubuntu14.04的安装. 下面是我的安装笔记. 笔记原件完整下载: 链接: https://pan.baidu.com/s/1dEPQ8mP 密码: gq2p

  5. PXE+kickstart自动安装ubuntu14.04

    本文参考了诸多文章,先感谢这些文章的作者. 使用pxe安装系统需要安装dhcp,tftp,http等服务(当然也可以使用其他文件共享方式比如nfs,ftp). 实验环境: 1. vmware 12 2 ...

  6. ubuntu14.04安装及web环境的搭建

    在进行接下来的工作之前首先得准备一个Ubuntu的启动U盘以及腾出一个至少50G的系统盘(在网上看到有人用20G的,不知道效果怎么样).关于Ubuntu启动U盘大家可以参考这个帖子 http://ti ...

  7. Ubuntu14.04源

    Ubuntu14.04源:   来源: http://wiki.ubuntu.org.cn/Qref/Source (包含15.04.14.10.14.04.12.04.10.04的源)     Ub ...

  8. Ubuntu14.04安装配置web/ftp/tftp/dns服务器

    目录: 1.安装ftp服务器vsftpd --基于tcp,需要帐号密码 2.安装tftp服务器tftpd-hpa,tftp-hpa --udp 3.web服务器--使用Apache2+Mysql+PH ...

  9. win7下装ubuntu14.04双系统

    一.给ubuntu准备安装空间 计算机--右键--管理-磁盘管理--选择一个空余空间较多的磁盘--右键--压缩卷--压缩大概60G空间(接下来ubuntu就会装到这60G里面)   二.制作启动u盘 ...

随机推荐

  1. JAVA设计模式之不变模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述不变(Immutable)模式的: 一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式. 不变模式的结构 不变模式可增强对象的 ...

  2. 用递归方法求一个list的最大值

    极好的一张图,瞬间理解.然后留意一下边界条件直接搞定.

  3. 六、通过插件如何创建自己的MEL command

    1. MAYA API支持不同类型的plugin (1)Command Plugin——扩充MEL命令 (2)Tool Commands——通过鼠标输出 (3)DG plugin——对场景添加新的操作 ...

  4. Linux字符界面下用户账户的设置

    在Linux系统字符界面下创建.修改以及删除用户账户主要使用useradd,usermod和userdel这3个命令. 一.创建用户账户 创建用户账户就是在系统中创建一个新账户,然后为新账户分配用户U ...

  5. lua 面向对象

    对象的特点是: 对象拥有自己的数据,两个对象即使数据完全相同,他们也是相互独立的: 对象之间可以共享对象的行为,也就是他们的方法是一致的: lua中的table就非常适合作为一个对象,可以在table ...

  6. vs2010 编译boost库

    下载boost_1_49_0 打开vs2010工具dos, 再进入E:\boost_1_49_0 运行: bootstrap.bat 然后再运行: bjam stage --toolset=msvc- ...

  7. Java web--反射(解刨)

    本质:先加载类           再解刨类的方法,字段,构造函数 目的:解刨出构造函数       为了new对象 解刨出字段             为了封装数据进去 解刨方法           ...

  8. TIJ读书笔记04-方法重载

    TIJ读书笔记04-方法重载 为什么会有方法重载 方法签名 如何区分重载 关于基本类型的重载 为什么会有方法重载 OOP的编程方式就是让程序的逻辑更加接近现实世界的逻辑. 而在现实世界中,自然语言本身 ...

  9. http的应用httpurlconnection--------1

    http请求后获得所需要的是字符串的时候 URL url=new URL(strurl); try { HttpURLConnection conn=(HttpURLConnection) url.o ...

  10. LZW压缩算法

    转载自http://www.cnblogs.com/jillzhang/archive/2006/11/06/551298.html 记录此处仅自己供学习之用 lzw解压缩算法: 用单个字符初始化字符 ...