pxe+dhcp+nfs+tftp+kickstart 기반의 Linux 시스템 네트워크 설치 방법

巴扎黑
풀어 주다: 2017-06-23 14:35:16
원래의
2042명이 탐색했습니다.

원본 게시일: 2010-09-05

재인쇄일: 2012-07-21

一. 원리 소개

PXE(Preboot Execution Environment)Client/Server의 네트워크 모드에서 작동하여 워크스테이션이 네트워크를 통해 원격 서버에서 이미지를 다운로드할 수 있도록 지원하여 시작을 지원합니다. 네트워크에서 운영 체제의. 시작 프로세스 중에 터미널은 DHCP서버에 의해 IP 주소가 할당된 다음 TFTP(trivial file transfer 프로토콜) 및 기타 프로토콜을 사용하여 기존 파일을 다운로드합니다. 서버에서 (NFS, FTP, Liunx 커널 및 HTTPetc.의 루트 파일 시스템)이 로컬 메모리에 있을 때까지 기다렸다가 실행하여 기본 소프트웨어 설정을 완료합니다. 터미널을 설치하고 서버에 미리 설치된 터미널 운영 체제를 부팅합니다.

Kickstart 는 무인 설치 방법입니다. 일반적인 설치 프로세스 중에 수동 개입이 필요한 다양한 매개변수를 기록하고 ks.cfg 파일을 생성합니다. 후속 설치 프로세스에서 매개변수 입력이 필요한 경우 설치 프로그램은 kickstart 파일을 찾습니다. 적절한 매개변수를 찾을 수 있으면 수동 개입이 필요합니다.

II. 환경 설명

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

: 192.168.1.254

3. 설치 및 구성 프로세스 소개

1. ConfigurationDHCP

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;
        }
}
로그인 후 복사

Restartdhcp서비스:

르레에에

2. TFTP

/etc/init.d/dhcpd restart
로그인 후 복사

Restarttftp서비스 구성:

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
로그인 후 복사

3. ConfigurationNFS

NFSRPC에 등록해야 합니다. 클라이언트가 호출하기 전 일반적으로 포트 매핑입니다. 완료되었습니다. portmap 은 기본적으로 설치됩니다. 그렇지 않은 경우 yum 설치를 사용할 수 있습니다:

chkconfig –list | grep tftp
로그인 후 복사

可以直接使用挂载的镜像,这里是拷到服务器上为了建立一个专门存放常用的镜像文件建的目录。

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.msgInstall 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.msgInstall 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操作系统的自动化安装。

위 내용은 pxe+dhcp+nfs+tftp+kickstart 기반의 Linux 시스템 네트워크 설치 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿