Linux系統網路安裝——基於pxe+dhcp+nfs+tftp+kickstart

来源:http://www.cnblogs.com/netonline/archive/2017/06/16/7022214.html
-Advertisement-
Play Games

原文發表於:2010-09-05 轉載至cu於:2012-07-21 一.原理簡介 PXE(preboot execute environment)工作於Client/Server的網路模式,支持工作站通過網路從遠端伺服器下載鏡像,並由此支持來自網路的操作系統的啟動。啟動過程中,終端由DHCP伺服器 ...


原文發表於:2010-09-05

轉載至cu於:2012-07-21

一.原理簡介

PXE(preboot execute environment)工作於Client/Server的網路模式,支持工作站通過網路從遠端伺服器下載鏡像,並由此支持來自網路的操作系統的啟動。啟動過程中,終端由DHCP伺服器分配IP地址,再用TFTPtrivial file transfer protocol)等協議下載存在於伺服器(NFS,FTP,HTTP)Liunx內核和根文件系統等到本機記憶體中並執行,由此完成終端基本軟體設置,從而引導預先安裝在伺服器中的終端操作系統。

Kickstart 是一種無人職守安裝方式。它通過記錄典型的安裝過程中所需人工干預填寫的各種參數,並生成一個ks.cfg文件;在其後的安裝過程中單出現要求填寫參數的時候,安裝程式會查找kickstart文件,在能找到合適的參數情況下就不需要人工干預。

二.環境說明

os

    CentOS 5.4 i386

soft

    dhcp, nfs, tftp, kickstart(gnome 或者x-window)

可以使用yum安裝: 

yum –y install dhcp*
yum –y install nfs*
yum –y install tftp*
yum –y install system-config-kickstart*

ip

    eth0: 192.168.1.254

三.安裝配置過程簡介

1. 配置DHCP

more /etc/dhcpd.conf

# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
# Location: Zhangjiang IDC
# Date: 2010-08-01
 
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
 
subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers 192.168.1.254;
        option subnet-mask 255.255.255.0;
        option domain-name-servers 192.168.1.254;
        option time-offset -18000; # Eastern Standard Time
        range dynamic-bootp 192.168.1.10 192.168.1.250;
        default-lease-time 21600;
        max-lease-time 43200;

# Group the PXE bootable hosts
# PXE-server configuration direction
        next-server 192.168.1.254; #指向nfs伺服器
        filename "/pxelinux.0"; #/tftp根目錄下的啟動引導文件
 
        # we want the nameserver to appear at a fixed address
        host ns {
                hardware ethernet 00:1C:25:80:F4:58; #張江機房的筆記本網卡mac
                fixed-address 192.168.1.2;
        }
}

重啟dhcp服務:

/etc/init.d/dhcpd restart

 

2. 配置TFTP

more /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          = -u nobody -s /tftpboot  #-s指定tftp根目錄
        disable                  = no        #預設yes,關閉
        per_source            = 11
        cps                        = 100 2
        flags                      = IPv4
}

 

重啟tftp服務:

/etc/init.d/xinetd.restart

 

查看tftp服務是否啟動:

chkconfig –list | grep tftp

 

3. 配置NFS

NFS需要向RPC註冊才能被客戶端調用,一般做埠映射的portmap是預設安裝的,沒有的話可以使用yum安裝:

yum –y install portmap*

 

可以直接使用掛載的鏡像,這裡是拷到伺服器上為了建立一個專門存放常用的鏡像文件建的目錄。

 

mount /dev/cdrom /mnt
mkdir /ios/CentOS_5.4
cp –a /mnt/* /ios/CentOS_5.4 

 

#共用tftp的根目錄,192.168.1.0/24網段的用戶有隻讀許可權
echo "/tftpboot 192.168.1.0/24(ro,sync)" > /etc/exports

#共用存放鏡像文件的目錄,所有用戶有隻讀許可權
echo "/ios/CentOS_5.4 *(ro,sync)" >> /etc/exports

 

#不重啟nfs伺服器情況下配置生效
exportfs –arv 

#重啟服務
/etc/init.d/portmap restart
/etc/init.d/nfs resart 

 

查看共用目錄是否生效:

showmount –e localhost

 

4. 配置PXE啟動需要的文件

cp /usr/lib/syslinux/pxelinux.0 /tftpboot

# pxelinux.0依賴於syslinux,沒有安裝使用yumyum –y install syslinux*

# pxelinux.0PXE啟動引導文件

 

cp /ios/CentOS_5.4/ioslinux/vmlinuz /tftpboot
cp /ios/CentOS_5.4/ioslinux/initrd.img /tftpboot

# vmlinuzinitrd.img是不同版本的系統內核和系統引導文件,安裝不同版本系統時請使用各版本的vmlinuzinitrd.img

 

mkdir /tftpboot/pxelinux.cfg
cp /ios/CentOS_5.4/ioslinux.cfg /tftpboot/pxelinux.cfg/default

 

到目前已經可以從網路安裝系統了。測試如下:

啟動伺服器,一般F12進入PXE網路啟動,向DHCP請求IPDHCP響應包含IP地址和pxelinux啟動程式位置;PXE客戶端收到響應後,向伺服器請求傳送文件(pxelinux.0pxelinux.cfg/defaultvmlinuzinitrd.img);客戶端通過pxelinux.cfg/default文件成功的引導Linux安裝內核後,安裝程式首先必須確定你通過什麼安裝介質來安裝linux,如果是通過網路安裝(NFS, FTP, HTTP),則會在這個時候初始化網路,並定位安裝源位置。(由於PXE獲取的是安裝用的內核以及安裝程式等,而安裝程式要獲取的是安裝系統所需的二進位包以及配置文件,它們需要的內容不同造成PXE模塊和安裝程式是相對獨立的,PXE的網路配置並不能傳遞給安裝程式,從而進行兩次獲取IP地址過程)。

 

5. 配置ks.cfg文件

ks.cfg文件可以由以下方法生成:

1. 每次裝好一臺CentOS(RedHat),安裝程式都會自動創建一個kickstart文件,文件記錄了真實的安裝配置,位置在/root/anaconda-ks.cfg,可以根據此配置來生成自己需要的ks.cfg文件;

2. 使用圖形化的kickstart配置工具,命令:system-config-kickstart;

3. 使用文本編輯器編輯。

 以下是已經寫好的ks.cfg文件,僅供參考: 

more /ios/ks.cfg

# Kickstart file automatically generated by anaconda.

install
nfs --server=192.168.1.254 --dir=/ios/CentOS_5.4
#指出NFS的路徑和安裝文件的位置

lang en_US.UTF-8
keyboard us

network --device eth0 --onboot yes --bootproto dhcp --hostname test
#network --device eth0 --onboot yes –bootproto static --ip 192.168.1.10 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 8.8.8.8 --hostname test
#一個網卡獲得地址的方式
network --device eth1 --onboot no --bootproto dhcp --hostname test

rootpw --iscrypted $1$V26J9f5V$A7k9alSJs1GzG.qNBef6f/
#加密root密碼

firewall --disabled #--port=22:tcp
authconfig --enableshadow --enablemd5
#使用md5認證

selinux --disabled

timezone --utc Asia/Shanghai

bootloader --location=mbr --driveorder=sda

# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work

clearpart --linux
part /boot --fstype ext3 --size=100 --ondisk=sda
part swap --size=2048 --ondisk=sda
part / --fstype ext3 --size=100 –grow --ondisk=sda

#分區和選包是機房最頭疼的事,在這裡可以修改
#clearpart --linux --drives=sda
#part /boot --fstype ext3 --size=200
#part pv.2 --size=0 --grow --ondisk=sda
#volgroup VolGroup00 --pesize=32768 pv.2
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=6144
#以上是一個LVM分區的示範

reboot #安裝完畢後重啟 

%packages
@development-libs
@development-tools
@admin-tools
@editors
#選包

 

將配置好的ks.cfg文件放在共用目錄內,這裡放到/ios下

echo "/ios 192.168.1.0/24(ro,sync)" >> /etc/exports
exportfs –arv

 

 修改/tftpboot/pxelinux.cfg/default配置: 

more /tftpboot/pxelinux.cfg/default

default ks    #預設從標簽ks啟動
prompt 1     #顯示"boot:"提示符
timeout 30  #等待超時時間

display boot.msg #/tftpboot/boot.msg預設顯示boot.msg,可以根據實際情況編輯,
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg 

label linux #在boot:提示符後輸入linux(只是一個標簽),從下麵指出的內核啟動
  kernel vmlinuz
  append initrd=initrd.img

label text #在boot:提示符後輸入text,這裡是文字界面安裝
  kernel vmlinuz
  append initrd=initrd.img text

label ks #default預設,從ks.cfg讀取安裝信息,無需人工干預
  kernel vmlinuz
  append ks=nfs:192.168.1.254:/ios/ks.cfg initrd=initrd.img ksdevice=link
  #ksdevice=link,從連接的網卡讀取安裝文件

label local
  localboot 1

label mem
  kernel memtest
  append -

 

6. 進階

由於機房目前常安裝的系統是RHEL4.7, RHEL4.7 x86_64, CentOS5.4, CentOS5.4 x86_64。可以將四種鏡像放在專門的目錄內。例如:

RHEL4.7/ios/rhel4.7

RHEL4.7 x86_64: /ios/rhel4.7-x86_64

CentOS5.4: /ios/centos5.4

CentOS5.4 x86_64: /ios/centos5.4- x86_64

 

/tftp根目錄(這裡是/tftpboot下,各版本的內核和引導文件也需要改變位置:

RHEL4.7/ios/rhel4.7/vmlinuz

              /ios/rhel4.7/initrd.img

RHEL4.7 x86_64: /ios/ rhel4.7-x86_64/vmlinuz

                            /ios/ rhel4.7-x86_64/initrd.img

CentOS5.4: /ios/centos5.4/vmlinuz

                  /ios/centos5.4/initrd.img

CentOS5.4 x86_64: /ios/centos5.4- x86_64/vmlinuz

                                /ios/centos5.4- x86_64/ initrd.img

 

PXE引導文件(這裡是/tftpboot/pxelinux.cfg/default)修改:

default 3
prompt 1
timeout 300

display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg

 
label 1
  kernel rhel4.7/vmlinuz
  append initrd=rhel4.7/initrd.img

label 2
  kernel rhel4.7-x86_64/vmlinuz
  append initrd=rhel4.7-x86_64/initrd.img

label 3
  kernel centos5.4/vmlinuz
  append initrd=centos5.4/initrd.img

label 4
  kernel centos5.4-x86_64/vmlinuz
  append initrd=centos5.4-x86_64/initrd.img

label 1-ks_**
  kernel rhel4.7/vmlinuz
  append ks=nfs:192.168.1.254:/ios/rhel4.7ks_**.cfg initrd=rhel4.7/initrd.img ksdevice=link

label 2-ks_**
  kernel rhel4.7-x86_64/vmlinuz
  append ks=nfs:192.168.1.254:/ios/rhel4.7-x86_64ks_**.cfg initrd=rhel4.7-x86_64/initrd.img ksdevice=link

label 3-ks_**
  kernel centos5.4/vmlinuz
  append ks=nfs:192.168.1.254:/ios/centos5.4ks_**.cfg initrd=centos5.4/initrd.img ksdevice=link

label 4-ks_**
  kernel centos5.4-x86_64/vmlinuz
  append ks=nfs:192.168.1.254:/ios/centos5.4-x86_64ks_**.cfg initrd=centos5.4-x86_64/initrd.img ksdevice=link

label local
  localboot 0

label mem
  kernel memtest
  append –

 

這裡由於選項太多,可以在tftp根目錄下啟用boot.msgoptions.msg文件來說明安裝什麼樣的操作系統和怎樣安裝操作系統。如:

boot.msg

Install RHEL4.7: 1
Install RHEL4.7 x86_64: 2
Install CentOS5.4: 3
Install CentOS5.4 x86_64: 4

Default: Graph mode.
If you want to use text mode, type: [number] text

F1: boot.msg F2: options.msg

 

options.msg

Install RHEL4.7: 1
Install RHEL4.7 x86_64: 2
Install CentOS5.4: 3
Install CentOS5.4 x86_64: 4

Default: Graph mode.
If you want to use text mode, type: [number] text

If you want to use kickstart, the flowing list the different OS ks.cfg:
1-ks_**: RHEL4.7
2-ks_**: RHEL4.7 x86_64
3-ks_**: CentOS5.4
4-ks_**: CentOS5.4 x86_64

F1: boot.msg F2: options.msg

 

7. 小結

只要註意各操作系統的內核和引導文件的對應關係,就能擴展到多套系統。

kickstart文件能在原來的基礎上修改的就在原來的基礎上修改,稍加時日,就可以形成針對各業務不同的kickstart文件,這樣就方便IDC人員實現Linux操作系統的自動化安裝。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 安裝目標與規劃 交易系統1台HP DL580 G9伺服器將安裝Oracle11gR2 。 1.1 安裝介質版本 主機名 his1 IP地址 192.168.40.102 Oracle Grid軟體 Oracle DB軟體版本 Oracle Enterprise11g 補丁集版本 Oracle 1 ...
  • Department表 Employee表 查詢結果: 查詢每個部門的人員名稱 首先創建視圖查詢出各個部門的人員名稱: 然後把查詢結果拼接 ...
  • 一、等待事件的相關知識 1.1 等待事件主要可以分為兩類,即空閑(IDLE)等待事件和非空閑(NON-IDLE)等待事件。1). 空閑等待事件指ORACLE正等待某種工作,在診斷和優化資料庫的時候,不用過多註意這部分事件。2). 非空閑等待事件專門針對ORACLE的活動,指資料庫任務或應用運行過程中 ...
  • zabbix中有自帶對linux伺服器時間進行監控的模板,用的key是system.localtime返回當前的系統時間,而配置tigger報警時是用的fuzzytime(N)方法,該方法是將返回的系統時間與監控伺服器的時間進行對比,如果大於N,則報警。 存在一下3個問題: 1、監控伺服器並不一定是 ...
  • CentOS 7上安裝Jenkins Jenkins 安裝 只安裝不介紹 步驟1:更新CentOS 7 Linux系統管理員的最佳做法之一是使系統保持最新。安裝最新的穩定包,然後重新啟動。 1 2 3 sudo yum install epel-release sudo yum update sud ...
  • Redis 3.2.9 安裝 Redis 3.2.9 編譯安裝 1, 安裝相關軟體包 2, 下載redis源碼包 wget http://source.goyun.org:8000/source/Redis/redis-3.2.9.tar.gz 3, 解壓&&編譯&&安裝 4, 創建相應目錄 5, ...
  • 時間片(timeslice)又稱為“量子(quantum)”或” 處理器片(processor slice)”是分時操作系統分配給每個正在運行的進程微觀上的一段CPU時間(在搶占內核中是:從進程開始運行直到被搶占的時間)。現代操作系統(如:Windows、Linux、Mac OS X等)允許同時運行 ...
  • 一、當前互聯網主流web服務 靜態服務: 1.apache 中小型靜態web服務的主流,web伺服器中的老大哥 2.nginx 大型新型網路靜態web服務主流,web伺服器中的初生牛犢 3.lighttpd 靜態web服務不溫不火,逐漸被淘汰的意味,社區不活躍,效率很高。 動態服務: 1.IIS(I ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...