Ubuntu14.04-PXE搭建


什么是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 600;

  max-lease-time 7200;

  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.0     /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 1 lable memtest86 kernel memtest append


# ksdevice=eth0代表當客戶端有多塊網卡的時候,要實現自動化需要設置從eth0安裝,不指定的話,安裝的時候系統會讓你選擇,那就不叫全自動化了。
第二次搭建PXE安裝Fusionstack1.8系統Default配置文件(可忽略這一步
 1 default vesamenu.c32
 2 timeout 600
 3 display boot.msg      
 4 prompt 1
 5 
 6 label Fusionstack1.8
 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” 文件

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

作如下修改:
MENU TITLE PXE Server
NOESCAPE 1
ALLOWOPTIONS 1
PROMPT 0
MENU WIDTH 80
MENU ROWS 14
MENU TABMSGROW 24
MENU MARGIN 10
MENU COLOR border 30;44#ffffffff #00000000 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目錄下)

 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-8 --addsupport=zh_CN.UTF-8
17 
18 # Root password
19 # root密碼是: rootroot
20 rootpw --iscrypted $6$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配置文件(可忽略這一步)

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512


install
text
nfs --server=192.168.1.20 --dir=/var/lib/tftpboot/Fusionstack1.8

# Use graphical install

graphical

firstboot --disable

ignoredisk --only-use=sda

# Keyboard layouts

keyboard --vckeymap=us --xlayouts='us'

# System language

lang en_US.UTF-8



# 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 $6$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 1>/mnt/sysimage/root/kickstart-stage1.log 2>&1



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  9 13:04:48 zhang-ThinkPad-Edge-E431 dhcpd: DHCPDISCOVER from 90:e6:ba:1f:c5:ef via eth0
Sep  9 13:04:48 zhang-ThinkPad-Edge-E431 dhcpd: DHCPOFFER on 192.168.1.102 to 90:e6:ba:1f:c5:ef via eth0
Sep  9 13:04:59 zhang-ThinkPad-Edge-E431 dhcpd: Wrote 3 leases to leases file.
Sep  9 13:04:59 zhang-ThinkPad-Edge-E431 dhcpd: DHCPREQUEST for 192.168.1.102 (192.168.1.20) from 90:e6:ba:1f:c5:ef via eth0
Sep  9 13:04:59 zhang-ThinkPad-Edge-E431 dhcpd: DHCPACK on 192.168.1.102 to 90:e6:ba:1f:c5:ef via eth0

TFTP連接時報文:

Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6966]: tftpd: trying to get file: pxelinux.0
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6966]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6968]: tftpd: trying to get file: pxelinux.cfg/8c6b4dc2-837a-da11-b45d-b37d29a9f83d
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6968]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6970]: tftpd: trying to get file: pxelinux.cfg/01-90-e6-ba-1f-c5-ef
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6970]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6972]: tftpd: trying to get file: pxelinux.cfg/C0A80166
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6972]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6974]: tftpd: trying to get file: pxelinux.cfg/C0A8016
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6974]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6976]: tftpd: trying to get file: pxelinux.cfg/C0A801
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6976]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6978]: tftpd: trying to get file: pxelinux.cfg/C0A80
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6978]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6980]: tftpd: trying to get file: pxelinux.cfg/C0A8
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6980]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6982]: tftpd: trying to get file: pxelinux.cfg/C0A
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6982]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6984]: tftpd: trying to get file: pxelinux.cfg/C0
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6984]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6986]: tftpd: trying to get file: pxelinux.cfg/C
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6986]: tftpd: serving file from /tftpboot
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6988]: tftpd: trying to get file: pxelinux.cfg/default
Sep 12 10:25:48 zhang-ThinkPad-Edge-E431 tftpd[6988]: 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--------------------------------------------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM