zoukankan      html  css  js  c++  java
  • pxe网络安装操作系统 原理与详细过程

    摘要:在实际工作中,我们经常会遇到这样的情况:想要安装Linux但是计算机不带光驱或软驱,或者是笔记本配置的非标准的软驱和光驱,如1394接口,USB接口等,在Linux安装时所引导的Linux内核一般都不会带这些接口的驱动,所以也无法通过本地安装Linux,此外,在一些场合,如机房,IT实验室,工厂生产线,有大量的计算机需要同时安装Linux,如果通过光驱的方式一个个安装,不仅效率低,也不利于维护。这是时候你就需要PXE的强大功能了。本文将就PXE的基本原理和工作方式进行简要介绍。具体的时间过程需要比较丰富的网络知识。


    本文来源:http://blog.csdn.net/trochiluses/article/details/11736119

    1.操作系统安装的流程


        通用流程:首先,bios启动,选择操作系统的启动(安装)模式(此时,内存是空白的),然后根据相关的安装模式,寻找操作系统的引导程序(不同的模式,对应不同的引导程序当然也对应着不同的引导程序存在的位置),引导程序加载文件系统初始化(initrd)程序和内核初始镜像(vmlinuz),完成操作系统安装前的初始化;接着,操作系统开始安装相关的系统和应用程序。

        硬盘安装的流程:bios启动——MBR寻找grub——grub程序读取menu.list等配置文件,找到内核启动镜像和相关初始化程序,安装(或者启动)。  

        PXE(Pre-boot Execution Environment)是由Intel设计,可以使计算机通过网络启动的协议。协议分为client和server两端,PXE client在网卡的ROM中,当计算机启动时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。 

        pxe网络安装的流程:bios启动——pxe client中的程序进入内存,显示命令菜单——此程序开始寻找网络引导程序(bootstrap文件,这个文件的名字随着发行版的不同而不同,在centos中,它是pxelinux.0)——引导程序读取配置文件pxelinux.cfg,获得系统初始化的相关文件信息——系统启动,开始进行安装。


    2.pxe模式安装操作系统的原理

    2.1安装流程

           客户机从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP,并搜寻引导文件的位置
           DHCP服务器返回分给客户机IP以及bootstrap文件的放置位置(该文件一般是放在一台TFTP服务器上)
           客户机向本网络中的TFTP服务器索取bootstrap文件
           客户机取得bootstrap文件后之执行该文件
           根据bootstrap的执行结果,通过TFTP服务器加载内核和文件系统
           进入安装画面, 此时可以通过选择FTP,HTTP,NFS方式之一进行安装


    2.2流程小结

    总结就是:
    1)网卡的client              网卡rom                         寻找dhcp服务器,由/etc/dhcp.conf得到ip和引导程序所在地点
    2)有dhcp.conf(引导程序文件名)和tftp的配置(tftp跟路径,里面有引导程序和系统初始化程序),得到引导程序pxelinux启动文件的绝对路径,运行引导程序,读取启动配置文件pxelinux.cfg/default,得到操作系统初始化的两个相关文件
    3)选择安装方式 
    客户端广播dhcp请求——服务器相应请求,建立链接——由dhcp和tftp配置得到ip还有引导程序所在地点——客户端下载引导程序并开始运行——引导程序读取

    2.3.相关文件位置与内容:

    dhcp配置文件/etc/dhcpd/dhcp.conf——ip管理与引导程序名称
    tftp配置文件/etc/xinetd.d/tftp——tftp根目录,和上面的引导程序名称组成完整路径
    引导程序读取的配置文件/tftpboot/pxelinux.cfg/default——启动内核其他

    3.实战过程


    3.1安装前的准备:

    软硬件配置:网卡要支持pxe启动,操作系统也要支持pxe启动,另外有ftp服务器用于存储操作系统的安装文件,dhcp服务器用于分配ip


    3.2服务器配置


    1)配置dhcp服务器


     由于PXE客户机通常是尚未装系统的裸机,因此为了如服务器取得联系并正确下载相关引导文件,需要预先配置好DHCP服务来自动分配地址并告知引导文件的位置。

    [root@localhost /]#yum -y install dhcp

    [root@localhost /]#vim /etc/dhcp/dhcp.conf

    ddns-update-style none;

    default-lease-time 21600;

    max-lease-time 43200;

    option domain-name         "benet.com";

    option domain-name-servers 8.8.8.8;

    subnet 192.168.122.0 netmask 255.255.255.0 {

       option routers 192.168.122.1;

       option subnet-mask 255.255.255.0;

       range 192.168.122.100 192.168.122.200;

       next-server 192.168.122.1;   #指定TFTP服务器的地址

       filename "pxelinux.0";     #指定PXE引导程序的文件名

       }

    [root@localhost /]#service dhcpd start

    注明:filename这一个选项很重要,它的作用是指明bootstrap所在的位置,一般是指向一个TFTP服务器的某个目录下。这里是相对路径,其中路径的上半部分在的一个配置文件之中。


    2)配置tftp服务器



    TFTP服务的配置文件是/etc/xinetd.d/tftp,RedHat9 默认安装已经生成了该文件

    service tftp
    {
            disable        = no
            socket_type                = dgram
            protocol                = udp
            wait                        = yes
            user                        = root
            server                        = /usr/sbin/in.tftpd
            server_args        = -s /tftpboot
            per_source                = 11
            cps                                = 100 2
            flags                        = IPv4
    }
    注明:这个文件基本上不用改动,但是需要注意的的是server_args= -s /tftpboot这一行,它的含义是将/tftpboot作为root目录,这样在dhcpd.conf中的filename一行就应该写bootstrap的相对路径: filename “pxelinux.0”,这是出于安全方面考虑的.如果你去掉了-s这个参数,那幺就要在filename一行指出bootstrap的绝对路径: filename “/tftpboot/pxelinux.0”.注意,这里-s的内容会因为发行版的内容不同而不同,一般不用改动。


    3.3添加引导程序


    Bootstrap对于支持网络安装的操作系统,Bootstrap基本上都可以从安装源文件上找到,对于本例来说,centos的bootstrap就是cdrom:/isolinux/pxelinux.0我们把它们都拷贝到tftpboot下.


    3.4编辑引导配置文件


    把centos第一张安装光盘上images/pxeboot目录下的initr.img和vmlinux也考到tftpboot/目录下。在/tftpboot创建pxelinux.cfg目录,用于放isolinux的配制文件。光盘isolinux/下有一个isolinux.cfg文件,把它拷贝到/tftpboot/pxelinux.cfg/目录下并改名为default.下面为修改后的default文件:

    default linux
    prompt 1
    timeout 30 
    label linux
    kernel vmlinuz
    append initrd=initrd.img
    这个Default 文件很容易看懂,就是告诉启动后使用那个内核引导


    3.5开始安装

    1)确保:服务器端刚才配置的几个服务都处于开启状态;关闭防火墙;bios中选择从网络启动

    2)剩下的步骤和从硬盘安装相同


  • 相关阅读:
    Codeforces 1294E Obtain a Permutation
    Codeforces 1292C Xenon's Attack on the Gangs
    Codeforces 1292B Aroma's Search
    Codeforces 1288E Messenger Simulator
    Codeforces 1288D Minimax Problem
    Codeforces 1285E Delete a Segment
    P3368 【模板】树状数组 2 题解
    P3374 【模板】树状数组 1 题解
    P1494 [国家集训队]小Z的袜子 题解
    P2260 [清华集训2012]模积和 题解
  • 原文地址:https://www.cnblogs.com/riskyer/p/3325051.html
Copyright © 2011-2022 走看看