什么是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进行编辑}

nano /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet none
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 114.114.114.114

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

service networking restart
ifdown eth0
ifup eth0

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

service network-manager stop

第一步:DHCP

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

sudo apt-get install isc-dhcp-Server

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

sudo nano /etc/default/dhcp3-server

  作如下修改:

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

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

sudo nano /etc/dhcp/dhcpd.conf
 作如下修改:   default-lease-time ;   max-lease-time ;   subnet 192.168.1.0 netmask 255.255.255.0 {   range 192.168.1.100 192.168.1.200;   option subnet-mask 255.255.255.0;   option routers 192.168.1.20;   option broadcast-address 192.168.1.255;   filename "pxelinux.0";   next-Server 192.168.1.20;   }

4.启动 DHCP 服务

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

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

第二步:TFTP

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

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

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

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

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

sudo nano /etc/default/tftpd-hpa

  作如下修改:

  TFTP_USERNAME="tftp"

  TFTP_DIRECTORY="/var/lib/tftpboot"

  TFTP_ADDRESS="[:0.0.0.0:]:69"

  TFTP_OPTIONS="--secure"

  RUN_DAEMON="yes"

  OPTIONS="-l -s /var/lib/tftpboot"

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

sudo update-inetd --enable BOOT
   sudo service tftpd-hpa start

5.检查状态。

sudonetstat -lu

它将如下所示:

ProtoRecv-Q Send-Q LocalAddressForeignAddressState

udp 00*:tftp *:*

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

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

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
}

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

第三步:配置 PXE 启动文件

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

sudo    mkdir /var/lib/tftpboot
sudo mkdir /var/lib/tftpboot/pxelinux.cfg
sudo mkdir -p /var/lib/tftpboot/Centos
sudo cp /usr/lib/syslinux/vesamenu.c32 /var/lib/tftpboot/
sudo cp /usr/lib/syslinux/pxelinux. /var/lib/tftpboot/

设置 PXELINUX 配置文件

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

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

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

sudo nano /var/lib/tftpboot/pxelinux.cfg/default

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

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

sudonano/var/lib/tftpboot/pxelinux.cfg/pxe.conf

作如下修改:
MENU TITLE PXE Server
NOESCAPE
ALLOWOPTIONS
PROMPT
MENU WIDTH
MENU ROWS
MENU TABMSGROW
MENU MARGIN
MENU COLOR border ;#ffffffff # std

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

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

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

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

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

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

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

sudo    nano  /etc/exports

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

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

 #version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
#Network information
network --bootproto=dhcp --device=enp4s0f1 --onboot=yes --ipv6=auto
# Install OS instead of upgrade
install
nfs --server=192.168.1.20 --dir=/var/lib/tftpboot/Centos
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF- --addsupport=zh_CN.UTF- # Root password
# root密码是: rootroot
rootpw --iscrypted $$7gdZF8XhDef10LyT$2uRiP4qFYaBBTgpggKU/BXKgMDJLWN/BriXXgBwyzkjaz9G9YP/xD08I1OJfgBcPMoURsE5inVIoX.J6aERmR0
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel --drives=sdb %packages
@^minimal
@core %end

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

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

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512

install
text
nfs --server=192.168.1.20 --dir=/var/lib/tftpboot/Fusionstack1. # Use graphical install graphical firstboot --disable ignoredisk --only-use=sda # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF- # Network information network --bootproto=dhcp --device=enp4s0f0 --ipv6=auto network --bootproto=dhcp --device=enp4s0f1 --onboot=off --ipv6=auto network --bootproto=dhcp --device=ens11f0 --onboot=off --ipv6=auto network --bootproto=dhcp --device=ens11f1 --onboot=off --ipv6=auto network --hostname=localhost.localdomain # Root password rootpw --iscrypted $$P2gG5V06$s2.JLSWy/eSeKW12PPLa2fDN.QkkyOaXuaNwH3PDOwqDB0HqPsdReGjGbt7D5bjI2v8QR2hmj6SGXwiwebPrO/ # SELinux configuration selinux --enforcing # System services services --disabled="chronyd" # System timezone timezone Asia/Shanghai --isUtc --nontp # System bootloader configuration bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda autopart --type=lvm # Partition clearing information clearpart --all --initlabel --drives=sda %post --nochroot #!/bin/bash set -x -v exec >/mnt/sysimage/root/kickstart-stage1.log >& mkdir -p /mnt/sysimage/opt/zstack-dvd/ echo "==> copying files from media to install drive..." cp -r /run/install/repo/* /mnt/sysimage/opt/zstack-dvd/ %end %post #!/bin/sh set -x -v exec 1>/root/kickstart-stage2.log 2>&1 ls -l /opt/zstack-dvd/ %end %post #!/bin/sh set -x -v exec 1>/root/kickstart-stage3.log 2>&1 #mkdir -p /root/centos-repo #mv /etc/yum.repos.d/CentOS*.repo /root/centos-repo/ cp /opt/zstack-dvd/repo/* /etc/yum.repos.d/ cp /opt/zstack-dvd/scripts/* /usr/local/bin/ ls -l /etc/yum.repos.d/ sed -i "s/SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config sed -i "s/#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config echo virtual-host > /etc/tuned/active_profile chkconfig NetworkManager off chkconfig firewalld off chkconfig iptables on %end %packages @^minimal @core bash-completion bridge-utils gcc iptables iptables-services kexec-tools kexec-tools net-tools pciutils python-devel sysstat vim wget %end %addon com_redhat_kdump --enable --reserve-mb='auto' %end

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

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

DHCP连接时报文:

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

TFTP连接时报文:

Sep  :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/8c6b4dc2-837a-da11-b45d-b37d29a9f83d
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/--e6-ba-1f-c5-ef
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A80166
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A8016
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A801
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A80
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A8
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0A
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C0
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/C
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: serving file from /tftpboot
Sep :: zhang-ThinkPad-Edge-E431 tftpd[]: tftpd: trying to get file: pxelinux.cfg/default
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

ks.cfg文件组成大致分为3段

•命令段
键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项 •软件包段 1.%packages
2.@groupname:指定安装的包组
3.package_name:指定安装的包
4.-package_name:指定不安装的包 在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。
•脚本段(可选)
1.%pre:安装系统前执行的命令或脚本(由于只依赖于启动镜像,支持的命令很少)
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下搭建python+mysql环境

    简略记录ubuntu14.04下搭建python操作的mysql服务器的过程和其中遇到的问题及解决方法. 第一部分: 安装mysql 安装步骤:1. sudo apt-get install mysq ...

  2. 在ubuntu14.04上搭建OpenVPN服务

    简介 在连接了不可信的网络环境后,让手机或者计算机安全的访问互联网,使用虚拟专用网络(Virtual Private Network,VPN)是一个解决办法.OpenVPN是一个SSL VPN完整解决 ...

  3. ubuntu14.04 dnsmasq搭建本地名字服务器

    1 修改dnsmasq配置文件/etc/dnsmasq.conf 在/etc/dnsmasq.conf文件底部增加 #++++++++++++++++++++++++++++++++++++++++ ...

  4. 在Ubuntu14.04上搭建自己的OpenVPN服务器并通过它上网

    背景 学校宿舍端口可以配置静态IP连校内网,也可以连到实验室的服务器:实验室的服务器可以连外网:但宿舍要连外网就要花钱买PPPoE账号了.作为壮哉我大计院的一员,本着发扬专(neng)业(sheng) ...

  5. ubuntu14.04上搭建android开发环境

    这几天心血来潮,想在ubuntu上写写android软件.所以就上网找些资料在ubuntu上搭建android环境.结果要么时不完整的,要么就是过时的. 所以我把我搭建android环境的过程写下了, ...

  6. Ubuntu14.04下搭建VPN服务 -pptp

    在Ubantu下采用PPTP搭建VPN,优点是配置简单快捷.本教程亲自测试,熟练了在新机器上5分钟搞定VPN. - - - - - - - - - - - - - - - - - - - - - - ...

  7. ESP32搭建3.ubuntu14.04下搭建esp32开发环境 (10-5)

    硬件为乐鑫出品的ESP32一款集成了wifi和蓝牙的集成模块. 1.首先ctrl+alt+t打开终端,sudo -s选择用root权限登陆 . 2. 输入指令:sudo apt-get install ...

  8. 在 Ubuntu14.04 上搭建 Spark 2.3.1(latest version)

    搭建最新的 Spark 2.3.1 . 首先需要下载最新版 jdk .目前 2.3.1 需要 8.0 及其以上 jdk 才可以允许. 所以如果你没有 8.0  jdk 安装好了之后会报错.不要尝试安装 ...

  9. Ubuntu14.04下搭建VPN服务

    直接上步骤: 1.第一步需要安装PPTP,以用来提供VPN服务. sudo apt-get install pptpd 如果有问题的话比如提示找不到之类的,apt-get update 一下应该就可以 ...

  10. Ubuntu14.04上搭建FTP服务器

    Ubuntu上常用的Ftp服务器是vsFTPd.安装前检查下是否已经装好了.用 sudo service vsftpd restart,如果提示重启成功之类的信息,说明此服务器已经安装好了vsFTPd ...

随机推荐

  1. KindEditor 销毁与自动高度冲突解决

    前提准备情况: KindEditor(KE)  +  easyUI 1.通过 EasyUI.Window 打开一个窗口,窗口中包含一个 KE编辑器:在次打开WIndow 的时候 KE会出现编辑器里面的 ...

  2. Kotlin第一篇 Hello Kotlin以及简单介绍。

    首先需要一个编译器,我们使用Intellij IDE  https://www.jetbrains.com/idea/download/#section=windows 下载下来安装好. 那么我们就来 ...

  3. multiset的应用

    multiset 和set差不多 ,但是可以存储多个一样的元素

  4. 1003. Check If Word Is Valid After Substitutions

    We are given that the string "abc" is valid. From any valid string V, we may split V into ...

  5. 对MySQL性能影响较大的五类配置参数

    以下主要是对MySQL 性能影响关系紧密的五大配置参数的介绍. 一.      连接 连接通常来自Web 服务器,下面列出了一些与连接有关的参数,以及该如何设置它们. (一).             ...

  6. uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型

    在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的 ...

  7. 13、OpenCV Python canny边缘提取

    __author__ = "WSX" import cv2 as cv import numpy as np def lapalian_demo(image): #拉普拉斯算子 # ...

  8. storm本地可以运行集群出错遇到的问题

    storm本地运行和集群运行是存在区别的: 本地可以读取本地文件系统及java项目中的文件,但是提交集群后就不能读取了,storm只是将topology提交到了集群,所以只能在main方法中将需要读取 ...

  9. CF581C Developing Skills 模拟

    Petya loves computer games. Finally a game that he's been waiting for so long came out! The main cha ...

  10. Ubuntu系统升级遇到问题记录

    The upgrade needs a total of 99.7 M free space on disk '/boot'. Please free at least an additional 5 ...