source: drbl-virt/sbin/drbl_xen_patch.sh @ 177

Last change on this file since 177 was 177, checked in by rock, 14 years ago

Modify: declare -> bash

  • Property svn:executable set to *
File size: 5.0 KB
RevLine 
[161]1#!/bin/bash
2# Program:
3#   Path DRBL evironment to support Xen/KVM
4# Author:
5#   Jazz, Rock {jazz, rock}@nchc.org.tw
6# Version:
7#    1.0
8# History:                                                                                         
9#   2010/07/20  Rock    First release (1.0)
10
11# [Source]
[171]12source /opt/drbl-virt/conf/drbl-virt.conf
[175]13source $Work_Path/functions_drbl_virt
[161]14
15# [Main]
16
[171]17# = 1. Patch DRBL xen env for client =
18# == Shutdown all drbl client ==
19echo "Please check all client are shutdown !!!"
20read -p "Push 'Enter' to continue......"
[161]21
[171]22# == Change xen kernel for drbl client ==
23check_xen_nu
24Xen_Kernel=$(echo $Xen_Kernel | sed 's/^vmlinuz-//g' )
[161]25
[171]26# == Copy xen image to /tftpboot/nbi_img/ ==
27echo "copy Xen image & Kernel to /tftpboot/nbi_img/"
[174]28cp /boot/*xen* /tftpboot/nbi_img/
29cp /boot/vmlinuz-${Xen_Kernel} /tftpboot/nbi_img/
30cp /boot/initrd.img-${Xen_Kernel} /tftpboot/nbi_img/
31cp /boot/config-${Xen_Kernel} /tftpboot/nbi_img/
[171]32echo ""
33
34# == Modify PXE booting menu ==
[173]35# backup generate-pxe-menu
[174]36cp /tftpboot/nbi_img/pxelinux.cfg/default /tftpboot/nbi_img/pxelinux.cfg/default.drbl-virt_bak
37cp /opt/drbl/sbin/generate-pxe-menu /opt/drbl/sbin/generate-pxe-menu.drbl-virt_bak
[173]38generate_PXE_menu="/opt/drbl/sbin/generate-pxe-menu"
39declare -i modify_line=$(cat -n $generate_PXE_menu | grep 'label drbl' | awk 'NR==1 {print $1}')
[177]40# delete default
41sed -i '/^  MENU DEFAULT/d' $generate_PXE_menu
[173]42# modify menu
43sed -i "${modify_line}i\label drbl-virt" $generate_PXE_menu
44modify_line=$modify_line+1
45sed -i "${modify_line}i\  MENU DEFAULT" $generate_PXE_menu
46modify_line=$modify_line+1
47sed -i "${modify_line}i\  MENU LABEL DRBL-Virtualization ($Xen, $Xen_Kernel)" $generate_PXE_menu
48modify_line=$modify_line+1
49sed -i "${modify_line}i\  kernel mboot.c32" $generate_PXE_menu
50modify_line=$modify_line+1
51sed -i "${modify_line}i\  append $Xen --- vmlinuz-pxe --- initrd-pxe.img devfs=nomount drblthincli=off selinux=0 nomodeset" $generate_PXE_menu
52modify_line=$modify_line+1
53sed -i "${modify_line}i\  TEXT HELP" $generate_PXE_menu
54modify_line=$modify_line+1
55sed -i "${modify_line}i\  ENDTEXT" $generate_PXE_menu
56modify_line=$modify_line+1
57sed -i "${modify_line}i\ " $generate_PXE_menu
[171]58
59
60# = 2. Patch DRBL initrd to support bridge =
[174]61# == Patch /usr/bin/mkpxeinitrd-net (1)Xen network scripts (2)command (3)modules ==
62# backup
63cp /usr/bin/mkpxeinitrd-net /usr/bin/mkpxeinitrd-net.drbl-virt_bak
64# copy Xen network scripts
65cp /etc/xen/scripts/network-bridge /usr/lib/mkpxeinitrd-net/initrd-skel/bin/
66cp /etc/xen/scripts/xen-network-common.sh /usr/lib/mkpxeinitrd-net/initrd-skel/bin/
67cp /etc/xen/scripts/xen-script-common.sh /usr/lib/mkpxeinitrd-net/initrd-skel/bin/
68# patch it to copy command
69declare -i modify_line=$(cat -n /usr/bin/mkpxeinitrd-net | grep 'include_bin_prog_from_server=' | awk '{print $1}')
70modify_file="/usr/bin/mkpxeinitrd-net"
[177]71sed -i "${modify_line}c\include_bin_prog_from_server='sleep lspci insmod modprobe rmmod lsmod pkill strings brctl ip egrep awk gawk seq fgrep dirname expr bash'" $modify_file
[174]72sed -i "${modify_line}i# drbl-virt add" $modify_file
73# patch it to copy modules
74declare -i modify_line=$(cat -n /usr/bin/mkpxeinitrd-net | grep "# Deal with firmwares" | awk '{print $1}')
75sed -i "${modify_line}i# drbl-virt add" $modify_file
76modify_line=$modify_line+1
77sed -i "${modify_line}icp -a --parents kernel/net/bridge/bridge.ko \$initrd/lib/modules/\$kernel_ver/" $modify_file
78modify_line=$modify_line+1
79sed -i "${modify_line}icp -a --parents kernel/drivers/xen/netback/netloop.ko \$initrd/lib/modules/\$kernel_ver/" $modify_file
[171]80
[174]81# == Run Xen network-bridge in booting (/usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init) ==
82cat <<EOF >/usr/lib/mkpxeinitrd-net/initrd-skel/bin/start_xen_bridge.sh
[177]83#!/bin/bash
[174]84# drbl-virt add
[176]85NICs=\$(/sbin/ifconfig | grep eth | awk '{print \$1}')
86declare -i NICs_nu=\$(echo \$NICs |wc -l)
[174]87NIC=""
[173]88
[176]89if [ \$NICs_nu -lt 1  ];
90    for (( i=0 ; i<\$NICs_nu ; i++ ))
[174]91    do
[176]92        NIC_IP=\$(ifconfig eth\${i} | grep "inet addr" | sed 's/inet addr://g' | sed 's/Bcast.*$//g')
93        if [ -n \$NIC_IP ]; then
94            NIC="eth\${i}"
[174]95            break
96        fi
97    done
98else
[176]99    NIC=\$NICS
[174]100fi
[171]101
[177]102bash /bin/network-bridge start netdev=\$NIC
[174]103EOF
104# backup
105cp /usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init /usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init.drbl-virt_bak
106declare -i modify_line=$(cat -n /usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init | grep "# clean the tag file" | awk '{print $1}')
107modify_file="/usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init"
[171]108
[174]109sed -i "${modify_line}i# drbl-virt add" $modify_file
110modify_line=$modify_line+1
[177]111sed -i "${modify_line}ibash /bin/start_xen_bridge.sh" $modify_file
[175]112
113
114# = 3. Re-deploy drbl client =
115# == Cheange Xen Kernel ==
116echo "/opt/drbl/sbin/drblsrv-offline -s $Xen_Kernel"
117/opt/drbl/sbin/drblsrv-offline -s $Xen_Kernel                                                                                                                       
118echo ""
119# == Re-delpoy drbl client ==
120echo "Re-delpoy drbl client"
121echo "/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf"
122/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf
123echo ""
124
Note: See TracBrowser for help on using the repository browser.