PXE Server in Linux

    內容表格
    沒有標頭

    版本為 14:55, 20 Sep 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    Red Hat Linux 下建立 PXE Server
    Step 0 : 環境需求
    Step 1 : tftp server 的設定
    Step 2 : 安裝媒體(FTP,NFS,HTTP)
    Step 3 : PXE 設定檔
    Step 4 : DHCP Server
    Step 5 : The PXE clients
    Step 6 : 其他 Linux Distribution

    Step 0 : 環境需求
    1.一台具有 DHCP 與 tftp server (eg: IP 192.10.0.1)
    一台具有 PXE(Preboot eXecution Environment) 開機功能網路卡的 Client(請先確定 PXE 功能已經在 BIOS 下開啟,並設為第一開機順位)
    2.作業系統我選擇的是 Red Hat Enterprise Linux 3 版本
    Step 1 : tftp server 的設定
    1. 編輯 “/etc/xinetd.d/tftp” 並將 server 開啟

    [root@benjr ~]# vi /etc/xinetd.d/tftp
    service tftp
    {
    socket_type = dgram
    protocol = udp
    wait = yes
    user = root
    server = /usr/sbin/in.tftpd
    server_args = -s /tftpboot
    disable =no
    per_source = 11
    CPUS = 100 2
    flags = IPv4
    }

    將 disable 設定成為 no 即可.
    或者你可以用下面的指令將 tftp 功能開啟

    [root@benjr ~]# chkconfig tftp on

    2.啟動 tftp servicee

    [root@benjr ~]# service xinetd restart

    Step 2 : 安裝媒體(FTP,NFS,HTTP)
    1.複製 RedHat 光碟所有的內容 (這邊我是用 RedHat Enterprise Linux Advanced server 3.0 Update 2 為範例)

    [root@benjr ~]# mkdir /var/ftp/as3u2
    [root@benjr ~]# cp -rf /mnt/cdrom/* /var/ftp/as3u2/ ( 1CD )
    [root@benjr ~]# cp -rf /mnt/cdrom/* /var/ftp/as3u2/ ( 2CD )
    [root@benjr ~]# cp -rf /mnt/cdrom/* /var/ftp/as3u2/ ( 3CD )
    [root@benjr ~]# cp -rf /mnt/cdrom/* /var/ftp/as3u2/ ( 4CD )

    PS: When the system asks for "replace file? " please answers "No"

    2.由 FTP 來安裝
    請確定 ftp 的服務已經開啟

    [root@benjr ~]# chkconfig vsftpd on
    [root@benjr ~]# service vsftpd restart

    3.由 NFS 來安裝
    編輯 "/etc/exports" 並將 "/var/ftp/as3u2" 目錄分享(因為我們將把光碟內的檔案放在此目錄下,此為FTP預設的分享目錄)

    [root@benjr ~]# vi /etc/exports
    /var/ftp/ 192.10.0.*(ro,all_squash)

     並確定 NFS 的服務已經開啟

    [root@benjr ~]# chkconfig nfs on
    [root@benjr ~]# service nfs start

    4.由 HTTP 來安裝
    編輯 "/etc/httpd/conf/httpd.conf" 並將 Document 設為 /var/ftp(因為我們將把光碟內的檔案放在此目錄下,此為FTP預設的分享目錄)

    [root@benjr ~]# vi /etc/httpd/conf/httpd.conf
    Document Root "/var/ftp"

    並確定 HTTP 的服務已經開啟

    [root@benjr ~]# chkconfig httpd on
    [root@benjr ~]# service httpd restart


    Step 3 : PXE 設定檔
    1.將開機所需的 kernel 和 initrd 檔案複製到 "/tftpboot/linux-install/as3u2 目錄下

    [root@benjr ~]# mkdir /tftpboot/linux-install/as3u2
    [root@benjr ~]# cp /var/ftp/as3u2/image/pxeboot/vmlinuz /tftpboot/linux-install/as3u2
    [root@benjr ~]# cp /var/ftp/as3u2/image/pxeboot/initrd.img /tftpboot/linux-install/as3u2

    2.編輯 /tftpboot/linux-install/pxelinux.cfg/default (這個檔案定義了與PXE的Clients可以經由按鍵來選擇安裝的系統)

    [root@benjr ~]# vi /tftpboot/linux-install/pxelinux.cfg/default
    default 0
    timeout 2000
    F1 msgs/boot.msg
    F2 msgs/expert.msg
    prompt 1
    display msgs/boot.msg
    label 0
    localboot 1
    label 1
    kernel as3u2/vmlinuz
    append initrd=as3u2/initrd.img ramdisk_size=65536

    設定檔說明:
    default 0
    如果使用者不選擇安裝哪一種OS這邊就可以設定預設安裝哪一個OS,default 0的意是就是使用label 0的設定.
    timeout 2000
    預設安裝生效時間為2000ms(200秒).
    F1 msgs/boot.msg
    F2 msgs/expert.msg
    這邊是用來定義F1至F12功能鍵所要顯示的內容.
    prompt 1
    效果不明????
    display msgs/boot.msg
    一開機進入PXE所顯示的第一個提示訊息.
    label 0
    localboot 1
    這裡定義了使用機器系統上的硬碟來直接開機.
    label 1
    kernel as3u2/vmlinuz
    append initrd=as3u2/initrd.img ramdisk_size=65536
    這就是要安裝OS的定義.

    3.編輯 /tftpboot/linux-install/msgs/boot.msg (這個檔案就是Clients經由PXE開機時所看到的提示訊息)

    [root@benjr ~]# vi /tftpboot/linux-install/msgs/boot.msg
    1. Install RHAS3-QU2

    4.編輯 /etc/rc.d/rc.local 必須加入下面這一行

    [root@benjr ~]# vi /etc/rc.d/rc.local
    route add -host 255.255.255.255 eth0

    Step 4 : DHCP Server
    編輯 /etc/dhcpd.conf

    [root@benjr ~]# vi /etc/dhcpd.conf
    # ddns-update-style interim;
    ddns-update-style none;
    ignore client-updates;
    allow booting;
    allow bootp;
    class "pxeclients" {
    match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
    next-server 192.10.0.1;
    filename "linux-install/pxelinux.0";
    }
    subnet 192.10.0.0 netmask 255.255.255.0 {
    range 192.10.0.150 192.10.0.180;
    option broadcast-address 192.10.0.255;
    option routers 192.10.0.1;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 192.10.0.1;
    }

    這個項目 option domain-name-servers 192.10.0.1 為非必要選項,如果你有設定就不用再指定 DNS 位址.但是相對應的 DNS(Bind Server)也要設定.
    match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; 這一個選項會檢查是否為實體的網路卡,如果你是準備給 virtual machine 時可以移除這一個選項, DHCP 設定檔案範例如下.

    [root@benjr ~]# vi /etc/dhcpd.conf
    # ddns-update-style interim;
    ddns-update-style none;
    ignore client-updates;
    allow booting;
    allow bootp;

    subnet 192.10.0.0 netmask 255.255.255.0 {
    range 192.10.0.150 192.10.0.180;
    option broadcast-address 192.10.0.255;
    option routers 192.10.0.1;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 192.10.0.1;
    next-server 192.10.0.1;
    filename "linux-install/pxelinux.0";
    }

    並確定 DHCP 的服務已經開啟

    [root@benjr ~]# chkconfig dhcpd on
    [root@benjr ~]# service dhcpd start

    其中的 next-server 就是你的tftp server所在的位置.我這邊的例子使用192.10.0.1至於其他有關於DHCP的設定說明起自行參考DHCP的官方網站http://www.isc.org.

    在整個 DHCP 設定檔中,最重要的就是 filename "linux-install/pxelinux.0" 整個網路開機顯示畫面,流程控制都由 pxelinux.0 來管理,關於更多有關於 pxelinux.0 ,請參考 PXELinux 的官方網頁 http://syslinux.zytor.com/

    Step 5 : The PXE clients
    1. 將具有 PXE 功能網路卡的 client 開機.
    2. 並從 PXE 開機
    3. 選擇你想要安裝的作業系統,如果你有參數可以在這邊加入.
    Begin Downloading linux kernel image and initrd image ……..
    此時就開始安裝作業係統
    4. 你可以選擇 FTP , NFS 或 HTTP 等方式來安裝
    5. 至於 server IP 就是 192.10.0.1,我將光碟內容都放在 192.10.0.1:/var/ftp/ 目錄下
    至於目錄根據不同的方式有所不同
    使用 FTP 方式的目錄:/as3u2
    使用 NFS 方式的目錄:/var/ftp/as3u2 (只有透過NFS才會有圖形界面的安裝)
    使用 HTTP 方式的目錄 : /as3u2
    6. 接下來的安裝過程就和一般光碟安裝一樣.

    Step 6 : 其他 Linux Distribution
    I.SuSE powered by UnitedLinux
    步驟同 RedHat Linux 但 kernel 和 initrd.img 的位址在 SuSE 的第一片 CDROM /boot/loader/ 目錄中
    /boot/loader/linux 是 kernel
    /boot/loader/initrd 是 initrd.img
    SuSE 有一點要注意的是要加 vga 的參數

    [root@benjr ~]# vi /tftpboot/linux-install/pxelinux.cfg/default
    default 0
    timeout 2000
    F1 msgs/boot.msg
    F2 msgs/expert.msg
    prompt 1
    display msgs/boot.msg
    label 0
    localboot 1
    label 1
    kernel as3u2/vmlinuz
    append initrd=as3u2/initrd.img ramdisk_size=65536
    label 2
    kernel sles9/linux
    append initrd=sles9/initrd ramdisk_size=65536 vga=0x317 splash=silent showpts

    這樣安裝時才有 GUI 的模式,下面是常用的 VGA 顯示模式
    1024x768x8bpp -> vga=773 1024x768x16bpp -> vga=791
    1280x1024x8bpp -> vga=775 1280x1024x16bpp -> vga=794

    note:如果你使用的是 SuSE Linux Enterprise Server 9 CDs 時還要修改一個檔 "var/ftp/sles9/media.1/media" 才能使用網路安裝.

    [root@benjr ~]# vi /var/ftp/sles9/media.1/media
    SuSE Linux AG
    20040702201519
    1
    MEDIA1 SUSE LINUX ENTERPRISE Server 9 CD1

    II.Turbo Linux
    步驟同 RedHat Linux 但 kernel 和 initrd.img 的位址在 /images/network.img 檔案中
    因為 network.img 是 image 檔所以必須用 mount -o loop 才能看到 kernel 和 initrd.img 檔案

    [root@benjr ~]# mount -o loop /images/network.img /mnt

    在 /mnt 目錄下可以看到 vmlinuz(Linux kernel) 和 initrd.img(initrd image).
    Turbo 有一點要注意的是要加 ramdisk_size 的參數 .
    因為你在安裝時如果採用 FTP, turbo linux 會因為 ramdisk size 大小問題而無法載入.
    Turbo 7 Linux 的 ramdisk_size 要定設為 16384
    Turbo 8 Linux 的 ramdisk_size 要定設為 21000

    [root@benjr ~]# vi /tftpboot/linux-install/pxelinux.cfg/default
    default 0
    timeout 2000
    F1 msgs/boot.msg
    F2 msgs/expert.msg
    prompt 1
    display msgs/boot.msg
    label 0
    localboot 1
    label 1
    kernel as3u2/vmlinuz
    append initrd=as3u2/initrd.img ramdisk_size=65536
    label 2
    kernel sles9/linux
    append initrd=sles9/initrd ramdisk_size=65536 vga=0x317 splash=silent showpts
    label 3
    kernel turbo7/vmlinuz
    append initrd=turbo7/initrd.img ramdisk_size=16384
    label 4
    kernel turbo8/vmlinuz
    append initrd=turbo8/initrd.img ramdisk_size=21000

    加入下面的訊息來讓使用者(PXE的Clients)知道有什麼作業系統可以安裝

    [root@benjr ~]# vi /tftpboot/linux-install/msgs/boot.msg
    1. Install RHAS3-QU2
    2. Install SLES 9
    3. Install Turbo 7
    4. Install Turbo 8

    Powered by MindTouch Core