zoukankan      html  css  js  c++  java
  • pxe 远程安装linux系统

            今天和同事去机房安装硬盘,拆开机器,发现SCSI线不够长,只能接一个硬盘.看来只能用新硬盘替换下老硬盘,可是去的时候没有带任何光盘,无法给新硬盘 安装操作系统,同事说可以回去用PXE,远程安装系统.以前对PXE也有一些了解,不过没有实践过.在网上查了如下资料:
     
    基本原理
      1) 什么是PXE
      PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
      PXE协议的成功运行需要解决以下两个问题:
    1. 既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;
    2. 通过什么协议下载Linux内核和根文件系统
      对于第一个问题,可以通过DHCP Server解决,由DHCP server来给PXE client分配一个IP地址,DHCP Server是用来给DHCP Client动态分配IP地址的协议,不过由于这里是给PXE Client分配IP地址,所以在配置DHCP Server时,需要增加相应的PXE特有配置。
      至于第二个问题,在PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。
      这样,PXE协议运行的条件就具备了,下面我们就来看看PXE协议的工作过程。
    2) 工作过程
    在上图中,PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。
      PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。
     
    具体配置过程如下:
    首先是安装必要的服务,DHCPD,TFTP-SERVER,NFS(一般默认就有了)
    dhcpd和tftp-server都有对应的rpm,直接安装就可以了.
    # vi /etc/xinetd.d/tftp
    =============+==========+===========+============+============
    service tftp
    {
            disable = no (默认是yes,这里改成no,启用它)
            socket_type             = dgram
            protocol                = udp
            wait                    = yes
            user                    = root
            server                  = /usr/sbin/in.tftpd
            server_args             = -u nobody -s /tftpboot //-s 表示用/tftpboot作为tftp目录的根目录. 
            per_source              = 11
            cps                     = 100 2
            flags                   = IPv4
    }
    tftp是由xinted来启动的,修改完后要记得service xinetd restart
    # vi /etc/dhcpd.conf
    =============+==========+===========+============+============
    ddns-update-style interim;
    ignore client-updates;
    default-lease-time 21600;
    max-lease-time 43200;
    authourtative;
    next-server 192.168.1.103;
    subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers          192.168.1.1;
        option subnet-mask      255.255.255.0;
        range 192.168.1.1 192.168.1.100;
        default-lease-time 21600;
        max-lease-time 43200;
        filename "/pxelinux.0";
        option domain-name-servers 202.106.0.20;
    }
    这里的 pxelinux.0就是上面提到的bootstrap,上面已经指定了tftp的根目录,所以这里用相对路径.
    next-server 192.168.1.103;这句一开始我并没有加上,当要安装系统的机器启动以后,在查找pxelinux.cfg目录下的配置文件的时候,就死活找不 到了.经过很长时间的等待,出现一个boot:的提示符,告诉我:can't load kernel image:linux,一开始以为是/tftpboot/pxelinux.cfg/default的配置文件有误,检查后没问题.
    google了半天,总算查到了一个帖子,说可能是dhcp3.0的一个bug,需要加上这个参数来指定DHCP SERVER的IP.修改配置文件加入此句后,重启dhcp,然后再重新启动客户机,这次速度大大加快,顺利通过.
    3 配置支持PXE 
    # mkdir /tftpboot
    # cp /usr/lib/syslinux/pxelinux.0 /tftpboot
    把LINUX第一张安装光盘上/image/pxeboot/initrd.img和vmlinuz 以及isolinux/*.msg考到/tftpboot目录下(*.msg也可以不拷,重点是initrd.img和vmlinuz,没有内核是无法引导的)
    # cd /tftpboot
    # mkdir pxelinux.cfg
    # vi defaultdefault centos5
    prompt 1
    timeout 30
    label centos5
     kernel vmlinuz
    append ks=nfs:192.168.1.103:/root/inst/ks initrd=initrd.img devfs=nomount ramdisk_size=9216
    #append initrd=initrd.img devfs=nomount ramdisk_size=9216

     这里的ks=nfs:192.168.1.103:/root/inst/ks 文件是指定kickstart配置文件,可以在安装中不用人工干预,自动按预设的参数安装.实现安装过程的全自动.
    4 配置NFS服务
    # vi /etc/exports
    /root/inst      192.168.1.0/24(ro,sync) //这里是/root/inst 而不是/root/inst/
    # mkdir /home/iso
    拷贝安装LINUX的ISO文件到这个目录
    5 需要开启的系统服务
    /dhcpd/network/nfs/portmap/syslog/tftp/xinetd/
    service dhcpd start
    service portmap start
    service nfs start
    最后附上ks文件的内容.
    install
    nfs --server=192.168.1.103 --dir=/root/inst
    lang en_US.UTF-8
    keyboard us
    network --device eth0 --bootproto static --ip 192.168.1.220 --netmask 255.255.255.0 --gateway 192.168.1.1  --nameserver 192.168.1.1
    #network --device eth0 --bootproto DHCP
    rootpw --iscrypted $1$WvFbqnpm$m94fa4AopXI/kfYOYbWMW.
    firewall --enabled --port=22:tcp
    #firewall --disabled
    authconfig --enableshadow --enablemd5
    selinux --disabled
    timezone --utc Asia/Shanghai
    bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
    clearpart --all
    zerombr yes
    clearpart --linux --initlabel
    part /boot --fstype ext2 --size=256
    part / --fstype ext3 --size=8192
    part /opt --fstype ext3 --size=8192
    part /usr --fstype ext3 --size=16384
    part swap --size=4096
    part /home --fstype ext3 --size=1 --grow
    reboot //加入这行后装完系统后可以自动重启,需要注意的是机器的启动顺序不能是网卡优先,否则会循环装系统........
    %packages --resolvedeps
    @ everything
    grub
    kernel
    kernel-devel
    e2fsprogs
     
  • 相关阅读:
    yocto/bitbake 学习资源
    QEMU/KVM学习资源
    ubuntu 中创建和删除用户
    git 重命名本地和远程分支
    Ubuntu 上搭建 FTP 服务器
    gdb 常见用法
    git log 显示与特定文件相关的 commit 信息
    基于 qemu system mode 运行 arm 程序
    基于 qemu user mode 运行 aarch64 程序
    checking in(airport)
  • 原文地址:https://www.cnblogs.com/ericsun/p/3096858.html
Copyright © 2011-2022 走看看