PXEスクリプト
15098 ワード
コメントがない部分は正常に使用できますが、コメント部分は新しく追加されたもので、まだテストされていません.
スクリプトを実行した後、出力プロンプトに従って、dhcp構成:セグメント、ゲートウェイ、マスク、IPアドレスプールを入力します.
最新の変更でコピーを忘れてしまったので、スクリプトに注釈を付ける場所があるかもしれません.
家ではテストできないので印象だけで一部変更しました
スクリプト情報
変数の定義
準備作業:yumプロファイルの変更、CDに掛けるなどを含む.
DHCPサービスのインストール
tftpサービスの構成
nfs共有ディレクトリの構成
必要なファイルをtftp共有ディレクトリにコピーし、最後に自分で変更した偽の起動スクリプトは純粋に面白いためです.
スクリプトを実行した後、出力プロンプトに従って、dhcp構成:セグメント、ゲートウェイ、マスク、IPアドレスプールを入力します.
最新の変更でコピーを忘れてしまったので、スクリプトに注釈を付ける場所があるかもしれません.
家ではテストできないので印象だけで一部変更しました
スクリプト情報
- #!/bin/bash
- #
- # SCRIPT: pxe.sh
- # DATE: 01-01-2011
- # REV: 1.0
- # AUTHOR: SongKnight
- # E-Mail: [email protected]
- #
変数の定義
- echo "-----------------------------------------------------------------------"
- echo "- SETTING -"
- echo "-----------------------------------------------------------------------"
- #read -p "input your want use Disk or ISO:[D/I]:" use
- #if [ ! $use=D ] -a [ ! $use=I ]
- #then
- # echo "You enter is error!"
- # exit
- #fi
- #if [ $use=I ]
- #then
- # sed '34,38 s/#//g' pxe.sh
-
- # There are parameter to setting DHCP Service.
- read -p "input your's net:" net
- read -p "input your's netmask:" netmask
- read -p "input routers's ip address:" route_ip
- # If you want to setting DNS's information in DHCP, please remove under line's #.
- #read -p "input nameserver's ip address:" name_ip
- #read -p "input domain-name:" domain
- read -p "input tftp's ip address:" tftp_ip
- read -p "input range ip address(e.g.192.168.0.1 192.168.0.255):" range_ip
- clear
- echo "Please confirm your's setting:
- network = "$net"
- netmask = "$netmask"
- routers ip = "$route_ip"
- tftp ip = "$tftp_ip"
- range ip = "$range_ip""
- #read -p "Do you confirm this setting:[yes/no]" confirm
- #if [ $confirm=no ]
- #do
- # echo "Please run this script again to reset!!!!"
- # exit
- #fi
準備作業:yumプロファイルの変更、CDに掛けるなどを含む.
- #mkdir -p /pxe/linux
- #read -p "input OS's iso path:" iso
- #test -e ${iso}
- #if $? -eq 1
- #else exit 10 ; sh $0
- #mount ${iso} /pxe/linux
- # This is setting yum.
- cat > /etc/yum.repos.d/rhel-debuginfo.repo << EOF
- [Server]
- name=Server
- baseurl=file:///mnt/Server
- enable=1
- gpgcheck=0
-
- #[Server]
- #name=Server
- #baseurl=file:///pxe/linux/Server
- #enable=1
- #gpgcheck=0
- EOF
- # Some OS is made alias cp='cp -i', so in here have change this alias.
- alias cp=cp
- cd /mnt/Server
DHCPサービスのインストール
- yum install dhcp -y || rpm -ivh dhcp-3*
- # Setting DHCP Service's configuration file. And save this file in /etc/dhcpd.conf
- cat > /etc/dhcpd.conf << EOF
- ddns-update-style interim;
- ignore client-updates;
- next-server ${tftp_ip};
- filename "/tftpboot/linux-install/pxelinux.0";
- subnet ${net} netmask ${netmask} {
- option routers ${route_ip};
- option subnet-mask ${netmask};
- option time-offset -18000;
- # option domain-name-servers ${name_ip};
- # option domain-name "${domain}";
- range dynamic-bootp ${range_ip};
- default-lease-time 21600;
- max-lease-time 43200;
- }
- EOF
- service dhcpd restart
- chkconfig --level 345 dhcpd on
tftpサービスの構成
- cat > /etc/xinetd.d/tftp << EOF
- service tftp
- {
- disable = no
- socket_type = dgram
- protocol = udp
- wait = yes
- user = root
- server = /usr/sbin/in.tftpd
- server_args = /tftpboot/linux-install/
- per_source = 11
- cps = 100 2
- flags = IPv4
- }
- EOF
- service xinetd restart
- chkconfig --level 345 xinetd on
- chkconfig --level 345 tftp on
nfs共有ディレクトリの構成
- cat > /etc/exports << EOF
- /mnt *(ro)
- #/pxe/linux ${net}(ro)
- EOF
必要なファイルをtftp共有ディレクトリにコピーし、最後に自分で変更した偽の起動スクリプトは純粋に面白いためです.
- cd /tftpboot
- cp /mnt/images/pxeboot/initrd.img ./linux-install/
- #cp /pxe/linux/images/pxeboot/initrd.img ./linux-install/
- cp /mnt/images/pxeboot/vmlinuz ./linux-install/
- #cp /pxe/linux/images/pxeboot/vmlinuz ./linux-install/
- #cp /usr/lib/syslinux/pxelinux.0 ./linux-install/
- cd /tftpboot/linux-install/
- mkdir pxelinux.cfg
- cd pxelinux.cfg
- cat > default << EOF
- default linux
- prompt 1
- timeout 30
- label linux
- kernel vmlinuz
- append initrdinitrd=initrd.img
- EOF
- service nfs restart
- chkconfig --level 345 nfs on
- # This is simply pxe start script.
- #cat > pxe << EOF
- ##!/bin/bash
- #case "$1" in
- # start)
- # sed '3,6 s/#//g' /etc/dhcpd.conf >&/dev/null
- # service dhcpd restart >&/dev/null
- # echo "pxe has start [successful]"
- # ;;
- # stop)
- # sed '3,6 s/^/#/g' /etc/dhcpd.conf >&/dev/null
- # service dhcpd restart >&/dev/null
- # echo "pxe has stop [unsuccessful]"
- # exit
- #esac
- #EOF
- #chmod 755 pxe
- #mv pxe /etc/init.d/