93 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
 | 
						|
 | 
						|
# Copyright 2010 United States Government as represented by the
 | 
						|
# Administrator of the National Aeronautics and Space Administration.
 | 
						|
# All Rights Reserved.
 | 
						|
#
 | 
						|
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
 | 
						|
#    not use this file except in compliance with the License. You may obtain
 | 
						|
#    a copy of the License at
 | 
						|
#
 | 
						|
#         http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
#
 | 
						|
#    Unless required by applicable law or agreed to in writing, software
 | 
						|
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
						|
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
						|
#    License for the specific language governing permissions and limitations
 | 
						|
#    under the License.
 | 
						|
 | 
						|
INSTANCES_PATH=${INSTANCES_PATH:-/var/lib/nova/instances}
 | 
						|
if [ -z "$1" ]; then echo "specify an instance id to debug"; exit; fi
 | 
						|
 | 
						|
if [ -n "$3" ]; then DEVICE=$3; fi
 | 
						|
 | 
						|
CMD="all"
 | 
						|
if [ -n "$2" ]; then CMD=$2; fi
 | 
						|
 | 
						|
cd $INSTANCES_PATH/$1
 | 
						|
 | 
						|
if [ $CMD != "umount" ] && [ $CMD != "launch" ]; then
 | 
						|
# destroy the instance
 | 
						|
virsh destroy $1
 | 
						|
 | 
						|
# mount the filesystem
 | 
						|
mkdir t
 | 
						|
DEVICE=`losetup --show -f disk`
 | 
						|
echo $DEVICE
 | 
						|
kpartx -a $DEVICE
 | 
						|
mount /dev/mapper/${DEVICE:4}p1 t
 | 
						|
 | 
						|
fi
 | 
						|
if [ $CMD != "mount" ] &&  [ $CMD != "umount" ]; then
 | 
						|
 | 
						|
# make serial console listen on ttyS0
 | 
						|
cat >t/etc/init/ttyS0.conf <<TTY_EOF
 | 
						|
# ttyS0 - getty
 | 
						|
#
 | 
						|
# This service maintains a getty on ttyS0 from the point the system is
 | 
						|
# started until it is shut down again.
 | 
						|
 | 
						|
start on stopped rc RUNLEVEL=[2345]
 | 
						|
stop on runlevel [!2345]
 | 
						|
 | 
						|
respawn
 | 
						|
exec /sbin/getty -L 115200 ttyS0 xterm
 | 
						|
TTY_EOF
 | 
						|
 | 
						|
echo
 | 
						|
# set debug root password
 | 
						|
chroot t passwd -u root
 | 
						|
# TODO(vish): automate this with expect
 | 
						|
chroot t passwd root
 | 
						|
 | 
						|
tr -d '\n' < libvirt.xml > debug.xml
 | 
						|
sed -i "s/<serial type=\"file\">.*<\/serial>/<serial type=\"pty\"><source path=\"\/dev\/pts\/1\"\/><target port=\"0\"\/><\/serial>/g" debug.xml
 | 
						|
 | 
						|
umount t
 | 
						|
 | 
						|
virsh create debug.xml
 | 
						|
virsh console $1
 | 
						|
virsh destroy $1
 | 
						|
 | 
						|
mount /dev/mapper/${DEVICE:4}p1 t
 | 
						|
 | 
						|
# clear debug root password
 | 
						|
chroot t passwd -l root
 | 
						|
 | 
						|
# remove the serial console conf
 | 
						|
rm -f t/etc/init/ttyS0.conf
 | 
						|
 | 
						|
fi
 | 
						|
if [ $CMD != "mount" ] && [ $CMD != "launch" ]; then
 | 
						|
 | 
						|
# unmount the filesystem
 | 
						|
umount t
 | 
						|
kpartx -d $DEVICE
 | 
						|
losetup -d $DEVICE
 | 
						|
rmdir t
 | 
						|
 | 
						|
# recreate the instance
 | 
						|
virsh create libvirt.xml
 | 
						|
fi
 |