This is quite handy to know if you need to create a new network bond on a live system without disrupting traffic.
First of all create your bond configs in the normal way so that in the event of a reboot it will come back up working. See the Redhat documentation for how to do it in RHEL6.
Now because we cannot just restart the networking to bring that up we need to construct it by hand. Lets say out 2 interfaces we wish to bond are eth3 and eth4 and the bond we are going to create is bond1
- Make sure the bonding driver is loaded by modprobing the module alias you set up in /etc/modprobe/bond1.conf
- Create the bond interface in the /sys filesystem
1
| echo "+bond1" > /sys/class/net/bonding_masters |
- Now that we have an interface we need to enslave the interfaces
1
| ifenslave bond1 eth3 eth4 |
- Lastly we need to start the interface up with the configuration we used in the networking-scripts. Change the ip address and netmask to suit your requirements.
1
| ip addr add 192.168.0.100/24 brd + dev bond1 |
This post is here mainly because I always forget how to do it. This is one of the simplest ways to reinstall a Centos (will probably work for RHEL and maybe even Fedora) system without needing PXE or physical access to the machine. Make sure that that you have tested you kickstart before you use it and don’t blame me if anything goes wrong.
Save the following script and make it executable then run it. It will ask some questions about networking and hostname and then write a new grub stanza to you grub.conf. It will also download the correct kernel and initrd from the information you have given it and put them in the correct position for grub to find them when it boots.
When you reboot you should be able to select Kickstart Centos and it will boot off the new kernels and pull down the kickstart then reinstall.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| #!/bin/bash -x
echo -n "Enter kickstart url: "
read -e ksurl
echo -n "Enter Hostname: "
read -e hostname
echo -n "Enter IP Address: "
read -e ipaddr
echo -n "Enter Gateway: "
read -e gateway
echo -n "Enter Netmask: "
read -e netmask
echo -n "Enter Nameservers: "
read -e nameservers
repourl=$(curl $ksurl 2>/dev/null | sed -n 's/.*\(http\)/\1/ p')
#echo $repourl
vmlinuz_url="${repourl}/isolinux/vmlinuz"
initrd_url="${repourl}/isolinux/initrd.img"
date_now=$(date +%Y%m%d%H%M%S)
grub_stanza="
title Kickstart Centos 5 ${date_now}
root (hd0,0)
kernel /reinstall/vmlinuz ksdevice=eth0 load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=16384 serial hostname=${hostname} ip=${ipaddr} gateway=${gateway} netmask=${netmask} dns=${nameservers} noipv6 ks=${ksurl}
initrd /reinstall/initrd.img
"
echo "$grub_stanza"
echo -n "Please check the grub stanza above and enter 'y' if it is correct: "
read -e confirmed
if [ $confirmed == 'y' ]; then
echo "Downloading kernel and initrd..."
mkdir -p /boot/reinstall
(cd /boot/reinstall/;/usr/bin/urlgrabber $vmlinuz_url )
(cd /boot/reinstall/;/usr/bin/urlgrabber $initrd_url )
cp /boot/grub/grub.conf /boot/grub/grub.conf.bak_`date +%Y%m%d%H%M%S`
echo "$grub_stanza" >> /etc/grub.conf
fi |