source: drbl-virt/sbin/drbl_bridge_kvm_patch @ 217

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

Add: KVM support (bridge to eth for KVM env)

  • Property svn:executable set to *
File size: 2.7 KB
Line 
1#!/bin/bash
2# Program:
3#   Patch DRBL to bridge eth in booting (KVM)
4# Author:
5#   Jazz, Rock {jazz, rock}@nchc.org.tw
6# Version:
7#    1.0
8# History:                                                                                         
9#   2010/10/12  Rock    First release (1.0)
10
11# [Source]
12source /opt/drbl-virt/conf/drbl-virt.conf
13source $Work_Path/functions_drbl_virt
14
15# [Main]
16
17# = 1. Patch DRBL initrd to support bridge =
18# == Patch /usr/bin/mkpxeinitrd-net ==
19# backup mkpxeinitrd-net. if already has "drbl-virt add", dones't sed
20cat /usr/bin/mkpxeinitrd-net | grep "# drbl-virt add" >> /dev/null
21if [ $? != 0 ]; then
22cp /usr/bin/mkpxeinitrd-net /usr/bin/mkpxeinitrd-net.drbl-virt_bak
23
24# patch it to copy command
25declare -i modify_line=$(cat -n /usr/bin/mkpxeinitrd-net | grep 'include_bin_prog_from_server=' | awk '{print $1}')
26modify_file="/usr/bin/mkpxeinitrd-net"
27sed -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
28sed -i "${modify_line}i# drbl-virt add" $modify_file
29# patch it to copy modules
30declare -i modify_line=$(cat -n /usr/bin/mkpxeinitrd-net | grep "# Deal with firmwares" | awk '{print $1}')
31sed -i "${modify_line}i# drbl-virt add" $modify_file
32modify_line=$modify_line+1
33sed -i "${modify_line}icp -a --parents kernel/net/bridge/bridge.ko \$initrd/lib/modules/\$kernel_ver/" $modify_file
34
35# == Add start_kvm_bridge.sh (/usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init) ==
36cat <<EOF >/usr/lib/mkpxeinitrd-net/initrd-skel/bin/start_kvm_bridge.sh
37#!/bin/bash
38# drbl-virt add
39NICs=$(/sbin/ifconfig | grep eth | awk '{print $1}')
40declare -i NICs_nu=$(echo $NICs |wc -w)
41 
42for NIC in $NICs
43do
44    NIC_IP=$(ifconfig $NIC | grep "inet addr" | sed 's/inet addr://g' | sed 's/Bcast.*$//g' | sed 's/^[ ]*//')
45
46    if [ -n $NIC_IP ]; then
47        break
48    fi
49done
50
51# add bridge and bridge to eth
52/bin/brctl addbr br0
53/bin/brctl addif br0 \$NIC
54/bin/ifconfig \$NIC 0.0.0.0 up
55/bin/ifconfig br0 \$NIC_IP up
56EOF
57fi
58# == Run start_kvm_bridge.sh when booting  ==
59cat /usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init | grep "bash /bin/start_kvm_bridge.sh" >> /dev/null
60if [ $? != 0 ]; then
61    # backup linuxrc-or-init
62    cp /usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init /usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init.drbl-virt_bak
63    declare -i modify_line=$(cat -n /usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init | grep "# clean the tag file" | awk '{print $1}')
64    modify_file="/usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init"
65
66    sed -i "${modify_line}i# drbl-virt add" $modify_file
67    modify_line=$modify_line+1
68    sed -i "${modify_line}ibash /bin/start_kvm_bridge.sh" $modify_file
69fi
Note: See TracBrowser for help on using the repository browser.