Got a laptop here (Samsung X22), WinXP Pro and data partition in /dev/sda[23]. Wrote this script to backup both partitions 1:1 to an external USB disk. Teh script itself works absolutely as intended.
BUT: I added an entry to GRUB's menu.lst like that: title Windows XP Backup root (hd0,4) kernel /boot/vmlinuz-2.6.18-6-686 root=/dev/sda5 rw init=/sbin/windows_backup initrd /boot/initrd.img-2.6.18-6-686 savedefault When I select that entry, kernel comes up, script is executed alright, but after the script called "halt" it just sits there and eventually throws a kernel panic - and I have no clue why. If someone has pointers? (Messages partly in german but I added comments. If anything is unclear just ask. But not about that it's newbie-ish, I know that :) ) Dex #################################################################### #!/bin/bash #kernel message to tty10 CONSOLE=10 openvt -c "$CONSOLE" -- /bin/true || true setlogcons "$CONSOLE" || true #... /usr/bin/clear #wait a couple of seconds so the kernel sees usb disks echo Warte, bis alle Platten da sind.... sleep 5 # Variables BACKUP_DST=/mnt/backup #set backup dest GREP=/bin/grep MOUNT=/bin/mount UMOUNT=/bin/umount BKP_PART_MNTPOINTS="/mnt/daten /mnt/windows" #mount points to partitions to backup BKP_PART[0]=/dev/sda2 #backup src 0 BKP_PART_NAME[0]="windowsxp" #name for src 0 BKP_PART[1]=/dev/sda3 #and so on BKP_PART_NAME[1]="daten" BKP_MBR_DISK=/dev/sda #disk that hold the mbr to backup HALT=/sbin/halt #i18n not_mounted="ist nicht angeschlossen oder eingehängt" error_msg="Fehler" STILL_MOUNTED="Kann Quellpartitionen nicht aushängen." RETRY="Nochmal versuchen" SHUTDOWN="Abbrechen und herunterfahren." UNKN_OPT="Unbekannte Option" ATTACH_OR_BUST="Schliessen Sie die Platte an oder fahren Sie herunter" function chk_backup_disk { # check if the destination disk is mounted $UMOUNT $BACKUP_DST >/dev/null 2>&1 #umount backup disk to avoid stale mounts (greetings to USB subsys) sync $MOUNT $BACKUP_DST >/dev/null 2>&1 #mount backup disk again $MOUNT | $GREP "$BACKUP_DST" > /dev/null 2>&1 if [ $? -eq 1 ]; then echo "$error_msg: Backupmedium $not_mounted" chk_backup_menu fi } function chk_backup_menu { # called if the backup disk isn't attached echo $ATTACH_OR_BUST echo echo "1. "$RETRY echo "2. "$SHUTDOWN read choice case $choice in 1) sync #just retry chk_backup_disk ;; 2) #quit and pack it in sys_shutdown ;; *) #user entered bull echo $error_msg : $UNKN_OPT chk_backup_menu ;; esac } function chk_src_not_mounted { MOUNTED=0 #helper var. if 1 sources are still mounted for i in $BKP_PART_MNTPOINTS; do #try and umount all sources $UMOUNT $i > /dev/null 2>&1 done for i in $BKP_PART_MNTPOINTS; do #now check if they are released $MOUNT | $GREP $i > /dev/null 2>&1 if [ $? -eq 0 ]; then MOUNTED=1 fi done if [ $MOUNTED -eq 1 ]; then #nag if not... echo $error_msg : $STILL_MOUNTED src_menu fi } function src_menu { #...and ask what to do about it echo echo "1. "$RETRY echo "2. "$SHUTDOWN read choice case $choice in 1) sync chk_src_not_mounted #check sources again ;; 2) sys_shutdown #call it a day ;; *) #user nutty echo $error_msg : $UNKN_OPT src_menu ;; esac } function sys_shutdown { echo Fahre System herunter... $HALT exit 0 } function backup_win { # mainly what this is all about TESTBETRIEB="-m 1M" # only a meg for testing for i in `seq 0 10`; do # check and remove old backups if [ -f $BACKUP_DST/${BKP_PART_NAME[$i]} ]; then rm -f $BACKUP_DST/${BKP_PART_NAME[$i]} fi if [ ! ${BKP_PART[$i]} == "" ]; then # only those that exist dd_rescue $TESTBETRIEB ${BKP_PART[$i]} $BACKUP_DST/${BKP_PART_NAME[$i]} fi done sync save_mbr # save the boot sector sync $UMOUNT $BACKUP_DST sys_shutdown } function save_mbr { i=1 while [ -f $BACKUP_DST/mbr$i ]; do (( i++ )); done # check available file names dd if=$BKP_MBR_DISK of=$BACKUP_DST/mbr$i bs=512 count=1 } ################ #MAIN PART chk_backup_disk chk_src_not_mounted backup_win ################### END #################### -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]